diff --git a/.cli/commands/blueprint/actions.js b/.cli/commands/blueprint/actions.js
deleted file mode 100644
index 35bd6126..00000000
--- a/.cli/commands/blueprint/actions.js
+++ /dev/null
@@ -1,137 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const Parse = require('parse/node');
-const defaultTemplate = require('./template/default');
-
-const configUpdate = require(path.normalize(
-    process.cwd() + '/.cli/utils/parse-config-update',
-));
-
-const parseInit = require(path.normalize(
-    process.cwd() + '/.cli/utils/parse-init',
-));
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    const fail = text => {
-        if (spinner) {
-            spinner.fail(text);
-            console.log('');
-            process.exit();
-        }
-    };
-
-    return {
-        init: ({ params }) => parseInit({ params, Parse }),
-
-        config: configUpdate,
-
-        options: ({ context, params }) => {
-            const { auth } = params;
-            return { sessionToken: auth };
-        },
-
-        blueprints: async ({ context, params, props }) => {
-            let { name, overwrite } = params;
-
-            const { prompt } = props;
-            const { options = {} } = context;
-            const { blueprints = [] } = await Parse.Cloud.run(
-                'blueprint-retrieve',
-                {
-                    ID: name,
-                },
-                options,
-            );
-
-            if (blueprints.length > 0 && overwrite !== true) {
-                fail(
-                    `Blueprint ${name} already exists. Overwrite by setting the ${chalk.cyan(
-                        '-o',
-                    )} or ${chalk.cyan('--overwrite')} flag.`,
-                );
-            }
-
-            if (blueprints.length > 0 && overwrite === true) {
-                await Parse.Object.destroyAll(blueprints, options).catch(
-                    err => {
-                        fail(err.message);
-                    },
-                );
-            }
-
-            return blueprints.length;
-        },
-
-        template: async ({ context }) => {
-            message(`Retrieving ${chalk.cyan('template')}...`);
-            const { options = {} } = context;
-
-            const tmp = await new Parse.Query('Blueprint')
-                .equalTo('ID', 'Admin')
-                .first(options);
-
-            return tmp ? tmp.toJSON() : defaultTemplate;
-        },
-
-        blueprint: ({ context, params, props }) => {
-            message(`Creating ${chalk.cyan('blueprint')}...`);
-
-            const { options = {}, template } = context;
-            const { name, description, header, sidebar, zones } = params;
-
-            const blueprint = {
-                meta: op.get(template, 'meta', {}),
-                sections: op.get(template, 'sections', {}),
-                ID: name,
-                description: description,
-            };
-
-            op.set(blueprint, 'sections.main.zones', zones);
-
-            if (header !== true) {
-                op.del(blueprint, 'sections.header');
-            }
-
-            if (sidebar !== true) {
-                op.del(blueprint, 'sections.sidebar');
-            }
-
-            return Parse.Cloud.run('blueprint-create', blueprint, options);
-        },
-
-        route: async ({ context, params }) => {
-            const { capabilities, route } = params;
-            if (!route) {
-                return;
-            }
-
-            const { blueprint, options } = context;
-
-            if (!blueprint) {
-                fail('Unable to create route');
-            } else {
-                let routeObj = await new Parse.Query('Route')
-                    .equalTo('route', route)
-                    .descending('updatedAt')
-                    .first(options);
-
-                routeObj = routeObj || new Parse.Object('Route');
-                routeObj
-                    .set('route', route)
-                    .set('blueprint', blueprint)
-                    .set('capabilities', capabilities);
-
-                return routeObj.save(null, options);
-            }
-        },
-    };
-};
diff --git a/.cli/commands/blueprint/generator.js b/.cli/commands/blueprint/generator.js
deleted file mode 100644
index a28bf4d0..00000000
--- a/.cli/commands/blueprint/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail(Object.values(error).join(', '));
-            return error;
-        });
-};
diff --git a/.cli/commands/blueprint/index.js b/.cli/commands/blueprint/index.js
deleted file mode 100644
index e6aa21d4..00000000
--- a/.cli/commands/blueprint/index.js
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const path = require('path');
-const chalk = require('chalk');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier');
-const generator = require('./generator');
-const mod = path.dirname(require.main.filename);
-const { message } = require(`${mod}/lib/messenger`);
-
-const parsePrompt = require(path.normalize(
-    process.cwd() + '/.cli/utils/parse-prompt',
-));
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli blueprint
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'blueprint';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Created a new Blueprint object.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Blueprint canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ` `,
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = error
-                    ? false
-                    : op.get(input, 'confirmed', false);
-                if (confirmed === false) {
-                    reject(error);
-                } else {
-                    op.set(params, 'confirmed', true);
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) =>
-    Object.keys(input)
-        .sort()
-        .reduce((obj, key) => {
-            let val = input[key];
-            switch (key) {
-                case 'zones':
-                case 'capabilities':
-                    val = String(val)
-                        .replace(' ', '')
-                        .split(',');
-                    obj[key] = _.compact(val);
-                    break;
-
-                default:
-                    obj[key] = val;
-                    break;
-            }
-            return obj;
-        }, {});
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli blueprint -h
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = [
-    'auth',
-    'capabilities',
-    'overwrite',
-    'server',
-    'app',
-    'name',
-    'zones',
-    'header',
-    'sidebar',
-    'masterKey',
-    'route',
-    'description',
-];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    msg = msg || 'Preflight checklist:';
-
-    message(msg);
-
-    // Transform the preflight object instead of the params object
-    const preflight = { ...params };
-
-    console.log(
-        prettier.format(JSON.stringify(preflight), {
-            parser: 'json-stringify',
-        }),
-    );
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-
-const SCHEMA = ({ props }) => ({
-    properties: {
-        name: {
-            description: chalk.white('Blueprint name:'),
-            message: 'Blueprint name is required',
-            required: true,
-        },
-        description: {
-            description: chalk.white('Blueprint description:'),
-        },
-        zones: {
-            description: chalk.white('Content Zones:'),
-            default: 'content',
-        },
-        route: {
-            description: chalk.white('Route:'),
-        },
-        capabilities: {
-            description: chalk.white('Route Capabilities:'),
-        },
-    },
-});
-
-const APP = props => op.get(props, 'config.parse.app');
-const AUTH = props => op.get(props, 'config.parse.auth');
-const SERVER = (props, defaultValue) =>
-    op.get(props, 'config.parse.server', defaultValue);
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = async ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    let ovr = FLAGS_TO_PARAMS({ opt });
-
-    op.set(ovr, 'app', op.get(ovr, 'app', APP(props)));
-    op.set(ovr, 'auth', op.get(ovr, 'auth', AUTH(props)));
-    op.set(ovr, 'server', op.get(ovr, 'server', SERVER(props)));
-
-    ovr = await parsePrompt({
-        override: ovr,
-        options: opt,
-        props,
-        prompt,
-        CANCELED,
-    });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(SCHEMA({ props, override: ovr }), (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(op.get(err, 'message', CANCELED));
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            const params = CONFORM({ input, props });
-
-            PREFLIGHT({
-                msg:
-                    'A new blueprint will be created with the following options:',
-                params,
-                props,
-            });
-
-            resolve(params);
-        });
-    })
-        .then(params => {
-            return CONFIRM({ props, params });
-        })
-        .then(params => {
-            console.log('');
-            return generator({ params, props });
-        })
-        .then(results => {
-            console.log('');
-        })
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-a, --auth [auth]', 'Parse session token.')
-        .option(
-            '-b, --builtIn [builtIn]',
-            'Persist the blueprint by making it a built in.',
-        )
-        .option('-o, --overwrite [overwrite]', 'Overwrite existing blueprint.')
-        .option('-m, --masterKey [masterKey]', 'Parse masterKey.')
-        .option('-n, --name [name]', 'Unique blueprint name.')
-        .option('-d, --description [description]', 'Blueprint description.')
-        .option('-r, --route [route]', 'Route associated with the blueprint.')
-        .option(
-            '-c, --capabilities [capabilities]',
-            'Capabilities associated with the route.',
-        )
-        .option('-s, --server [server]', 'Parse server url.')
-        .option('-z, --zones [zones]', 'Blueprint zones.')
-        .option('-A, --app [app]', 'Parse app ID.')
-        .option('--no-header', 'Exclude the header zone')
-        .option('--no-sidebar', 'Exclude the sidebar zone')
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.cli/commands/blueprint/template/default.json b/.cli/commands/blueprint/template/default.json
deleted file mode 100644
index 14d6b5b9..00000000
--- a/.cli/commands/blueprint/template/default.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "sections": {
-        "header": {
-            "zones": ["header"],
-            "meta": {}
-        },
-        "sidebar": {
-            "zones": ["sidebar"],
-            "meta": {}
-        },
-        "main": {
-            "zones": ["content"],
-            "meta": {}
-        }
-    },
-    "meta": {
-        "builtIn": true
-    },
-    "description": "Default blueprint"
-}
diff --git a/.cli/commands/install-test/actions.js b/.cli/commands/install-test/actions.js
deleted file mode 100644
index 31784f04..00000000
--- a/.cli/commands/install-test/actions.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const path = require('path');
-
-module.exports = spinner =>
-    require(path.normalize(
-        path.join(
-            path.resolve(
-                process.cwd(),
-                'src',
-                'app',
-                'components',
-                'Admin',
-                'arcli-install',
-            ),
-        ),
-    ))(spinner);
diff --git a/.cli/commands/install-test/generator.js b/.cli/commands/install-test/generator.js
deleted file mode 100644
index fa396aef..00000000
--- a/.cli/commands/install-test/generator.js
+++ /dev/null
@@ -1,31 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    console.log('');
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.log('');
-            console.log(error);
-            console.log('');
-            return error;
-        });
-};
diff --git a/.cli/commands/install-test/index.js b/.cli/commands/install-test/index.js
deleted file mode 100644
index 2ac761b4..00000000
--- a/.cli/commands/install-test/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const path = require('path');
-const op = require('object-path');
-const GENERATOR = require('./generator');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const NAME = 'install-test';
-const CANCELED = 'Action canceled!';
-const DESC = 'Test the install actions';
-
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli install-test -h
-`);
-
-const ACTION = ({ opt, props }) =>
-    GENERATOR({
-        params: { filter: opt.filter, append: opt.append },
-        props,
-    }).catch(err => message(op.get(err, 'message', CANCELED)));
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option(
-            '-F, --no-filter [filter]',
-            'Do not filter out scss files prefixed with an underscore.',
-        )
-        .option(
-            '-p, --append [append]',
-            'Inject the include path at the end of the file.',
-        )
-        .on('--help', HELP);
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.cli/commands/publish-test/actions.js b/.cli/commands/publish-test/actions.js
deleted file mode 100644
index d70107c6..00000000
--- a/.cli/commands/publish-test/actions.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const path = require('path');
-
-module.exports = spinner =>
-    require(path.normalize(
-        path.join(
-            path.resolve(
-                process.cwd(),
-                'src',
-                'app',
-                'components',
-                'Admin',
-                'arcli-publish',
-            ),
-        ),
-    ))(spinner);
diff --git a/.cli/commands/publish-test/generator.js b/.cli/commands/publish-test/generator.js
deleted file mode 100644
index 179e8bcf..00000000
--- a/.cli/commands/publish-test/generator.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const ora = require('ora');
-const path = require('path');
-const op = require('object-path');
-const ActionSequence = require('action-sequence');
-
-const normalize = (...args) => path.normalize(path.join(...args));
-
-module.exports = ({ params, props }) => {
-    console.log('');
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    op.set(
-        props,
-        'cwd',
-        normalize(props.cwd, 'src', 'app', 'components', 'Admin'),
-    );
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.log('');
-            console.log(error);
-            console.log('');
-            return error;
-        });
-};
diff --git a/.cli/commands/publish-test/index.js b/.cli/commands/publish-test/index.js
deleted file mode 100644
index ffef303a..00000000
--- a/.cli/commands/publish-test/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const path = require('path');
-const op = require('object-path');
-const GENERATOR = require('./generator');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const NAME = 'publish-test';
-const CANCELED = 'Action canceled!';
-const DESC = 'Test the publish actions';
-
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli publish-test -h
-`);
-
-const ACTION = ({ opt, props }) =>
-    GENERATOR({
-        params: { filter: opt.filter, append: opt.append },
-        props,
-    }).catch(err => message(op.get(err, 'message', CANCELED)));
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .on('--help', HELP);
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.cli/commands/publisher/actions.js b/.cli/commands/publisher/actions.js
deleted file mode 100644
index 0cbda398..00000000
--- a/.cli/commands/publisher/actions.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const copy = require('clipboardy');
-const pkg = require('../../../package');
-
-const { chalk, fs, op, path } = arcli;
-
-const normalize = (...p) => path.normalize(path.join(process.cwd(), ...p));
-
-const dest = (...p) => normalize('reactium_modules', '@atomic-reactor', ...p);
-
-const jsonColorize = json =>
-    String(json)
-        .replace(/\"(.*?)\"(:)/gm, `${chalk.cyan('"$1"')}${chalk.white(':')}`)
-        .replace(/\s\"(.*?)\"/gm, ` ${chalk.magenta('"$1"')}`);
-
-const pkgTmp = {
-    name: '@atomic-reactor/reactium-admin-content',
-    version: '1.0.0',
-    description: 'Reactium Admin plugin',
-    main: 'index.js',
-    scripts: {
-        test: 'echo "Error: no test specified" && exit 1',
-    },
-    keywords: ['reactium', 'admin'],
-    author: 'Reactium LLC',
-    license: 'MIT',
-};
-
-let mem = {
-    directories: [],
-    plugins: [],
-};
-
-module.exports = () => ({
-    init: () => {
-        console.log('');
-        console.log(`Publishing ${chalk.magenta('Reactium Admin')} plugins...`);
-    },
-    directories: ({ params }) => {
-        mem.plugins = Array.from(params.plugins);
-        mem.directories = mem.plugins.map(dir => dest(dir));
-    },
-    publish: async ({ params }) => {
-        const ver = op.get(params, 'ver', 'patch');
-        const dirs = Array.from(mem.directories).filter(dir => {
-            return !String(path.basename(dir)).startsWith('.');
-        });
-
-        while (dirs.length > 0) {
-            const dir = dirs.shift();
-            try {
-                await arcli.runCommand(
-                    'arcli',
-                    ['publish', '-p', 'n', '--ver', ver],
-                    { cwd: dir },
-                );
-            } catch (err) {
-                console.log(err);
-            }
-        }
-    },
-});
diff --git a/.cli/commands/publisher/index.js b/.cli/commands/publisher/index.js
deleted file mode 100644
index 1f7118e7..00000000
--- a/.cli/commands/publisher/index.js
+++ /dev/null
@@ -1,218 +0,0 @@
-const actions = require('./actions');
-
-const { _, ActionSequence, chalk, fs, op, path } = arcli;
-
-const X = chalk.red('✖');
-const CHK = chalk.green('✓');
-
-const message = (...msg) => {
-    console.log('');
-    console.log(...msg);
-    console.log('');
-};
-
-const error = (...err) => message(chalk.red('Error:'), ...err);
-
-const exit = (...msg) => {
-    message(...msg);
-    process.exit();
-};
-
-const normalize = (...p) => path.normalize(path.join(process.cwd(), ...p));
-
-const dest = (...p) => normalize('reactium_modules', '@atomic-reactor', ...p);
-
-const plugins = () => fs.readdirSync(dest());
-
-const NAME = 'publisher';
-
-const DESC = 'Publish Reactium Admin plugins';
-
-// prettier-ignore
-const CANCELED = ` ${X} ${chalk.magenta(NAME)} ${chalk.cyan('canceled!')}`;
-
-const PROMPT = {
-    CONFIG: async (props, params) => {
-        const exclusive = Array.from(op.get(params, 'include', [])).length > 0;
-
-        const { exclude, include, update, ver } = await props.inquirer.prompt(
-            [
-                {
-                    loop: false,
-                    name: 'ver',
-                    type: 'list',
-                    default: 'patch',
-                    prefix: props.prefix,
-                    message: 'Version bump:',
-                    when: () => !op.get(params, 'ver'),
-                    choices: ['patch', 'minor', 'major'],
-                },
-                {
-                    loop: false,
-                    name: 'exclude',
-                    type: 'checkbox',
-                    default: op.get(params, 'exclude', []),
-                    prefix: props.prefix,
-                    message: 'Exclude:  ',
-                    when: () => !exclusive,
-                    choices: props.plugins.filter(
-                        p => !String(p).startsWith('.'),
-                    ),
-                    askAnswered: !exclusive,
-                },
-            ],
-            params,
-        );
-
-        params.ver = ver;
-        params.update = update;
-        params.exclude = exclude;
-        params.include = include;
-    },
-    CONFIRM: async (props, params) => {
-        const { confirm } = await props.inquirer.prompt(
-            [
-                {
-                    default: false,
-                    name: 'confirm',
-                    type: 'confirm',
-                    prefix: props.prefix,
-                    message: 'Proceed?:',
-                },
-            ],
-            params,
-        );
-
-        params.confirm = confirm;
-    },
-};
-
-const CONFORM = ({ params, props }) => {
-    let newParams = Object.keys(params).reduce((obj, key) => {
-        let val = params[key];
-        switch (key) {
-            default:
-                obj[key] = val;
-                break;
-        }
-        return obj;
-    }, {});
-
-    const { exclude = [], include = [] } = newParams;
-    if (include.length > 0) {
-        op.set(newParams, 'exclude', []);
-    }
-
-    newParams.exclude = exclude;
-    newParams.include = include;
-    newParams.plugins = props.plugins;
-
-    if (newParams.include.length > 0) {
-        newParams.plugins = _.intersection(
-            newParams.plugins,
-            newParams.include,
-        );
-    }
-
-    if (newParams.exclude.length > 0) {
-        newParams.plugins = _.without(newParams.plugins, ...newParams.exclude);
-    }
-
-    return newParams;
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Examples:
-  $ ${chalk.white('arcli')} ${chalk.magenta(NAME)} ${chalk.cyan('--ver')} patch ${chalk.cyan('--include')} "reactium-admin-content, reactium-admin-shortcuts"
-  $ ${chalk.white('arcli')} ${chalk.magenta(NAME)} ${chalk.cyan('--ver')} minor ${chalk.cyan('--exclude')} "reactium-admin-content, reactium-admin-shortcuts"
-  $ ${chalk.white('arcli')} ${chalk.magenta(NAME)} ${chalk.cyan('--ver')} major
-`);
-
-const ACTION = async ({ opt, props }) => {
-    console.log('');
-
-    props.error = error;
-    props.message = message;
-    props.plugins = plugins();
-    props.prefix = chalk.cyan(props.config.prompt.prefix);
-
-    let params = FLAGS_TO_PARAMS({ opt, props });
-
-    await PROMPT.CONFIG(props, params);
-
-    await PROMPT.CONFIRM(props, params);
-
-    params = CONFORM({ params, props });
-
-    if (!params.confirm) exit(CANCELED);
-
-    const [errors, success] = await ActionSequence({
-        actions: actions(),
-        options: { params, props },
-    })
-        .then(success => [null, success])
-        .catch(error => [error]);
-
-    if (!success && errors) {
-        error(X, errors);
-    } else {
-        message(CHK, chalk.magenta(name), 'complete!');
-    }
-
-    process.exit();
-};
-
-const FLAGS = {
-    ver: {
-        flag: '--ver [ver]',
-        desc: 'Version bump type',
-    },
-    exclude: {
-        flag: '-e, --exclude [exclude]',
-        desc: 'Exclude specific plugins',
-    },
-    include: {
-        flag: '-i, --include [include]',
-        desc: 'Publish specific plugins only',
-    },
-};
-
-const FLAGS_TO_PARAMS = ({ opt = {}, props }) =>
-    Object.keys(FLAGS).reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        switch (key) {
-            case 'exclude':
-            case 'include':
-                if (val) {
-                    // prettier-ignore
-                    obj[key] = _.chain(String(val).replace(/\s/g, '').split(','))
-                    .compact()
-                    .intersection(props.plugins)
-                    .value();
-                }
-                break;
-
-            default:
-                obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option(FLAGS.ver.flag, FLAGS.ver.desc)
-        .option(FLAGS.exclude.flag, FLAGS.exclude.desc)
-        .option(FLAGS.include.flag, FLAGS.include.desc)
-        .on('--help', HELP);
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.cli/commands/style/actions.js b/.cli/commands/style/actions.js
deleted file mode 100644
index 059be1a4..00000000
--- a/.cli/commands/style/actions.js
+++ /dev/null
@@ -1,121 +0,0 @@
-const fs = require('fs-extra');
-const path = require('path');
-const op = require('object-path');
-const prettier = require('prettier');
-const chalk = require('chalk');
-const homedir = require('os').homedir();
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        backup: ({ action, params, props }) => {
-            const { filename, filepath, overwrite } = params;
-            const { cwd, root } = props;
-
-            return new Promise((resolve, reject) => {
-                if (overwrite !== true) {
-                    resolve({ action, status: 200 });
-                    return;
-                }
-
-                message(`backing up ${chalk.cyan(filename)}...`);
-
-                const now = Date.now();
-                const dir = path.join(
-                    homedir,
-                    '.arcli',
-                    cwd,
-                    '.BACKUP',
-                    'style',
-                );
-                const backup = path.normalize(`${dir}/${now}.${filename}`);
-
-                // Create the backup directory
-                fs.ensureDirSync(dir);
-
-                // Copy
-                fs.copy(path.normalize(filepath), backup, error => {
-                    if (error) {
-                        reject(error);
-                    } else {
-                        resolve({ action, status: 200 });
-                    }
-                });
-            });
-        },
-
-        create: ({ action, params }) => {
-            const { destination, filename, filepath, overwrite } = params;
-
-            const actionType = overwrite === true ? 'overwritting' : 'creating';
-
-            message(`${actionType} stylesheet ${chalk.cyan(filename)}...`);
-
-            fs.ensureDirSync(path.normalize(destination));
-
-            // Template content
-            const template = path.normalize(`${__dirname}/template/style.hbs`);
-            const content = handlebars(fs.readFileSync(template, 'utf-8'))(
-                params,
-            );
-
-            return new Promise((resolve, reject) => {
-                fs.writeFile(filepath, content, error => {
-                    if (error) {
-                        reject(error.Error);
-                    } else {
-                        resolve({ action, status: 200 });
-                    }
-                });
-            });
-        },
-
-        inject: ({ action, params }) => {
-            const { importString = [], inject = [] } = params;
-
-            const promises =
-                inject.length > 0
-                    ? inject.map(
-                          (filepath, i) =>
-                              new Promise((resolve, reject) => {
-                                  const istring = `\n@import '${importString[i]}';`;
-                                  let content = fs.readFileSync(
-                                      filepath,
-                                      'utf-8',
-                                  );
-                                  if (content.indexOf(istring) < 0) {
-                                      content += istring;
-                                      fs.writeFile(filepath, content, error => {
-                                          if (error) {
-                                              reject(error);
-                                          } else {
-                                              resolve({
-                                                  action,
-                                                  filepath,
-                                                  status: 200,
-                                              });
-                                          }
-                                      });
-                                  } else {
-                                      resolve({
-                                          action,
-                                          filepath,
-                                          status: 200,
-                                      });
-                                  }
-                              }),
-                      )
-                    : [];
-
-            return promises.length > 0
-                ? Promise.all(promises)
-                : new Promise(resolve => resolve({ action, status: 200 }));
-        },
-    };
-};
diff --git a/.cli/commands/style/generator.js b/.cli/commands/style/generator.js
deleted file mode 100644
index d6607a12..00000000
--- a/.cli/commands/style/generator.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const ora = require('ora');
-const chalk = require('chalk');
-const ActionSequence = require('action-sequence');
-
-const spinner = ora({
-    spinner: 'dots',
-    color: 'cyan',
-});
-
-const actions = require('./actions')(spinner);
-
-module.exports = ({ params, props }) => {
-    spinner.start();
-
-    const { filename, overwrite } = params;
-
-    const successMsg =
-        overwrite === true
-            ? `Overwrote stylesheet ${chalk.cyan(filename)}`
-            : `Added style sheet ${chalk.cyan(filename)}`;
-
-    const errorMsg =
-        overwrite === true
-            ? `Unable to overwrite stylesheet ${chalk.cyan(filename)}`
-            : `Unable to add stylesheet ${chalk.cyan(filename)}`;
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed(successMsg);
-            return success;
-        })
-        .catch(error => {
-            spinner.fail(errorMsg);
-            return error;
-        });
-};
diff --git a/.cli/commands/style/index.js b/.cli/commands/style/index.js
deleted file mode 100644
index 785eb33c..00000000
--- a/.cli/commands/style/index.js
+++ /dev/null
@@ -1,413 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const _ = require('underscore');
-const fs = require('fs-extra');
-const path = require('path');
-const chalk = require('chalk');
-const op = require('object-path');
-const generator = require('./generator');
-const globby = require('globby').sync;
-const prettier = require('prettier');
-const slugify = require('slugify');
-const mod = path.dirname(require.main.filename);
-const pad = require(`${mod}/lib/pad`);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const formatDestination = (val, props) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-    val = String(val).replace(/^~\/|^\/cwd\/|^cwd\/|^cwd$/i, `${cwd}/`);
-    val = String(val).replace(
-        /^\/core\/|^core\/|^core/i,
-        `${cwd}/.core/components/`,
-    );
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-
-    return path.normalize(val);
-};
-
-const formatFilename = val => {
-    const ext = val.substr(-5);
-    const exts = ['.scss', '.less'];
-
-    val = slugify(val, '-');
-    val = val.substr(0, 1) !== '_' ? `_${val}` : val;
-    val += exts.indexOf(ext) < 0 ? '.scss' : '';
-
-    return val;
-};
-
-const formatImport = (val, props) => {
-    const styles = topLevelStyles({ props });
-
-    val = String(val)
-        .replace(/[^0-9\s]/g, '')
-        .replace(/\s\s+/g, ' ')
-        .trim();
-    val = _.compact(
-        val.split(' ').map(v => {
-            v = Number(String(v).replace(/[^0-9]/gi)) - 1;
-            return styles[v];
-        }),
-    );
-
-    return val;
-};
-
-const topLevelStyles = ({ props }) =>
-    globby([`${props.cwd}/src/**/*.scss`]).filter(
-        file => path.basename(file) === '_admin.scss',
-    );
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli re:style --path '~/src/assets/style' --name 'style.scss'
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'style';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Reactium: Create a style sheet.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Style sheet creation canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params }) => {
-    const { prompt } = props;
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${chalk.white('Proceed?')} ${chalk.cyan(
-                            '(Y/N):',
-                        )}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toLowerCase() === 'y';
-                        },
-                    },
-                },
-            },
-            (error, input) => {
-                const confirmed = op.get(input, 'confirmed');
-
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    resolve(confirmed);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) => {
-    const { cwd } = props;
-
-    let output = {};
-
-    Object.entries(input).forEach(([key, val]) => {
-        switch (key) {
-            case 'destination':
-                output[key] = formatDestination(val, props);
-                break;
-
-            case 'filename':
-                output[key] = formatFilename(val);
-                break;
-
-            case 'inject':
-                output[key] = formatImport(val, props);
-                break;
-
-            default:
-                output[key] = val;
-                break;
-        }
-    });
-
-    // Set the file path
-    output['filepath'] = path.normalize(
-        path.join(output.destination, output.filename),
-    );
-
-    // Set the style import statement
-    const ext = path.extname(output.filename);
-    const fnameReplace = output.filename.replace(/^_/, '').replace(ext, '');
-    output['name'] = fnameReplace;
-    output['ext'] = ext;
-    output['importString'] = output.inject.map(filepath =>
-        path
-            .relative(filepath, output.filepath)
-            .replace(/^\..\//, '')
-            .replace(output.filename, fnameReplace),
-    );
-
-    return output;
-};
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () => {
-    console.log('');
-    console.log('Example:');
-    console.log('');
-    console.log(
-        "  arcli style --filename '_fubar.scss' --destination '~/src/assets/style' --overwrite",
-    );
-    console.log('');
-};
-
-/**
- * SCHEMA Object
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    const { cwd, prompt } = props;
-    const defaultDirectory = path.normalize('/src/assets/style');
-
-    const styleList = topLevelStyles({ props });
-    const styleLen = String(styleList.length).length;
-    const styles = styleList
-        .map((file, index) => {
-            index += 1;
-            let i = chalk.cyan(pad(index, styleLen) + '.');
-            return `\n\t    ${i} ${chalk.white(file)}`;
-        })
-        .join('');
-
-    return {
-        properties: {
-            destination: {
-                description: chalk.white('Destination:'),
-                default: `~${defaultDirectory}`,
-                required: true,
-            },
-            filename: {
-                type: 'string',
-                description: chalk.white('File Name:'),
-                message: 'File name is a required parameter',
-                required: true,
-                before: val => {
-                    const ext = val.substr(-5);
-                    const exts = ['.scss', '.less'];
-
-                    val = val.substr(0, 1) !== '_' ? `_${val}` : val;
-                    val += exts.indexOf(ext) < 0 ? '.scss' : '';
-
-                    return val;
-                },
-            },
-            overwrite: {
-                required: true,
-                pattern: /^y|n|Y|N/,
-                message: '',
-                description: `${chalk.white(
-                    'Overwrite existing stylesheet?',
-                )} ${chalk.cyan('(Y/N):')}`,
-                ask: () => {
-                    try {
-                        let dest =
-                            prompt.override['destination'] ||
-                            prompt.history('destination').value;
-                        dest = formatDestination(dest, props);
-
-                        let file =
-                            prompt.override['filename'] ||
-                            prompt.history('filename').value;
-                        file = formatFilename(file);
-
-                        const filepath = path.normalize(path.join(dest, file));
-
-                        return fs.existsSync(filepath);
-                    } catch (err) {
-                        return false;
-                    }
-                },
-                before: val => {
-                    return String(val).toLowerCase() === 'y';
-                },
-            },
-            inject: {
-                pattern: /[0-9\s]/,
-                description: `${chalk.white(
-                    'Import to:',
-                )} ${styles}\n    ${chalk.white('Select:')}`,
-                required: true,
-                message: 'Select a number or list of numbers. Example: 1 2 3',
-                ask: () => {
-                    let overwrite;
-                    try {
-                        overwrite =
-                            prompt.override['overwrite'] ||
-                            prompt.history('overwrite').value;
-                    } catch (err) {
-                        overwrite = true;
-                    }
-
-                    return overwrite !== false;
-                },
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-
-    const ovr = {};
-    const schema = SCHEMA({ props });
-    Object.keys(schema.properties).forEach(key => {
-        if (opt[key]) {
-            ovr[key] = opt[key];
-        }
-    });
-
-    const { overwrite } = opt;
-
-    ovr['inject'] = 1;
-    prompt.override = ovr;
-    prompt.start();
-    prompt.get(schema, (err, input) => {
-        // Keep this conditional as the first line in this function.
-        // Why? because you will get a js error if you try to set or use anything related to the input object.
-        if (err) {
-            prompt.stop();
-            error(`${NAME} ${err.message}`);
-            return;
-        }
-
-        const params = CONFORM({ input, props });
-        const { overwrite } = params;
-
-        // Exit if overwrite or confirm !== true
-        if (typeof overwrite === 'boolean' && !overwrite) {
-            prompt.stop();
-            message(CANCELED);
-            return;
-        }
-
-        message('A style sheet will be created with the following parameters:');
-        const preflight = { filepath: null, ...params };
-
-        delete preflight.destination;
-        delete preflight.filename;
-        delete preflight.importString;
-
-        if (overwrite !== true) {
-            delete preflight.overwrite;
-        }
-
-        params['filepath'] = preflight.filepath;
-
-        console.log(
-            prettier.format(JSON.stringify(preflight), {
-                parser: 'json-stringify',
-            }),
-        );
-
-        CONFIRM({ props, params })
-            .then(async () => {
-                console.log('');
-                await generator({ params, props });
-                console.log('');
-            })
-            .then(() => prompt.stop())
-            .catch(err => {
-                prompt.stop();
-                message(CANCELED);
-            });
-    });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option(
-            '-d, --destination [destination]',
-            'Path where the stylesheet is saved.',
-        )
-        .option('-f, --filename [filename]', 'File name.')
-        .option(
-            '-o, --overwrite [overwrite]',
-            'Overwrite the existing stylesheet.',
-            false,
-        )
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    ACTION,
-    CONFIRM,
-    CONFORM,
-    COMMAND,
-    NAME,
-    topLevelStyles,
-    formatImport,
-};
diff --git a/.cli/commands/style/template/style.hbs b/.cli/commands/style/template/style.hbs
deleted file mode 100644
index 64e9ccf8..00000000
--- a/.cli/commands/style/template/style.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-.{{name}} {
-
-}
diff --git a/.cli/utils/parse-config-update.js b/.cli/utils/parse-config-update.js
deleted file mode 100644
index 6954e95e..00000000
--- a/.cli/utils/parse-config-update.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const path = require('path');
-const fs = require('fs-extra');
-const op = require('object-path');
-
-module.exports = ({ params, props }) => {
-    const { cwd } = props;
-    const { app, auth, server } = params;
-
-    const configPath = path.normalize(cwd + '/.cli/config.json');
-
-    if (!fs.existsSync(configPath)) {
-        fs.ensureFileSync(configPath);
-        fs.writeFileSync(configPath, '{}', 'utf8');
-    }
-
-    const config = require(configPath);
-
-    op.set(config, 'parse.app', app);
-    op.set(config, 'parse.auth', auth);
-    op.set(config, 'parse.server', server);
-
-    fs.writeFileSync(configPath, JSON.stringify(config), 'utf8');
-
-    return { ...props.config, ...config };
-};
diff --git a/.cli/utils/parse-init.js b/.cli/utils/parse-init.js
deleted file mode 100644
index ec2687c6..00000000
--- a/.cli/utils/parse-init.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = ({ params, Parse }) => {
-    const { app, server } = params;
-    Parse.initialize(app);
-    Parse.serverURL = server;
-};
diff --git a/.cli/utils/parse-prompt.js b/.cli/utils/parse-prompt.js
deleted file mode 100644
index d10451b1..00000000
--- a/.cli/utils/parse-prompt.js
+++ /dev/null
@@ -1,114 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const op = require('object-path');
-const copy = require('clipboardy').writeSync;
-const terminalLink = require('terminal-link');
-const mod = path.dirname(require.main.filename);
-const { message } = require(`${mod}/lib/messenger`);
-
-const validateAuth = require(path.normalize(
-    process.cwd() + '/.cli/utils/parse-validate-auth',
-));
-
-const SCHEMA_SERVER = ({ override, props }) => ({
-    properties: {
-        server: {
-            description: chalk.white('Parse Server URI:'),
-            default: 'http://localhost:9000/api',
-            required: true,
-        },
-
-        app: {
-            description: chalk.white('Parse App ID:'),
-            default: op.get(props, 'config.parse.app', 'Actinium'),
-            required: true,
-        },
-    },
-});
-
-const SCHEMA_AUTH = ({ override, props }) => {
-    const url = op.get(override, 'server') + '/auth';
-    const link = terminalLink(url, url);
-    copy(url);
-
-    return {
-        properties: {
-            auth: {
-                description: `${chalk.magenta(
-                    'Authentication Required',
-                )}${chalk.white('...')}\n\n  ${chalk.white(
-                    'To access this command you need a valid session token.\n  Obtain a session token from:\n',
-                )}  ${chalk.cyan(link)}\n\n${chalk[
-                    props.config.prompt.prefixColor
-                ](props.config.prompt.prefix)}${chalk.white('Session Token:')}`,
-                required: true,
-                message: 'Session Token is required',
-            },
-        },
-    };
-};
-
-module.exports = async ({
-    override: ovr,
-    options: opt,
-    props,
-    prompt,
-    CANCELED,
-}) => {
-    CANCELED = CANCELED || 'action canceled';
-
-    ovr = await validateAuth(ovr);
-
-    if (!op.get(ovr, 'server') || !op.get(ovr, 'app')) {
-        try {
-            ovr = await new Promise((resolve, reject) => {
-                prompt.get(
-                    SCHEMA_SERVER({ props, override: ovr }),
-                    (err, input = {}) => {
-                        if (err) {
-                            prompt.stop();
-                            if (op.get(err, 'message') === 'canceled') {
-                                message(CANCELED);
-                            } else {
-                                message(op.get(err, 'message', CANCELED));
-                            }
-                            return reject();
-                        }
-
-                        resolve({ ...ovr, ...input });
-                    },
-                );
-            });
-        } catch (err) {
-            process.exit();
-        }
-    }
-
-    if (!op.get(ovr, 'auth')) {
-        try {
-            ovr = await new Promise((resolve, reject) => {
-                prompt.get(
-                    SCHEMA_AUTH({ props, override: ovr }),
-                    (err, input = {}) => {
-                        if (err) {
-                            prompt.stop();
-                            if (op.get(err, 'message') === 'canceled') {
-                                message(CANCELED);
-                            } else {
-                                message(op.get(err, 'message', CANCELED));
-                            }
-                            reject();
-                            return;
-                        }
-
-                        resolve({ ...ovr, ...input });
-                    },
-                );
-            });
-        } catch (err) {
-            process.exit();
-        }
-    }
-
-    return ovr;
-};
diff --git a/.cli/utils/parse-validate-auth.js b/.cli/utils/parse-validate-auth.js
deleted file mode 100644
index 5c431cd7..00000000
--- a/.cli/utils/parse-validate-auth.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const ora = require('ora');
-const path = require('path');
-const op = require('object-path');
-const Parse = require('parse/node');
-const parseInit = require(path.normalize(
-    process.cwd() + '/.cli/utils/parse-init',
-));
-
-module.exports = async (override = {}) => {
-    const { app, server, auth } = override;
-
-    if (!app || !server || !auth) {
-        return override;
-    }
-
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-        text: 'Validating auth...',
-    });
-
-    spinner.start();
-
-    parseInit({ params: override, Parse });
-
-    try {
-        const { valid = false } = await Parse.Cloud.run(
-            'session-validate',
-            {},
-            { sessionToken: auth },
-        );
-
-        if (valid !== true) {
-            spinner.fail('Invalid session token');
-            op.del(override, 'auth');
-        } else {
-            spinner.succeed('Authenticated!');
-        }
-    } catch (err) {
-        spinner.fail('Invalid session token');
-        op.del(override, 'auth');
-    }
-
-    console.log('');
-
-    return override;
-};
diff --git a/.core/.cli/commands/docs/actions.js b/.core/.cli/commands/docs/actions.js
deleted file mode 100644
index 799e5ebe..00000000
--- a/.core/.cli/commands/docs/actions.js
+++ /dev/null
@@ -1,66 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const { createDoc } = require('apidoc');
-const globby = require('globby');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        create: async ({ action, params, props }) => {
-            message(`Creating ${chalk.cyan('docs')}...`);
-
-            let { src, dest, verbose } = params;
-
-            src = _.flatten(
-                src.map(search => {
-                    if (search === 'node_modules/@atomic-reactor') {
-                        const globRoot = path
-                            .resolve(process.cwd(), search)
-                            .replace(/\\/g, '/');
-
-                        const globs = [
-                            `${globRoot}/**/src/*.js`,
-                            `${globRoot}/**/lib/*.js`,
-                            `!${globRoot}/**/node_modules/**/*`,
-                            `!${globRoot}/cli/**/*`,
-                        ];
-
-                        return _.uniq(
-                            globby
-                                .sync(globs)
-                                .map(fn =>
-                                    path.dirname(fn).replace(globRoot, ''),
-                                ),
-                        ).map(p => `${search}${p}`);
-                    }
-                    return search;
-                }),
-            );
-
-            dest = String(dest)
-                .replace(/ /gi, '')
-                .split(',');
-            dest = _.flatten([dest]);
-
-            dest.forEach(d => {
-                createDoc({
-                    src,
-                    dest: d,
-                    lineEnding: '\n',
-                    debug: verbose,
-                    verbose,
-                });
-            });
-
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/docs/generator.js b/.core/.cli/commands/docs/generator.js
deleted file mode 100644
index 08288f91..00000000
--- a/.core/.cli/commands/docs/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/docs/index.js b/.core/.cli/commands/docs/index.js
deleted file mode 100644
index bb0ccb31..00000000
--- a/.core/.cli/commands/docs/index.js
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli docs
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'docs';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Generate docs';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) =>
-    Object.keys(input).reduce((obj, key) => {
-        const { cwd } = props;
-        let val = input[key];
-        switch (key) {
-            case 'src': {
-                const paths = val.split(',').map(srcDir => {
-                    srcDir = path.normalize(srcDir);
-                    if (/^[\/\\]{1}/.test(srcDir)) {
-                        srcDir = path.relative(cwd, srcDir);
-                    }
-                    return srcDir;
-                });
-                obj.src = paths;
-                break;
-            }
-            case 'dest': {
-                let dest = path.normalize(val);
-                if (/^[\/\\]{1}/.test(dest)) {
-                    dest = path.relative(cwd, dest);
-                }
-                obj.dest = dest;
-                break;
-            }
-            default:
-                obj[key] = val;
-                break;
-        }
-
-        if (!('verbose' in obj)) obj.verbose = false;
-        else obj.verbose = !!obj.verbose;
-
-        return obj;
-    }, {});
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli docs -h
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = ['src', 'dest', 'verbose'];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    const { prompt } = props;
-
-    return {
-        properties: {
-            src: {
-                description: chalk.white(
-                    'Source directories, comma separated:',
-                ),
-                required: true,
-                default: 'src,.core',
-            },
-            dest: {
-                description: chalk.white('Documentation destination:'),
-                required: true,
-                default: 'public/apidocs',
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    console.log('');
-
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-
-            resolve(CONFORM({ input, props }));
-        });
-    })
-        .then(async params => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-s, --src [src]', 'Comma separated src directories to scan.')
-        .option(
-            '-d, --dest [dest]',
-            'Dest directories to output documentation.',
-        )
-        .option('-V, --verbose', 'Verbose logging during generation.')
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/electron/builder/actions.js b/.core/.cli/commands/electron/builder/actions.js
deleted file mode 100644
index 14004e06..00000000
--- a/.core/.cli/commands/electron/builder/actions.js
+++ /dev/null
@@ -1,364 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const run = require('gulp-run');
-const moment = require('moment');
-const op = require('object-path');
-const prettier = require('prettier').format;
-const handlebars = require('handlebars').compile;
-
-const timestamp = () => `[${chalk.magenta(moment().format('HH:mm:ss'))}]`;
-const msg = (...msg) => console.log(timestamp(), ...msg);
-
-const gulpOverride = `
-module.${chalk.cyan('exports')} = ${chalk.magenta('config')} => {
-    config.${chalk.cyan('dest')}.${chalk.cyan('electron')} = ${chalk.magenta(
-    "'build-electron'",
-)};
-    config.${chalk.cyan('dest')}.${chalk.cyan('static')} = ${chalk.magenta(
-    "'build-electron/app/public'",
-)};
-    config.${chalk.cyan('electron')} = {
-        ${chalk.cyan('config')}: {
-            ${chalk.cyan('width')}: ${chalk.white(1024)},
-            ${chalk.cyan('height')}: ${chalk.white(768)},
-            ${chalk.cyan('show')}: ${chalk.white('false')},
-            ${chalk.cyan('title')}: ${chalk.magenta("'App Title'")},
-            ${chalk.cyan('backgroundColor')}: ${chalk.magenta("'#000000'")},
-        },
-        ${chalk.cyan('devtools')}: ${chalk.white('true')},
-    };
-    config.${chalk.cyan('open')} = ${chalk.white('false')};
-
-    return ${chalk.magenta('config')};
-};
-`;
-
-/*
-const manifestOverride = `
-module.${chalk.cyan('exports')} = ${chalk.magenta('config')} => {
-    config.${chalk.cyan('contexts.components.mode')} = ${chalk.magenta(
-    "'sync'",
-)};
-    config.${chalk.cyan('contexts.common.mode')} = ${chalk.magenta("'sync'")};
-    config.${chalk.cyan('contexts.toolkit.mode')} = ${chalk.magenta("'sync'")};
-    config.${chalk.cyan('contexts.core.mode')} = ${chalk.magenta("'sync'")};
-
-    return ${chalk.magenta('config')};
-};
-`;
-*/
-
-let cwd;
-let gulpConfig;
-let manifestConfig;
-let reactiumConfig;
-
-module.exports = () => {
-    return {
-        setup: ({ action, props }) =>
-            new Promise(resolve => {
-                cwd = op.get(props, 'cwd');
-                reactiumConfig = require(path.join(
-                    cwd,
-                    '.core',
-                    'reactium-config.js',
-                ));
-
-                gulpConfig = reactiumConfig.build;
-                manifestConfig = reactiumConfig.manifest;
-
-                if (!op.has(gulpConfig, 'dest.electron')) {
-                    msg(
-                        `The following ${chalk.cyan(
-                            'gulp.config.override.js',
-                        )} values need to be set:`,
-                    );
-                    console.log('\n');
-                    console.log(gulpOverride);
-                    console.log(`${chalk.magenta('Action cancelled')}!`);
-                    console.log('\n');
-
-                    process.exit(0);
-                }
-
-                /*
-                if (
-                    op.get(manifestConfig, 'contexts.components.mode') !==
-                    'sync'
-                ) {
-                    msg(
-                        `The following ${chalk.cyan(
-                            'manifest.config.override.js',
-                        )} values need to be set:`,
-                    );
-                    console.log('\n');
-                    console.log(manifestOverride);
-                    console.log(`${chalk.magenta('Action cancelled')}!`);
-                    console.log('\n');
-
-                    process.exit(0);
-                }
-                */
-
-                resolve({ action, status: 200 });
-            }),
-
-        config: ({ action, props }) =>
-            new Promise(resolve => {
-                const configFile = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'app.config.js',
-                );
-
-                if (!fs.existsSync(configFile)) {
-                    msg('Generating', chalk.cyan('app.config.js') + '...');
-
-                    const appConfig = {
-                        port: op.get(gulpConfig, 'port'),
-                        electron: op.get(gulpConfig, 'electron'),
-                    };
-
-                    fs.ensureFileSync(configFile);
-
-                    const templateFile = path.join(
-                        __dirname,
-                        'template',
-                        'app.config.hbs',
-                    );
-
-                    const template = handlebars(
-                        fs.readFileSync(templateFile, 'utf-8'),
-                    )({
-                        config: String(
-                            prettier(JSON.stringify(appConfig, null, 4), {
-                                parser: 'json5',
-                            }),
-                        ).trim(),
-                    });
-
-                    fs.writeFileSync(configFile, template);
-                }
-
-                resolve({ action, status: 200 });
-            }),
-
-        build: ({ action, props }) =>
-            new Promise(resolve => {
-                msg('Building', chalk.cyan('app') + '...');
-                const cmd = new run.Command(
-                    `cross-env NODE_ENV=production gulp --color`,
-                    { verbosity: 0 },
-                );
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        compileCore: ({ action, props }) =>
-            new Promise(resolve => {
-                msg('Compiling', chalk.cyan('core') + '...');
-                const srcDir = path.join(cwd, '.core');
-                const outDir = path.join(
-                    cwd,
-                    op.get(gulpConfig, 'dest.build', 'build/.core'),
-                );
-                const cmd = new run.Command(
-                    `cross-env NODE_ENV=production babel "${srcDir}" --out-dir "${outDir}"`,
-                    { verbosity: 0 },
-                );
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        compileSrc: ({ action, props }) =>
-            new Promise(resolve => {
-                msg('Compiling', chalk.cyan('src') + '...');
-                const srcDir = path.join(cwd, 'src');
-                const outDir = path.join(
-                    cwd,
-                    op.get(gulpConfig, 'dest.buildSrc', 'build/src'),
-                );
-                const cmd = new run.Command(
-                    `cross-env NODE_ENV=production babel "${srcDir}" --out-dir "${outDir}"`,
-                    { verbosity: 0 },
-                );
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        static: ({ action, props }) =>
-            new Promise(resolve => {
-                // Clear output directory
-                fs.removeSync(
-                    path.join(
-                        cwd,
-                        op.get(
-                            gulpConfig,
-                            'dest.static',
-                            'build-electron/app/public',
-                        ),
-                    ),
-                );
-
-                const cmd = new run.Command(`gulp static --color`, {
-                    verbosity: 0,
-                });
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        main: ({ action, props }) =>
-            new Promise(resolve => {
-                const destFile = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'main.js',
-                );
-
-                if (!fs.existsSync(destFile)) {
-                    msg('Generating', chalk.cyan('main.js') + '...');
-
-                    const templateFile = path.join(
-                        __dirname,
-                        'template',
-                        'main.js',
-                    );
-
-                    fs.ensureFileSync(destFile);
-                    fs.copySync(templateFile, destFile);
-                }
-
-                resolve({ action, status: 200 });
-            }),
-
-        resources: ({ action, props }) =>
-            new Promise(resolve => {
-                const destDir = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'resources',
-                );
-
-                if (!fs.existsSync(destDir)) {
-                    msg(`Copying ${chalk.cyan('resources')}...`);
-                    const templateDir = path.join(
-                        __dirname,
-                        'template',
-                        'resources',
-                    );
-
-                    fs.ensureDirSync(destDir);
-                    fs.copySync(templateDir, destDir);
-                }
-
-                resolve({ action, status: 200 });
-            }),
-
-        package: ({ action, props }) =>
-            new Promise(resolve => {
-                const destFile = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'package.json',
-                );
-
-                if (!fs.existsSync(destFile)) {
-                    msg(`Generating ${chalk.cyan('package.json')}...`);
-
-                    const templateFile = path.join(
-                        __dirname,
-                        'template',
-                        'package.json',
-                    );
-
-                    fs.ensureFileSync(destFile);
-                    fs.copySync(templateFile, destFile);
-                }
-
-                resolve({ action, status: 200 });
-            }),
-
-        icon: ({ action, props }) =>
-            new Promise(resolve => {
-                msg(`Generating ${chalk.cyan('icons')}...`);
-
-                const shFile = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'resources',
-                    'icon_gen.sh',
-                );
-
-                const icon = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'resources',
-                    'icon.png',
-                );
-
-                const output = path.join(
-                    cwd,
-                    gulpConfig.dest.electron,
-                    'resources',
-                );
-
-                const cmd = new run.Command(
-                    `sh "${shFile}" "${icon}" "${output}"`,
-                    { verbosity: 0 },
-                );
-                cmd.exec(null, () => resolve({ action, status: 200 }));
-            }),
-
-        installElectron: ({ action, props }) =>
-            new Promise(resolve => {
-                msg(`Installing ${chalk.cyan('Electron')}...`);
-                let cmd = new run.Command(`npm install --save-dev electron`, {
-                    verbosity: 0,
-                });
-
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        install: ({ action, props }) =>
-            new Promise(resolve => {
-                msg(`Installing ${chalk.cyan('dependencies')}...`);
-                let cmd = new run.Command(
-                    `cd ${gulpConfig.dest.electron} && npm install`,
-                    { verbosity: 0 },
-                );
-
-                setTimeout(
-                    () =>
-                        cmd.exec(null, () => resolve({ action, status: 200 })),
-                    1,
-                );
-            }),
-
-        complete: ({ action }) =>
-            new Promise(resolve => {
-                setTimeout(() => {
-                    msg('Build', chalk.cyan('Complete') + '!');
-                    console.log('\n');
-                    resolve({ action, status: 200 });
-                }, 3000);
-            }),
-    };
-};
diff --git a/.core/.cli/commands/electron/builder/generator.js b/.core/.cli/commands/electron/builder/generator.js
deleted file mode 100644
index 5a3cb3d8..00000000
--- a/.core/.cli/commands/electron/builder/generator.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, props }) => {
-    const actions = require('./actions')();
-
-    return ActionSequence({
-        actions,
-        options: { props },
-    })
-        .then(success => success)
-        .catch(error => error);
-};
diff --git a/.core/.cli/commands/electron/builder/index.js b/.core/.cli/commands/electron/builder/index.js
deleted file mode 100644
index 39d7027b..00000000
--- a/.core/.cli/commands/electron/builder/index.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const generator = require('./generator');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli electron-build
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'electron-build';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Command for building Reactium into an Electron app.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'electron-build canceled!';
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli electron-build
-`);
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) =>
-    generator({ props })
-        .then(() => console.log(''))
-        .catch(err => console.log(err));
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/electron/builder/template/app.config.hbs b/.core/.cli/commands/electron/builder/template/app.config.hbs
deleted file mode 100644
index 76052ce5..00000000
--- a/.core/.cli/commands/electron/builder/template/app.config.hbs
+++ /dev/null
@@ -1,6 +0,0 @@
-// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-//   FILE GENERATED BY: $ arcli electron-build
-//   DONOT DIRECTLY EDIT
-// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-module.exports = {{{config}}};
diff --git a/.core/.cli/commands/electron/builder/template/main.js b/.core/.cli/commands/electron/builder/template/main.js
deleted file mode 100644
index 053279f7..00000000
--- a/.core/.cli/commands/electron/builder/template/main.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// Get the process env.
-const env = process.env;
-
-const path = require('path');
-const { app, BrowserWindow } = require('electron');
-const config = require(path.join(__dirname, 'app.config'));
-
-let mainWindow;
-
-const createWindow = async () => {
-    // Create the browser window.
-    mainWindow = new BrowserWindow(config.electron.mainWindow);
-
-    // Show the window when ready and focus it
-    mainWindow.once('ready-to-show', () => {
-        setTimeout(() => {
-            mainWindow.show();
-            mainWindow.focus();
-            if (config.electron.devtools === true) {
-                mainWindow.webContents.openDevTools();
-            }
-        }, 1000);
-    });
-
-    // Emitted when the window is closed.
-    mainWindow.on('closed', function() {
-        mainWindow = null;
-    });
-
-    // Load the localhost of the app.
-    if (env.NODE_ENV === 'development') {
-        const port = config.port.browsersync || 3000;
-        mainWindow.loadURL(`http://localhost:${port}`);
-    } else {
-        const fs = require('fs');
-        const http = require('http');
-        const getPort = require('get-port');
-        const server = http.createServer((req, res) => {
-            if (req.url === '/') {
-                const rs = fs.createReadStream(
-                    path.join(__dirname, 'app', 'public', 'index.html'),
-                );
-                rs.pipe(res);
-            } else if (req.url.match(/^\/assets/)) {
-                const asset = req.url.replace(/^\/assets/, '');
-                const rs = fs.createReadStream(
-                    path.join(__dirname, 'app', 'public', 'assets', asset),
-                );
-                rs.pipe(res);
-            } else {
-                res.writeHead(404);
-                res.end();
-            }
-        });
-
-        const port = await getPort();
-        server.listen(port, () =>
-            mainWindow.loadURL(`http://localhost:${port}`),
-        );
-    }
-};
-
-app.on('ready', createWindow);
-
-// Quit when all windows are closed.
-app.on('window-all-closed', function() {
-    if (process.platform !== 'darwin') {
-        app.quit();
-    }
-});
-
-app.on('activate', function() {
-    if (mainWindow === null) {
-        createWindow();
-    }
-});
diff --git a/.core/.cli/commands/electron/builder/template/package.json b/.core/.cli/commands/electron/builder/template/package.json
deleted file mode 100644
index e677ea2c..00000000
--- a/.core/.cli/commands/electron/builder/template/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "name": "reactium-electron",
-  "version": "0.0.1",
-  "description": "Electron app build with Reactium.",
-  "productName": "Reactium App",
-  "author": "Reactium LLC",
-  "main": "main.js",
-  "scripts": {
-    "start": "electron main.js",
-    "pack": "build --dir",
-    "dist": "build"
-  },
-  "build": {
-    "appId": "com.reactium.demo",
-    "directories": {
-      "buildResources": "resources",
-      "output": "release"
-    },
-    "dmg": {
-      "contents": [
-        {
-          "x": 110,
-          "y": 250
-        },
-        {
-          "x": 320,
-          "y": 250,
-          "type": "link",
-          "path": "/Applications"
-        }
-      ]
-    },
-    "linux": {
-      "target": [
-        "AppImage",
-        "deb"
-      ]
-    },
-    "win": {
-      "target": "squirrel",
-      "icon": "build/icon.ico"
-    }
-  },
-  "repository": "https://github.com/Atomic-Reactor/Reactium.git",
-  "keywords": [
-    "Electron",
-    "React",
-    "Reactium"
-  ],
-  "license": "CC0-1.0",
-  "devDependencies": {
-    "cross-env": "^5.2.0",
-    "electron": "^15.2.0",
-    "electron-builder": "^20.44.4"
-  },
-  "dependencies": {
-    "get-port": "^5.0.0",
-    "globby": "^9.2.0"
-  }
-}
diff --git a/.core/.cli/commands/electron/builder/template/package.json.hbs b/.core/.cli/commands/electron/builder/template/package.json.hbs
deleted file mode 100644
index f8f1ebfc..00000000
--- a/.core/.cli/commands/electron/builder/template/package.json.hbs
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "name": "{{appName}}",
-  "version": "{{version}}",
-  "description": "{{description}}",
-  "productName": "{{productName}}",
-  "author": "{{author}}",
-  "main": "main.js",
-  "scripts": {
-    "start": "cross-env NODE_ENV=production electron main.js",
-    "pack": "build --dir",
-    "dist": "build"
-  },
-  "build": {
-    "appId": "{{appId}}",
-    "directories": {
-      "buildResources": "resources",
-      "output": "release"
-    },
-    "dmg": {
-      "contents": [
-        {
-          "x": 110,
-          "y": 250
-        },
-        {
-          "x": 320,
-          "y": 250,
-          "type": "link",
-          "path": "/Applications"
-        }
-      ]
-    },
-    "linux": {
-      "target": [
-        "AppImage",
-        "deb"
-      ]
-    },
-    "win": {
-      "target": "squirrel",
-      "icon": "build/icon.ico"
-    }
-  },
-  "repository": "https://github.com",
-  "keywords": [
-    "Electron",
-    "app"
-  ],
-  "license": "CC0-1.0",
-  "devDependencies": {
-    "cross-env": "^5.2.0",
-    "electron": "^15.2.0",
-    "electron-builder": "^20.44.4"
-  },
-  "dependencies": {
-    "get-port": "^5.0.0",
-    "globby": "^9.2.0"
-  }
-}
diff --git a/.core/.cli/commands/electron/builder/template/resources/icon.ico b/.core/.cli/commands/electron/builder/template/resources/icon.ico
deleted file mode 100644
index 1aea6b66..00000000
Binary files a/.core/.cli/commands/electron/builder/template/resources/icon.ico and /dev/null differ
diff --git a/.core/.cli/commands/electron/builder/template/resources/icon.png b/.core/.cli/commands/electron/builder/template/resources/icon.png
deleted file mode 100644
index 739f9fdc..00000000
Binary files a/.core/.cli/commands/electron/builder/template/resources/icon.png and /dev/null differ
diff --git a/.core/.cli/commands/electron/builder/template/resources/icon_gen.sh b/.core/.cli/commands/electron/builder/template/resources/icon_gen.sh
deleted file mode 100644
index 6602de64..00000000
--- a/.core/.cli/commands/electron/builder/template/resources/icon_gen.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-# Creates an icns file from a source image
-
-src_image="$1"
-if [ -z "$1" ]; then
-    echo "No source image was passed to this script"
-    exit 1
-fi
-
-output_path="$2"
-if [ -z "$1" ]; then
-    echo "No output path specified"
-    exit 1
-fi
-
-icns_name="icon"
-
-if [ "${src_image:(-3)}" != "png" ]; then
-    echo "Source image is not a PNG, making a converted copy..."
-    /usr/bin/sips -s format png "$src_image" --out "${src_image}.png"
-    if [ $? -ne 0 ]; then
-        echo "The source image could not be converted to PNG format."
-        exit 1
-    fi
-    src_image="${src_image}.png"
-fi
-
-iconset_path="${output_path}/${icns_name}.iconset"
-if [ -e "$iconset_path" ]; then
-    /bin/rm -r "$iconset_path"
-    if [ $? -ne 0 ]; then
-        echo "There is a pre-existing file/dir $iconset_path the could not be deleted"
-        exit 1
-    fi
-fi
-
-/bin/mkdir "$iconset_path"
-
-icon_file_list=(
-    "icon_16x16.png"
-    "icon_16x16@2x.png"
-    "icon_32x32.png"
-    "icon_32x32@2x.png"
-    "icon_128x128.png"
-    "icon_128x128@2x.png"
-    "icon_256x256.png"
-    "icon_256x256@2x.png"
-    "icon_512x512.png"
-    "icon_512x512@2x.png"
-    )
-
-icon_size=(
-    '16'
-    '32'
-    '32'
-    '64'
-    '128'
-    '256'
-    '256'
-    '512'
-    '512'
-    '1024'
-    )
-
-counter=0
-for a in ${icon_file_list[@]}; do
-    icon="${iconset_path}/${a}"
-    /bin/cp "$src_image" "$icon"
-    icon_size=${icon_size[$counter]}
-    /usr/bin/sips -z $icon_size $icon_size "$icon"
-    counter=$(($counter + 1))
-done
-
-echo "Creating .icns file from $iconset_path"
-/usr/bin/iconutil -c icns "$iconset_path"
-if [ $? -ne 0 ]; then
-    echo "There was an error creating the .icns file"
-    exit 1
-fi
-
-echo "Done"
-exit 0
diff --git a/.core/.cli/commands/electron/run/actions.js b/.core/.cli/commands/electron/run/actions.js
deleted file mode 100644
index 3784e705..00000000
--- a/.core/.cli/commands/electron/run/actions.js
+++ /dev/null
@@ -1,126 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const run = require('gulp-run');
-const op = require('object-path');
-const moment = require('moment');
-const { spawn } = require('child_process');
-
-const timestamp = () => `[${chalk.magenta(moment().format('HH:mm:ss'))}]`;
-const msg = (...msg) => console.log(timestamp(), ...msg);
-
-let cwd;
-let gulpConfig;
-let reactiumConfig;
-
-module.exports = () => {
-    let appUI;
-    let appE;
-    let tick = 0;
-
-    return {
-        setup: ({ action, params, props }) => {
-            cwd = op.get(props, 'cwd');
-            reactiumConfig = require(path.join(
-                cwd,
-                '.core',
-                'reactium-config.js',
-            ));
-
-            gulpConfig = reactiumConfig.build;
-
-            const buildDir = path.join(
-                cwd,
-                op.get(gulpConfig, 'dest.electron', 'build-electron'),
-            );
-
-            if (!fs.existsSync(buildDir)) {
-                msg(
-                    'Run the',
-                    `${chalk.cyan('$ arcli electron-build')}`,
-                    'command before continuing',
-                );
-                console.log('\n');
-                console.log(`${chalk.magenta('Action cancelled')}!`);
-                console.log('\n');
-
-                process.exit(0);
-            } else {
-                msg('Electron', chalk.cyan('initializing') + '...');
-                return Promise.resolve({ action, status: 200 });
-            }
-        },
-        reactium: ({ action, params, props }) =>
-            new Promise((resolve, reject) => {
-                msg('Reactium', chalk.cyan('building') + '...');
-
-                const { ui } = params;
-                const p = path.join(ui, 'gulpfile.js');
-                let launching = false;
-
-                appUI = spawn('gulp', ['local', '--gulpfile', p, '--color'], {
-                    env: { ...process.env, NODE_ENV: 'development' },
-                });
-
-                appUI.stderr.pipe(process.stderr);
-                appUI.stdout.pipe(process.stdout);
-                appUI.stdout.on('data', data => {
-                    if (!appE) {
-                        if (
-                            data.toString().indexOf('Compiled successfully') >
-                            -1
-                        ) {
-                            tick += 1;
-                        }
-                        if (data.toString().indexOf('UI External') > -1) {
-                            tick += 1;
-                        }
-
-                        if (tick < 2) {
-                            return;
-                        }
-
-                        if (launching === true) {
-                            return;
-                        }
-
-                        launching = true;
-
-                        setTimeout(
-                            () => msg('Launching', chalk.cyan('app') + '...'),
-                            500,
-                        );
-
-                        setTimeout(() => {
-                            msg('Launched', chalk.cyan('app') + '!');
-
-                            const { electron } = params;
-                            appE = spawn('electron', [electron], {
-                                env: {
-                                    ...process.env,
-                                    NODE_ENV: 'development',
-                                },
-                            });
-                            appE.stdout.pipe(process.stdout);
-                            appE.stderr.pipe(process.stderr);
-
-                            resolve({ action, status: 200 });
-                        }, 5000);
-                    }
-                });
-
-                process.on('SIGINT', () => {
-                    try {
-                        appUI.kill();
-                    } catch (err) {}
-
-                    try {
-                        appE.kill();
-                    } catch (err) {}
-
-                    process.exit(0);
-                });
-            }),
-    };
-};
diff --git a/.core/.cli/commands/electron/run/generator.js b/.core/.cli/commands/electron/run/generator.js
deleted file mode 100644
index 58f5acaf..00000000
--- a/.core/.cli/commands/electron/run/generator.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const actions = require('./actions')();
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            return success;
-        })
-        .catch(error => {
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/electron/run/index.js b/.core/.cli/commands/electron/run/index.js
deleted file mode 100644
index f1188a4c..00000000
--- a/.core/.cli/commands/electron/run/index.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const formatDestination = (val, props) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-    val = String(val).replace(/^~\/|^\/cwd\/|^cwd\/|^cwd$/i, `${cwd}/`);
-    return path.normalize(val);
-};
-
-const NAME = 'electron-run';
-
-const DESC = 'Run the UI and Electron app locally';
-
-const CANCELED = 'Run canceled!';
-
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli electron-run
-  $ arcli electorn-run -e cwd/my/path -u cwd/other/path
-
-** Note: by default the ${chalk.cyan(
-        path.join(__dirname, '..', '..', '..', 'electron.js'),
-    )} and ${chalk.cyan(
-        path.join(__dirname, '..', '..', '..', 'gulpfile.js'),
-    )} are used.
-`);
-
-const FLAGS = ['electron', 'ui'];
-
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const CONFORM = ({ input, props }) => {
-    const { cwd } = props;
-
-    let output = {};
-
-    Object.entries(input).forEach(([key, val]) => {
-        switch (String(key).toLowerCase()) {
-            case 'electron':
-            case 'ui':
-                output[key] = formatDestination(val, props);
-                break;
-
-            default:
-                output[key] = val;
-        }
-    });
-
-    return output;
-};
-
-const SCHEMA = ({ props }) => {
-    return {
-        properties: {
-            electron: {
-                description: chalk.white('Electron Path:'),
-                default: 'cwd/build-electron/main.js',
-            },
-            ui: {
-                description: chalk.white('UI Path:'),
-                default: 'cwd',
-            },
-        },
-    };
-};
-
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    let params;
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-
-            params = CONFORM({ input, props });
-
-            resolve(params);
-        });
-    })
-        .then(async () => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            console.log(err);
-        });
-};
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-u, --ui [ui]', 'UI Path.')
-        .option('-e, --electron [electron]', 'Electron Path.')
-        .on('--help', HELP);
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/i18n/actions.js b/.core/.cli/commands/i18n/actions.js
deleted file mode 100644
index c06e63db..00000000
--- a/.core/.cli/commands/i18n/actions.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const ShowConfigCli = require('gettext-extract');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        generate: async ({ action, params, props }) => {
-            const generator = new ShowConfigCli([]);
-            message(`Generating ${chalk.cyan('POT file')}...`);
-            try {
-                generator.run();
-            } catch (error) {
-                console.log(error);
-            }
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/i18n/generator.js b/.core/.cli/commands/i18n/generator.js
deleted file mode 100644
index 08288f91..00000000
--- a/.core/.cli/commands/i18n/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/i18n/index.js b/.core/.cli/commands/i18n/index.js
deleted file mode 100644
index 9c5d5704..00000000
--- a/.core/.cli/commands/i18n/index.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli docs
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'i18n';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Generate POT file.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) =>
-    Object.keys(input).reduce((obj, key) => {
-        const { cwd } = props;
-        let val = input[key];
-        switch (key) {
-            default:
-                obj[key] = val;
-                break;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli i18n -h
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = [];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    const { prompt } = props;
-
-    return {
-        properties: {},
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-
-            resolve(CONFORM({ input, props }));
-        });
-    })
-        .then(async () => {
-            console.log('');
-            await generator({ props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/component/componentGen.js b/.core/.cli/commands/reactium/component/componentGen.js
deleted file mode 100644
index e997e87b..00000000
--- a/.core/.cli/commands/reactium/component/componentGen.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const { fs, chalk, Reactium } = arcli;
-const handlebars = require('handlebars');
-
-const componentGen = async props => {
-    const { params, spinner } = props;
-
-    const templateDir = arcli.normalizePath(__dirname, 'template');
-
-    const templates = {
-        hooks: {
-            file: 'reactium-hooks.js',
-            template: 'reactium-hooks.hbs',
-            create: params.hooks,
-        },
-        component: {
-            file: 'index.js',
-            template: 'index-functional.hbs',
-            create: params.index,
-        },
-        domain: {
-            file: 'domain.js',
-            template: 'domain.hbs',
-            create: params.domain,
-        },
-        route: {
-            file: 'route.js',
-            template: 'route.hbs',
-            create: typeof params.route === 'string',
-        },
-        style: {
-            file: params.styleType || '_reactium-style.scss',
-            template: params.className ? 'reactium-style.hbs' : undefined,
-            create: params.style,
-        },
-    };
-
-    // Create component directory:
-    fs.ensureDirSync(params.destination);
-
-    // Create component files:
-    for (const item of Object.values(templates)) {
-        if (!item.create) continue;
-
-        const filePath = arcli.normalizePath(params.destination, item.file);
-
-        if (fs.existsSync(filePath) && !params.unattended) {
-            const { overwrite } = await arcli.props.inquirer.prompt([
-                {
-                    default: false,
-                    type: 'confirm',
-                    name: 'overwrite',
-                    message: `Overwrite existing ${item.file} file?`,
-                    prefix: arcli.prefix,
-                    suffix: chalk.magenta(': '),
-                },
-            ]);
-            if (!overwrite) continue;
-        }
-
-        if (!item.template) {
-            fs.ensureFileSync(filePath);
-            continue;
-        }
-
-        const templateFilePath = arcli.normalizePath(
-            templateDir,
-            item.template,
-        );
-
-        let fileContent = handlebars.compile(
-            fs.readFileSync(templateFilePath, 'utf-8'),
-        )(params);
-
-        try {
-            await Reactium.Hook.run('arcli-file-gen', fileContent, props);
-        } catch (err) {
-            spinner.stop();
-            console.log(err);
-            spinner.start();
-        }
-
-        fs.writeFileSync(filePath, fileContent);
-    }
-};
-
-module.exports = componentGen;
diff --git a/.core/.cli/commands/reactium/component/formatDestination.js b/.core/.cli/commands/reactium/component/formatDestination.js
deleted file mode 100644
index 1b806698..00000000
--- a/.core/.cli/commands/reactium/component/formatDestination.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const formatDestination = val => {
-    const { cwd } = arcli.props;
-
-    val = arcli.normalizePath(val);
-    val = String(val).replace(/^~\/|^\/cwd\/|^cwd\/|^cwd$/i, `${cwd}/`);
-    val = String(val).replace(
-        /^\/core\/|^core\/|^core/i,
-        `${cwd}/.core/components/`,
-    );
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-
-    return arcli.normalizePath(val);
-};
-
-module.exports = formatDestination;
diff --git a/.core/.cli/commands/reactium/component/formatRoute.js b/.core/.cli/commands/reactium/component/formatRoute.js
deleted file mode 100644
index b9c2caf1..00000000
--- a/.core/.cli/commands/reactium/component/formatRoute.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const { _ } = arcli;
-
-const formatRoute = route => {
-    const inputToArray = str => {
-        str = String(str)
-            .replace(/,/g, ' ')
-            .replace(/\s\s+/g, ' ');
-
-        return _.compact(str.split(' ')).map(item => {
-            if (String(item).substring(0, 1) !== '/') {
-                item = `/${item}`;
-            }
-
-            return item;
-        });
-    };
-
-    return JSON.stringify(
-        inputToArray(route)
-            .sort()
-            .reverse(),
-    )
-        .replace(/\"/g, "'")
-        .replace(/,/g, ', ');
-};
-
-module.exports = formatRoute;
diff --git a/.core/.cli/commands/reactium/component/index.js b/.core/.cli/commands/reactium/component/index.js
deleted file mode 100644
index 8effb7e9..00000000
--- a/.core/.cli/commands/reactium/component/index.js
+++ /dev/null
@@ -1,204 +0,0 @@
-arcli.Reactium = require('@atomic-reactor/reactium-sdk-core').default;
-
-const { ActionSequence, ora, path, Reactium } = arcli;
-
-const ENUMS = {
-    CANCELED: 'component canceled!',
-    DESC: 'Reactium: Create or replace a component',
-    FLAGS: {
-        destination: {
-            flag: '-d, --destination [destination]',
-            desc: 'Component parent directory',
-        },
-        name: {
-            flag: '-n, --name [name]',
-            desc: 'String used when importing',
-        },
-        route: {
-            flag: '-r, --route [route]',
-            desc: 'Direct routes to the component',
-        },
-        hooks: {
-            flag: '-H, --hooks [hooks]',
-            desc:
-                'Create Reactium hooks file and register component for useHookComponent() usage',
-        },
-        style: {
-            flag: '-s, --style [style]',
-            desc: 'Create a stylesheet file',
-        },
-        domain: {
-            flag: '-D, --domain [domain]',
-            desc: 'Create domain.js file',
-        },
-        unattended: {
-            flag: '-u, --unattended [unattended]',
-            desc: 'Bypass the preflight confirmation and any input prompts',
-        },
-    },
-    NAME: 'component',
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Example:
-  $ arcli component -h
-
-  $ arcli component -n Test
-
-  $ arcli component -s atoms
-
-  $ arcli component -r "/route-1, /route-1/:param"
-`);
-
-const ACTION = async ({ opt, props }) => {
-    // load hooks
-    arcli
-        .globby(
-            [
-                './.core/**/reactium-arcli.js',
-                './src/**/reactium-arcli.js',
-                './reactium_modules/**/reactium-arcli.js',
-                './node_modules/**/reactium-arcli.js',
-            ],
-            {
-                dot: true,
-            },
-        )
-        .forEach(file => require(path.resolve(file)));
-
-    let params = arcli.flagsToParams({ opt, flags: Object.keys(ENUMS.FLAGS) });
-
-    try {
-        await Reactium.Hook.run('arcli-component-init', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    } catch (err) {
-        console.log(err);
-        process.exit();
-    }
-
-    try {
-        await Reactium.Hook.run('arcli-component-enums', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    } catch (err) {
-        console.log(err);
-        process.exit();
-    }
-
-    if (params.unattended !== true) {
-        try {
-            await Reactium.Hook.run('arcli-component-input', {
-                ...props,
-                params,
-                ENUMS,
-            });
-        } catch (err) {
-            console.log(err);
-            process.exit();
-        }
-    }
-
-    try {
-        await Reactium.Hook.run('arcli-component-conform', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    } catch (err) {
-        console.log(err);
-        process.exit();
-    }
-
-    if (params.unattended !== true) {
-        try {
-            await Reactium.Hook.run('arcli-component-preflight', {
-                ...props,
-                params,
-            });
-        } catch (err) {
-            console.log(err);
-            process.exit();
-        }
-
-        try {
-            await Reactium.Hook.run('arcli-component-confirm', {
-                ...props,
-                params,
-                ENUMS,
-            });
-        } catch (err) {
-            console.log(err);
-            process.exit();
-        }
-
-        if (params.confirm !== true) {
-            arcli.message(ENUMS.CANCELED);
-            return;
-        }
-    }
-
-    console.log('');
-
-    // Start the spinner
-
-    const spinner = ora({ spinner: 'dots', color: 'cyan' });
-    spinner.start();
-
-    let actions = {};
-    try {
-        await Reactium.Hook.run('arcli-component-actions', {
-            ...props,
-            params,
-            actions,
-            spinner,
-            ENUMS,
-        });
-    } catch (err) {
-        console.log(err);
-        process.exit();
-    }
-
-    return ActionSequence({
-        actions,
-        options: { params, props, spinner },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.error(error);
-            return error;
-        });
-};
-
-const COMMAND = ({ program, props }) => {
-    program
-        .command(ENUMS.NAME)
-        .description(ENUMS.DESC)
-        .on('--help', HELP)
-        .action(opt => ACTION({ opt, props, program }));
-
-    program.commands
-        .filter(cmd => Boolean(cmd._name === ENUMS.NAME))
-        .forEach(cmd =>
-            Object.values(ENUMS.FLAGS).forEach(({ flag, desc }) =>
-                cmd.option(flag, desc),
-            ),
-        );
-
-    return program;
-};
-
-module.exports = {
-    COMMAND,
-    NAME: ENUMS.NAME,
-};
diff --git a/.core/.cli/commands/reactium/component/reactium-arcli.js b/.core/.cli/commands/reactium/component/reactium-arcli.js
deleted file mode 100644
index e4980dfd..00000000
--- a/.core/.cli/commands/reactium/component/reactium-arcli.js
+++ /dev/null
@@ -1,159 +0,0 @@
-const componentGen = require('./componentGen');
-
-const formatRoute = require('./formatRoute');
-const formatDestination = require('./formatDestination');
-const selectDestination = require('./selectDestination');
-const { selectStyle, styleTypes } = require('./selectStyle');
-
-const camelcase = require('camelcase');
-
-const { _, chalk, prefix, Reactium } = arcli;
-
-const cc = str => camelcase(str, { pascalCase: true });
-const suffix = chalk.magenta(': ');
-
-const PREFLIGHT = ({ msg, params }) => {
-    arcli.message(msg || 'Preflight checklist:');
-    console.log(JSON.stringify(params, null, 2));
-    console.log('');
-};
-
-const INPUT = async ({ inquirer, params }) => {
-    const input = await inquirer.prompt(
-        [
-            selectDestination(),
-            {
-                prefix,
-                suffix,
-                type: 'input',
-                name: 'name',
-                message: 'Component Name',
-            },
-            {
-                prefix,
-                suffix,
-                type: 'input',
-                name: 'route',
-                message: 'Route',
-            },
-            {
-                prefix,
-                suffix,
-                default: true,
-                type: 'confirm',
-                name: 'hooks',
-                message: 'Reactium Hooks?',
-            },
-            {
-                prefix,
-                suffix,
-                default: true,
-                type: 'confirm',
-                name: 'domain',
-                message: 'Domain file?',
-            },
-            {
-                prefix,
-                suffix,
-                default: false,
-                type: 'confirm',
-                name: 'style',
-                message: 'Stylesheet?',
-            },
-            selectStyle({
-                name: 'styleType',
-                when: answers => answers.style === true,
-            }),
-        ],
-        params,
-    );
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFIRM = async ({ inquirer, params }) => {
-    if (params.unattended) return;
-
-    const input = await inquirer.prompt([
-        {
-            prefix,
-            suffix,
-            default: false,
-            type: 'confirm',
-            name: 'confirm',
-            message: 'Proceed?',
-        },
-    ]);
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFORM = async ({ params }) => {
-    params.destination = formatDestination(params.destination);
-
-    if (typeof params.name === 'string') {
-        params.className = String(params.name).toLowerCase();
-        params.name = cc(params.name);
-        params.index = true;
-
-        if (!String(params.destination).endsWith(params.name)) {
-            params.destination = arcli.normalizePath(
-                params.destination,
-                params.name,
-            );
-        }
-    }
-
-    if (typeof params.style === 'string') {
-        params.styleType = params.style;
-        params.style = true;
-    }
-
-    if (params.style === true) {
-        const styleType =
-            _.findWhere(styleTypes, { name: params.styleType }) ||
-            _.first(styleTypes);
-
-        params.styleType = styleType.value;
-    }
-
-    if (typeof params.route === 'string') {
-        params.route = formatRoute(params.route);
-    }
-};
-
-// Register default hooks
-Reactium.Hook.register(
-    'arcli-component-input',
-    INPUT,
-    Reactium.Enums.priority.highest,
-    'arcli-component-input',
-);
-
-Reactium.Hook.register(
-    'arcli-component-confirm',
-    CONFIRM,
-    Reactium.Enums.priority.highest,
-    'arcli-component-confirm',
-);
-
-Reactium.Hook.register(
-    'arcli-component-conform',
-    CONFORM,
-    Reactium.Enums.priority.highest,
-    'arcli-component-conform',
-);
-
-Reactium.Hook.register(
-    'arcli-component-preflight',
-    PREFLIGHT,
-    Reactium.Enums.priority.highest,
-    'arcli-component-preflight',
-);
-
-Reactium.Hook.register(
-    'arcli-component-actions',
-    ({ actions }) => (actions['component'] = componentGen),
-    Reactium.Enums.priority.highest,
-    'arcli-component-actions',
-);
diff --git a/.core/.cli/commands/reactium/component/selectDestination.js b/.core/.cli/commands/reactium/component/selectDestination.js
deleted file mode 100644
index 1ee4b469..00000000
--- a/.core/.cli/commands/reactium/component/selectDestination.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const { prefix, chalk } = arcli;
-const suffix = chalk.magenta(': ');
-
-module.exports = () => ({
-    prefix,
-    suffix,
-    type: 'fuzzypath',
-    name: 'destination',
-    itemType: 'directory',
-    message: 'Select directory',
-    excludeFilter: nodePath => nodePath == '.' || nodePath.startsWith('.'),
-    excludePath: nodePath =>
-        nodePath.startsWith('build/') || nodePath.startsWith('node_modules'),
-});
diff --git a/.core/.cli/commands/reactium/component/selectStyle.js b/.core/.cli/commands/reactium/component/selectStyle.js
deleted file mode 100644
index 8c3cd7eb..00000000
--- a/.core/.cli/commands/reactium/component/selectStyle.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const { _, chalk, prefix } = arcli;
-const suffix = chalk.magenta(': ');
-const styleTypes = require('./styleTypes');
-
-const selectStyle = props => ({
-    prefix,
-    suffix,
-    default: _.first(styleTypes).name,
-    type: 'list',
-    name: 'styleType',
-    choices: _.pluck(styleTypes, 'name'),
-    message: 'Select stylesheet type',
-    ...props,
-});
-
-module.exports = {
-    selectStyle,
-    styleTypes,
-    default: selectStyle,
-};
diff --git a/.core/.cli/commands/reactium/component/styleTypes.js b/.core/.cli/commands/reactium/component/styleTypes.js
deleted file mode 100644
index 99cc2ae4..00000000
--- a/.core/.cli/commands/reactium/component/styleTypes.js
+++ /dev/null
@@ -1,34 +0,0 @@
-module.exports = [
-    {
-        name: 'default',
-        value: '_reactium-style.scss',
-    },
-    {
-        name: 'mixins',
-        value: '_reactium-style-mixins.scss',
-    },
-    {
-        name: 'variables',
-        value: '_reactium-style-variables.scss',
-    },
-    {
-        name: 'base',
-        value: '_reactium-style-base.scss',
-    },
-    {
-        name: 'atoms',
-        value: '_reactium-style-atoms.scss',
-    },
-    {
-        name: 'molecules',
-        value: '_reactium-style-molecules.scss',
-    },
-    {
-        name: 'organisms',
-        value: '_reactium-style-organisms.scss',
-    },
-    {
-        name: 'overrides',
-        value: '_reactium-style-overrides.scss',
-    },
-];
diff --git a/.core/.cli/commands/reactium/component/template/domain.hbs b/.core/.cli/commands/reactium/component/template/domain.hbs
deleted file mode 100644
index f9c5b525..00000000
--- a/.core/.cli/commands/reactium/component/template/domain.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * DDD Domain {{name}} - Change name to place domain artifacts in this directory
- * in a different domain.
- * -----------------------------------------------------------------------------
- */
-module.exports = {
-    name: '{{name}}',
-};
diff --git a/.core/.cli/commands/reactium/component/template/index-functional.hbs b/.core/.cli/commands/reactium/component/template/index-functional.hbs
deleted file mode 100644
index 0aa112a0..00000000
--- a/.core/.cli/commands/reactium/component/template/index-functional.hbs
+++ /dev/null
@@ -1,29 +0,0 @@
-import PropTypes from 'prop-types';
-import { useSyncState } from 'reactium-core/sdk';
-import React, { forwardRef, useImperativeHandle } from 'react';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: {{name}}
- * -----------------------------------------------------------------------------
- */
-let {{name}} = ({ className }, ref) => {
-
-    const state = useSyncState({});
-
-    useImperativeHandle(ref, () => state);
-
-    return <div className={className}>{{name}}</div>;
-};
-
-{{name}} = forwardRef({{name}});
-
-{{name}}.propTypes = {
-    className: PropTypes.string,
-};
-
-{{name}}.defaultProps = {
-    className: '{{className}}'
-}; 
-
-export default {{name}};
diff --git a/.core/.cli/commands/reactium/component/template/reactium-hooks.hbs b/.core/.cli/commands/reactium/component/template/reactium-hooks.hbs
deleted file mode 100644
index 749b27e3..00000000
--- a/.core/.cli/commands/reactium/component/template/reactium-hooks.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Reactium Plugin {{name}}
- * -----------------------------------------------------------------------------
- */
-
-import Component from './index';
-import Reactium from 'reactium-core/sdk';
-
-(async () => {
-    await Reactium.Plugin.register('{{name}}');
-    Reactium.Component.register('{{name}}', Component);
-})();
diff --git a/.core/.cli/commands/reactium/component/template/reactium-style.hbs b/.core/.cli/commands/reactium/component/template/reactium-style.hbs
deleted file mode 100644
index 59eaa27a..00000000
--- a/.core/.cli/commands/reactium/component/template/reactium-style.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-.{{className}} {
-    
-}
diff --git a/.core/.cli/commands/reactium/component/template/route.hbs b/.core/.cli/commands/reactium/component/template/route.hbs
deleted file mode 100644
index 844bbfd7..00000000
--- a/.core/.cli/commands/reactium/component/template/route.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
-import Component from './index';
-
-export default {
-    exact: true,
-    component: Component,
-    path: {{{route}}},
-};
diff --git a/.core/.cli/commands/reactium/domain/index.js b/.core/.cli/commands/reactium/domain/index.js
deleted file mode 100644
index 2725b619..00000000
--- a/.core/.cli/commands/reactium/domain/index.js
+++ /dev/null
@@ -1,142 +0,0 @@
-arcli.Reactium = require('@atomic-reactor/reactium-sdk-core').default;
-
-const { ActionSequence, ora, path, Reactium } = arcli;
-
-const ENUMS = {
-    CANCELED: 'domain canceled!',
-    DESC: 'Reactium: Create or replace a component domain file',
-    FLAGS: {
-        destination: {
-            flag: '-d, --destination [destination]',
-            desc: 'Directory to save the file',
-        },
-        unattended: {
-            flag: '-u, --unattended [unattended]',
-            desc: 'Bypass the preflight confirmation and any input prompts',
-        },
-    },
-    NAME: 'domain',
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Example:
-  $ arcli domain -h
-`);
-
-const ACTION = async ({ opt, props }) => {
-    // load hooks
-    arcli
-        .globby(
-            [
-                './.core/**/reactium-arcli.js',
-                './src/**/reactium-arcli.js',
-                './reactium_modules/**/reactium-arcli.js',
-                './node_modules/**/reactium-arcli.js',
-            ],
-            {
-                dot: true,
-            },
-        )
-        .forEach(file => require(path.resolve(file)));
-
-    let params = arcli.flagsToParams({ opt, flags: Object.keys(ENUMS.FLAGS) });
-
-    await Reactium.Hook.run('arcli-domain-init', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    await Reactium.Hook.run('arcli-domain-enums', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-domain-input', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    }
-
-    await Reactium.Hook.run('arcli-domain-conform', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-domain-preflight', {
-            ...props,
-            params,
-        });
-
-        await Reactium.Hook.run('arcli-domain-confirm', {
-            ...props,
-            params,
-            ENUMS,
-        });
-
-        if (params.confirm !== true) {
-            arcli.message(ENUMS.CANCELED);
-            return;
-        }
-    }
-
-    console.log('');
-
-    // Start the spinner
-
-    const spinner = ora({ spinner: 'dots', color: 'cyan' });
-    spinner.start();
-
-    let actions = {};
-    await Reactium.Hook.run('arcli-domain-actions', {
-        ...props,
-        params,
-        actions,
-        spinner,
-        ENUMS,
-    });
-
-    return ActionSequence({
-        actions,
-        options: { params, props, spinner },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.error(error);
-            return error;
-        });
-};
-
-const COMMAND = ({ program, props }) => {
-    program
-        .command(ENUMS.NAME)
-        .description(ENUMS.DESC)
-        .on('--help', HELP)
-        .action(opt => ACTION({ opt, props, program }));
-
-    program.commands
-        .filter(cmd => Boolean(cmd._name === ENUMS.NAME))
-        .forEach(cmd =>
-            Object.values(ENUMS.FLAGS).forEach(({ flag, desc }) =>
-                cmd.option(flag, desc),
-            ),
-        );
-
-    return program;
-};
-
-module.exports = {
-    COMMAND,
-    NAME: ENUMS.NAME,
-};
diff --git a/.core/.cli/commands/reactium/domain/reactium-arcli.js b/.core/.cli/commands/reactium/domain/reactium-arcli.js
deleted file mode 100644
index 022603d0..00000000
--- a/.core/.cli/commands/reactium/domain/reactium-arcli.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const componentGen = require('../component/componentGen');
-const selectDestination = require('../component/selectDestination');
-const formatDestination = require('../component/formatDestination');
-
-const { _, chalk, path, prefix, Reactium } = arcli;
-
-const suffix = chalk.magenta(': ');
-
-const PREFLIGHT = ({ msg, params }) => {
-    arcli.message(msg || 'Preflight checklist:');
-    console.log(JSON.stringify(params, null, 2));
-    console.log('');
-};
-
-const INPUT = async ({ inquirer, params }) => {
-    const input = await inquirer.prompt([selectDestination()], params);
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFIRM = async ({ inquirer, params }) => {
-    if (params.unattended) return;
-
-    const input = await inquirer.prompt([
-        {
-            prefix,
-            suffix,
-            default: false,
-            type: 'confirm',
-            name: 'confirm',
-            message: 'Proceed?',
-        },
-    ]);
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFORM = async ({ params }) => {
-    params.domain = true;
-    params.destination = formatDestination(params.destination);
-    params.name = path.basename(params.destination);
-};
-
-// Register default hooks
-Reactium.Hook.register(
-    'arcli-domain-input',
-    INPUT,
-    Reactium.Enums.priority.highest,
-    'arcli-domain-input',
-);
-
-Reactium.Hook.register(
-    'arcli-domain-confirm',
-    CONFIRM,
-    Reactium.Enums.priority.highest,
-    'arcli-domain-confirm',
-);
-
-Reactium.Hook.register(
-    'arcli-domain-conform',
-    CONFORM,
-    Reactium.Enums.priority.highest,
-    'arcli-domain-conform',
-);
-
-Reactium.Hook.register(
-    'arcli-domain-preflight',
-    PREFLIGHT,
-    Reactium.Enums.priority.highest,
-    'arcli-domain-preflight',
-);
-
-Reactium.Hook.register(
-    'arcli-domain-actions',
-    ({ actions }) => (actions['component'] = componentGen),
-    Reactium.Enums.priority.highest,
-    'arcli-domain-actions',
-);
diff --git a/.core/.cli/commands/reactium/empty/actions.js b/.core/.cli/commands/reactium/empty/actions.js
deleted file mode 100644
index 8b3c305f..00000000
--- a/.core/.cli/commands/reactium/empty/actions.js
+++ /dev/null
@@ -1,131 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const op = require('object-path');
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        style: ({ action, params, props }) => {
-            const { style } = params;
-
-            if (style) {
-                const { cwd } = props;
-
-                const mainStyleSheet = path.normalize(
-                    `${cwd}/src/assets/style/style.scss`,
-                );
-                const toolkitStyleSheet = path.normalize(
-                    `${cwd}/src/assets/style/toolkit.scss`,
-                );
-
-                const scssDir = path.normalize(`${cwd}/src/assets/style/_scss`);
-
-                if (fs.existsSync(mainStyleSheet)) {
-                    fs.writeFileSync(mainStyleSheet, '\n// Styles\n\n');
-                }
-
-                if (fs.existsSync(toolkitStyleSheet)) {
-                    fs.writeFileSync(
-                        toolkitStyleSheet,
-                        '\n// Toolkit Specific Styles\n\n',
-                    );
-                }
-
-                fs.emptyDirSync(scssDir);
-            }
-
-            return Promise.resolve({ action, status: 200 });
-        },
-        manifest: ({ action, params, props }) => {
-            const { toolkit } = params;
-
-            if (toolkit) {
-                message(`Updating ${chalk.cyan('toolkit manifest')}...`);
-
-                const { cwd } = props;
-
-                const manifestFile = path.normalize(
-                    `${cwd}/src/app/toolkit/index.js`,
-                );
-
-                let cont = fs.readFileSync(manifestFile);
-                cont = String(cont).replace(
-                    /menu: {((.|\n|\r)*)},/,
-                    'menu: {},',
-                );
-
-                fs.writeFileSync(manifestFile, cont);
-            }
-
-            return Promise.resolve({ action, status: 200 });
-        },
-        empty: ({ action, params, props }) => {
-            const { cwd } = props;
-            const { demo, font, images, toolkit } = params;
-
-            if (font) {
-                message(`Removing ${chalk.cyan('font assets')}...`);
-
-                const fontExcludes = [];
-                const fontPath = path.normalize(`${cwd}/src/assets/fonts`);
-
-                fs.readdirSync(fontPath)
-                    .filter(file => Boolean(!fontExcludes.includes(file)))
-                    .forEach(file =>
-                        fs.removeSync(path.normalize(`${fontPath}/${file}`)),
-                    );
-            }
-
-            if (images) {
-                message(`Removing ${chalk.cyan('image assets')}...`);
-
-                const imageExcludes = ['atomic-reactor-logo.svg'];
-                const imagePath = path.normalize(`${cwd}/src/assets/images`);
-
-                fs.readdirSync(imagePath)
-                    .filter(file => Boolean(!imageExcludes.includes(file)))
-                    .forEach(file =>
-                        fs.removeSync(path.normalize(`${imagePath}/${file}`)),
-                    );
-            }
-
-            if (demo) {
-                message(`Removing ${chalk.cyan('demo components')}...`);
-
-                const demoPaths = [
-                    path.normalize(`${cwd}/src/app/components/Demo`),
-                ].forEach(p => fs.removeSync(p));
-            }
-
-            if (toolkit) {
-                message(`Removing ${chalk.cyan('toolkit elements')}...`);
-
-                const toolkitPath = path.normalize(`${cwd}/src/app/toolkit`);
-                const toolkitExclude = ['index.js', 'overview'];
-
-                fs.readdirSync(toolkitPath)
-                    .filter(file => Boolean(!toolkitExclude.includes(file)))
-                    .concat([
-                        path.normalize(
-                            `${cwd}/src/app/components/common-ui/form`,
-                        ),
-                        path.normalize(
-                            `${cwd}/src/app/components/common-ui/Icon`,
-                        ),
-                    ])
-                    .forEach(file =>
-                        fs.removeSync(path.normalize(`${toolkitPath}/${file}`)),
-                    );
-            }
-
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/empty/generator.js b/.core/.cli/commands/reactium/empty/generator.js
deleted file mode 100644
index 54634231..00000000
--- a/.core/.cli/commands/reactium/empty/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-const spinner = ora({
-    spinner: 'dots',
-    color: 'cyan',
-});
-
-const actions = require('./actions')(spinner);
-
-module.exports = ({ params, props }) => {
-    spinner.start();
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/empty/index.js b/.core/.cli/commands/reactium/empty/index.js
deleted file mode 100644
index 3f91fd52..00000000
--- a/.core/.cli/commands/reactium/empty/index.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const path = require('path');
-const generator = require('./generator');
-const mod = path.dirname(require.main.filename);
-
-const NAME = 'empty';
-
-const DESC = 'Reactium: Remove Reactium demo pages, components, and toolkit.';
-
-const CONFORM = ({ input, props }) => {
-    const { cwd } = props;
-
-    let output = {};
-
-    Object.entries(input).forEach(([key, val]) => {
-        switch (key) {
-            default:
-                output[key] = val;
-                break;
-        }
-    });
-
-    if (!Object.entries(output).length) {
-        output = {
-            demo: true,
-            font: true,
-            images: true,
-            style: true,
-            toolkit: true,
-        };
-    }
-
-    return output;
-};
-
-const HELP = () => {
-    console.log('');
-    console.log('Usage:');
-    console.log('');
-    console.log(' Keep the default toolkit:');
-    console.log('  $ arcli reactium empty -FITD');
-    console.log('');
-    console.log(' Keep the demo site:');
-    console.log('  $ arcli reactium empty -FIST');
-    console.log('');
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    console.log('');
-
-    const { cwd, prompt } = props;
-
-    const ovr = ['demo', 'font', 'images', 'style', 'toolkit'].reduce(
-        (obj, key) => {
-            let val = opt[key];
-            val = typeof val === 'function' ? null : val;
-            if (val) {
-                obj[key] = val;
-            }
-            return obj;
-        },
-        {},
-    );
-
-    const params = CONFORM({ input: ovr, props });
-
-    generator({ params, props });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-F, --font', 'Empty ~/src/assets/fonts directory.')
-        .option('-I, --images', 'Empty ~/src/assets/images directory.')
-        .option('-S, --style', 'Empty ~/src/assets/style/style.scss file.')
-        .option('-T, --toolkit', 'Empty toolkit elements.')
-        .option('-D, --demo', 'Empty the demo.')
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    ACTION,
-    CONFORM,
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/hook/index.js b/.core/.cli/commands/reactium/hook/index.js
deleted file mode 100644
index 83a53c46..00000000
--- a/.core/.cli/commands/reactium/hook/index.js
+++ /dev/null
@@ -1,142 +0,0 @@
-arcli.Reactium = require('@atomic-reactor/reactium-sdk-core').default;
-
-const { ActionSequence, ora, path, Reactium } = arcli;
-
-const ENUMS = {
-    CANCELED: 'hook canceled!',
-    DESC: 'Reactium: Create or replace a component hooks file',
-    FLAGS: {
-        destination: {
-            flag: '-d, --destination [destination]',
-            desc: 'Directory to save the file',
-        },
-        unattended: {
-            flag: '-u, --unattended [unattended]',
-            desc: 'Bypass the preflight confirmation and any input prompts',
-        },
-    },
-    NAME: 'hook',
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Example:
-  $ arcli hook -h
-`);
-
-const ACTION = async ({ opt, props }) => {
-    // load hooks
-    arcli
-        .globby(
-            [
-                './.core/**/reactium-arcli.js',
-                './src/**/reactium-arcli.js',
-                './reactium_modules/**/reactium-arcli.js',
-                './node_modules/**/reactium-arcli.js',
-            ],
-            {
-                dot: true,
-            },
-        )
-        .forEach(file => require(path.resolve(file)));
-
-    let params = arcli.flagsToParams({ opt, flags: Object.keys(ENUMS.FLAGS) });
-
-    await Reactium.Hook.run('arcli-hook-init', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    await Reactium.Hook.run('arcli-hook-enums', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-hook-input', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    }
-
-    await Reactium.Hook.run('arcli-hook-conform', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-hook-preflight', {
-            ...props,
-            params,
-        });
-
-        await Reactium.Hook.run('arcli-hook-confirm', {
-            ...props,
-            params,
-            ENUMS,
-        });
-
-        if (params.confirm !== true) {
-            arcli.message(ENUMS.CANCELED);
-            return;
-        }
-    }
-
-    console.log('');
-
-    // Start the spinner
-
-    const spinner = ora({ spinner: 'dots', color: 'cyan' });
-    spinner.start();
-
-    let actions = {};
-    await Reactium.Hook.run('arcli-hook-actions', {
-        ...props,
-        params,
-        actions,
-        spinner,
-        ENUMS,
-    });
-
-    return ActionSequence({
-        actions,
-        options: { params, props, spinner },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.error(error);
-            return error;
-        });
-};
-
-const COMMAND = ({ program, props }) => {
-    program
-        .command(ENUMS.NAME)
-        .description(ENUMS.DESC)
-        .on('--help', HELP)
-        .action(opt => ACTION({ opt, props, program }));
-
-    program.commands
-        .filter(cmd => Boolean(cmd._name === ENUMS.NAME))
-        .forEach(cmd =>
-            Object.values(ENUMS.FLAGS).forEach(({ flag, desc }) =>
-                cmd.option(flag, desc),
-            ),
-        );
-
-    return program;
-};
-
-module.exports = {
-    COMMAND,
-    NAME: ENUMS.NAME,
-};
diff --git a/.core/.cli/commands/reactium/hook/reactium-arcli.js b/.core/.cli/commands/reactium/hook/reactium-arcli.js
deleted file mode 100644
index d209db03..00000000
--- a/.core/.cli/commands/reactium/hook/reactium-arcli.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const componentGen = require('../component/componentGen');
-const selectDestination = require('../component/selectDestination');
-const formatDestination = require('../component/formatDestination');
-
-const { _, chalk, path, prefix, Reactium } = arcli;
-
-const suffix = chalk.magenta(': ');
-
-const PREFLIGHT = ({ msg, params }) => {
-    arcli.message(msg || 'Preflight checklist:');
-    console.log(JSON.stringify(params, null, 2));
-    console.log('');
-};
-
-const INPUT = async ({ inquirer, params }) => {
-    const input = await inquirer.prompt([selectDestination()], params);
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFIRM = async ({ inquirer, params }) => {
-    if (params.unattended) return;
-
-    const input = await inquirer.prompt([
-        {
-            prefix,
-            suffix,
-            default: false,
-            type: 'confirm',
-            name: 'confirm',
-            message: 'Proceed?',
-        },
-    ]);
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFORM = async ({ params }) => {
-    params.hooks = true;
-    params.name = path.basename(params.destination);
-    params.destination = formatDestination(params.destination);
-};
-
-// Register default hooks
-Reactium.Hook.register(
-    'arcli-hook-input',
-    INPUT,
-    Reactium.Enums.priority.highest,
-    'arcli-hook-input',
-);
-
-Reactium.Hook.register(
-    'arcli-hook-confirm',
-    CONFIRM,
-    Reactium.Enums.priority.highest,
-    'arcli-hook-confirm',
-);
-
-Reactium.Hook.register(
-    'arcli-hook-conform',
-    CONFORM,
-    Reactium.Enums.priority.highest,
-    'arcli-hook-conform',
-);
-
-Reactium.Hook.register(
-    'arcli-hook-preflight',
-    PREFLIGHT,
-    Reactium.Enums.priority.highest,
-    'arcli-hook-preflight',
-);
-
-Reactium.Hook.register(
-    'arcli-hook-actions',
-    ({ actions }) => (actions['component'] = componentGen),
-    Reactium.Enums.priority.highest,
-    'arcli-hook-actions',
-);
diff --git a/.core/.cli/commands/reactium/icons/actions.js b/.core/.cli/commands/reactium/icons/actions.js
deleted file mode 100644
index 450266d0..00000000
--- a/.core/.cli/commands/reactium/icons/actions.js
+++ /dev/null
@@ -1,92 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier').format;
-const handlebars = require('handlebars').compile;
-const cc = require('camelcase');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    let svgs = {};
-
-    return {
-        scan: ({ action, params, props }) => {
-            const { source } = params;
-
-            message(
-                `Scanning icon file ${chalk.cyan(path.basename(source))}...`,
-            );
-
-            const filePath = path.normalize(source);
-            const icons = require(filePath).icons;
-
-            svgs = icons.reduce((obj, item) => {
-                const id = cc(op.get(item, 'properties.name'), {
-                    pascalCase: true,
-                });
-                obj[id] = { paths: op.get(item, 'icon.paths'), id };
-
-                return obj;
-            }, {});
-
-            return Promise.resolve({ action, status: 200 });
-        },
-
-        create: ({ action, params, props }) => {
-            const { destination, name } = params;
-            const dir = path.normalize(path.join(destination, 'svg'));
-
-            message(`Creating ${chalk.cyan('icons')}...`);
-
-            // Template content
-            const template = path.normalize(`${__dirname}/template/svg.hbs`);
-
-            Object.values(svgs).forEach(({ id, paths }) => {
-                const content = handlebars(fs.readFileSync(template, 'utf8'))({
-                    name,
-                    paths,
-                    id,
-                });
-
-                const filepath = path.join(dir, `${id}.js`);
-
-                fs.ensureFileSync(filepath);
-                fs.writeFileSync(filepath, content);
-            });
-
-            return Promise.resolve({ action, status: 200 });
-        },
-
-        index: ({ action, params, props }) => {
-            const { destination, name } = params;
-            const dir = path.normalize(path.join(destination, name));
-
-            message(`Indexing ${chalk.cyan(name)}...`);
-
-            // Template content
-            const template = path.normalize(`${__dirname}/template/index.hbs`);
-
-            const icons = Object.keys(svgs).map(name => {
-                return { id: name, path: `./svgs/${name}` };
-            });
-
-            const content = handlebars(fs.readFileSync(template, 'utf8'))({
-                icons,
-            });
-
-            const filepath = path.normalize(path.join(dir, 'index.js'));
-
-            fs.ensureFileSync(filepath);
-            fs.writeFileSync(filepath, content);
-
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/icons/generator.js b/.core/.cli/commands/reactium/icons/generator.js
deleted file mode 100644
index 1abcc105..00000000
--- a/.core/.cli/commands/reactium/icons/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/icons/index.js b/.core/.cli/commands/reactium/icons/index.js
deleted file mode 100644
index 1df9eb45..00000000
--- a/.core/.cli/commands/reactium/icons/index.js
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const path = require('path');
-const chalk = require('chalk');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier');
-const camelcase = require('camelcase');
-const generator = require('./generator');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const formatDestination = (val, props) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-
-    val = String(val).replace(/^\/cwd\/|^cwd\/|^cwd$/i, `${cwd}/`);
-    val = String(val).replace(
-        /^\/icon|^\/icon\/|^icon\/|^icon$/i,
-        `${cwd}/src/app/components/common-ui/Icon/`,
-    );
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-
-    return path.normalize(val);
-};
-
-const NAME = 'icons';
-
-const DESC = 'Reactium: Import icons from an Icomoon selection file.';
-
-const CANCELED = 'Action canceled!';
-
-const CONFORM = ({ input, props }) =>
-    Object.keys(input).reduce((obj, key) => {
-        let val = input[key];
-        switch (key) {
-            case 'destination':
-                val = path.join(
-                    val,
-                    camelcase(input.name, { pascalCase: true }),
-                );
-                obj[key] = formatDestination(val, props);
-                break;
-
-            case 'source':
-                obj[key] = formatDestination(val, props);
-                break;
-
-            default:
-                obj[key] = val;
-                break;
-        }
-
-        return obj;
-    }, {});
-
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toLowerCase() === 'y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    console.log('');
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    console.log('');
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-const HELP = props =>
-    console.log(`
-Example:
-  $ arcli icon-import -d common-ui/Icon/icons.js
-
-When specifying the [${chalk.cyan('-d')}, ${chalk.cyan(
-        '--destination',
-    )}] or [${chalk.cyan('-s')}, ${chalk.cyan(
-        '--source',
-    )}] value you can use the following short cuts:
-  ${chalk.cyan('components')} ${chalk.magenta('→')} ${chalk.cyan(
-        path.normalize(props.cwd + '/src/app/components'),
-    )} directory.
-  ${chalk.cyan('common-ui ')} ${chalk.magenta('→')} ${chalk.cyan(
-        path.normalize(props.cwd + '/src/app/components/common-ui'),
-    )} directory.
-  ${chalk.cyan('icon      ')} ${chalk.magenta('→')} ${chalk.cyan(
-        path.normalize(props.cwd + '/src/app/components/common-ui/Icon'),
-    )} directory.
-  ${chalk.cyan('cwd       ')} ${chalk.magenta('→')} ${chalk.cyan(
-        path.normalize(props.cwd),
-    )} directory.
-`);
-
-const FLAGS = ['destination', 'name', 'source'];
-
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const PREFLIGHT = ({ params }) => {
-    const msg =
-        'A new icon package will be create witht the following options:';
-    const preflight = _.pick(params, ...Object.keys(params).sort());
-
-    message(msg);
-
-    console.log(
-        prettier.format(JSON.stringify(preflight), {
-            parser: 'json-stringify',
-        }),
-    );
-};
-
-const SCHEMA = () => {
-    //const { cwd, prompt } = props;
-
-    return {
-        properties: {
-            name: {
-                required: true,
-                message: ' Name is required',
-                description: chalk.white('Name:'),
-            },
-            destination: {
-                required: true,
-                message: ' Destination is required',
-                description: chalk.white('Destination:'),
-                default: '/icon',
-            },
-            source: {
-                required: true,
-                message: ' Source is required',
-                description: chalk.white('Source:'),
-            },
-        },
-    };
-};
-
-const ACTION = ({ opt, props }) => {
-    let params;
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            PREFLIGHT({ params, props });
-
-            resolve(params);
-        });
-    })
-        .then(params => CONFIRM({ props, params }))
-        .then(async () => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option(
-            '-d, --destination [destination]',
-            'Destination. Example: /common-ui/Icon',
-        )
-        .option(
-            '-s, --source [source]',
-            'Source File. Example: /cwd/icons.json',
-        )
-        .option('-n, --name [name]', 'Name of the icon package.')
-        .on('--help', () => HELP(props));
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/icons/template/index.hbs b/.core/.cli/commands/reactium/icons/template/index.hbs
deleted file mode 100644
index a42747c6..00000000
--- a/.core/.cli/commands/reactium/icons/template/index.hbs
+++ /dev/null
@@ -1,20 +0,0 @@
-
-// THIS FILE IS GENERATED BY THE `$ arcli icons` command
-// DO NOT DIRECTLY EDIT !!!!!!!!!!!!!!!!
-
-{{#each icons}}
-import {{id}} from '{{path}}';
-{{/each}}
-
-const icons = {
-{{#each icons}}
-    {{id}},
-{{/each}}
-};
-
-export {
-    icons as default,
-    {{#each icons}}
-    {{id}},
-    {{/each}}
-};
diff --git a/.core/.cli/commands/reactium/icons/template/svg.hbs b/.core/.cli/commands/reactium/icons/template/svg.hbs
deleted file mode 100644
index 1375172d..00000000
--- a/.core/.cli/commands/reactium/icons/template/svg.hbs
+++ /dev/null
@@ -1,14 +0,0 @@
-// Icon: {{name}}.{{id}}
-
-import React from 'react';
-import defaultProps from 'components/common-ui/Icon/defaultProps';
-
-export default props => (
-    <svg {...defaultProps} {...props}>
-        <g>
-            {{#each paths}}
-            <path d="{{this}}" />
-            {{/each}}
-        </g>
-    </svg>
-);
diff --git a/.core/.cli/commands/reactium/library/actions.js b/.core/.cli/commands/reactium/library/actions.js
deleted file mode 100644
index 13b82066..00000000
--- a/.core/.cli/commands/reactium/library/actions.js
+++ /dev/null
@@ -1,98 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const run = require('gulp-run');
-const globby = require('globby');
-const op = require('object-path');
-const prettier = require('prettier');
-const del = require('del');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        no_node_modules: async ({ action, params, props }) => {
-            const { source } = params;
-
-            if (!fs.existsSync(path.resolve(source, 'node_modules'))) return;
-
-            message(`Removing node_modules from source directory...`);
-
-            return del(path.resolve(source, 'node_modules'));
-        },
-
-        clean: async ({ action, params, props }) => {
-            const { destination } = params;
-
-            message(
-                `Cleanup destination directory ${chalk.cyan(destination)}...`,
-            );
-
-            return del(destination);
-        },
-        buildPackage: ({ action, params, props }) => {
-            const { destination, newPackage, source } = params;
-
-            const fpath = path.join(source, 'package.json');
-            const dpath = path.join(destination, 'package.json');
-
-            let pkg;
-
-            try {
-                message(`Updating ${chalk.cyan('package.json')}...`);
-                pkg = require(fpath);
-            } catch (err) {
-                message(`Creating ${chalk.cyan('package.json')}...`);
-                pkg = {};
-            }
-
-            pkg = { ...pkg, ...newPackage };
-
-            const content = prettier.format(JSON.stringify(pkg), {
-                parser: 'json-stringify',
-            });
-
-            fs.writeFileSync(fpath, content);
-            fs.ensureDirSync(destination);
-            fs.copySync(fpath, dpath);
-        },
-        assets: ({ action, params, props }) => {
-            const { destination, source } = params;
-            const globs = [path.join(source, '**'), '!{*.js}'];
-
-            const files = globby
-                .sync(globs)
-                .filter(file =>
-                    Boolean(
-                        file.substr(-3) !== '.js' && file.substr(-3) !== 'jsx',
-                    ),
-                );
-
-            files.forEach(file => {
-                let src = path.join(source, '/');
-                const dpath = file.replace(src, destination);
-                fs.ensureFileSync(dpath);
-                fs.copySync(file, dpath);
-            });
-        },
-        create: async ({ action, params, props }) => {
-            const { source, destination, verbosity = 0 } = params;
-
-            message(
-                `Creating library from ${chalk.cyan(path.basename(source))}...`,
-            );
-
-            const babel = new run.Command(
-                `cross-env NODE_ENV=library babel "${source}" --out-dir "${destination}"`,
-                { verbosity },
-            );
-
-            return new Promise(resolve => babel.exec(null, () => resolve()));
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/library/generator.js b/.core/.cli/commands/reactium/library/generator.js
deleted file mode 100644
index 1abcc105..00000000
--- a/.core/.cli/commands/reactium/library/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/library/index.js b/.core/.cli/commands/reactium/library/index.js
deleted file mode 100644
index 869fa61a..00000000
--- a/.core/.cli/commands/reactium/library/index.js
+++ /dev/null
@@ -1,507 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-const _ = require('underscore');
-
-const formatsource = (val, props) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-    val = String(val).replace(/^\/cwd\/|^cwd\/|^cwd/i, `${cwd}/`);
-    val = val.substr(-1) !== '/' ? val + '/' : val;
-
-    return path.normalize(val);
-};
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli library
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'library';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC =
-    'Reactium: Generate a component library from the specified source directory.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ` `,
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) => {
-    const packageJSON = require(`${props.cwd}/package.json`);
-
-    return Object.keys(input).reduce((output, key) => {
-        let val = input[key];
-        const pkg = op.get(output, 'newPackage', {});
-
-        switch (key) {
-            case 'verbosity':
-                output[key] = Math.max(Math.min(parseInt(val), 3), 0) || 0;
-                break;
-            case 'destination':
-            case 'source':
-                output[key] = formatsource(val, props);
-                break;
-
-            case 'name':
-            case 'version':
-            case 'main':
-            case 'author':
-                if (val != '') {
-                    pkg[key] = val;
-                    output['newPackage'] = pkg;
-                }
-                break;
-
-            case 'dependencies':
-            case 'devDependencies':
-                if (typeof val === 'string') {
-                    val = val.replace(/\,/g, '');
-                    val = val.replace(/\s\s+/g, ' ').trim();
-                    val = _.compact(val.split(' '));
-                }
-
-                if (Array.isArray(val)) {
-                    if (val.length > 0) {
-                        const deplist = {
-                            ...packageJSON.dependencies,
-                            ...packageJSON.devDependencies,
-                        };
-                        pkg[key] = val.reduce((obj, dep) => {
-                            const v = op.get(deplist, dep);
-                            if (v) {
-                                obj[dep] = v;
-                            }
-                            return obj;
-                        }, {});
-
-                        output['newPackage'] = pkg;
-                    }
-                }
-
-                break;
-
-            case 'repo':
-                op.set(pkg, 'repository.url', val);
-                output['newPackage'] = pkg;
-                break;
-
-            case 'repoType':
-                op.set(pkg, 'repository.type', val);
-                output['newPackage'] = pkg;
-                break;
-
-            case 'keywords':
-                if (typeof val === 'string') {
-                    val = val.replace(/\,/g, '');
-                    val = val.replace(/\s\s+/g, ' ').trim();
-                    val = _.compact(val.split(' '));
-                }
-
-                if (Array.isArray(val)) {
-                    if (val.length > 0) {
-                        pkg[key] = val;
-                        output['newPackage'] = pkg;
-                    }
-                }
-
-                break;
-
-            default:
-                output[key] = val;
-                break;
-        }
-
-        return output;
-    }, {});
-};
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
- Example:
-   $ arcli library -s components/MyComponentLibrary -d cwd/lib -n MyComponentLibrary
- 
- When specifying the source [-d, --source] the following shortcuts are available:
-   ${chalk.cyan('components/')}  The /.src/app/components source.
-   ${chalk.cyan('common-ui/')}   The /.src/app/components/common-ui source.
- `);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = [
-    'name',
-    'source',
-    'destination',
-    'version',
-    'verbosity',
-    'main',
-    'author',
-    'dependencies',
-    'devDependencies',
-    'keywords',
-    'repo',
-    'repoType',
-];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    msg =
-        msg ||
-        `A new ${chalk.cyan(
-            'library',
-        )} will be generated with the following options:`;
-
-    message(msg);
-
-    // Transform the preflight object instead of the params object
-    const preflight = { ...params };
-
-    console.log(
-        prettier.format(JSON.stringify(preflight), {
-            parser: 'json-stringify',
-        }),
-    );
-};
-
-const SCHEMA_SOURCE = ({ params, props }) => {
-    const name = op.get(params, 'package.name', '');
-
-    return {
-        properties: {
-            source: {
-                description: chalk.white('Source:'),
-                message: `Enter the ${chalk.cyan('Source directory')}`,
-                required: true,
-            },
-            destination: {
-                description: chalk.white('Destination:'),
-                default: path.join('cwd', 'lib', name),
-            },
-            verbosity: {
-                description: chalk.white('Verbosity [0-3] (0):'),
-                default: 0,
-                required: false,
-            },
-        },
-    };
-};
-
-const SCHEMA_NAME = ({ params, props }) => {
-    let pkg;
-    let p = path.join(params.source, 'package.json');
-
-    try {
-        pkg = require(p);
-    } catch (err) {
-        pkg = {};
-    }
-
-    const schema = {
-        properties: {
-            name: {
-                description: chalk.white('Name:'),
-                message: `Enter the ${chalk.cyan('Library name')}`,
-                default: op.get(pkg, 'name'),
-                required: true,
-            },
-        },
-    };
-
-    if (op.has(pkg, 'name')) {
-        op.set(schema, 'properties.name.default', pkg.name);
-    }
-
-    return schema;
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ params, props }) => {
-    let pkg;
-
-    try {
-        pkg = require(`${params.source}/package.json`);
-    } catch (err) {
-        pkg = {};
-    }
-
-    const { prompt } = props;
-
-    const schema = {
-        properties: {
-            version: {
-                description: chalk.white('Version:'),
-                default: op.get(pkg, 'version', '0.0.1'),
-            },
-            main: {
-                description: chalk.white('Main js file:'),
-                default: op.get(pkg, 'main', 'index.js'),
-            },
-            author: {
-                description: chalk.white('NPM Package Author:'),
-                default: op.get(pkg, 'author', undefined),
-            },
-            dependencies: {
-                description: chalk.white('NPM Dependencies:'),
-                default: op.has(pkg, 'dependencies')
-                    ? Object.keys(pkg.dependencies).join(', ')
-                    : undefined,
-            },
-            devDependencies: {
-                description: chalk.white('NPM Dev. Dependencies:'),
-                default: op.has(pkg, 'devDependencies')
-                    ? Object.keys(pkg.devDependencies).join(', ')
-                    : undefined,
-            },
-            repo: {
-                description: chalk.white('Repository:'),
-                default: op.get(pkg, 'repository.url', undefined),
-            },
-            repoType: {
-                description: chalk.white('Repository Type:'),
-                default: op.get(pkg, 'repository.type', 'git'),
-                ask: () => !!prompt.history('repo'),
-            },
-            keywords: {
-                description: chalk.white('NPM Keywords:'),
-                default: op.has(pkg, 'keywords')
-                    ? pkg.keywords.join(', ')
-                    : undefined,
-            },
-        },
-    };
-
-    return schema;
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    let params = CONFORM({ input: ovr, props });
-
-    return new Promise((resolve, reject) => {
-        prompt.get(SCHEMA_NAME({ params, props }), (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message} 386`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            resolve(params);
-        });
-    })
-        .then(
-            () =>
-                new Promise((resolve, reject) => {
-                    prompt.get(
-                        SCHEMA_SOURCE({ params, props }),
-                        (err, input = {}) => {
-                            if (err) {
-                                prompt.stop();
-                                reject(`${NAME} ${err.message}`);
-                                return;
-                            }
-
-                            input = { ...ovr, ...params, ...input };
-                            params = CONFORM({ input, props });
-
-                            resolve(params);
-                        },
-                    );
-                }),
-        )
-        .then(
-            () =>
-                new Promise((resolve, reject) => {
-                    prompt.get(SCHEMA({ params, props }), (err, input = {}) => {
-                        if (err) {
-                            prompt.stop();
-                            reject(`${NAME} ${err.message}`);
-                            return;
-                        }
-
-                        input = { ...ovr, ...params, ...input };
-                        params = CONFORM({ input, props });
-
-                        PREFLIGHT({ params, props });
-
-                        resolve(params);
-                    });
-                }),
-        )
-        .then(() => {
-            return CONFIRM({ props, params });
-        })
-        .then(async () => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-n, --name [name]', 'Library name.')
-        .option('-s, --source [source]', 'The library source.')
-        .option('-d, --destination [destination]', 'The library destination.')
-        .option('-V, --ver [version]', 'The version of the library.')
-        .option(
-            '-T, --verbosity [verbosity]',
-            'The 0-3 verbosity of output. Default 0.',
-        )
-        .option('-m, --main [main]', 'The library entry point or main js file.')
-        .option('-a, --author [author]', 'The library author.')
-        .option('--dependencies [dependencies]', 'The library dependencies.')
-        .option(
-            '--devDependencies [devDependencies]',
-            'The library devDependencies',
-        )
-        .option('--repo [repo]', 'The repo url.')
-        .option('--repoType [repoType]', 'The repo type.')
-        .option('--keywords [keywords]', 'The NPM keywords.')
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/component/actions.js b/.core/.cli/commands/reactium/plugin/component/actions.js
deleted file mode 100644
index 8a05eeba..00000000
--- a/.core/.cli/commands/reactium/plugin/component/actions.js
+++ /dev/null
@@ -1,44 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier');
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        plugin: ({ action, params, props }) => {
-            message(`Creating ${chalk.cyan('zone component')}...`);
-
-            const { destination } = params;
-            const pluginFile = path.normalize(`${destination}/zone.js`);
-
-            // Template content
-            const template = path.normalize(`${__dirname}/template/zone.hbs`);
-            const content = handlebars(fs.readFileSync(template, 'utf-8'))(
-                params,
-            );
-
-            fs.ensureFileSync(pluginFile);
-            fs.writeFileSync(
-                pluginFile,
-                prettier.format(content, {
-                    parser: 'babel',
-                    trailingComma: 'all',
-                    singleQuote: true,
-                    tabWidth: 4,
-                    useTabs: false,
-                }),
-            );
-
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/plugin/component/generator.js b/.core/.cli/commands/reactium/plugin/component/generator.js
deleted file mode 100644
index 1abcc105..00000000
--- a/.core/.cli/commands/reactium/plugin/component/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/plugin/component/index.js b/.core/.cli/commands/reactium/plugin/component/index.js
deleted file mode 100644
index af2d3164..00000000
--- a/.core/.cli/commands/reactium/plugin/component/index.js
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const fs = require('fs-extra');
-const op = require('object-path');
-const _ = require('underscore');
-const mod = path.dirname(require.main.filename);
-const slugify = require('slugify');
-const { error, message } = require(`${mod}/lib/messenger`);
-const pad = require(`${mod}/lib/pad`);
-const M = require('../zones/manifest')();
-
-const formatDestination = ({ val, props }) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-    val = String(val).replace(/^~\/|^\/cwd\/|^cwd\/|^cwd$/i, `${cwd}/`);
-    val = String(val).replace(
-        /^\/core\/|^core\/|^core/i,
-        `${cwd}/.core/components/`,
-    );
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-
-    return path.normalize(val);
-};
-
-const NAME = 'plugin <component>';
-
-const DESC =
-    'Add a plugin.js file for defining one or more components to be used in a plugin zone.';
-
-const CANCELED = 'Plugin canceled!';
-
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toLowerCase() === 'y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-const CONFORM = ({ input, props }) => {
-    const { cwd } = props;
-
-    const output = Object.keys(input).reduce((obj, key) => {
-        let val = input[key];
-
-        switch (key) {
-            case 'id':
-                obj[key] = slugify(val).toUpperCase();
-                break;
-
-            case 'destination':
-                obj[key] = formatDestination({ val, props });
-                break;
-
-            case 'zone':
-                obj[key] = val.split(' ').map(index => GET_ZONE(index));
-                break;
-
-            case 'order':
-                obj[key] = Number(val);
-                break;
-
-            default:
-                obj[key] = val;
-                break;
-        }
-
-        return obj;
-    }, {});
-
-    return output;
-};
-
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli plugin component --destination cwd/components/MyComponent --id "my-plugin"
-`);
-
-const FLAGS = ['destination', 'zone', 'id', 'component', 'order'];
-
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const PREFLIGHT = ({ params }) => {
-    const msg = 'A new plugin will be created with the following options:';
-    const preflight = _.pick(params, ...Object.keys(params).sort());
-
-    message(msg);
-
-    console.log(
-        prettier.format(JSON.stringify(preflight), {
-            parser: 'json-stringify',
-        }),
-    );
-};
-
-const ZONE_LIST = () =>
-    Object.keys(M).map((zone, index) => {
-        index += 1;
-        const len = String(Object.keys(M).length).length;
-        const i = chalk.cyan(pad(index, len) + '.');
-        return `  ${i} ${zone}`;
-    });
-
-const GET_ZONE = index => {
-    return !isNaN(Number(index)) ? Object.keys(M)[index - 1] : index;
-};
-
-const SCHEMA = ({ props }) => {
-    const { cwd, prompt } = props;
-
-    return {
-        properties: {
-            destination: {
-                description: chalk.white('Destination:'),
-                required: true,
-                message: ' Plugin destination is required',
-            },
-            id: {
-                required: true,
-                message: ' Plugin ID is required',
-                description: chalk.white('Plugin ID:'),
-            },
-            component: {
-                required: true,
-                message: ' Component is required',
-                description: chalk.white('Component:'),
-            },
-            zone: {
-                message: ' Zone is required',
-                description: chalk.white('Zones:'),
-            },
-            zone: {
-                description: `${chalk.white('Zone:')}\n\t ${ZONE_LIST().join(
-                    '\n\t ',
-                )}\n   ${chalk.white('Select:')}`,
-                type: 'string',
-                required: true,
-                message: ' Select zones',
-                before: val =>
-                    String(val)
-                        .replace(/, /, ' ')
-                        .replace(/\s+/g, ' ')
-                        .trim(),
-            },
-            order: {
-                pattern: /[0-9\-]/,
-                required: true,
-                message: ' Order must be valid integer',
-                description: chalk.white('Order:'),
-            },
-        },
-    };
-};
-
-const ACTION = ({ opt, props }) => {
-    if (Object.keys(M).length < 1) {
-        return error(
-            `no plugin zones found.\n\nRun:\n${chalk.cyan(
-                '  $ arcli zones scan',
-            )}\n or:\n${chalk.cyan('  $ arcli zones add')}`,
-        );
-    }
-
-    let params;
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            PREFLIGHT({ params, props });
-
-            resolve(params);
-        });
-    })
-        .then(() => {
-            return CONFIRM({ props, params });
-        })
-        .then(async () => {
-            console.log('');
-            await generator({ action: 'create', params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-d, --destination [destination]', 'Plugin parent directory.')
-        .option(
-            '-i, --id [id]',
-            'Unique identifier for the plugin. Used when rendering the plugin to the dom.',
-        )
-        .option('-c, --component [component]', 'The plugin component.')
-        .option(
-            '-z, --zone [zone]',
-            'Plugin zones. For multiple zones supply a comma separated list.',
-        )
-        .option(
-            '-o, --order [order]',
-            'Order in which to load the plugin. Lower number plugins get loaded first.',
-        )
-        .on('--help', HELP);
-
-module.exports = {
-    COMMAND,
-    ACTION,
-    CONFORM,
-    CONFIRM,
-    ID: NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/component/template/zone.hbs b/.core/.cli/commands/reactium/plugin/component/template/zone.hbs
deleted file mode 100644
index 18873759..00000000
--- a/.core/.cli/commands/reactium/plugin/component/template/zone.hbs
+++ /dev/null
@@ -1,58 +0,0 @@
-import {{component}} from './index';
-
-export default {
-    /**
-     * Required - used as rendering key. Make this unique.
-     * @type {String}
-     */
-    id: '{{id}}',
-
-    /**
-     * Component to render. May also be a string, and
-     * the component will be looked up in components directory.
-     * @type {Component|String}
-     */
-    component: {{component}},
-
-    /**
-     * One or more zones this component should render.
-     * @type {String|Array}
-     */
-    zone: [
-        {{#if zone}}
-        {{#each zone}}
-        '{{this}}',
-        {{/each}}
-        {{/if}}
-    ],
-
-    /**
-      * By default plugins in zone are rendering in ascending order.
-      * @type {Number}
-      */
-    order: {{order}},
-
-    /**
-     * (Optional) additional search subpaths to use to find the component,
-     * if String provided for component property.
-     * @type {[type]}
-     *
-     * e.g. If component is a string 'TextInput', uncommenting the line below would
-     * look in components/common-ui/form/inputs and components/general to find
-     * the component 'TextInput'
-     */
-    // paths: ['common-ui/form/inputs', 'general']
-
-    /**
-     * Additional params: (optional)
-     *
-     * Any free-form additional properties you provide below, will be provided as params
-     * to the component when rendered.
-     *
-     * e.g. Below will be provided to the MyComponent, <MyComponent pageType={'home'} />
-     * These can also be used to help sort or filter plugins, or however you have your
-     * component use params.
-     * @type {Mixed}
-     */
-    // pageType: 'home',
-};
diff --git a/.core/.cli/commands/reactium/plugin/eject/actions.js b/.core/.cli/commands/reactium/plugin/eject/actions.js
deleted file mode 100644
index 488a0a93..00000000
--- a/.core/.cli/commands/reactium/plugin/eject/actions.js
+++ /dev/null
@@ -1,87 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const globby = require('globby').sync;
-const { spawn } = require('child_process');
-const labelGenerator = require('@atomic-reactor/cli/commands/config/set/generator');
-
-const command = (cmd, args = [], done) => {
-    const ps = spawn(cmd, args, {
-        env: {
-            PATH: process.env.PATH,
-            NODE_ENV: 'production',
-        },
-    });
-
-    ps.stdout.pipe(process.stdout, { end: false });
-    ps.stderr.pipe(process.stderr, { end: false });
-    process.stdin.resume();
-    process.stdin.pipe(ps.stdin, { end: false });
-    ps.on('close', code => {
-        if (code !== 0) console.log(`Error executing ${cmd}`);
-        done();
-    });
-};
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        build: async ({ action, params, props }) => {
-            const { offerBuild } = params;
-
-            if (offerBuild) {
-                message(`Building ${chalk.cyan('Reactium manifest')}...`);
-                await new Promise((resolve, reject) => {
-                    command('gulp', ['manifest'], resolve);
-                });
-
-                message(`Building ${chalk.cyan('Reactium umd libraries')}...`);
-                await new Promise((resolve, reject) => {
-                    command('gulp', ['umdLibraries'], resolve);
-                });
-                message(`Building ${chalk.cyan('Reactium styles')}...`);
-                await new Promise((resolve, reject) => {
-                    command('gulp', ['styles'], resolve);
-                });
-            }
-        },
-        ejectAssets: async ({ action, params, props }) => {
-            const { plugin, targetPath } = params;
-            const { cwd } = props;
-
-            const assets = globby([
-                `${cwd}/public/assets/js/umd/${plugin}/${plugin}.js`,
-                `${cwd}/public/assets/style/${plugin}-plugin.css`,
-            ]);
-
-            if (assets.length < 1) throw 'No assets to eject.';
-            const assetsDir = path.resolve(targetPath, 'plugin-assets');
-            message(`Copying ${chalk.cyan(`${plugin} assets`)}...`);
-
-            fs.ensureDirSync(assetsDir);
-            for (let asset of assets) {
-                message(`Copying ${chalk.cyan(`${path.basename(asset)}`)}...`);
-                fs.copySync(
-                    asset,
-                    path.resolve(assetsDir, path.basename(asset)),
-                );
-            }
-        },
-
-        addLabel: async ({ action, params, props }) => {
-            const { plugin, targetPath, targetLabel, newConfig } = params;
-            const { cwd } = props;
-
-            if (targetLabel && newConfig) {
-                await labelGenerator({ params, props });
-            }
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/plugin/eject/generator.js b/.core/.cli/commands/reactium/plugin/eject/generator.js
deleted file mode 100644
index 1bbad523..00000000
--- a/.core/.cli/commands/reactium/plugin/eject/generator.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    console.log('');
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.log(error);
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/plugin/eject/index.js b/.core/.cli/commands/reactium/plugin/eject/index.js
deleted file mode 100644
index ed8c42f2..00000000
--- a/.core/.cli/commands/reactium/plugin/eject/index.js
+++ /dev/null
@@ -1,425 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-const GENERATOR = require('./generator');
-const globby = require('globby').sync;
-const fs = require('fs-extra');
-const slugify = require('slugify');
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli eject
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'plugin <eject>';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC =
-    'Compile a runtime plugin to a UMD asset and eject the asset into a publishing directory.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props, params }) =>
-    Object.keys(input).reduce((obj, key) => {
-        let val = input[key];
-        switch (key) {
-            default:
-                obj[key] = val;
-                break;
-        }
-        return obj;
-    }, params);
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  # Follow the prompts
-  $ arcli eject
-`);
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    msg = msg || 'Preflight checklist:';
-
-    message(msg);
-
-    const { plugin, targetPath, targetLabel, offerBuild, assets } = params;
-
-    console.log(chalk.white('Plugin:'), chalk.cyan(plugin));
-    console.log(
-        chalk.white('Running build:'),
-        chalk.cyan(offerBuild ? 'Y' : 'N'),
-    );
-    if (assets && assets.length > 0) {
-        console.log(chalk.white('Copying assets:'));
-        assets.forEach(asset => console.log(chalk.white(`  - ${asset}`)));
-    }
-    console.log(chalk.white('Target path:'), chalk.cyan(targetPath));
-    if (targetLabel)
-        console.log(
-            chalk.white('New target path label:'),
-            chalk.cyan(targetLabel),
-        );
-};
-
-const descriptionList = (list = []) => {
-    return (
-        list.reduce((description, plugin, index) => {
-            description += `  ${chalk.cyan(index + 1)}: ${plugin}\n\r`;
-            return description;
-        }, '') + '\n\r'
-    );
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA_CHOOSE_PLUGIN = ({ props, plugins }) => {
-    return {
-        properties: {
-            plugin: {
-                description:
-                    chalk.white('Choose plugin:\n\r') +
-                    descriptionList(plugins),
-                required: true,
-                message:
-                    plugins.length > 1
-                        ? chalk.white(`Select 1 to ${plugins.length}`)
-                        : chalk.white('1 is only option.'),
-                before: val => op.get(plugins, Number(val) - 1),
-                conform: val => op.has(plugins, Number(val) - 1),
-                default: 1,
-            },
-        },
-    };
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA_CHOOSE_TARGET = ({ props, actiniumPlugins }) => {
-    const pluginKeys = Object.keys(actiniumPlugins);
-
-    const { cwd, prompt } = props;
-    const schema = {
-        properties: {
-            targetPath: {
-                description:
-                    pluginKeys.length > 0
-                        ? chalk.white(
-                              'Choose target actinium plugin (select from below or type path to target directory):\n\r',
-                          ) + descriptionList(pluginKeys)
-                        : chalk.white('Target actinium plugin directory:'),
-                required: true,
-                message:
-                    pluginKeys.length > 1
-                        ? chalk.white(
-                              `Select 1 to ${pluginKeys.length} or a valid path`,
-                          )
-                        : chalk.white('Select a valid path'),
-                before: val => {
-                    const selected = op.has(pluginKeys, Number(val) - 1);
-                    if (selected)
-                        return actiniumPlugins[
-                            op.get(pluginKeys, Number(val) - 1)
-                        ];
-
-                    const potentialPath = path.resolve(path.relative(cwd, val));
-                    if (fs.existsSync(potentialPath)) return potentialPath;
-                },
-                conform: val => {
-                    const selected = op.has(pluginKeys, Number(val) - 1);
-                    if (selected) return true;
-
-                    const potentialPath = path.resolve(path.relative(cwd, val));
-                    return fs.existsSync(potentialPath);
-                },
-            },
-            offerLabel: {
-                description: `${chalk.white(
-                    'This path does not have a label, provide one?',
-                )} ${chalk.cyan('(Y/N):')}`,
-                type: 'string',
-                required: true,
-                pattern: /^y|n|Y|N/,
-                message: ' ',
-                before: val => {
-                    return String(val).toUpperCase() === 'Y';
-                },
-                ask: () => {
-                    const targetPath = op.get(
-                        prompt.history('targetPath'),
-                        'value',
-                    );
-
-                    return !Object.values(actiniumPlugins).includes(targetPath);
-                },
-            },
-            targetLabel: {
-                description: chalk.white('Label for target directory:'),
-                type: 'string',
-                required: true,
-                pattern: /^[a-zA-Z_\-0-9]{4,}$/,
-                message: chalk.white('Invalid label'),
-                before: val => {
-                    return `actinium-plugins.${slugify(String(val))}`;
-                },
-                ask: () => op.get(prompt.history('offerLabel'), 'value', false),
-            },
-        },
-    };
-
-    if (actiniumPlugins.length > 0)
-        op.set(schema, 'properties.targetPath.default', 1);
-
-    return schema;
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt, config } = props;
-    const plugins = globby(
-        path
-            .resolve(cwd, 'src/app/components/plugin-src/**/umd.js')
-            .split(/[\\\/]/g)
-            .join(path.posix.sep),
-    ).map(mod => path.basename(path.dirname(mod)));
-
-    prompt.start();
-
-    let params = {};
-
-    return new Promise((resolve, reject) => {
-        if (plugins.length < 1) {
-            message(
-                chalk.magenta(
-                    'No plugins found in src/app/components/plugin-src.',
-                    chalk.white(
-                        `Use ${chalk.cyan(
-                            '`arcli plugin module`',
-                        )} to create one.`,
-                    ),
-                ),
-            );
-            reject();
-            return;
-        }
-
-        prompt.get(
-            SCHEMA_CHOOSE_PLUGIN({ props, plugins }),
-            (err, input = {}) => {
-                if (err) {
-                    prompt.stop();
-                    reject(`${NAME} ${err.message}`);
-                    return;
-                }
-
-                params = CONFORM({ input, props, params });
-
-                resolve();
-            },
-        );
-    })
-        .then(() => {
-            const actiniumPlugins = op.get(config, 'actinium-plugins', {});
-            return new Promise((resolve, reject) => {
-                prompt.get(
-                    SCHEMA_CHOOSE_TARGET({
-                        props,
-                        actiniumPlugins,
-                    }),
-                    (err, input = {}) => {
-                        if (err) {
-                            prompt.stop();
-                            reject(`${NAME} ${err.message}`);
-                            return;
-                        }
-
-                        params = CONFORM({ input, props, params });
-                        if (op.has(params, 'targetLabel')) {
-                            params.newConfig = { ...config };
-                            op.set(
-                                params.newConfig,
-                                op.get(params, 'targetLabel'),
-                                op.get(params, 'targetPath'),
-                            );
-                        }
-
-                        resolve();
-                    },
-                );
-            });
-        })
-        .then(() => {
-            const { plugin } = params;
-            const assets = globby([
-                `${cwd}/public/assets/js/umd/${plugin}/${plugin}.js`,
-                `${cwd}/public/assets/style/${plugin}-plugin.css`,
-            ]);
-
-            return new Promise((resolve, reject) => {
-                prompt.get(
-                    {
-                        properties: {
-                            offerBuild: {
-                                description: `${
-                                    assets.length < 1
-                                        ? chalk.white(
-                                              `No assets appear for plugin ${params.plugin}. Run build?`,
-                                          )
-                                        : chalk.white('Run build?')
-                                } ${chalk.cyan('(Y/N):')}`,
-                                type: 'string',
-                                required: true,
-                                pattern: /^y|n|Y|N/,
-                                message: ' ',
-                                before: val => {
-                                    return String(val).toUpperCase() === 'Y';
-                                },
-                            },
-                        },
-                    },
-                    (err, input = {}) => {
-                        if (err) {
-                            prompt.stop();
-                            reject(`${NAME} ${err.message}`);
-                            return;
-                        }
-
-                        params = CONFORM({ input, props, params });
-                        const { offerBuild } = params;
-                        if (assets.length < 1 && !offerBuild) {
-                            reject('No assets to eject');
-                            return;
-                        } else {
-                            params.assets = assets;
-                        }
-
-                        resolve();
-                    },
-                );
-            });
-        })
-        .then(() => PREFLIGHT({ params, props }))
-        .then(() => CONFIRM({ props, params }))
-        .then(() => GENERATOR({ params, props }))
-        .then(() => prompt.stop())
-        .then(results => {
-            console.log('');
-        })
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    ID: NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/index.js b/.core/.cli/commands/reactium/plugin/index.js
deleted file mode 100644
index 99d773c7..00000000
--- a/.core/.cli/commands/reactium/plugin/index.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const chalk = require('chalk');
-const op = require('object-path');
-
-const NAME = 'plugin';
-const DESC = 'Reactium: Commands used to help manage plugins.';
-
-const HELP = props => {
-    const actions = Object.keys(props.subcommands[NAME]);
-    actions.sort();
-
-    console.log('');
-    console.log('Actions:');
-    console.log(' ', actions.map(act => chalk.cyan(act)).join(', '));
-    console.log('');
-    console.log('Example:');
-    actions.forEach(act =>
-        console.log(`  $ arcli`, chalk.magenta(NAME), chalk.cyan(act), '-h'),
-    );
-    console.log('');
-};
-
-const COMMAND = ({ program, props }) => {
-    const ACT = props.args[3];
-    const { subcommands = {} } = props;
-
-    if (NAME === props.args[2] && ACT) {
-        if (!op.has(subcommands, `${NAME}.${ACT}`)) {
-            console.log('');
-            console.log(chalk.red('Invalid command:'), NAME, chalk.cyan(ACT));
-            console.log('');
-            process.exit();
-        }
-        return subcommands[NAME][ACT]['COMMAND']({ program, props });
-    } else {
-        return program
-            .command(`${NAME} <action>`)
-            .description(DESC)
-            .action((action, opt) => {})
-            .on('--help', () => HELP(props));
-    }
-};
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/local/actions.js b/.core/.cli/commands/reactium/plugin/local/actions.js
deleted file mode 100644
index 1dab981b..00000000
--- a/.core/.cli/commands/reactium/plugin/local/actions.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const globby = require('globby').sync;
-const { spawn } = require('child_process');
-const labelGenerator = require('@atomic-reactor/cli/commands/config/set/generator');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        toggle: async ({ action, params, props }) => {
-            const { plugin } = params;
-            message(
-                `Toggling ${chalk.cyan(plugin.name)} ${chalk.cyan(
-                    !plugin.development ? 'on' : 'off',
-                )}...`,
-            );
-
-            let conf = {};
-            if (fs.existsSync(plugin.confPath)) {
-                try {
-                    conf = JSON.parse(fs.readFileSync(plugin.confPath, 'utf8'));
-                } catch (err) {}
-            }
-
-            conf.development = !op.get(plugin, 'development', false);
-            fs.writeFileSync(
-                plugin.confPath,
-                JSON.stringify(conf, null, 2),
-                'utf8',
-            );
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/plugin/local/generator.js b/.core/.cli/commands/reactium/plugin/local/generator.js
deleted file mode 100644
index 1bbad523..00000000
--- a/.core/.cli/commands/reactium/plugin/local/generator.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    console.log('');
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.log(error);
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/plugin/local/index.js b/.core/.cli/commands/reactium/plugin/local/index.js
deleted file mode 100644
index 5bbebd13..00000000
--- a/.core/.cli/commands/reactium/plugin/local/index.js
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-const GENERATOR = require('./generator');
-const globby = require('globby').sync;
-const fs = require('fs-extra');
-const slugify = require('slugify');
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli local
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'plugin <local>';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Toggle local development mode for a runtime plugin.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  # Follow the prompts
-  $ arcli local
-`);
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    const { plugin } = params;
-
-    msg =
-        msg ||
-        `${chalk.white('Toggle Local Development for Plugin:')} ${chalk.cyan(
-            plugin.name,
-        )} ${plugin.development ? chalk.cyan('off') : chalk.cyan('on')}`;
-
-    message(msg);
-};
-
-const descriptionList = (list = []) => {
-    return (
-        list.reduce((description, plugin, index) => {
-            description += `  ${chalk.cyan(index + 1)}: ${
-                plugin.name
-            } ${chalk.cyan(plugin.development ? '(on)' : '(off)')}\n\r`;
-            return description;
-        }, '') + '\n\r'
-    );
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA_CHOOSE_PLUGIN = ({ props, plugins }) => {
-    return {
-        properties: {
-            plugin: {
-                description:
-                    chalk.white('Choose plugin:\n\r') +
-                    descriptionList(plugins),
-                required: true,
-                message:
-                    plugins.length > 1
-                        ? chalk.white(`Select 1 to ${plugins.length}`)
-                        : chalk.white('1 is only option.'),
-                conform: val => op.has(plugins, [Number(val) - 1]),
-                default: 1,
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt, config } = props;
-    const umds = globby(
-        path
-            .resolve(cwd, 'src/app/components/plugin-src/**/umd.js')
-            .split(/[\\\/]/g)
-            .join(path.posix.sep),
-    );
-
-    const plugins = umds.map(mod => {
-        const dir = path.dirname(mod);
-        const name = path.basename(dir);
-        const confPath = path.resolve(dir, 'reactium-hooks.json');
-
-        let development = false;
-        if (fs.existsSync(confPath)) {
-            try {
-                development = op.get(
-                    JSON.parse(fs.readFileSync(confPath, 'utf8')),
-                    'development',
-                    false,
-                );
-            } catch (err) {}
-        }
-
-        console.log({ name, dir, confPath, development });
-
-        return {
-            name,
-            dir,
-            confPath,
-            development,
-        };
-    });
-
-    prompt.start();
-
-    let params = {};
-
-    return new Promise((resolve, reject) => {
-        if (plugins.length < 1) {
-            message(
-                chalk.magenta(
-                    'No plugins found in src/app/components/plugin-src.',
-                    chalk.white(
-                        `Use ${chalk.cyan(
-                            '`arcli plugin module`',
-                        )} to create one.`,
-                    ),
-                ),
-            );
-            reject();
-            return;
-        }
-
-        prompt.get(
-            SCHEMA_CHOOSE_PLUGIN({ props, plugins }),
-            (err, input = {}) => {
-                if (err) {
-                    prompt.stop();
-                    reject(`${NAME} ${err.message}`);
-                    return;
-                }
-
-                let pluginIndex = Number(op.get(input, 'plugin', 1)) - 1;
-                pluginIndex = Math.max(
-                    0,
-                    Math.min(pluginIndex, plugins.length - 1),
-                );
-
-                op.set(params, 'plugins', plugins);
-                op.set(params, 'plugin', op.get(plugins, pluginIndex));
-
-                resolve();
-            },
-        );
-    })
-        .then(() => PREFLIGHT({ params, props }))
-        .then(() => GENERATOR({ params, props }))
-        .then(() => prompt.stop())
-        .then(results => {
-            console.log('');
-        })
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    ID: NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/module/actions.js b/.core/.cli/commands/reactium/plugin/module/actions.js
deleted file mode 100644
index 5337b76e..00000000
--- a/.core/.cli/commands/reactium/plugin/module/actions.js
+++ /dev/null
@@ -1,124 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        create: async ({ action, params, props }) => {
-            const { cwd } = props;
-            const { plugin } = params;
-            const pluginPath = path.resolve(
-                cwd,
-                'src/app/components/plugin-src/',
-                plugin,
-            );
-            message(`Creating ${chalk.cyan(`plugin ${plugin}`)}...`);
-
-            fs.ensureDirSync(pluginPath);
-
-            message('Writing index.js');
-            const index = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/index.hbs'),
-                    'utf8',
-                ),
-            );
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'index.js'),
-                index({ NAME: plugin }),
-                'utf8',
-            );
-
-            message('Writing reactium-hooks.js');
-            const hooks = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/reactium-hooks.hbs'),
-                    'utf8',
-                ),
-            );
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'reactium-hooks.js'),
-                hooks({ NAME: plugin }),
-                'utf8',
-            );
-
-            message('Writing reactium-hooks.json');
-            const hooksJson = fs.readFileSync(
-                path.resolve(__dirname, 'template/reactium-hooks.json'),
-                'utf8',
-            );
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'reactium-hooks.json'),
-                hooksJson,
-                'utf8',
-            );
-
-            message('Writing umd.js');
-            const umd = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/umd.hbs'),
-                    'utf8',
-                ),
-            );
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'umd.js'),
-                umd({ NAME: plugin }),
-                'utf8',
-            );
-
-            message('Writing umd-config.json');
-            const config = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/umd-config.hbs'),
-                    'utf8',
-                ),
-            );
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'umd-config.json'),
-                config({ NAME: plugin }),
-                'utf8',
-            );
-
-            fs.ensureDirSync(path.resolve(pluginPath, 'assets/style'));
-            message(`${plugin}-plugin.scss`);
-            const style = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/style.hbs'),
-                    'utf8',
-                ),
-            );
-            fs.writeFileSync(
-                path.resolve(
-                    pluginPath,
-                    'assets/style',
-                    `${plugin}-plugin.scss`,
-                ),
-                style({ NAME: plugin }),
-                'utf8',
-            );
-
-            message('Writing reactium-boot.js');
-            const bootJs = handlebars(
-                fs.readFileSync(
-                    path.resolve(__dirname, 'template/reactium-boot.hbs'),
-                    'utf8',
-                ),
-            );
-
-            fs.writeFileSync(
-                path.resolve(pluginPath, 'reactium-boot.js'),
-                bootJs({ FILENAME: `/assets/style/${plugin}-plugin.css` }),
-                'utf8',
-            );
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/plugin/module/generator.js b/.core/.cli/commands/reactium/plugin/module/generator.js
deleted file mode 100644
index fa4c35b7..00000000
--- a/.core/.cli/commands/reactium/plugin/module/generator.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ params, props }) => {
-    console.log('');
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.log({ error });
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/plugin/module/index.js b/.core/.cli/commands/reactium/plugin/module/index.js
deleted file mode 100644
index a2d0d136..00000000
--- a/.core/.cli/commands/reactium/plugin/module/index.js
+++ /dev/null
@@ -1,296 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const prettier = require('prettier');
-const path = require('path');
-const fs = require('fs-extra');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-const GENERATOR = require('./generator');
-const slugify = require('slugify');
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli module
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'plugin <module>';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Create exportable plugin module.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt, cwd } = props;
-    const { plugin } = params;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ` `,
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) =>
-    Object.keys(input).reduce((obj, key) => {
-        let val = input[key];
-        switch (key) {
-            case 'overwrite':
-                if (String(val).toUpperCase() === 'Y' || val === true)
-                    obj[key] = true;
-                if (String(val).toUpperCase() === 'N' || val === false)
-                    obj[key] = false;
-                break;
-            default:
-                obj[key] = val;
-                break;
-        }
-        return obj;
-    }, {});
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  # results in plugin named my-neato-functions
-  $ arcli module --name "My Neato Functions Plugin"
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = ['plugin', 'overwrite'];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (key === 'plugin') obj[key] = nameToPluginName(val);
-        if (key === 'overwrite' && val === true) obj.overwrite = true;
-
-        return obj;
-    }, {});
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    msg = msg || 'Preflight checklist:';
-
-    message(msg);
-
-    const { prompt, cwd } = props;
-    const { plugin } = params;
-
-    message(
-        `Reactium Plugin module will be created at ${chalk.cyan(
-            path.relative(cwd, getPluginPath(plugin, cwd)),
-        )}`,
-    );
-};
-
-const nameToPluginName = (name = '') => {
-    // remove redundant plugin word from plugin
-    const lower = String(name)
-        .toLowerCase()
-        .replace('plugin', '');
-    return slugify(lower);
-};
-
-const getPluginPath = (name, cwd) =>
-    path.resolve(cwd, 'src/app/components/plugin-src', name);
-const pluginPathExists = (name, cwd) => {
-    const pluginPath = getPluginPath(name, cwd);
-    return fs.existsSync(pluginPath);
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    const { cwd, prompt } = props;
-    return {
-        properties: {
-            plugin: {
-                description: 'Plugin name:',
-                required: true,
-                before: nameToPluginName,
-                message: chalk.cyan(
-                    'Plugin name invalid. Must be at least 4 characters, and not include the word "plugin"',
-                ),
-                conform: name => {
-                    const check = nameToPluginName(name);
-                    return String(check).length >= 4;
-                },
-            },
-            overwrite: {
-                pattern: /^y|n|Y|N/,
-                default: 'N',
-                description: 'Plugin exists. Overwrite? (y/N):',
-                ask: () => {
-                    const name = op.get(
-                        prompt.history('plugin'),
-                        'value',
-                        op.get(prompt, 'override.plugin'),
-                    );
-                    return (
-                        pluginPathExists(name, cwd) &&
-                        !op.get(prompt, 'override.overwrite', false)
-                    );
-                },
-                message: ` `,
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    let params = {};
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            const { plugin, overwrite } = params;
-            // Cancel if existing and not overwriting
-            if (pluginPathExists(plugin, cwd) && !overwrite) {
-                reject();
-                return;
-            }
-
-            PREFLIGHT({ params, props });
-
-            resolve();
-        });
-    })
-        .then(() => CONFIRM({ props, params }))
-        .then(() => GENERATOR({ params, props }))
-        .then(() => prompt.stop())
-        .then(results => {
-            console.log('');
-        })
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action((action, opt) => ACTION({ opt, props }))
-        .option(
-            '-o, --overwrite [overwrite]',
-            'Allow overwrite of existing plugin.',
-        )
-        .option('-p, --plugin [plugin]', 'Reactium plugin module name.')
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    ID: NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/module/template/index.hbs b/.core/.cli/commands/reactium/plugin/module/template/index.hbs
deleted file mode 100644
index 1707b4e3..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/index.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-
-const registerPlugin = async () => {
-    await Reactium.Plugin.register('{{NAME}}');
-
-    // Reactium SDK calls here
-};
-
-registerPlugin();
diff --git a/.core/.cli/commands/reactium/plugin/module/template/reactium-boot.hbs b/.core/.cli/commands/reactium/plugin/module/template/reactium-boot.hbs
deleted file mode 100644
index 01631919..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/reactium-boot.hbs
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * reactium-boot.js file generated by arcli for your runtime plugin.
- * Use `arcli plugin local` to toggle local development on and off
- */
-const { development } = require('./reactium-hooks.json');
-
-(async () => {
-    ReactiumBoot.Hook.registerSync('Server.AppStyleSheets', (req, AppStyleSheets) => {
-        if (development === true) {
-            AppStyleSheets.register('site-plugin', {
-                path: '{{FILENAME}}',
-                order: SDK.Enums.priority.normal,
-            });
-        }
-    });
-})();
diff --git a/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.hbs b/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.hbs
deleted file mode 100644
index 0de2820d..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * reactium-hooks.js file generated by arcli.
- * To develop this plugin, make your development changes to './index.js', not here.
- * Use `arcli plugin local` to activate local development, and `arcli plugin eject`
- */
-
-import Reactium from 'reactium-core/sdk';
-import op from 'object-path';
-
-(async () => {
-    Reactium.Hook.register(
-        'plugin-dependencies',
-        async () => {
-            const runtime = require('./reactium-hooks.json');
-
-            if (op.get(runtime, 'development', false)) {
-                Reactium.Plugin.unregister('{{NAME}}');
-
-                // make your edits to index.js, not here
-                require('./index');
-            }
-        },
-        Reactium.Enums.priority.highest,
-    );
-})();
diff --git a/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.json b/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.json
deleted file mode 100644
index c8345979..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/reactium-hooks.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "development": true
-}
diff --git a/.core/.cli/commands/reactium/plugin/module/template/style.hbs b/.core/.cli/commands/reactium/plugin/module/template/style.hbs
deleted file mode 100644
index 58cebdff..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/style.hbs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Generated by arcli
-// If you wish to use images in your styles, add a plugin-assets.json to this directory, with assets pathed relative to this directory.
-//
-// e.g. Given a "src/app/components/plugin-src/{{NAME}}/assets/images/logo.png" file, your plugin-assets.json would look like:
-// {
-//     "my-logo": "../images/logo.png"
-// }
-//
-// This will produce a partial "_plugin-assets.scss" that will contain an map $assets, containing the data uri for this asset.
-// Do not hard-code paths to assets relative to your stylesheet, or they will not work when you export your css to another location (such as CDN)
-//
-// Example usage:
-//
-// @import './plugin-assets';
-// .my-logo {
-//     background: url(map-get($assets, 'my-logo'));
-// }
diff --git a/.core/.cli/commands/reactium/plugin/module/template/umd-config.hbs b/.core/.cli/commands/reactium/plugin/module/template/umd-config.hbs
deleted file mode 100644
index 39a8311f..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/umd-config.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "libraryName": "{{NAME}}"
-}
diff --git a/.core/.cli/commands/reactium/plugin/module/template/umd.hbs b/.core/.cli/commands/reactium/plugin/module/template/umd.hbs
deleted file mode 100644
index 4afbccb9..00000000
--- a/.core/.cli/commands/reactium/plugin/module/template/umd.hbs
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * This file was generated by arcli. This file when found in your Reactium
- * instance, will produce a UMD (Universal Module Definition) module,
- * named {{NAME}}.js, produced in public/assets/js/umd/{{NAME}} by default.
- *
- * To develop this plugin, make your development changes to index.js, not here.
- */
-require('./index');
diff --git a/.core/.cli/commands/reactium/plugin/zones/actions.js b/.core/.cli/commands/reactium/plugin/zones/actions.js
deleted file mode 100644
index 7a344e32..00000000
--- a/.core/.cli/commands/reactium/plugin/zones/actions.js
+++ /dev/null
@@ -1,180 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier');
-const globby = require('globby');
-
-const mod = path.dirname(require.main.filename);
-const pad = require(`${mod}/lib/pad`);
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    const M = require('./manifest')();
-
-    const results = { action: 'result', zones: { ...M }, status: 200 };
-
-    const zoneList = () =>
-        Object.keys(M)
-            .map((zone, index) => {
-                index += 1;
-                const len = String(Object.keys(M).length).length;
-                const i = chalk.cyan(pad(index, len) + '.');
-                return `   ${i} ${zone}`;
-            })
-            .join('\n');
-
-    const list = ({ action, params, props }) => {
-        const l = zoneList();
-
-        if (l.length > 0) {
-            console.log(chalk.cyan(' Zones:'));
-            console.log(zoneList());
-        } else {
-            console.log(
-                ` ${chalk.red('No zones found!')}\n\n   Run:\n${chalk.cyan(
-                    '   $ arcli zones scan',
-                )}\n\n   or:\n${chalk.cyan('   $ arcli zones add')}`,
-            );
-        }
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const object = ({ action, params, props }) => {
-        console.log(
-            '\n',
-            prettier
-                .format(JSON.stringify(results.zones), {
-                    parser: 'json-stringify',
-                })
-                .replace(/\"(.*?)\": \{/g, `"${chalk.cyan('$1')}": {`)
-                .replace(/\"(.*?)\": \"/g, `"${chalk.green('$1')}": "`)
-                .replace(/\n/g, `\n `),
-        );
-
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const scan = ({ action, params, props }) => {
-        message(
-            `Scanning for plugin ${chalk.cyan(
-                'zones',
-            )}. This may take awhile...`,
-        );
-
-        const { cwd = process.cwd() } = props;
-        const globs = [];
-
-        if (op.get(params, 'source') === true) {
-            globs.push(path.normalize(`${cwd}/src/**/*.js*`));
-        }
-
-        if (op.get(params, 'node') === true) {
-            globs.push(path.normalize(`${cwd}/node_modules/**/*.js*`));
-        }
-
-        if (globs.length < 1) {
-            return Promise.resolve({ action, status: 200 });
-        }
-
-        const quick_scan = /\<Plugins|Zone/;
-
-        return globby(globs).then(files => {
-            const zones = files.reduce((z, file) => {
-                const contents = fs.readFileSync(file);
-                if (!quick_scan.test(contents)) {
-                    return z;
-                }
-
-                const reg_find = /<Plugins|Zone[\s\S](.*?)[\s\S]\/>/gm;
-                const matches = String(fs.readFileSync(file))
-                    .replace(/["'\s+]/g, ' ')
-                    .match(reg_find);
-
-                if (matches) {
-                    matches.forEach(match => {
-                        const zone = String(match).match(/zone= (.*?) /i);
-                        if (Array.isArray(zone) && zone.length > 1) {
-                            const id = zone[1];
-                            if (op.has(M, id)) {
-                                return z;
-                            }
-
-                            z[id] = {
-                                file,
-                                description: `Plugin zone found in: ${file.replace(
-                                    path.normalize(cwd),
-                                    '',
-                                )}`,
-                            };
-                        }
-                    });
-                }
-
-                return z;
-            }, {});
-
-            if (action) {
-                results['zones'] = { ...zones, ...M };
-            }
-
-            return { action, status: 200 };
-        });
-    };
-
-    const create = ({ action, params, props }) => {
-        const { description, id } = params;
-
-        results.zones = { ...M };
-        results.zones[id] = { description };
-
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const remove = ({ action, params, props }) => {
-        const { id } = params;
-
-        delete results.zones[id];
-
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const purge = ({ action, params, props }) => {
-        results.zones = {};
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const cache = ({ action, params, props }) => {
-        message(`Caching plugin ${chalk.cyan('zones')}...`);
-
-        const { cwd = process.cwd() } = props;
-        const cont = prettier.format(JSON.stringify(results.zones), {
-            parser: 'json-stringify',
-        });
-
-        const filePath = path.normalize(`${cwd}/.cli-cache/plugin-zones.json`);
-        fs.ensureFileSync(filePath);
-        fs.writeFileSync(filePath, cont);
-
-        return Promise.resolve({ action, status: 200 });
-    };
-
-    const result = () => Promise.resolve(results);
-
-    return {
-        list,
-        object,
-        scan,
-        create,
-        purge,
-        cache,
-        remove,
-        result,
-    };
-};
diff --git a/.core/.cli/commands/reactium/plugin/zones/generator.js b/.core/.cli/commands/reactium/plugin/zones/generator.js
deleted file mode 100644
index 55dcedc3..00000000
--- a/.core/.cli/commands/reactium/plugin/zones/generator.js
+++ /dev/null
@@ -1,89 +0,0 @@
-const ActionSequence = require('action-sequence');
-const prettier = require('prettier');
-const op = require('object-path');
-const _ = require('underscore');
-
-module.exports = ({ action, params, props }) => {
-    const { activity, cache } = params;
-
-    const spinner = activity
-        ? require('ora')({
-              spinner: 'dots',
-              color: 'cyan',
-          })
-        : null;
-
-    const allActions = require('./actions')(spinner);
-
-    if (spinner) {
-        spinner.start();
-    }
-
-    let acts = [];
-    switch (action) {
-        case 'list':
-            if (op.has(params, 'json')) {
-                acts.push('object');
-            } else {
-                acts.push('list');
-            }
-            break;
-
-        case 'add':
-        case 'update':
-            acts.push('create');
-            if (cache) {
-                acts.push('cache');
-            }
-            break;
-
-        case 'remove':
-            acts.push('remove');
-            if (cache) {
-                acts.push('cache');
-            }
-            break;
-
-        case 'purge':
-            acts.push('purge');
-            if (cache) {
-                acts.push('cache');
-            }
-            break;
-
-        case 'scan':
-            acts.push('scan');
-            if (cache) {
-                acts.push('cache');
-            }
-            break;
-    }
-
-    if (acts.length < 1) {
-        return Promise.resolve([]);
-    }
-
-    acts.push('result');
-    const actions = _.pick(allActions, ...acts);
-
-    if (actions.length < 1) {
-        return Promise.resolve([]);
-    }
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            if (spinner) {
-                spinner.succeed(`${action} complete!`);
-            }
-            return success;
-        })
-        .catch(error => {
-            if (spinner) {
-                spinner.fail('error!');
-            }
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/plugin/zones/index.js b/.core/.cli/commands/reactium/plugin/zones/index.js
deleted file mode 100644
index 9ff19d7d..00000000
--- a/.core/.cli/commands/reactium/plugin/zones/index.js
+++ /dev/null
@@ -1,443 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-const path = require('path');
-const mod = path.dirname(require.main.filename);
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const _ = require('underscore');
-const op = require('object-path');
-const { error, message } = require(`${mod}/lib/messenger`);
-const pad = require(`${mod}/lib/pad`);
-const M = require('./manifest')();
-
-const NAME = 'plugin <zones>';
-
-const DESC = 'Reactium: Manage the current project Plugin Zones';
-
-const ZONE_LIST = () =>
-    Object.keys(M).map((zone, index) => {
-        index += 1;
-        const len = String(Object.keys(M).length).length;
-        const i = chalk.cyan(pad(index, len) + '.');
-        return `  ${i} ${zone}`;
-    });
-
-const GET_ZONE = index => {
-    return !isNaN(Number(index)) ? Object.keys(M)[index - 1] : index;
-};
-
-const FLAGS = [
-    'id',
-    'description',
-    'node',
-    'cache',
-    'activity',
-    'source',
-    'zone',
-    'json',
-];
-
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const CANCELED = 'plugin zones ACTION canceled';
-
-const CONFIRM = ({ props, params, msg = 'Proceed?' }) => {
-    const { prompt } = props;
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${chalk.white(msg)} ${chalk.cyan(
-                            '(Y/N):',
-                        )}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toLowerCase() === 'y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                if (error || !op.get(input, 'confirmed')) {
-                    reject(error);
-                } else {
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-const CONFORM = ({ action, input, props }) => {
-    let output = {};
-
-    Object.entries(input).forEach(([key, val]) => {
-        switch (key) {
-            default:
-                output[key] = val;
-                break;
-        }
-    });
-
-    if (action === 'scan') {
-        delete output.id;
-        delete output.description;
-    }
-
-    if (action === 'list') {
-        delete output.activity;
-    }
-
-    return output;
-};
-
-const HELP = () =>
-    console.log(`
-
-Available <action> values:
-${chalk.cyan('list')} | ${chalk.cyan('scan')} | ${chalk.cyan(
-        'add',
-    )} | ${chalk.cyan('update')} | ${chalk.cyan('remove')} | ${chalk.cyan(
-        'purge',
-    )}
-
-<${chalk.cyan('list')}>
-  Output the plugin zones:
-    $ arcli plugin zones ${chalk.cyan('list')}
-
-  Output the plugin zones as JSON
-    $ arcli plugin zones ${chalk.cyan('list')} --json
-    $ arcli plugin zones ${chalk.cyan('list')} -j
-
-    ${chalk.magenta(
-        '* Note:',
-    )} if a zone is found in more than one location, the first occurance is added to the manifest.
-
-<${chalk.cyan('scan')}>
-  Scan the '~/src' directory only, omiting the 'node_modules' directory:
-    $ arcli plugin zones ${chalk.cyan('scan')} --no-node
-    $ arcli plugin zones ${chalk.cyan('scan')} -N
-
-    ${chalk.magenta(
-        '* Note:',
-    )} if a zone already exists in the manifest, it is skipped.
-
-<${chalk.cyan('add')}> | <${chalk.cyan('update')}>
-  Add a plugin zone to the manifest:
-    $ arcli plugin zones ${chalk.cyan(
-        'add',
-    )} --id "my-plugin-zone" --description "My awesome plugins go here!"
-    $ arcli plugin zones ${chalk.cyan(
-        'add',
-    )} -i "my-plugin-zone" -d "My awesome plugins go here!"
-
-    ${chalk.magenta(
-        '* Note:',
-    )} if a zone already exists in the manifest, it will be updated.
-
-<${chalk.cyan('remove')}>
-  Remove a plugin zone from the manifest:
-    $ arcli plugin zones ${chalk.cyan('remove')} --id "my-plugin-zone"
-
-<${chalk.cyan('purge')}>
-  Clear all entries from the plugin zone manifest:
-    $ arcli plugin zones ${chalk.cyan('purge')}
-
-    ${chalk.magenta(
-        '* Note:',
-    )} Purging can not be undone. You can run ${chalk.cyan(
-        '$ arcli plugin zones scan',
-    )} to regenerate the default manifest.
-
-`);
-
-const SCHEMA = ({ action, props, zone = {} }) => {
-    const { prompt } = props;
-
-    const output = {
-        properties: {
-            id: {
-                required: true,
-                description: chalk.white('Zone:'),
-                message: ' Plugin zone is required',
-                default: op.get(zone, 'id'),
-                ask: () => {
-                    if (action === 'update') {
-                        return true;
-                    }
-
-                    if (!op.has(prompt, 'override.id')) {
-                        return ['add', 'remove', 'update'].includes(action);
-                    } else {
-                        return false;
-                    }
-                },
-            },
-            description: {
-                required: true,
-                description: chalk.white('Description:'),
-                message: ' Plugin description is required',
-                default: op.get(zone, 'description'),
-                ask: () => {
-                    if (action === 'update') {
-                        return true;
-                    }
-
-                    if (!op.has(prompt, 'override.description')) {
-                        return ['add', 'update'].includes(action);
-                    } else {
-                        return false;
-                    }
-                },
-            },
-        },
-    };
-
-    return output;
-};
-
-const SCHEMA_SELECT = ({ action, opt, props }) => {
-    const { prompt } = props;
-    const zones = ZONE_LIST();
-    return {
-        properties: {
-            id: {
-                description: `${chalk.white('Zone:')}\n\t ${zones.join(
-                    '\n\t ',
-                )}\n   ${chalk.white('Select:')}`,
-                type: 'string',
-                required: true,
-                message: ' select a zone',
-                ask: () => {
-                    return !op.has(prompt, 'override.id');
-                },
-                before: val => {
-                    val = val.replace(/[^\w-_]/g, '');
-                    return !isNaN(val) && val > zones.length
-                        ? null
-                        : GET_ZONE(val) || val;
-                },
-            },
-        },
-    };
-};
-
-const PREFLIGHT = ({ action, params }) => {
-    let msg;
-    switch (action) {
-        case 'add':
-            console.log(
-                '\n',
-                'A plugin zone will be created with the following options:',
-            );
-            console.log('');
-            console.log(
-                prettier.format(
-                    JSON.stringify(_.pick(params, 'id', 'description')),
-                    {
-                        parser: 'json-stringify',
-                    },
-                ),
-            );
-            break;
-
-        case 'update':
-            console.log(
-                '\n',
-                `The plugin zone ${chalk.cyan(
-                    op.get(params, 'id'),
-                )} will be updated with the following options:`,
-            );
-            console.log('');
-            console.log(
-                prettier.format(
-                    JSON.stringify(_.pick(params, 'id', 'description')),
-                    {
-                        parser: 'json-stringify',
-                    },
-                ),
-            );
-            break;
-
-        case 'remove':
-            msg = `Are you sure you want to remove the ${chalk.cyan(
-                op.get(params, 'id'),
-            )} zone?`;
-            break;
-
-        case 'purge':
-            msg = 'Purging can not be undone. Are you sure?';
-            break;
-    }
-
-    return msg;
-};
-
-const ACTION = ({ action, opt, props, zone, foo }) => {
-    const id = op.get(opt, 'id');
-
-    if (['update', 'remove'].includes(action) && !id) {
-        ACTION_SELECT({ action, opt, props });
-        return;
-    }
-
-    if (id && !op.has(M, id)) {
-        action = 'add';
-    }
-
-    const { prompt } = props;
-
-    const flags = FLAGS_TO_PARAMS({ opt });
-
-    if (action !== 'update') {
-        prompt.override = flags;
-    } else if (id && !zone) {
-        zone = { ...op.get(M, GET_ZONE(id), {}), id };
-    }
-
-    let schema;
-
-    switch (action) {
-        default:
-            schema = SCHEMA({ action, props, zone });
-    }
-
-    console.log('');
-    prompt.start();
-    prompt.get(schema, (err, input) => {
-        if (err) {
-            prompt.stop();
-            error(`${NAME} ${err.message}`);
-            return;
-        }
-
-        // Reduce the input
-        input = { ...flags, ...input };
-        const params = CONFORM({ action, input, props });
-
-        // Preflight
-        const msg = PREFLIGHT({ action, params });
-
-        const promise = ['scan', 'list'].includes(action)
-            ? Promise.resolve(params)
-            : CONFIRM({ props, params, msg });
-
-        promise
-            .then(async () => {
-                console.log('');
-                await generator({ action, params, props });
-                console.log('');
-            })
-            .then(() => prompt.stop())
-            .catch(err => {
-                prompt.stop();
-                if (err) {
-                    error(err);
-                } else {
-                    error(CANCELED.replace('ACTION', action));
-                }
-            });
-    });
-};
-
-const ACTION_SELECT = ({ action, opt, props }) => {
-    if (Object.keys(M).length < 1) {
-        return error(
-            `no zones found.\n\nRun:\n${chalk.cyan(
-                '  $ arcli plugin zones scan',
-            )}\n or:\n${chalk.cyan('  $ arcli plugin zones add')}`,
-        );
-    }
-
-    const { prompt } = props;
-    const flags = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = flags;
-    const schema = SCHEMA_SELECT({ action, opt, props });
-
-    prompt.start();
-    prompt.get(schema, (err, input) => {
-        if (err) {
-            prompt.stop();
-            error(`${NAME} ${err.message}`);
-            return;
-        }
-
-        const zone = {
-            id: input.id,
-            description: op.get(M, `${input.id}.description`),
-        };
-
-        opt = { ...opt, ...input };
-
-        ACTION({ action, opt, props, zone });
-    });
-};
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(`${NAME} <subaction>`)
-        .description(DESC)
-        .action((action, subaction, opt) =>
-            ACTION({ action: subaction, opt, props }),
-        )
-        .option(
-            '-i, --id <zone>',
-            'The plugin zone id. Used when the <action> is add, update, or remove.',
-        )
-        .option(
-            '-d, --description <description>',
-            'The description of the plugin zone. Used when the <action> is add or update.',
-        )
-        .option(
-            '-j, --json [json]',
-            'Output the plugin zones as a JSON object. Used when calling the <list> action.',
-        )
-        .option(
-            '-N, --no-node [node]',
-            'Excludes the `node_modules` directory when scanning the source code.',
-        )
-        .option('-C, --no-cache [cache]', 'Do not cache the --scan results.')
-        .option(
-            '-A, --no-activity [activity]',
-            'Do not show the activity spinner.',
-        )
-        .option(
-            '-S, --no-source [source]',
-            'Exclude the `src` directory when scanning the source code.',
-        )
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    ACTION,
-    CONFORM,
-    COMMAND,
-    ID: NAME,
-};
diff --git a/.core/.cli/commands/reactium/plugin/zones/manifest.js b/.core/.cli/commands/reactium/plugin/zones/manifest.js
deleted file mode 100644
index 9b84b0fe..00000000
--- a/.core/.cli/commands/reactium/plugin/zones/manifest.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Return the output of the 'plugin-manifest.json' file if it exists.
- */
-const fs = require('fs-extra');
-const path = require('path');
-
-module.exports = () => {
-    const cwd = process.cwd();
-    const dir = path.normalize(`${cwd}/.cli-cache`);
-    const manifestFile = path.normalize(`${dir}/plugin-zones.json`);
-
-    // Create the cli-cache directory
-    fs.ensureDirSync(dir);
-
-    return fs.existsSync(manifestFile) ? require(manifestFile) : {};
-};
diff --git a/.core/.cli/commands/reactium/rename/actions.js b/.core/.cli/commands/reactium/rename/actions.js
deleted file mode 100644
index 0a597388..00000000
--- a/.core/.cli/commands/reactium/rename/actions.js
+++ /dev/null
@@ -1,144 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const op = require('object-path');
-const zip = require('folder-zipper');
-const homedir = require('os').homedir();
-const decamelize = require('decamelize');
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const now = Date.now();
-
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    const backupfile = ({ params, props, file }) => {
-        const { cwd } = props;
-        const { from } = params;
-
-        const regex = new RegExp(from, 'i');
-        if (regex.test(file)) {
-            return;
-        }
-
-        const filename = path.basename(file);
-        const backupFilePath = path.join(
-            homedir,
-            '.arcli',
-            cwd,
-            '.BACKUP',
-            `${now}.${filename}`,
-        );
-
-        fs.copySync(file, backupFilePath);
-    };
-
-    return {
-        backup: ({ action, params, props }) => {
-            const { cwd } = props;
-            const { directory, from } = params;
-
-            message(`backing up ${from} component...`);
-
-            const now = Date.now();
-            const backupDir = path.join(
-                homedir,
-                '.arcli',
-                cwd,
-                '.BACKUP',
-                'component',
-            );
-            const backupZip = path.normalize(`${backupDir}/${now}.${from}.zip`);
-
-            // Create the backup directory
-            fs.ensureDirSync(backupDir);
-
-            // Backup the component directory
-            return zip(directory, backupZip).then(() => {
-                return { action, status: 200 };
-            });
-        },
-
-        content: ({ action, params, props }) => {
-            const { cwd } = props;
-            const { files, to, from } = params;
-
-            const ID = decamelize(from).toUpperCase();
-            const NEWID = decamelize(to).toUpperCase();
-
-            const regex = new RegExp(from, 'gm');
-            const regexLower = new RegExp(String(from).toLowerCase(), 'gm');
-            const regexUpper = new RegExp(ID, 'gm');
-
-            return new Promise((resolve, reject) => {
-                files.forEach((file, i) => {
-                    backupfile({ params, props, file });
-
-                    let content = String(fs.readFileSync(file))
-                        .replace(regex, to)
-                        .replace(regexLower, String(to).toLowerCase())
-                        .replace(regexUpper, NEWID);
-
-                    fs.writeFileSync(file, content, 'utf-8');
-                });
-
-                resolve({ action, status: 200 });
-            });
-        },
-
-        filename: ({ action, params, props }) => {
-            const { cwd } = props;
-            const { files, to, from } = params;
-
-            const regex = new RegExp(from, 'gm');
-
-            const promises = files
-                .filter(file => regex.test(path.basename(file)))
-                .map(file => {
-                    const dirname = path.dirname(file);
-                    const filename = String(path.basename(file)).replace(
-                        from,
-                        to,
-                    );
-                    const newfile = path.normalize(`${dirname}/${filename}`);
-
-                    return new Promise((resolve, reject) => {
-                        fs.copy(file, newfile, error => {
-                            if (error) {
-                                reject(error);
-                            } else {
-                                fs.removeSync(file);
-                                resolve();
-                            }
-                        });
-                    });
-                });
-
-            return Promise.all(promises)
-                .then(() => {
-                    return { action, status: 200 };
-                })
-                .catch(err => err);
-        },
-
-        move: ({ action, params, props }) => {
-            const { directory, destination } = params;
-            fs.ensureDirSync(destination);
-
-            return new Promise((resolve, reject) => {
-                fs.copy(directory, destination, error => {
-                    if (error) {
-                        reject(error);
-                    } else {
-                        fs.removeSync(directory);
-                        resolve({ action, status: 200 });
-                    }
-                });
-            });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/rename/generator.js b/.core/.cli/commands/reactium/rename/generator.js
deleted file mode 100644
index d0f68867..00000000
--- a/.core/.cli/commands/reactium/rename/generator.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-const spinner = ora({
-    spinner: 'dots',
-    color: 'cyan',
-});
-
-const actions = require('./actions')(spinner);
-
-module.exports = ({ params, props }) => {
-    spinner.start();
-
-    const { replace } = params;
-
-    if (replace !== true) {
-        delete actions.content;
-    }
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('rename complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('rename error');
-            console.log(error);
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/rename/index.js b/.core/.cli/commands/reactium/rename/index.js
deleted file mode 100644
index 7f417549..00000000
--- a/.core/.cli/commands/reactium/rename/index.js
+++ /dev/null
@@ -1,397 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const globby = require('globby').sync;
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-const pad = require(`${mod}/lib/pad`);
-const formatName = require('../component').formatName;
-const formatDestination = require('../component').formatDestination;
-const testflight = require('./testflight');
-
-const componentSearch = ({ name, props }) => {
-    const { cwd, root } = props;
-
-    name = formatName(name);
-    const glob = String(`${cwd}/src/**/${name}/index.js`);
-    return globby([glob]).map(file => path.dirname(file));
-};
-
-const formatDirectory = ({ val, props, name }) => {
-    const { cwd } = props;
-
-    name = formatName(name);
-
-    val = formatDestination(val, props);
-    val = path.join(val, name);
-
-    return path.normalize(val);
-};
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli rename -f FooBar -t FuBar -d components
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'rename';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Reactium: Rename a component.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Rename canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params }) => {
-    const { prompt } = props;
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${chalk.white('Proceed?')} ${chalk.cyan(
-                            '(Y/N):',
-                        )}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toLowerCase() === 'y';
-                        },
-                    },
-                },
-            },
-            (error, input) => {
-                try {
-                    params['confirmed'] = input.confirmed;
-                } catch (err) {
-                    params['confirmed'] = false;
-                }
-
-                if (error || params.confirmed === false) {
-                    reject(error);
-                } else {
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * search({ props:Object, params:Object }) Function
- * @description Search the ~/src directory for a directory with the name of the component.
- * @return Array List of directories.
- * @since 2.0.0
- */
-const SEARCH = ({ props, params }) => {
-    const { prompt } = props;
-    const { from } = params;
-
-    let directory;
-
-    try {
-        directory = params.directory;
-    } catch (err) {}
-
-    return directory
-        ? new Promise(resolve => resolve(directory))
-        : new Promise((resolve, reject) => {
-              const search = componentSearch({ name: from, props });
-
-              if (search.length === 1) {
-                  resolve(path.dirname(search[0]));
-                  return;
-              }
-
-              if (search.length < 1) {
-                  prompt.stop();
-                  error('Cannot find component directory');
-                  reject({ message: 'no component', code: 500 });
-              }
-
-              const selections = search
-                  .map((type, index) => {
-                      return `\n\t    ${chalk.cyan(
-                          `${index + 1}.`,
-                      )} ${chalk.white(type)}`;
-                  })
-                  .join('');
-
-              prompt.get(
-                  {
-                      properties: {
-                          directory: {
-                              description: `${chalk.white(
-                                  'Component Directory:',
-                              )} ${selections}\n    ${chalk.white('Select:')}`,
-                              type: 'string',
-                              required: true,
-                              message: ' please make a selection',
-                              before: val => {
-                                  val = val
-                                      .replace(/[^0-9\s]/g, '')
-                                      .replace(/\s\s+/g, ' ')
-                                      .trim();
-                                  const index =
-                                      Number(String(val).replace(/[^0-9]/gi)) -
-                                      1;
-
-                                  return search[index];
-                              },
-                          },
-                      },
-                  },
-                  (error, input) => {
-                      let directory;
-
-                      try {
-                          directory = input.directory;
-                      } catch (err) {
-                          directory = false;
-                      }
-
-                      if (error || directory === false) {
-                          reject(error);
-                      } else {
-                          resolve(directory);
-                      }
-                  },
-              );
-          });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) => {
-    const { cwd } = props;
-    const { from, to } = input;
-
-    let output = {};
-
-    Object.entries(input).forEach(([key, val]) => {
-        switch (key) {
-            case 'directory':
-                if (val) {
-                    output[key] = formatDirectory({ val, props, name: from });
-                    output['destination'] = formatDirectory({
-                        val,
-                        props,
-                        name: to,
-                    });
-                }
-                break;
-
-            case 'name':
-                output[key] = formatName(val);
-                break;
-
-            default:
-                output[key] = val;
-                break;
-        }
-    });
-
-    return output;
-};
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () => {
-    console.log('');
-    console.log('Example:');
-    console.log('');
-    console.log('  arcli rename --old-name Fubar --new-name FooBar');
-    console.log('');
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = () => {
-    return {
-        properties: {
-            from: {
-                required: true,
-                pattern: /[a-zA-Z]/,
-                message: ' Component name is required',
-                description: chalk.white('Component Name:'),
-            },
-            to: {
-                required: true,
-                pattern: /[a-zA-Z]/,
-                message: ' New name is required',
-                description: chalk.white('New Name:'),
-            },
-            replace: {
-                description: `${chalk.white(
-                    'Replace in other files?',
-                )} ${chalk.cyan('(Y/N):')}`,
-                required: true,
-                pattern: /^y|n|Y|N/,
-                message: ' ',
-                default: 'n',
-                before: val => {
-                    return String(val).toLowerCase() === 'y';
-                },
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-
-    const ovr = {};
-    const schema = SCHEMA();
-
-    Object.keys(schema.properties).forEach(key => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            ovr[key] = val;
-        }
-    });
-
-    prompt.override = ovr;
-    prompt.start();
-    prompt.get(schema, (err, input) => {
-        // Keep this conditional as the first line in this function.
-        // Why? because you will get a js error if you try to set or use anything related to the input object.
-        if (err) {
-            prompt.stop();
-            error(`${NAME} ${err.message}`);
-            return;
-        }
-
-        SEARCH({ props, params: input })
-            .then(directory => {
-                input['directory'] = directory;
-
-                const params = CONFORM({ input, props });
-                const { replace } = params;
-
-                message('Rename component with the following options:');
-
-                const preflight = { ...params };
-                const files = testflight({ params, props });
-
-                console.log(
-                    prettier.format(JSON.stringify(preflight), {
-                        parser: 'json-stringify',
-                    }),
-                );
-
-                params['files'] = files;
-
-                if (files.length > 0 && replace) {
-                    const len = String(files.length).length;
-                    const found = files
-                        .map((file, index) => {
-                            index += 1;
-                            let i = chalk.cyan(pad(index, len) + '.');
-                            return `  ${i} ${file}`;
-                        })
-                        .join('\n');
-
-                    message('The following files will be updated:');
-                    console.log(found, '\n');
-                } else {
-                    params['replace'] = false;
-                }
-
-                return CONFIRM({ props, params });
-            })
-            .then(async () => {
-                console.log('');
-                await generator({ params, props });
-                console.log('');
-            })
-            .then(() => prompt.stop())
-            .catch(err => {
-                prompt.stop();
-                if (err) {
-                    console.log(err);
-                }
-                message(CANCELED);
-            });
-    });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-f, --from [from]', "Component's current name.")
-        .option('-t, --to [to]', "Component's new name.")
-        .option('-d, --directory [directory]', "Component's parent directory.")
-        .option(
-            '-r, --replace [replace]',
-            'Replace the component name in other files.',
-        )
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    ACTION,
-    CONFIRM,
-    CONFORM,
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/rename/testflight.js b/.core/.cli/commands/reactium/rename/testflight.js
deleted file mode 100644
index 9976fdfc..00000000
--- a/.core/.cli/commands/reactium/rename/testflight.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const globby = require('globby').sync;
-const reader = require('fs-readdir-recursive');
-
-const scan = ({ file, params, props }) => {
-    const { cwd } = props;
-    const { from } = params;
-
-    const filepath = path.join(cwd, 'src', file);
-
-    const regex = new RegExp(from, 'im');
-
-    // Test the file
-    if (regex.test(file)) {
-        return true;
-    }
-
-    const stats = fs.statSync(filepath);
-    if (stats.isDirectory()) {
-        return false;
-    } else {
-        const fileContent = fs.readFileSync(filepath);
-        return regex.test(fileContent);
-    }
-
-    return false;
-};
-
-module.exports = ({ params, props }) =>
-    reader(path.join(props.cwd, 'src'))
-        .filter(file => scan({ file, params, props }))
-        .map(file => path.join(props.cwd, 'src', file));
diff --git a/.core/.cli/commands/reactium/route/index.js b/.core/.cli/commands/reactium/route/index.js
deleted file mode 100644
index 8db38f9b..00000000
--- a/.core/.cli/commands/reactium/route/index.js
+++ /dev/null
@@ -1,147 +0,0 @@
-arcli.Reactium = require('@atomic-reactor/reactium-sdk-core').default;
-
-const { ActionSequence, ora, path, Reactium } = arcli;
-
-const ENUMS = {
-    CANCELED: 'route canceled!',
-    DESC: 'Reactium: Create or replace a component route file',
-    FLAGS: {
-        destination: {
-            flag: '-d, --destination [destination]',
-            desc: 'Directory to save the file',
-        },
-        route: {
-            flag: '-r, --route [route]',
-            desc:
-                'Add routes to the component. /route-1, /route-2, /route/with/:param',
-        },
-        unattended: {
-            flag: '-u, --unattended [unattended]',
-            desc: 'Bypass the preflight confirmation and any input prompts',
-        },
-    },
-    NAME: 'route',
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Example:
-  $ arcli route -h
-`);
-
-const ACTION = async ({ opt, props }) => {
-    // load hooks
-    arcli
-        .globby(
-            [
-                './.core/**/reactium-arcli.js',
-                './src/**/reactium-arcli.js',
-                './reactium_modules/**/reactium-arcli.js',
-                './node_modules/**/reactium-arcli.js',
-            ],
-            {
-                dot: true,
-            },
-        )
-        .forEach(file => require(path.resolve(file)));
-
-    let params = arcli.flagsToParams({ opt, flags: Object.keys(ENUMS.FLAGS) });
-
-    await Reactium.Hook.run('arcli-route-init', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    await Reactium.Hook.run('arcli-route-enums', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-route-input', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    }
-
-    await Reactium.Hook.run('arcli-route-conform', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-route-preflight', {
-            ...props,
-            params,
-        });
-
-        await Reactium.Hook.run('arcli-route-confirm', {
-            ...props,
-            params,
-            ENUMS,
-        });
-
-        if (params.confirm !== true) {
-            arcli.message(ENUMS.CANCELED);
-            return;
-        }
-    }
-
-    console.log('');
-
-    // Start the spinner
-
-    const spinner = ora({ spinner: 'dots', color: 'cyan' });
-    spinner.start();
-
-    let actions = {};
-    await Reactium.Hook.run('arcli-route-actions', {
-        ...props,
-        params,
-        actions,
-        spinner,
-        ENUMS,
-    });
-
-    return ActionSequence({
-        actions,
-        options: { params, props, spinner },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.error(error);
-            return error;
-        });
-};
-
-const COMMAND = ({ program, props }) => {
-    program
-        .command(ENUMS.NAME)
-        .description(ENUMS.DESC)
-        .on('--help', HELP)
-        .action(opt => ACTION({ opt, props, program }));
-
-    program.commands
-        .filter(cmd => Boolean(cmd._name === ENUMS.NAME))
-        .forEach(cmd =>
-            Object.values(ENUMS.FLAGS).forEach(({ flag, desc }) =>
-                cmd.option(flag, desc),
-            ),
-        );
-
-    return program;
-};
-
-module.exports = {
-    COMMAND,
-    NAME: ENUMS.NAME,
-};
diff --git a/.core/.cli/commands/reactium/route/reactium-arcli.js b/.core/.cli/commands/reactium/route/reactium-arcli.js
deleted file mode 100644
index 0b9865ec..00000000
--- a/.core/.cli/commands/reactium/route/reactium-arcli.js
+++ /dev/null
@@ -1,93 +0,0 @@
-const componentGen = require('../component/componentGen');
-const formatRoute = require('../component/formatRoute');
-const formatDestination = require('../component/formatDestination');
-const selectDestination = require('../component/selectDestination');
-
-const { _, chalk, prefix, Reactium } = arcli;
-
-const suffix = chalk.magenta(': ');
-
-const PREFLIGHT = ({ msg, params }) => {
-    arcli.message(msg || 'Preflight checklist:');
-    console.log(JSON.stringify(params, null, 2));
-    console.log('');
-};
-
-const INPUT = async ({ inquirer, params }) => {
-    const input = await inquirer.prompt(
-        [
-            selectDestination(),
-            {
-                prefix,
-                suffix,
-                type: 'input',
-                name: 'route',
-                message: 'Route',
-            },
-        ],
-        params,
-    );
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFIRM = async ({ inquirer, params }) => {
-    if (params.unattended) return;
-
-    const input = await inquirer.prompt([
-        {
-            prefix,
-            suffix,
-            default: false,
-            type: 'confirm',
-            name: 'confirm',
-            message: 'Proceed?',
-        },
-    ]);
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFORM = async ({ params }) => {
-    params.destination = formatDestination(params.destination);
-
-    if (typeof params.route === 'string') {
-        params.route = formatRoute(params.route);
-    }
-};
-
-// Register default hooks
-Reactium.Hook.register(
-    'arcli-route-input',
-    INPUT,
-    Reactium.Enums.priority.highest,
-    'arcli-route-input',
-);
-
-Reactium.Hook.register(
-    'arcli-route-confirm',
-    CONFIRM,
-    Reactium.Enums.priority.highest,
-    'arcli-route-confirm',
-);
-
-Reactium.Hook.register(
-    'arcli-route-conform',
-    CONFORM,
-    Reactium.Enums.priority.highest,
-    'arcli-route-conform',
-);
-
-Reactium.Hook.register(
-    'arcli-route-preflight',
-    PREFLIGHT,
-    Reactium.Enums.priority.highest,
-    'arcli-route-preflight',
-);
-
-Reactium.Hook.register(
-    'arcli-route-actions',
-    ({ actions }) => (actions['component'] = componentGen),
-    Reactium.Enums.priority.highest,
-    'arcli-route-actions',
-);
diff --git a/.core/.cli/commands/reactium/server/actions.js b/.core/.cli/commands/reactium/server/actions.js
deleted file mode 100644
index 23c6461f..00000000
--- a/.core/.cli/commands/reactium/server/actions.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        create: ({ action, params, props }) => {
-            message(`Creating ${chalk.cyan('templates')}...`);
-
-            const { cwd } = props;
-            const { feo, ssr } = params;
-
-            const reactium = require(path.normalize(
-                `${cwd}/.core/reactium-config`,
-            ));
-            const template = {};
-            const tmpath = path.normalize(`${cwd}/`);
-            const ver = op.get(reactium, 'version', '2.3.15');
-
-            if (feo) {
-                template['feo'] = fs.readFileSync(
-                    path.normalize(`${cwd}/.core/server/template/feo.js`),
-                );
-                template['feo'] = String(template.feo).replace(
-                    /\%TEMPLATE_VERSION\%/gi,
-                    ver,
-                );
-            }
-
-            if (ssr) {
-                template['ssr'] = fs.readFileSync(
-                    path.normalize(`${cwd}/.core/server/template/ssr.js`),
-                );
-                template['ssr'] = String(template.ssr).replace(
-                    /\%TEMPLATE_VERSION\%/gi,
-                    ver,
-                );
-            }
-
-            Object.entries(template).forEach(([type, content]) => {
-                const p = path.normalize(
-                    `${cwd}/src/app/server/template/${type}.js`,
-                );
-
-                fs.ensureFileSync(p);
-                fs.writeFileSync(p, content);
-            });
-
-            return Promise.resolve({ action, status: 200 });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/server/generator.js b/.core/.cli/commands/reactium/server/generator.js
deleted file mode 100644
index 1abcc105..00000000
--- a/.core/.cli/commands/reactium/server/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/server/index.js b/.core/.cli/commands/reactium/server/index.js
deleted file mode 100644
index 79b2f00c..00000000
--- a/.core/.cli/commands/reactium/server/index.js
+++ /dev/null
@@ -1,273 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const fs = require('fs-extra');
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli server template <type>
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'server <action>';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Reactium: Create a custom server template.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * TYPES
- * @description types of server templates that can be created
- */
-const TYPES = ['feo', 'ssr'];
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ' ',
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) => {
-    const output = Object.keys(input).reduce((obj, key) => {
-        let val = input[key];
-        switch (key) {
-            case 'type':
-                val = String(val).toLowerCase();
-                val = TYPES.includes(val) ? val : 'all';
-                obj[key] = val;
-                break;
-
-            default:
-                obj[key] = val;
-                break;
-        }
-
-        return obj;
-    }, {});
-
-    return output;
-};
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli server template
-
-Exclude the front-end template:
-  $ arcli server template --no-feo
-
-Exclude the server side render template:
-  $ arcli server template --no-ssr
-
-Overwrite existing server templates
-  $ arcli server template --overwrite
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = ['feo', 'ssr', 'overwrite'];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-const isTemplate = cwd => {
-    const destFEO = fs.existsSync(
-        path.normalize(`${cwd}/src/app/server/template/feo.js`),
-    );
-    const destSSR = fs.existsSync(
-        path.normalize(`${cwd}/src/app/server/template/ssr.js`),
-    );
-
-    return destFEO || destSSR;
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    const { cwd } = props;
-
-    return {
-        properties: {
-            overwrite: {
-                required: true,
-                pattern: /^y|n|Y|N/,
-                message: '',
-                description: `${chalk.white(
-                    'Overwrite existing template?',
-                )} ${chalk.cyan('(Y/N):')}`,
-                ask: () => isTemplate(cwd),
-                before: val => Boolean(String(val).toUpperCase() === 'Y'),
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ action, opt, props }) => {
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            const { feo, ssr } = params;
-
-            if (!op.has(params, 'overwrite') || (!feo && !ssr)) {
-                reject(CANCELED);
-                return;
-            }
-
-            resolve(params);
-        });
-    })
-        .then(() => {
-            return CONFIRM({ props, params });
-        })
-        .then(async () => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action((action, opt) => ACTION({ action, opt, props }))
-        .option('-F, --no-feo [feo]', 'Front-end template.')
-        .option('-S, --no-ssr [ssr]', 'Server-side rendering template.')
-        .option(
-            '-o, --overwrite [overwrite]',
-            'Overwrite existing template files.',
-        )
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/style/index.js b/.core/.cli/commands/reactium/style/index.js
deleted file mode 100644
index 38783483..00000000
--- a/.core/.cli/commands/reactium/style/index.js
+++ /dev/null
@@ -1,145 +0,0 @@
-arcli.Reactium = require('@atomic-reactor/reactium-sdk-core').default;
-
-const { ActionSequence, ora, path, Reactium } = arcli;
-
-const ENUMS = {
-    CANCELED: 'style canceled!',
-    DESC: 'Reactium: Create or replace a component stylesheet',
-    FLAGS: {
-        destination: {
-            flag: '-d, --destination [destination]',
-            desc: 'Directory to save stylesheet',
-        },
-        type: {
-            flag: '-t, --type [type]',
-            desc: 'Stylesheet type',
-        },
-        unattended: {
-            flag: '-u, --unattended [unattended]',
-            desc: 'Bypass the preflight confirmation and any input prompts',
-        },
-    },
-    NAME: 'style',
-};
-
-// prettier-ignore
-const HELP = () => console.log(`
-Example:
-  $ arcli style -h
-`);
-
-const ACTION = async ({ opt, props }) => {
-    // load hooks
-    arcli
-        .globby(
-            [
-                './.core/**/reactium-arcli.js',
-                './src/**/reactium-arcli.js',
-                './reactium_modules/**/reactium-arcli.js',
-                './node_modules/**/reactium-arcli.js',
-            ],
-            {
-                dot: true,
-            },
-        )
-        .forEach(file => require(path.resolve(file)));
-
-    let params = arcli.flagsToParams({ opt, flags: Object.keys(ENUMS.FLAGS) });
-
-    await Reactium.Hook.run('arcli-style-init', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    await Reactium.Hook.run('arcli-style-enums', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-style-input', {
-            ...props,
-            params,
-            ENUMS,
-        });
-    }
-
-    await Reactium.Hook.run('arcli-style-conform', {
-        ...props,
-        params,
-        ENUMS,
-    });
-
-    if (params.unattended !== true) {
-        await Reactium.Hook.run('arcli-style-preflight', {
-            ...props,
-            params,
-        });
-
-        await Reactium.Hook.run('arcli-style-confirm', {
-            ...props,
-            params,
-            ENUMS,
-        });
-
-        if (params.confirm !== true) {
-            arcli.message(ENUMS.CANCELED);
-            return;
-        }
-    }
-
-    console.log('');
-
-    // Start the spinner
-
-    const spinner = ora({ spinner: 'dots', color: 'cyan' });
-    spinner.start();
-
-    let actions = {};
-    await Reactium.Hook.run('arcli-style-actions', {
-        ...props,
-        params,
-        actions,
-        ENUMS,
-    });
-
-    return ActionSequence({
-        actions,
-        options: { params, props, spinner },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            console.log('');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            console.error(error);
-            return error;
-        });
-};
-
-const COMMAND = ({ program, props }) => {
-    program
-        .command(ENUMS.NAME)
-        .description(ENUMS.DESC)
-        .on('--help', HELP)
-        .action(opt => ACTION({ opt, props, program }));
-
-    program.commands
-        .filter(cmd => Boolean(cmd._name === ENUMS.NAME))
-        .forEach(cmd =>
-            Object.values(ENUMS.FLAGS).forEach(({ flag, desc }) =>
-                cmd.option(flag, desc),
-            ),
-        );
-
-    return program;
-};
-
-module.exports = {
-    COMMAND,
-    NAME: ENUMS.NAME,
-};
diff --git a/.core/.cli/commands/reactium/style/reactium-arcli.js b/.core/.cli/commands/reactium/style/reactium-arcli.js
deleted file mode 100644
index 9747cef0..00000000
--- a/.core/.cli/commands/reactium/style/reactium-arcli.js
+++ /dev/null
@@ -1,88 +0,0 @@
-const { _, chalk, Reactium } = arcli;
-
-const componentGen = require('../component/componentGen');
-const formatDestination = require('../component/formatDestination');
-const selectDestination = require('../component/selectDestination');
-const { selectStyle, styleTypes } = require('../component/selectStyle');
-
-const PREFLIGHT = ({ msg, params }) => {
-    arcli.message(msg || 'Preflight checklist:');
-    console.log(JSON.stringify(params, null, 2));
-    console.log('');
-};
-
-const INPUT = async ({ inquirer, params }) => {
-    const input = await inquirer.prompt(
-        [selectDestination(), selectStyle({ name: 'type' })],
-        params,
-    );
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFIRM = async ({ inquirer, params }) => {
-    if (params.unattended) return;
-
-    const input = await inquirer.prompt([
-        {
-            default: false,
-            type: 'confirm',
-            name: 'confirm',
-            message: 'Proceed?',
-            prefix: arcli.prefix,
-            suffix: chalk.magenta(': '),
-        },
-    ]);
-
-    Object.entries(input).forEach(([key, val]) => (params[key] = val));
-};
-
-const CONFORM = async ({ params }) => {
-    params.style = true;
-    params.destination = formatDestination(params.destination);
-
-    if (typeof params.type === 'string') {
-        const styleType =
-            _.findWhere(styleTypes, { name: params.type }) ||
-            _.first(styleTypes);
-
-        params.styleType = styleType.value;
-        delete params.type;
-    }
-};
-
-// Register default hooks
-Reactium.Hook.register(
-    'arcli-style-input',
-    INPUT,
-    Reactium.Enums.priority.highest,
-    'arcli-style-input',
-);
-
-Reactium.Hook.register(
-    'arcli-style-confirm',
-    CONFIRM,
-    Reactium.Enums.priority.highest,
-    'arcli-style-confirm',
-);
-
-Reactium.Hook.register(
-    'arcli-style-conform',
-    CONFORM,
-    Reactium.Enums.priority.highest,
-    'arcli-style-conform',
-);
-
-Reactium.Hook.register(
-    'arcli-style-preflight',
-    PREFLIGHT,
-    Reactium.Enums.priority.highest,
-    'arcli-style-preflight',
-);
-
-Reactium.Hook.register(
-    'arcli-style-actions',
-    ({ actions }) => (actions['component'] = componentGen),
-    Reactium.Enums.priority.highest,
-    'arcli-style-actions',
-);
diff --git a/.core/.cli/commands/reactium/test/actions.js b/.core/.cli/commands/reactium/test/actions.js
deleted file mode 100644
index 1402e934..00000000
--- a/.core/.cli/commands/reactium/test/actions.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const path = require('path');
-const chalk = require('chalk');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const handlebars = require('handlebars').compile;
-
-module.exports = spinner => {
-    const message = text => {
-        if (spinner) {
-            spinner.text = text;
-        }
-    };
-
-    return {
-        create: ({ action, params, props }) => {
-            const { cwd } = props;
-            const { destination, component } = params;
-
-            message(
-                `Creating ${chalk.white(component)} ${chalk.cyan(
-                    'test.js',
-                )}...`,
-            );
-
-            const filepath = path.normalize(path.join(destination, 'test.js'));
-
-            fs.ensureDirSync(path.normalize(destination));
-
-            const template = path.normalize(`${__dirname}/template/test.hbs`);
-
-            const content = handlebars(fs.readFileSync(template, 'utf-8'))(
-                params,
-            );
-
-            return new Promise((resolve, reject) => {
-                fs.writeFile(filepath, content, error => {
-                    if (error) {
-                        reject(error.Error);
-                    } else {
-                        setTimeout(resolve, 1000, { action, status: 200 });
-                    }
-                });
-            });
-        },
-    };
-};
diff --git a/.core/.cli/commands/reactium/test/generator.js b/.core/.cli/commands/reactium/test/generator.js
deleted file mode 100644
index 1abcc105..00000000
--- a/.core/.cli/commands/reactium/test/generator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const ora = require('ora');
-const ActionSequence = require('action-sequence');
-
-module.exports = ({ action, params, props }) => {
-    const spinner = ora({
-        spinner: 'dots',
-        color: 'cyan',
-    });
-
-    spinner.start();
-
-    const actions = require('./actions')(spinner);
-
-    return ActionSequence({
-        actions,
-        options: { params, props },
-    })
-        .then(success => {
-            spinner.succeed('complete!');
-            return success;
-        })
-        .catch(error => {
-            spinner.fail('error!');
-            return error;
-        });
-};
diff --git a/.core/.cli/commands/reactium/test/index.js b/.core/.cli/commands/reactium/test/index.js
deleted file mode 100644
index 15494ebe..00000000
--- a/.core/.cli/commands/reactium/test/index.js
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Imports
- * -----------------------------------------------------------------------------
- */
-
-const chalk = require('chalk');
-const generator = require('./generator');
-const prettier = require('prettier');
-const path = require('path');
-const op = require('object-path');
-const mod = path.dirname(require.main.filename);
-const { error, message } = require(`${mod}/lib/messenger`);
-
-const formatDestination = (val, props) => {
-    const { cwd } = props;
-
-    val = path.normalize(val);
-    val = String(val).replace(
-        /^\/components\/|^components\/|^components$/i,
-        `${cwd}/src/app/components/`,
-    );
-    val = String(val).replace(
-        /^\/common-ui\/|^common-ui\/|^common-ui$/i,
-        `${cwd}/src/app/components/common-ui/`,
-    );
-
-    return path.normalize(val);
-};
-
-/**
- * NAME String
- * @description Constant defined as the command name. Value passed to the commander.command() function.
- * @example $ arcli test
- * @see https://www.npmjs.com/package/commander#command-specific-options
- * @since 2.0.0
- */
-const NAME = 'test';
-
-/**
- * DESC String
- * @description Constant defined as the command description. Value passed to
- * the commander.desc() function. This string is also used in the --help flag output.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const DESC = 'Reactium: Add a jest/enzyme test to your component.';
-
-/**
- * CANCELED String
- * @description Message sent when the command is canceled
- * @since 2.0.0
- */
-const CANCELED = 'Action canceled!';
-
-/**
- * confirm({ props:Object, params:Object }) Function
- * @description Prompts the user to confirm the operation
- * @since 2.0.0
- */
-const CONFIRM = ({ props, params, msg }) => {
-    const { prompt } = props;
-
-    msg = msg || chalk.white('Proceed?');
-
-    return new Promise((resolve, reject) => {
-        prompt.get(
-            {
-                properties: {
-                    confirmed: {
-                        description: `${msg} ${chalk.cyan('(Y/N):')}`,
-                        type: 'string',
-                        required: true,
-                        pattern: /^y|n|Y|N/,
-                        message: ` `,
-                        before: val => {
-                            return String(val).toUpperCase() === 'Y';
-                        },
-                    },
-                },
-            },
-            (error, input = {}) => {
-                const confirmed = op.get(input, 'confirmed', false);
-                if (error || confirmed === false) {
-                    reject(error);
-                } else {
-                    params['confirmed'] = true;
-                    resolve(params);
-                }
-            },
-        );
-    });
-};
-
-/**
- * conform(input:Object) Function
- * @description Reduces the input object.
- * @param input Object The key value pairs to reduce.
- * @since 2.0.0
- */
-const CONFORM = ({ input, props }) =>
-    Object.keys(input).reduce((output, key) => {
-        let val = input[key];
-        switch (key) {
-            case 'destination':
-                output[key] = formatDestination(val, props);
-                break;
-
-            default:
-                output[key] = val;
-                break;
-        }
-
-        return output;
-    }, {});
-
-/**
- * HELP Function
- * @description Function called in the commander.on('--help', callback) callback.
- * @see https://www.npmjs.com/package/commander#automated---help
- * @since 2.0.0
- */
-const HELP = () =>
-    console.log(`
-Example:
-  $ arcli test -d components/MyComponent
-  $ arcli test -d common-ui/MyCommonUiComponent
-
-When specifying the destination [-d, --destination] the following shortcuts are available:
-  ${chalk.cyan('components/')}  The /.src/app/components directory.
-  ${chalk.cyan('common-ui/')}   The /.src/app/components/common-ui directory.
-`);
-
-/**
- * FLAGS
- * @description Array of flags passed from the commander options.
- * @since 2.0.18
- */
-const FLAGS = ['component', 'destination', 'from', 'overwrite'];
-
-/**
- * FLAGS_TO_PARAMS Function
- * @description Create an object used by the prompt.override property.
- * @since 2.0.18
- */
-const FLAGS_TO_PARAMS = ({ opt = {} }) =>
-    FLAGS.reduce((obj, key) => {
-        let val = opt[key];
-        val = typeof val === 'function' ? undefined : val;
-
-        if (val) {
-            obj[key] = val;
-        }
-
-        return obj;
-    }, {});
-
-/**
- * PREFLIGHT Function
- */
-const PREFLIGHT = ({ msg, params, props }) => {
-    msg =
-        msg ||
-        `A new ${chalk.cyan(
-            'test.js',
-        )} file will be generated with the following options:`;
-
-    message(msg);
-
-    // Transform the preflight object instead of the params object
-    const preflight = { ...params };
-
-    console.log(
-        prettier.format(JSON.stringify(preflight), {
-            parser: 'json-stringify',
-        }),
-    );
-};
-
-/**
- * SCHEMA Function
- * @description used to describe the input for the prompt function.
- * @see https://www.npmjs.com/package/prompt
- * @since 2.0.0
- */
-const SCHEMA = ({ props }) => {
-    return {
-        properties: {
-            destination: {
-                description: chalk.white('Destination:'),
-                message: `Enter the ${chalk.cyan('Destination')}`,
-                required: true,
-            },
-            component: {
-                description: chalk.white('Component:'),
-                message: `Enter the ${chalk.cyan('Component')} name`,
-                required: true,
-            },
-            from: {
-                description: chalk.white('Import from:'),
-                default: './index',
-                required: true,
-            },
-        },
-    };
-};
-
-/**
- * ACTION Function
- * @description Function used as the commander.action() callback.
- * @see https://www.npmjs.com/package/commander
- * @param opt Object The commander options passed into the function.
- * @param props Object The CLI props passed from the calling class `orcli.js`.
- * @since 2.0.0
- */
-const ACTION = ({ opt, props }) => {
-    const { cwd, prompt } = props;
-    const schema = SCHEMA({ props });
-    const ovr = FLAGS_TO_PARAMS({ opt });
-
-    if (op.has(opt, 'destination') && !op.has(opt, 'component')) {
-        if (String(opt.destination).split('/').length > 1) {
-            const comp = String(opt.destination)
-                .split('/')
-                .pop();
-            if (comp) {
-                ovr['component'] = comp;
-            }
-        }
-    }
-
-    prompt.override = ovr;
-    prompt.start();
-
-    return new Promise((resolve, reject) => {
-        prompt.get(schema, (err, input = {}) => {
-            if (err) {
-                prompt.stop();
-                reject(`${NAME} ${err.message}`);
-                return;
-            }
-
-            input = { ...ovr, ...input };
-            params = CONFORM({ input, props });
-
-            PREFLIGHT({ params, props });
-
-            resolve(params);
-        });
-    })
-        .then(() => CONFIRM({ props, params }))
-        .then(async () => {
-            console.log('');
-            await generator({ params, props });
-            console.log('');
-        })
-        .then(() => prompt.stop())
-        .catch(err => {
-            prompt.stop();
-            message(op.get(err, 'message', CANCELED));
-        });
-};
-
-/**
- * COMMAND Function
- * @description Function that executes program.command()
- */
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }))
-        .option('-d, --destination [destination]', 'The component directory.')
-        .option('-c, --component [component]', 'The component name.')
-        .option('-o, --overwrite [overwrite]', 'Overwrite existing test file.')
-        .option(
-            '-f, --from [from]',
-            `The component import path relative to the ${chalk.cyan(
-                'test.js',
-            )} file. Default: ${chalk.cyan('./index')}`,
-        )
-        .on('--help', HELP);
-
-/**
- * Module Constructor
- * @description Internal constructor of the module that is being exported.
- * @param program Class Commander.program reference.
- * @param props Object The CLI props passed from the calling class `arcli.js`.
- * @since 2.0.0
- */
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/commands/reactium/test/template/test.hbs b/.core/.cli/commands/reactium/test/template/test.hbs
deleted file mode 100644
index 2b4f581d..00000000
--- a/.core/.cli/commands/reactium/test/template/test.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import {{component}} from '{{from}}';
-import { shallow } from 'reactium-core/enzyme';
-
-test('<{{component}} />', () => {
-    const component = shallow(<{{component}} />);
-
-    expect(component.html().length).toBeGreaterThan(0);
-});
diff --git a/.core/.cli/commands/reactium/version/index.js b/.core/.cli/commands/reactium/version/index.js
deleted file mode 100644
index 56ea45f9..00000000
--- a/.core/.cli/commands/reactium/version/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const chalk = require('chalk');
-const path = require('path');
-const op = require('object-path');
-
-const NAME = 'version';
-const DESC = 'The current Reactium Core version';
-
-const ACTION = ({ opt, props }) => {
-    const configPath = path.normalize(
-        path.join(props.cwd, '/.core', 'reactium-config'),
-    );
-    const reactiumConfig = require(configPath);
-    console.log(chalk.cyan('Reactium:'));
-    console.log(
-        ' ',
-        'Version:',
-        chalk.magenta(op.get(actiniumConfig, 'version')),
-    );
-    console.log(
-        ' ',
-        'Semver: ',
-        chalk.magenta(op.get(actiniumConfig, 'semver')),
-    );
-    console.log('');
-};
-
-const COMMAND = ({ program, props }) =>
-    program
-        .command(NAME)
-        .description(DESC)
-        .action(opt => ACTION({ opt, props }));
-
-module.exports = {
-    COMMAND,
-    NAME,
-};
diff --git a/.core/.cli/config.json b/.core/.cli/config.json
deleted file mode 100644
index b81b8d84..00000000
--- a/.core/.cli/config.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "reactium": {
-        "repo": "https://github.com/Atomic-Reactor/Reactium/archive/master.zip",
-        "types": ["class", "functional", "hook"]
-    }
-}
diff --git a/.core/app.js b/.core/app.js
deleted file mode 100644
index d72209f5..00000000
--- a/.core/app.js
+++ /dev/null
@@ -1 +0,0 @@
-export * from './app/index';
diff --git a/.core/app/index.js b/.core/app/index.js
deleted file mode 100644
index df2b4621..00000000
--- a/.core/app/index.js
+++ /dev/null
@@ -1,206 +0,0 @@
-/**
- * -----------------------------------------------------------------------------
- * Includes
- * -----------------------------------------------------------------------------
- */
-import React from 'react';
-import ReactDOM from 'react-dom';
-import _ from 'underscore';
-import op from 'object-path';
-import deps from 'dependencies';
-import 'externals';
-
-/**
- * -----------------------------------------------------------------------------
- * @function App()
- * @description Scan DOM for <Component> elements and render React components
- * inside of them.
- * -----------------------------------------------------------------------------
- */
-export const App = async () => {
-    console.log('Loading Core SDK');
-    const {
-        default: Reactium,
-        hookableComponent,
-        isBrowserWindow,
-        Zone,
-        AppContexts,
-    } = await import('reactium-core/sdk');
-
-    console.log('Initializing Application Hooks');
-
-    await deps().loadAll('allHooks');
-
-    /**
-     * @api {Hook} sdk-init sdk-init
-     * @apiName sdk-init
-     * @apiDescription Called after reactium-hooks.js DDD artifacts are loaded, to allow
-     * the Reactium SDK singleton to be extended before the init hook.
-     * @apiGroup Hooks
-     */
-    await Reactium.Hook.run('sdk-init', Reactium);
-    Reactium.Hook.runSync('sdk-init', Reactium);
-
-    const context = {};
-
-    /**
-     * @api {Hook} init init
-     * @apiName init
-     * @apiDescription Called before all other hooks on Reactium application startup. async only - used in
-     front-end or isomorphically when running server-side rendering mode (SSR)
-     * @apiGroup Hooks
-     */
-    await Reactium.Hook.run('init');
-
-    /**
-     * @api {Hook} dependencies-load dependencies-load
-     * @apiName dependencies-load
-     * @apiDescription Called after init to give an application a change to load
-     async dependencies. Many Domain Driven Design (DDD) artifacts from generated src/manifest.js are loaded on this hook
-     async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-     * @apiGroup Hooks
-     */
-    await Reactium.Hook.run('dependencies-load');
-
-    /**
-     * @api {Hook} zone-defaults zone-defaults
-     * @apiName zone-defaults
-     * @apiDescription Called after dependencies-load by Reactium.Zone.init() for
-     loading default component rendering Zone controls and components.
-     async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-     * @apiParam {Object} context used to create initial controls and components.
-     controls.filter for default filtering, controls.sort for default sorting, controls.mapper for default mapping
-     and controls.components for initial registered components. zone.js Domain Driven Design (DDD) artifacts from generated src/manifest.js
-     are registered with Reactium.Zone at this time. See Reactium.Zone SDK for runtime operations.
-     * @apiGroup Hooks
-     */
-    // Note: zone-defaults is run from @atomic-reactor/reactium-sdk-core inside Zone.init()
-    await Reactium.Zone.init();
-
-    /**
-     * @api {Hook} plugin-dependencies plugin-dependencies
-     * @apiName plugin-dependencies
-     * @apiDescription Called to indicate all bootstrap dependencies should now be loaded, but before application routes have been initialized.
-     There are 2 default registered callback in Reactium core on this hook.
-     1. (Highest Priority): The generated src/manifest.js dependencies are attached
-     to this hook context (as context.deps).
-     2. (High Priority): `plugin-init` hook will be invoked, at which point all Reactium.Plugin registrations will be called.
-
-     Any hooks that registered after Reactium.Plugin will only be useful if they happen to be invoked during the normal runtime operations of the application.
-     An important exception to this is `routes-init`, which is deferred until after plugins initialize so they may dynamically add routes before Reactium hands off
-     control to the Router.
-     async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-     * @apiParam {Object} context Core attaches generated manifest loaded dependencies to context.deps
-     * @apiGroup Hooks
-     */
-    await Reactium.Hook.run('plugin-dependencies');
-    await Reactium.Routing.load();
-
-    /**
-     * @api {Hook} plugin-ready plugin-ready
-     * @apiName plugin-ready
-     * @apiDescription Called after all plugin registration callbacks have completed and routes have loaded.
-     * @apiGroup Hooks
-     */
-    await Reactium.Hook.run('plugin-ready');
-
-    if (isBrowserWindow()) {
-        /**
-         * @api {Hook} component-bindings component-bindings
-         * @apiName component-bindings
-         * @apiDescription Called after plugin and routing initialization to define element and dynamic component for
-         one-off component bindings to the DOM. e.g. In development mode, used to render Redux Dev tools.
-         async only - used in front-end application only
-         * @apiParam {Object} context context.bindPoints MUST be an array of binding objects after this hook is called
-         * @apiParam (binding) {HTMLElement} the DOM element to bind to (e.g. document.getElementById('my-element'))
-         * @apiParam (binding) {String} string matching a React component module in one of the Reactium built-in webpack contexts
-         (src/app/components or src/app/components/common-ui) e.g. 'DevTools' maps to src/app/components/DevTools
-         * @apiGroup Hooks
-         */
-        const { bindPoints } = await Reactium.Hook.run('component-bindings');
-
-        /**
-         * @api {Hook} app-bindpoint app-bindpoint
-         * @apiName app-bindpoint
-         * @apiDescription Called after plugin and routing initialization to define the DOM element used for mounting the Single-Page application (SPA).
-         By default, the application will bind to `document.getElementById('router')`, but this can be changed with this hook. This is related to the HTML
-         template artifacts left by the server-side `Server.AppBindings` hook.
-         async only - used in front-end application only
-         * @apiParam {Object} context context.appElement MUST be an HTMLElement where your React appliation will bind to the DOM.
-         * @apiParam (appElement) {HTMLElement} the DOM element to bind to - by default `document.getElementById('router')`.
-         * @apiGroup Hooks
-         */
-        const { appElement } = await Reactium.Hook.run('app-bindpoint');
-
-        /**
-         * @api {Hook} app-context-provider app-context-provider
-         * @apiName app-context-provider
-         * @apiDescription Called after app-bindpoint to define any React context providers, using the [Reactium.AppContext](#api-Reactium-Reactium.AppContext) registry.
-         * @apiGroup Hooks
-         */
-        await Reactium.Hook.run('app-context-provider');
-
-        /**
-         * @api {Hook} app-router app-router
-         * @apiName app-router
-         * @apiDescription Called after app-context-provider to define the registered Router component (i.e. `Reactium.Component.register('Router'...)`).
-         After this hook, the ReactDOM bindings will actually take place.
-         async only - used in front-end application only
-         * @apiGroup Hooks
-         */
-        await Reactium.Hook.run('app-router');
-
-        const Router = hookableComponent('Router');
-
-        // Render the React Components
-        if (bindPoints.length > 0) {
-            bindPoints.forEach(item => {
-                ReactDOM.render(
-                    <AppContexts>{item.component}</AppContexts>,
-                    item.element,
-                );
-            });
-        }
-
-        // ensure router DOM Element is on the page
-        if (appElement) {
-            const { ssr } = await Reactium.Hook.run('app-ssr-mode');
-            /**
-             * @api {Hook} app-boot-message app-boot-message
-             * @apiName app-boot-message
-             * @apiDescription Called during application binding, this minor hook will allow you to
-             change the format of the of the front-end Javascript console message indicating application start.
-             async only - used in front-end application only
-             * @apiGroup Hooks
-             */
-            const { message = [] } = await Reactium.Hook.run(
-                'app-boot-message',
-                ssr,
-            );
-            console.log(...message);
-
-            ReactDOM[ssr ? 'hydrate' : 'render'](
-                <AppContexts>
-                    <Zone zone='reactium-provider' />
-                    <Router history={Reactium.Routing.history} />
-                    <Zone zone='reactium-provider-after' />
-                </AppContexts>,
-                appElement,
-            );
-
-            /**
-             * @api {Hook} app-ready app-ready
-             * @apiDescription The final hook run after the front-end application has bee bound or hydrated. After this point,
-             the all hooks are runtime hooks.
-             * @apiName app-ready
-             * @apiGroup Hooks
-             * @apiParam {Boolean} ssr If the app is in server-side rendering mode (SSR) `true` is passed to the hook.
-             */
-            _.defer(() => Reactium.Hook.run('app-ready', ssr));
-        }
-    }
-};
-
-export const AppError = async error => {
-    console.error(error);
-};
diff --git a/.core/app/reactium-hooks.js b/.core/app/reactium-hooks.js
deleted file mode 100644
index 75d15796..00000000
--- a/.core/app/reactium-hooks.js
+++ /dev/null
@@ -1,252 +0,0 @@
-import 'core-js/stable';
-import 'regenerator-runtime/runtime';
-import 'reactium-core/components/Router/reactium-hooks';
-import op from 'object-path';
-import _ from 'underscore';
-import deps from 'dependencies';
-
-import('reactium-core/sdk').then(
-    async ({ default: Reactium, HookComponent, isServerWindow }) => {
-        Reactium.Hook.register(
-            'component-bindings',
-            async context => {
-                const { default: getComponents } = await import(
-                    'dependencies/getComponents'
-                );
-
-                // Placeholder for the bindable elements
-                const bindPoints = [];
-
-                // <Component /> DOM Elements array
-                const elements =
-                    typeof document !== 'undefined'
-                        ? Array.prototype.slice.call(
-                              document.querySelectorAll('component'),
-                          )
-                        : [];
-
-                if (elements.length > 0) {
-                    let types = [];
-
-                    let elms = elements.map(elm => {
-                        let path = elm.getAttribute('path');
-                        let type = elm.getAttribute('type');
-
-                        types.push(type);
-
-                        return { path, type };
-                    });
-
-                    let components = getComponents(elms);
-
-                    elements.forEach(elm => {
-                        // Get the component type
-                        let type = elm.getAttribute('type');
-
-                        if (!components.hasOwnProperty(type)) {
-                            return;
-                        }
-
-                        // Get parameters from container element
-                        let params = {};
-                        let exclude = ['type', 'path'];
-                        Object.entries(elm.attributes).forEach(
-                            ([key, attr]) => {
-                                key = String(key).toLowerCase();
-                                if (exclude.indexOf(key) < 0) {
-                                    return;
-                                }
-                                params[attr.name] = attr.value;
-                            },
-                        );
-
-                        // Get the children from the element and pass them to the component
-                        let children = elm.innerHTML;
-                        if (children) {
-                            params['children'] = children;
-                        }
-
-                        // Create the React element and apply parameters
-                        let cmp = React.createElement(components[type], params);
-                        bindPoints.push({ component: cmp, element: elm });
-                        console.log('Binding components.');
-                    });
-                }
-
-                context.bindPoints = bindPoints;
-                return Promise.resolve();
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_COMPONENT_BINDINGS',
-        );
-
-        Reactium.Hook.register(
-            'plugin-dependencies',
-            context => {
-                // Setup plugin registration
-                context.deps = deps();
-
-                console.log('Plugin dependencies.');
-                return Promise.resolve();
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_PLUGIN_DEPENDENCIES',
-        );
-
-        Reactium.Hook.register(
-            'app-bindpoint',
-            context => {
-                context.appElement = document.getElementById('router');
-                return Promise.resolve();
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_APP_BINDPOINT',
-        );
-
-        const getSaneZoneComponents = () => {
-            return (
-                // allow array of DDD zone components
-                _.flatten(_.compact(Object.values(deps().plugins)), true)
-                    // remove DDD zone components missing zones
-                    .filter(({ zone }) => {
-                        if (!zone) return false;
-                        if (Array.isArray(zone) && zone.length < 1)
-                            return false;
-                        return true;
-                    })
-                    // normalize zone property
-                    .map(component => {
-                        let { zone } = component;
-                        if (!Array.isArray(zone)) {
-                            zone = [zone];
-                        }
-                        return {
-                            ...component,
-                            zone,
-                        };
-                    })
-            );
-        };
-
-        Reactium.Hook.register(
-            'zone-defaults',
-            async context => {
-                op.set(context, 'controls', deps().plugableConfig);
-                op.set(context, 'components', getSaneZoneComponents());
-                console.log('Initializing Content Zones');
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_ZONE_DEFAULTS',
-        );
-
-        const NoopProvider = ({ children }) => children;
-        Reactium.Hook.register(
-            'app-context-provider',
-            async () => {
-                /**
-             * @api {Hook} store-create store-create
-             * @apiName store-create
-             * @apiDescription Called after dependencies-load to trigger Redux store creator.
-             async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-            * @apiParam {Object} params params.server indicate if is store creation on the server, or in the front-end application
-            * @apiParam {Object} context Core implementation of this hook will create the Redux store and set it to context.store.
-            * @apiGroup Hooks
-            */
-                const { store } = await Reactium.Hook.run('store-create', {
-                    server: isServerWindow(),
-                });
-                Reactium.store = store;
-
-                const ReduxProvider = ({ store }) => (
-                    <HookComponent hookName='ReduxProvider' store={store} />
-                );
-
-                Reactium.AppContext.register('ReduxProvider', {
-                    provider: NoopProvider,
-                    store,
-                });
-            },
-            Reactium.Enums.priority.highest,
-            'NOOP_REDUX_PROVIDER',
-        );
-
-        Reactium.Hook.register(
-            'app-router',
-            async () => {
-                const { default: Router } = await import(
-                    'reactium-core/components/Router'
-                );
-                Reactium.Component.register('Router', Router);
-                console.log('Defining Router.');
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_APP_ROUTER',
-        );
-
-        Reactium.Hook.register(
-            'app-ssr-mode',
-            context => {
-                context.ssr = window && 'ssr' in window && window.ssr;
-                return Promise.resolve();
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_APP_SSR_MODE',
-        );
-
-        Reactium.Hook.register(
-            'app-boot-message',
-            (ssr = false, context) => {
-                const mode = ssr ? 'SSR' : 'FE';
-                const binding = ssr ? 'Hydrating' : 'Binding';
-                context.message = [
-                    `%c [Reactium] ${mode} Mode: %c⚡💡 %c${binding} Reactium. %c⚡💡 `,
-                    'font-size: 16px; color: #fff; background-color: #4F82BA',
-                    'font-size: 16px; color: #F4F19C; background-color: #4F82BA',
-                    'font-size: 16px; color: #fff; background-color: #4F82BA',
-                    'font-size: 16px; color: #F4F19C; background-color: #4F82BA',
-                ];
-
-                return Promise.resolve();
-            },
-            Reactium.Enums.priority.highest,
-            'REACTIUM_APP_BOOT_MESSAGE',
-        );
-    },
-);
-
-/**
- * @api {Hook} dependencies-load dependencies-load
- * @apiName dependencies-load
- * @apiDescription Called after init to give an application a change to load
- async dependencies. Many Domain Driven Design (DDD) artifacts from generated src/manifest.js are loaded on this hook
- async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
- * @apiGroup Hooks
- */
-
-/**
- * @api {Hook} Hooks Hooks
- * @apiName Hooks
- * @apiDescription Here are the standard hooks that fire (in order) on the bootstrap of your Reactium application.
- | Hook | Description |
-| :---- | :----- |
-| init | Called before all other hooks on startup. |
-| dependencies-load | Called while application dependencies are loaded. |
-| service-worker-init | Called while service worker is loaded. |
-| zone-defaults | Called while rendering zone default components are loaded. |
-| store-create | Called while Redux store is being created. |
-| store-created | Called after Redux store is created. |
-| plugin-dependencies | Called before loading runtime plugins. |
-| plugin-init | Called to initiate plugin registration. |
-| routes-init | Called to initiaze React router |
-| register-route | Called for each route that is registered |
-| data-loaded | Called on route load to pre-load data |
-| plugin-ready | Called after all plugins registration callbacks have completed |
-| component-bindings | Called to sibling React components and their DOM element bindings |
-| app-bindpoint | Called to define the main application bind point. |
-| app-context-provider | Called to define React application-wrapping context providers, such as Redux / Theme, etc. |
-| app-router | Called to provide the React router component |
-| app-ssr-mode | Called to make the application aware of server-side rendering mode |
-| app-boot-message | Called to define the javascript console boot message |
-| app-ready | Called when the application is being bound or hydrated by ReactDOM |
- * @apiGroup Hooks
- */
diff --git a/.core/assets/images/a11y/a11y.svg b/.core/assets/images/a11y/a11y.svg
deleted file mode 100644
index bbc0754b..00000000
--- a/.core/assets/images/a11y/a11y.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<svg style="width: 0; height: 0; position: absolute;" xmlns="http://www.w3.org/2000/svg"
-      version="1.1">
-      <defs>
-        <filter id="protanopia">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.567, 0.433, 0,     0, 0
-                    0.558, 0.442, 0,     0, 0
-                    0,     0.242, 0.758, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-        <filter id="protanomaly">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.817, 0.183, 0,     0, 0
-                    0.333, 0.667, 0,     0, 0
-                    0,     0.125, 0.875, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-        <filter id="deuteranopia">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.625, 0.375, 0,   0, 0
-                    0.7,   0.3,   0,   0, 0
-                    0,     0.3,   0.7, 0, 0
-                    0,     0,     0,   1, 0"/>
-        </filter>
-        <filter id="deuteranomaly">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.8,   0.2,   0,     0, 0
-                    0.258, 0.742, 0,     0, 0
-                    0,     0.142, 0.858, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-        <filter id="tritanopia">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.95, 0.05,  0,     0, 0
-                    0,    0.433, 0.567, 0, 0
-                    0,    0.475, 0.525, 0, 0
-                    0,    0,     0,     1, 0"/>
-        </filter>
-        <filter id="tritanomaly">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.967, 0.033, 0,     0, 0
-                    0,     0.733, 0.267, 0, 0
-                    0,     0.183, 0.817, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-        <filter id="achromatopsia">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.299, 0.587, 0.114, 0, 0
-                    0.299, 0.587, 0.114, 0, 0
-                    0.299, 0.587, 0.114, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-        <filter id="achromatomaly">
-          <feColorMatrix
-            in="SourceGraphic"
-            type="matrix"
-            values="0.618, 0.320, 0.062, 0, 0
-                    0.163, 0.775, 0.062, 0, 0
-                    0.163, 0.320, 0.516, 0, 0
-                    0,     0,     0,     1, 0"/>
-        </filter>
-  </defs>
-</svg>
diff --git a/.core/babel.config.js b/.core/babel.config.js
deleted file mode 100644
index 3c3cde13..00000000
--- a/.core/babel.config.js
+++ /dev/null
@@ -1,209 +0,0 @@
-const ReactiumBabel = require('@atomic-reactor/reactium-sdk-core').default;
-const fs = require('fs');
-const path = require('path');
-const globby = require('./globby-patch').sync;
-const rootPath = path.resolve(__dirname, '..');
-const chalk = require('chalk');
-const semver = require('semver');
-const op = require('object-path');
-const babelCoreVersion = op.get(
-    require(path.resolve(
-        path.dirname(require.resolve('@babel/core')),
-        '../package.json',
-    )),
-    'version',
-);
-const coreJsVersion = op.get(
-    require(path.resolve(
-        path.dirname(require.resolve('core-js')),
-        'package.json',
-    )),
-    'version',
-);
-
-let corejs;
-// annoying warning starts with @babel/core 7.4.0
-if (semver.satisfies(semver.coerce(babelCoreVersion), '^7.4.0')) {
-    if (semver.satisfies(semver.coerce(coreJsVersion), '>=2.0.0')) {
-        corejs = '2';
-    }
-    if (semver.satisfies(semver.coerce(coreJsVersion), '>=3.0.0')) {
-        corejs = '3';
-    }
-}
-
-require('./reactium.log');
-
-global.ReactiumBabel = ReactiumBabel;
-
-// Load reactium-gulp DDD artifact from plugin sources
-globby([
-    `${rootPath}/.core/**/reactium-babel.js`,
-    `${rootPath}/src/**/reactium-babel.js`,
-    `${rootPath}/reactium_modules/**/reactium-babel.js`,
-    `${rootPath}/node_modules/**/reactium-plugin/**/reactium-babel.js`,
-]).forEach(item => {
-    const p = path.normalize(item);
-    try {
-        require(p);
-    } catch (error) {
-        console.error(chalk.red(`Error loading ${p}:`));
-        console.error(error);
-    }
-});
-
-/**
- * Babel Module Aliases - for babel-plugin-module-resolver
- */
-ReactiumBabel.ModuleAliases = ReactiumBabel.Utils.registryFactory(
-    'BabelAliases',
-    'alias',
-    ReactiumBabel.Utils.Registry.MODES.CLEAN,
-);
-ReactiumBabel.ModuleAliases.register('externals', {
-    path: './.tmp/externals-manifest',
-});
-ReactiumBabel.ModuleAliases.register('manifest', {
-    path: './src/manifest',
-});
-ReactiumBabel.ModuleAliases.register('appdir', { path: './src/app' });
-ReactiumBabel.ModuleAliases.register('components', {
-    path: './src/app/components',
-});
-ReactiumBabel.ModuleAliases.register('reactium-core', {
-    path: './.core',
-});
-ReactiumBabel.ModuleAliases.register('reactium_modules', {
-    path: './reactium_modules',
-});
-ReactiumBabel.ModuleAliases.register('dependencies', {
-    path: './.core/dependencies',
-});
-ReactiumBabel.ModuleAliases.register('toolkit', {
-    path: './src/app/toolkit',
-});
-ReactiumBabel.ModuleAliases.register('reactium-translations', {
-    path: './src/reactium-translations',
-});
-
-ReactiumBabel.Hook.runSync('aliases', ReactiumBabel.ModuleAliases);
-
-/**
- * @babel/env configuration
- */
-ReactiumBabel.env = {
-    ...(corejs ? { corejs } : {}),
-    useBuiltIns: 'usage',
-    debug: false,
-    targets: {
-        browsers: ['> 1%', 'IE 11'],
-    },
-};
-ReactiumBabel.Hook.runSync('env', ReactiumBabel.env);
-
-/**
- * Babel Presets
- */
-ReactiumBabel.Presets = ReactiumBabel.Utils.registryFactory(
-    'BabelPreset',
-    'name',
-    ReactiumBabel.Utils.Registry.MODES.CLEAN,
-);
-ReactiumBabel.Presets.register('@babel/react', {
-    preset: '@babel/react',
-    envs: ['default', 'test', 'library'],
-});
-ReactiumBabel.Presets.register('@babel/env', {
-    preset: ['@babel/env', ReactiumBabel.env],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Hook.runSync('presets', ReactiumBabel.Presets);
-
-/**
- * Babel Plugins
- */
-ReactiumBabel.Plugins = ReactiumBabel.Utils.registryFactory(
-    'BabelPlugins',
-    'name',
-    ReactiumBabel.Utils.Registry.MODES.CLEAN,
-);
-
-ReactiumBabel.Plugins.register('@babel/plugin-syntax-dynamic-import', {
-    plugin: ['@babel/plugin-syntax-dynamic-import'],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Plugins.register('module-resolver', {
-    plugin: [
-        'module-resolver',
-        {
-            cwd: rootPath,
-            alias: ReactiumBabel.ModuleAliases.list.reduce(
-                (aliases, { alias, path }) => {
-                    aliases[alias] = path;
-                    return aliases;
-                },
-                {},
-            ),
-        },
-    ],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Plugins.register('@babel/plugin-proposal-class-properties', {
-    plugin: ['@babel/plugin-proposal-class-properties', { loose: true }],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Plugins.register('@babel/plugin-proposal-export-default-from', {
-    plugin: ['@babel/plugin-proposal-export-default-from'],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Plugins.register('@babel/plugin-proposal-private-methods', {
-    plugin: ['@babel/plugin-proposal-private-methods', { loose: true }],
-    envs: ['default', 'test', 'library'],
-});
-
-ReactiumBabel.Plugins.register(
-    '@babel/plugin-proposal-private-property-in-object',
-    {
-        plugin: [
-            '@babel/plugin-proposal-private-property-in-object',
-            { loose: true },
-        ],
-        envs: ['default', 'test', 'library'],
-    },
-);
-
-ReactiumBabel.Hook.runSync('plugins', ReactiumBabel.Plugins);
-
-ReactiumBabel.envs = ['default', 'test', 'library'];
-ReactiumBabel.Hook.runSync('envs', ReactiumBabel.envs);
-
-const config = {
-    presets: ReactiumBabel.Presets.list
-        .filter(preset => op.get(preset, 'envs', []).includes('default'))
-        .map(({ preset }) => preset),
-    plugins: ReactiumBabel.Plugins.list
-        .filter(plugin => op.get(plugin, 'envs', []).includes('default'))
-        .map(({ plugin }) => plugin),
-    env: ReactiumBabel.envs
-        .filter(env => env !== 'default')
-        .reduce((envs, env) => {
-            envs[env] = {
-                presets: ReactiumBabel.Presets.list
-                    .filter(preset => op.get(preset, 'envs', []).includes(env))
-                    .map(({ preset }) => preset),
-                plugins: ReactiumBabel.Plugins.list
-                    .filter(plugin => op.get(plugin, 'envs', []).includes(env))
-                    .map(({ plugin }) => plugin),
-            };
-            return envs;
-        }, {}),
-};
-
-ReactiumBabel.Hook.runSync('config', config);
-
-module.exports = config;
diff --git a/.core/boot-hooks.js b/.core/boot-hooks.js
deleted file mode 100644
index 52650303..00000000
--- a/.core/boot-hooks.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import path from 'path';
-import op from 'object-path';
-import _ from 'underscore';
-const globby = require('./globby-patch').sync;
-
-global.rootPath = path.resolve(__dirname, '..');
-
-module.exports = async () => {
-    // include boot DDD artifacts
-    if (!global.bootHooks) {
-        global.bootHooks = globby([
-            `${rootPath}/.core/**/reactium-boot.js`,
-            `${rootPath}/src/**/reactium-boot.js`,
-            `${rootPath}/reactium_modules/**/reactium-boot.js`,
-            `${rootPath}/node_modules/**/reactium-plugin/**/reactium-boot.js`,
-        ]);
-    }
-
-    if (!global.bootHookLoaded) {
-        DEBUG('Loading boot hooks.');
-        global.bootHookLoaded = [];
-        global.bootHooks.map(item => {
-            if (!bootHookLoaded.includes(item)) {
-                const p = path.normalize(item);
-                require(p);
-                bootHookLoaded.push(item);
-            }
-        });
-
-        ReactiumBoot.Hook.runSync('sdk-init', ReactiumBoot);
-        await ReactiumBoot.Hook.run('sdk-init', ReactiumBoot);
-    } else {
-        DEBUG('Boot hooks already loaded.');
-    }
-};
diff --git a/.core/components/DevTools/index.js b/.core/components/DevTools/index.js
deleted file mode 100644
index ad0e2a8c..00000000
--- a/.core/components/DevTools/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import React from 'react';
-import { useHookComponent } from 'reactium-core/sdk';
-
-export default () => {
-    const DevTools = useHookComponent('DevTools');
-    return <DevTools />;
-};
diff --git a/.core/components/NotFound/index.js b/.core/components/NotFound/index.js
deleted file mode 100644
index 43625600..00000000
--- a/.core/components/NotFound/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import React, { useEffect } from 'react';
-import Reactium, { __, Zone } from 'reactium-core/sdk';
-
-const DefaultComponent = () => {
-    const comps = Reactium.Zone.getZoneComponents('not-found');
-
-    if (comps.length < 1) {
-        Reactium.Zone.addComponent({
-            zone: 'not-found',
-            id: 'NOT_FOUND_DEFAULT',
-            component: () => __('PAGE NOT FOUND'),
-            order: Reactium.Enums.priority.highest,
-        });
-
-        return () => {
-            Reactium.Zone.removeComponent('NOT_FOUND_DEFAULT');
-        };
-    }
-};
-
-export default () => {
-    useEffect(DefaultComponent, []);
-    return <Zone zone='not-found' />;
-};
diff --git a/.core/components/Plugable/Plugins.js b/.core/components/Plugable/Plugins.js
deleted file mode 100644
index 29142484..00000000
--- a/.core/components/Plugable/Plugins.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export { Zone as default } from '@atomic-reactor/reactium-sdk-core';
-
-console.log(
-    "You imported from reactium-core/components/Plugable/Plugins which is deprecated. Use useHookComponent('Zone') instead, or import from reactium-core/components/Plugable/Zone",
-);
diff --git a/.core/components/Plugable/index.js b/.core/components/Plugable/index.js
deleted file mode 100644
index c4d91fa2..00000000
--- a/.core/components/Plugable/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export { Zone as Plugins } from '@atomic-reactor/reactium-sdk-core';
-export { Zone } from '@atomic-reactor/reactium-sdk-core';
-
-console.log(
-    "You imported from reactium-core/components/Plugable which is deprecated. Use useHookComponent('Zone') instead, or import { Zone } from reactium-core/sdk",
-);
diff --git a/.core/components/Plugable/reducers.js b/.core/components/Plugable/reducers.js
deleted file mode 100644
index 121deb15..00000000
--- a/.core/components/Plugable/reducers.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export default (state = {}, action) => {
-    switch (action.type) {
-        case 'ADD_PLUGIN':
-        case 'UPDATE_PLUGIN':
-        case 'REMOVE_PLUGIN':
-        case 'ADD_PLUGIN_CONTROLS':
-        case 'REMOVE_PLUGIN_CONTROLS':
-            console.log(
-                `action ${action.type} is no longer used. See one of the following Reactium.Zone SDK functions.`,
-            );
-            console.log(
-                `Use Reactium.Zone.addComponent() instead of dispatching the ADD_PLUGIN action type.`,
-            );
-            console.log(
-                `Use Reactium.Zone.removeComponent() instead of dispatching the REMOVE_PLUGIN action type.`,
-            );
-            console.log(
-                `Use Reactium.Zone.addFilter() to add a filter function to a zone where your component is rendered.`,
-            );
-            console.log(
-                `Use Reactium.Zone.addMap() to add a mapping function to a zone where your component is rendered.`,
-            );
-            console.log(
-                `Use Reactium.Zone.addSort() to add sortBy criteria to a zone where your component is rendered.`,
-            );
-        default:
-            return state;
-    }
-    return state;
-};
diff --git a/.core/components/Router/RoutedContent.js b/.core/components/Router/RoutedContent.js
deleted file mode 100644
index eb0be9d7..00000000
--- a/.core/components/Router/RoutedContent.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import React, { useEffect } from 'react';
-import Reactium, { useRouting, useSyncState } from 'reactium-core/sdk';
-import { Route } from 'react-router';
-import op from 'object-path';
-
-const useRoutes = () => {
-    const routeState = useSyncState(Reactium.Routing.get());
-    const setState = () => {
-        routeState.set(Reactium.Routing.get());
-    };
-
-    useEffect(() => {
-        setState();
-        return Reactium.Routing.subscribe(setState);
-    }, []);
-
-    return routeState;
-};
-
-const RoutedContent = () => {
-    // cause rerender if routes are added/removed at runtime
-    useRoutes();
-    const routing = useRouting();
-    const route = routing.get('active.match.route');
-    const Component = routing.get('active.match.route.component');
-
-    // if we have a route with no component, let react-router handle it however it will
-    return Component ? (
-        <Component
-            staticContext={{ handleId: op.get(route, 'handleId') }}
-            {...routing.get()}
-        />
-    ) : (
-        <Route {...route} />
-    );
-};
-
-export default RoutedContent;
diff --git a/.core/components/Router/index.js b/.core/components/Router/index.js
deleted file mode 100644
index 37b4d91b..00000000
--- a/.core/components/Router/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import { Router } from 'react-router-dom';
-import { useHookComponent } from 'reactium-core/sdk';
-
-export default ({ history }) => {
-    const RoutedContent = useHookComponent('RoutedContent');
-    return (
-        <Router history={history}>
-            <RoutedContent />
-        </Router>
-    );
-};
diff --git a/.core/components/Router/reactium-hooks.js b/.core/components/Router/reactium-hooks.js
deleted file mode 100644
index f34c7218..00000000
--- a/.core/components/Router/reactium-hooks.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import Reactium, {
-    hookableComponent,
-    isBrowserWindow,
-} from 'reactium-core/sdk';
-import _ from 'underscore';
-import RoutedContent from './RoutedContent';
-import deps from 'dependencies';
-
-Reactium.Hook.register(
-    'routes-init',
-    async Routing => {
-        const allRoutes = await deps().loadAllDefaults('allRoutes');
-        if (!Object.values(allRoutes || {}).length) {
-            return [];
-        }
-
-        let globalRoutes = [];
-        if (isBrowserWindow()) {
-            if ('routes' in window && Array.isArray(window.routes)) {
-                globalRoutes = window.routes;
-            }
-        } else {
-            if ('routes' in global && Array.isArray(global.routes)) {
-                globalRoutes = global.routes;
-            }
-        }
-
-        const combinedRoutes = _.chain(
-            Object.values(allRoutes || {})
-                .concat(globalRoutes)
-                .filter(route => route)
-                .map(route => _.flatten([route])),
-        )
-            .flatten()
-            .compact()
-            .value();
-
-        for (const route of combinedRoutes) {
-            const paths = _.compact(_.flatten([route.path]));
-            for (const path of paths) {
-                await Reactium.Routing.register(
-                    {
-                        ...route,
-                        path,
-                    },
-                    false,
-                );
-            }
-        }
-    },
-    Reactium.Enums.priority.highest,
-    'REACTIUM_ROUTES_INIT',
-);
-
-Reactium.Hook.register(
-    'register-route',
-    async route => {
-        if (typeof route.component === 'string') {
-            route.component = hookableComponent(route.component);
-        }
-
-        return route;
-    },
-    Reactium.Enums.priority.highest,
-    'REACTIUM_REGISTER_ROUTE',
-);
-
-Reactium.Component.register('RoutedContent', RoutedContent);
diff --git a/.core/components/Router/server.js b/.core/components/Router/server.js
deleted file mode 100644
index fd41988a..00000000
--- a/.core/components/Router/server.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React, { Component, Fragment } from 'react';
-import { StaticRouter, Switch, Route } from 'react-router-dom';
-
-const ServerRouter = props => {
-    const { routes = [], location } = props;
-    return (
-        <StaticRouter context={props.context} location={location}>
-            <Switch>
-                {routes.map(({ id, ...route }) => {
-                    return <Route {...route} key='route' />;
-                })}
-            </Switch>
-        </StaticRouter>
-    );
-};
-
-export default ServerRouter;
diff --git a/.core/components/WindowProvider/index.js b/.core/components/WindowProvider/index.js
deleted file mode 100644
index 7c40ca5a..00000000
--- a/.core/components/WindowProvider/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { createContext } from 'react';
-import { isBrowserWindow } from '@atomic-reactor/reactium-sdk-core';
-
-export const Context = createContext({
-    iWindow: isBrowserWindow() ? window : undefined,
-    iDocument: isBrowserWindow() ? document : undefined,
-});
diff --git a/.core/dependencies/getComponents.js b/.core/dependencies/getComponents.js
deleted file mode 100644
index d8b3117e..00000000
--- a/.core/dependencies/getComponents.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { hookableComponent } from '../sdk/named-exports';
-
-export default (elms = []) =>
-    elms.reduce((cmps, { type, path }) => {
-        if (path) console.warn('path no longer supported in getComponents');
-        cmps[type] = hookableComponent(type);
-        return cmps;
-    }, {});
diff --git a/.core/dependencies/index.js b/.core/dependencies/index.js
deleted file mode 100644
index 31b349c3..00000000
--- a/.core/dependencies/index.js
+++ /dev/null
@@ -1,158 +0,0 @@
-import op from 'object-path';
-import Reactium, { isBrowserWindow } from 'reactium-core/sdk';
-import manifestLoader from 'manifest';
-
-class ReactiumDependencies {
-    constructor() {
-        this.loaded = false;
-        this.loadedModules = {};
-        this.actions = {};
-        this.actionTypes = {
-            DOMAIN_UPDATE: 'DOMAIN_UPDATE',
-        };
-        this.services = {};
-        this.reducers = {};
-        this.plugins = {};
-        this.plugableConfig = {};
-
-        // Just used to determine if is a custom type
-        this.coreTypes = [
-            'allActionTypes',
-            'allActions',
-            'allReducers',
-            'allInitialStates',
-            'allServices',
-            'allMiddleware',
-            'allEnhancers',
-            'allPlugins',
-            'allHooks',
-        ];
-
-        // Things to be mapped on deps now
-        this.coreTypeMap = {
-            allActionTypes: 'actionTypes',
-            allActions: 'actions',
-            allServices: 'services',
-            allPlugins: 'plugins',
-        };
-    }
-
-    async loadAllMerged(type) {
-        const all = await this.loadAll(type);
-
-        return all.reduce(
-            (merged, current) => ({
-                ...merged,
-                [current.domain]: current.module.default,
-            }),
-            {},
-        );
-    }
-
-    async loadAllDefaults(type) {
-        return (await this.loadAll(type)).map(dep => {
-            return dep.module.default;
-        });
-    }
-
-    async loadAll(type) {
-        return Promise.all(
-            op.get(this.manifest, [type], []).map(dep => {
-                const { name, domain, loader } = dep;
-                if (op.has(this, ['loadedModules', name, domain])) {
-                    const loadedModule = op.get(this, [
-                        'loadedModules',
-                        name,
-                        domain,
-                    ]);
-                    return Promise.resolve(loadedModule);
-                } else {
-                    return dep.loader().then(loadedModule => {
-                        const { name, domain, module } = loadedModule;
-
-                        op.set(
-                            this,
-                            ['loadedModules', name, domain],
-                            loadedModule,
-                        );
-                        return loadedModule;
-                    });
-                }
-            }),
-        );
-    }
-
-    async load() {
-        if (!this.loaded) {
-            console.log('Loading core dependencies.');
-            for (const depType of Object.keys(this.manifest)) {
-                if (
-                    depType in this.coreTypeMap ||
-                    !this.coreTypes.includes(depType)
-                ) {
-                    const binding = op.get(
-                        this.coreTypeMap,
-                        [depType],
-                        depType,
-                    );
-                    for (const { name, domain, module } of await this.loadAll(
-                        depType,
-                    )) {
-                        op.set(this, [binding, domain], module.default);
-                        if (binding === 'actionTypes') {
-                            for (const [key, value] of Object.entries(
-                                module.default,
-                            )) {
-                                op.set(this, [binding, key], value);
-                            }
-                        } else {
-                            op.set(this, [binding, domain], module.default);
-                        }
-                    }
-                }
-            }
-
-            try {
-                let plugableConfig = await import('appdir/plugable');
-                if ('default' in plugableConfig) {
-                    plugableConfig = plugableConfig.default;
-                }
-                this.plugableConfig = plugableConfig;
-            } catch (error) {}
-
-            this.loaded = true;
-        }
-
-        return Promise.resolve(this);
-    }
-}
-
-const dependencies = new ReactiumDependencies();
-
-export default () => dependencies;
-
-export const restHeaders = () => {
-    return {};
-};
-
-// File scoped
-try {
-    dependencies.manifest = manifestLoader.get();
-} catch (error) {
-    if (isBrowserWindow()) {
-        console.error('Error loading dependencies from manifest.', error);
-    } else {
-        console.error(
-            'Error loading dependencies from manifest on server.',
-            error,
-        );
-    }
-}
-
-export const manifest = dependencies.manifest;
-
-Reactium.Hook.register(
-    'dependencies-load',
-    dependencies.load.bind(dependencies),
-    Reactium.Enums.priority.highest,
-);
diff --git a/.core/easy-connect.js b/.core/easy-connect.js
deleted file mode 100644
index 4d5c6043..00000000
--- a/.core/easy-connect.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from 'reactium-core/sdk';
-
-console.log(
-    '%cImporting from `reactium-core/easy-connect` is deprecated. Import from `reactium-core/sdk` instead.',
-    'font-size: 12px; color: #F4F19C; background-color: #4F82BA',
-);
diff --git a/.core/enzyme.js b/.core/enzyme.js
deleted file mode 100644
index 7c60d45f..00000000
--- a/.core/enzyme.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Enzyme, { configure, shallow, mount, render } from 'enzyme';
-import Adapter from 'enzyme-adapter-react-16';
-
-configure({ adapter: new Adapter() });
-
-export { shallow, mount, render };
-export default Enzyme;
diff --git a/.core/get-task.js b/.core/get-task.js
deleted file mode 100644
index 1606ba39..00000000
--- a/.core/get-task.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = gulp => name => {
-    const func = function(done) {
-        return gulp.task(name)(done);
-    };
-    func.displayName = name;
-
-    return func;
-};
diff --git a/.core/globby-patch.js b/.core/globby-patch.js
deleted file mode 100644
index a478b34c..00000000
--- a/.core/globby-patch.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const globby = require('globby');
-const path = require('path');
-const _ = require('underscore');
-
-const sync = globby.sync;
-globby.sync = (patterns, options) => {
-    return sync(
-        _.compact(_.flatten([patterns])).map(pattern =>
-            pattern.split(/[\\\/]/g).join(path.posix.sep),
-        ),
-        options,
-    );
-};
-
-module.exports = globby;
diff --git a/.core/gulp.bootup.js b/.core/gulp.bootup.js
deleted file mode 100644
index 280f0474..00000000
--- a/.core/gulp.bootup.js
+++ /dev/null
@@ -1,74 +0,0 @@
-const ReactiumGulp = require('@atomic-reactor/reactium-sdk-core').default;
-const fs = require('fs');
-const path = require('path');
-const gulp = require('gulp');
-const globby = require('./globby-patch').sync;
-const rootPath = path.resolve(__dirname, '..');
-const config = require('./gulp.config');
-const webpackConfig = require('./webpack.config')(config);
-const chalk = require('chalk');
-
-require('./reactium.log');
-
-global.ReactiumGulp = ReactiumGulp;
-
-ReactiumGulp.Enums.style = {
-    MIXINS: -1000,
-    VARIABLES: -900,
-    BASE: -800,
-    ATOMS: 0,
-    MOLECULES: 800,
-    ORGANISMS: 900,
-    OVERRIDES: 1000,
-};
-
-// Load reactium-gulp DDD artifact from plugin sources
-globby([
-    `${rootPath}/.core/**/reactium-gulp.js`,
-    `${rootPath}/src/**/reactium-gulp.js`,
-    `${rootPath}/reactium_modules/**/reactium-gulp.js`,
-    `${rootPath}/node_modules/**/reactium-plugin/**/reactium-gulp.js`,
-]).forEach(item => {
-    const p = path.normalize(item);
-    try {
-        require(p);
-    } catch (error) {
-        console.error(chalk.red(`Error loading ${p}:`));
-        console.error(error);
-    }
-});
-
-ReactiumGulp.Hook.runSync('config', config, webpackConfig);
-
-const tasks = require('./gulp.tasks')(gulp, config, webpackConfig);
-const taskPlaceholder = require('./get-task')(gulp);
-
-const GulpRegistry = ReactiumGulp.Utils.registryFactory(
-    'GulpTasks',
-    'name',
-    ReactiumGulp.Utils.Registry.MODES.CLEAN,
-);
-
-GulpRegistry.unregister = name => {
-    GulpRegistry.register(name, {
-        name,
-        task: () => Promise.resolve(),
-    });
-};
-
-Object.entries(tasks).forEach(([name, task]) => {
-    GulpRegistry.register(name, {
-        name,
-        task,
-    });
-});
-
-ReactiumGulp.Hook.runSync(
-    'tasks',
-    GulpRegistry,
-    config,
-    webpackConfig,
-    taskPlaceholder,
-);
-
-GulpRegistry.list.forEach(({ name, task }) => gulp.task(name, task));
diff --git a/.core/gulp.config.js b/.core/gulp.config.js
deleted file mode 100644
index 778c5d5c..00000000
--- a/.core/gulp.config.js
+++ /dev/null
@@ -1,162 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const path = require('path');
-const globby = require('./globby-patch');
-const rootPath = path.resolve(__dirname, '..');
-
-const defaultConfig = {
-    rootPath,
-    entries: globby
-        .sync('./src/app/*.js')
-        .map(p => path.resolve(p))
-        .reduce((entries, entry) => {
-            entries[path.parse(entry).name] = entry;
-            return entries;
-        }, {}),
-    defines: {},
-    browsers: 'last 1 version',
-    port: {
-        browsersync: 3000,
-        proxy: 3030,
-    },
-    serverRetries: 4,
-    serverRetryDelay: 2000,
-    open: true,
-    watch: {
-        js: ['src/app/**/*', 'reactium_modules/**/*'],
-        markup: ['src/**/*.html', 'src/**/*.css', 'reactium_modules/**/*.css'],
-        colors: ['src/**/*/colors.json'],
-        pluginAssets: ['src/app/**/plugin-assets.json'],
-        restartWatches: [
-            'src/**/assets/style/*.scss',
-            '!src/**/assets/style/_*.scss',
-        ],
-        style: [
-            'src/**/*.scss',
-            '.core/**/*.scss',
-            'reactium_modules/**/*.scss',
-            '!{src/**/assets/style/*.scss}',
-            '!{reactium_modules/**/assets/style/*.scss}',
-        ],
-        assets: [
-            'src/**/assets/**/*',
-            'src/assets/**/*',
-            'reactium_modules/**/assets/**/*',
-            '!{src/**/*/assets/style,src/**/*/assets/style/**,reactium_modules/**/assets/style/**}',
-            '!{src/**/*/assets/js,src/**/*/assets/js/**,reactium_modules/**/assets/js/**}',
-            '!{src/assets/style,src/assets/style/**}',
-            '!{src/assets/js,src/assets/js/**}',
-        ],
-        server: ['src/index.js', 'src/server/**/*.js'],
-        templates: ['src/server/**/*.hbs'],
-    },
-    src: {
-        app: 'src',
-        colors: ['src/**/*/colors.json'],
-        pluginAssets: ['src/app/**/plugin-assets.json'],
-        js: ['src/app/**/*'],
-        json: ['src/**/*.json'],
-        markup: ['src/**/*.html', 'src/**/*.css', 'reactium_modules/**/*.css'],
-        style: [
-            'src/**/*.scss',
-            '.core/**/*.scss',
-            'reactium_modules/**/*.scss',
-            '!{src/**/_*.scss}',
-            '!{.core/**/_*.scss}',
-            '!{reactium_modules/**/_*.scss}',
-        ],
-        styleDDD: [
-            'src/**/*/_reactium-style*.scss',
-            'reactium_modules/**/*/_reactium-style*.scss',
-        ],
-        assets: [
-            '.core/assets/**/*',
-            'src/**/assets/**/*',
-            'reactium_modules/**/assets/**/*',
-            'src/assets/**/*',
-            '!{src/**/*/assets/style,src/**/*/assets/style/**,reactium_modules/**/assets/style/**}',
-            '!{src/**/*/assets/js,src/**/*/assets/js/**,reactium_modules/**/assets/js/**}',
-            '!{src/assets/style,src/assets/style/**}',
-            '!{src/assets/js,src/assets/js/**}',
-        ],
-        compress: [
-            'public/assets/**/*',
-            'public/assets/js/sw/**/*',
-            '!public/assets/js/*.js',
-            '!public/assets/**/*.gz',
-        ],
-        includes: ['./node_modules'],
-        appdir: path.resolve(__dirname, 'src/app'),
-        rootdir: path.resolve(__dirname),
-        manifest: path.normalize(`${rootPath}/src/manifest.js`),
-        externalsManifest: path.normalize(
-            `${rootPath}/.tmp/externals-manifest.js`,
-        ),
-        reactiumModules: path.normalize(`${rootPath}/reactium_modules`),
-    },
-    dest: {
-        dist: 'public',
-        js: '../public/assets/js',
-        markup: 'public',
-        style: 'public/assets/style',
-        assets: 'public/assets',
-        static: 'dist',
-        library: 'lib',
-        build: 'build/src',
-        buildCore: 'build/core',
-        colors: 'src/assets/style/_scss/_colors.scss',
-        modulesPartial: 'src/assets/style/_scss/_reactium-modules.scss',
-        startPath: '/',
-    },
-    umd: {
-        defaultWorker: path.resolve(
-            __dirname,
-            '../public/assets/js/umd/service-worker/service-worker.js',
-        ),
-        manifest: path.normalize(`${rootPath}/.tmp/umd-manifest.json`),
-        outputPath: path.resolve(__dirname, '../public/assets/js/umd'),
-    },
-    sw: {
-        globDirectory: 'public',
-        globPatterns: ['**/*.{html,js,css,js.gz,css.gz}'],
-        globIgnores: ['**/index-static.html', 'docs/**/*', 'assets/js/sw/**/*'],
-        swDest: 'public/assets/js/sw/sw.js',
-        modifyURLPrefix: {
-            assets: '/assets',
-        },
-    },
-    docs: {
-        src: '.core,src/app,node_modules/@atomic-reactor',
-        dest: ['public/docs', 'docs'],
-        verbose: false,
-    },
-    buildTasks: [
-        'preBuild',
-        'ensureReactiumModules',
-        'clean',
-        'manifest',
-        ['markup', 'json'],
-        ['assets', 'styles'],
-        'scripts',
-        'umdLibraries',
-        'serviceWorker',
-        'compress',
-        'postBuild',
-    ],
-};
-
-const overrides = config => {
-    globby
-        .sync([
-            './gulp.config.override.js',
-            './node_modules/**/reactium-plugin/gulp.config.override.js',
-            './src/**/gulp.config.override.js',
-            './reactium_modules/**/gulp.config.override.js',
-        ])
-        .forEach(file => require(path.resolve(file))(config));
-
-    return config;
-};
-
-module.exports = overrides(defaultConfig);
diff --git a/.core/gulp.tasks.js b/.core/gulp.tasks.js
deleted file mode 100644
index b568c0ae..00000000
--- a/.core/gulp.tasks.js
+++ /dev/null
@@ -1,891 +0,0 @@
-'use strict';
-
-const del = require('del');
-const fs = require('fs-extra');
-const op = require('object-path');
-const path = require('path');
-const globby = require('./globby-patch');
-const webpack = require('webpack');
-const browserSync = require('browser-sync');
-const gulpif = require('gulp-if');
-const gulpwatch = require('@atomic-reactor/gulp-watch');
-const prefix = require('gulp-autoprefixer');
-const sass = require('gulp-sass')(require('sass'));
-const fiber = require('fibers');
-const gzip = require('gulp-gzip');
-const reactiumImporter = require('@atomic-reactor/node-sass-reactium-importer');
-const cleanCSS = require('gulp-clean-css');
-const sourcemaps = require('gulp-sourcemaps');
-const rename = require('gulp-rename');
-const chalk = require('chalk');
-const reactiumConfig = require('./reactium-config');
-const regenManifest = require('./manifest/manifest-tools');
-const umdWebpackGenerator = require('./umd.webpack.config');
-const rootPath = path.resolve(__dirname, '..');
-const { fork, spawn, execSync } = require('child_process');
-const { File, FileReader } = require('file-api');
-const handlebars = require('handlebars');
-const { resolve } = require('path');
-const axios = require('axios');
-const axiosRetry = require('axios-retry');
-const _ = require('underscore');
-
-// For backward compatibility with gulp override tasks using run-sequence module
-// make compatible with gulp4
-require('module-alias').addAlias('run-sequence', 'gulp4-run-sequence');
-
-const reactium = (gulp, config, webpackConfig) => {
-    axiosRetry(axios, {
-        retries: config.serverRetries,
-        retryDelay: retryCount => {
-            console.log(`retry attempt: ${retryCount}`);
-            return retryCount * config.serverRetryDelay; // time interval between retries
-        },
-    });
-
-    const task = require('./get-task')(gulp);
-
-    const env = process.env.NODE_ENV || 'development';
-    const isDev = env === 'development';
-
-    const assetPath = p => {
-        p.dirname = p.dirname.split('assets').pop();
-    };
-    const markupPath = p => {
-        if (p.extname === '.css') {
-            p.dirname = config.dest.style.split(config.dest.markup).pop();
-        }
-    };
-
-    // PORT setup:
-    let port = config.port.proxy;
-
-    let node_env = process.env.hasOwnProperty('NODE_ENV')
-        ? process.env.NODE_ENV
-        : 'development';
-
-    const PORT_VAR = op.get(process.env, 'PORT_VAR', 'APP_PORT');
-    if (PORT_VAR && op.has(process.env, [PORT_VAR])) {
-        port = op.get(process.env, [PORT_VAR], port);
-    } else {
-        port = op.get(process.env, ['PORT'], port);
-    }
-
-    port = parseInt(port);
-
-    // Update config from environment variables
-    config.port.proxy = port;
-
-    // Update config from environment variables
-    config.port.browsersync = Number(
-        op.get(process.env, 'BROWSERSYNC_PORT', config.port.browsersync),
-    );
-
-    const noop = done => done();
-
-    const watcher = e => {
-        let src = path.relative(path.resolve(__dirname), e.path);
-        let ePathRelative = path.relative(path.resolve(config.src.app), e.path);
-        let fpath = path.resolve(
-            rootPath,
-            `${config.dest.dist}/${ePathRelative.replace(
-                /^.*?\/assets/,
-                'assets',
-            )}`,
-        );
-
-        let displaySrc = path.relative(rootPath, e.path);
-        let displayDest = path.relative(rootPath, fpath);
-
-        if (fs.existsSync(fpath)) {
-            del.sync([fpath]);
-        }
-
-        if (e.event !== 'unlink') {
-            const destPath = path.dirname(fpath);
-            if (!fs.existsSync(destPath)) {
-                fs.mkdirSync(destPath, { recursive: true });
-            }
-
-            fs.createReadStream(e.path)
-                .pipe(fs.createWriteStream(fpath))
-                .on('error', error => console.error(error));
-        }
-
-        console.log(`File ${e.event}: ${displaySrc} -> ${displayDest}`);
-    };
-
-    const _opnWrapperMonkeyPatch = open =>
-        function(url, name, bs) {
-            const app = op.get(
-                process.env,
-                'BROWERSYNC_OPEN_BROWSER',
-                'chrome',
-            );
-            let browser = open.apps.chrome;
-            if (app in open.apps) browser = open.apps[app];
-
-            open(url, { app: { name: browser } }).catch(function(error) {
-                bs.events.emit('browser:error');
-            });
-        };
-
-    const serve = ({ open } = { open: config.open }) => done => {
-        const proxy = `localhost:${config.port.proxy}`;
-
-        // monkey-path opnWrapper for linux support
-        const open = require('open');
-        const utils = require('browser-sync/dist/utils');
-        utils.opnWrapper = _opnWrapperMonkeyPatch(open);
-
-        axios.get(`http://${proxy}`).then(() => {
-            browserSync({
-                notify: false,
-                timestamps: false,
-                port: config.port.browsersync,
-                ui: { port: config.port.browsersync + 1 },
-                proxy,
-                open: open,
-                ghostMode: false,
-                startPath: config.dest.startPath,
-                ws: true,
-            });
-
-            done();
-        });
-    };
-
-    const watch = (done, restart = false) => {
-        let watchProcess = fork(path.resolve(__dirname, './gulp.watch.js'), {
-            env: process.env,
-            stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
-        });
-        watchProcess.send({ config, webpackConfig, restart });
-        watchProcess.on('message', message => {
-            switch (message) {
-                case 'build-started': {
-                    console.log("Starting 'build'...");
-                    done();
-                    return;
-                }
-                case 'restart-watches': {
-                    console.log('Waiting for server...');
-                    new Promise(resolve =>
-                        setTimeout(resolve, config.serverRetryDelay),
-                    )
-                        .then(() => {
-                            const proxy = `localhost:${config.port.proxy}`;
-                            return axios.get(`http://${proxy}`);
-                        })
-                        .then(() => {
-                            console.log("Restarting 'watch'...");
-                            watchProcess.kill();
-                            watch(_ => _, true);
-                        })
-                        .catch(error => console.error(error));
-                    return;
-                }
-            }
-        });
-    };
-
-    const command = (
-        cmd,
-        args = [],
-        done,
-        { stdin = 'ignore', stdout = 'inherit', stderr = 'inherit' } = {},
-    ) => {
-        const ps = spawn(cmd, args, { stdio: [stdin, stdout, stderr] });
-        ps.on('close', code => {
-            if (code !== 0) console.log(`Error executing ${cmd}`);
-            done();
-        });
-
-        return ps;
-    };
-
-    const local = ({ ssr = false } = {}) => async done => {
-        const SSR_MODE = ssr ? 'on' : 'off';
-        const crossEnvModulePath = path.resolve(
-            path.dirname(require.resolve('cross-env')),
-            '..',
-        );
-        const crossEnvPackage = require(path.resolve(
-            crossEnvModulePath,
-            'package.json',
-        ));
-        const crossEnvBin = path.resolve(
-            crossEnvModulePath,
-            crossEnvPackage.bin['cross-env'],
-        );
-
-        await gulp.task('mainManifest')(() => Promise.resolve());
-
-        command(
-            'node',
-            [
-                crossEnvBin,
-                `SSR_MODE=${SSR_MODE}`,
-                'NODE_ENV=development',
-                'gulp',
-            ],
-            done,
-        );
-
-        command(
-            'node',
-            [
-                crossEnvBin,
-                `SSR_MODE=${SSR_MODE}`,
-                'NODE_ENV=development',
-                'nodemon',
-                './.core/index.js',
-                '--exec',
-                'babel-node',
-            ],
-            done,
-            { stdin: 'inherit' },
-        );
-    };
-
-    const assets = () =>
-        gulp
-            .src(config.src.assets)
-            .pipe(rename(assetPath))
-            .pipe(gulp.dest(config.dest.assets));
-
-    const defaultBuildTasks = gulp.series(
-        task('preBuild'),
-        task('ensureReactiumModules'),
-        task('clean'),
-        task('manifest'),
-        gulp.parallel(task('markup'), task('json')),
-        gulp.parallel(task('assets'), task('styles')),
-        task('scripts'),
-        task('umdLibraries'),
-        task('serviceWorker'),
-        task('compress'),
-        task('postBuild'),
-    );
-
-    const build = cfg =>
-        !cfg.buildTasks
-            ? defaultBuildTasks
-            : gulp.series(
-                  ...cfg.buildTasks.map(t => {
-                      if (typeof t === 'string') {
-                          return task(t);
-                      } else if (Array.isArray(t)) {
-                          return gulp.parallel(...t.map(task));
-                      }
-                  }),
-              );
-
-    const apidocs = done => {
-        if (!isDev) done();
-
-        const arcliBin = path.resolve(
-            path.dirname(require.resolve('@atomic-reactor/cli')),
-            'arcli.js',
-        );
-        const args = [
-            arcliBin,
-            'docs',
-            '-s',
-            config.docs.src,
-            '-d',
-            config.docs.dest,
-        ];
-
-        const verbose = config.docs.verbose || process.env.VERBOSE_API_DOCS;
-        if (verbose) args.push('-V');
-        command('node', args, done);
-    };
-
-    const clean = done => {
-        // Remove build files
-        del.sync([config.dest.dist]);
-        done();
-    };
-
-    const ensureReactiumModules = done => {
-        fs.ensureDirSync(config.src.reactiumModules);
-        done();
-    };
-
-    const defaultTask = env === 'development' ? task('watch') : task('build');
-
-    const json = () =>
-        gulp.src(config.src.json).pipe(gulp.dest(config.dest.build));
-
-    const manifest = gulp.series(
-        gulp.parallel(
-            task('mainManifest'),
-            task('externalsManifest'),
-            task('umdManifest'),
-        ),
-    );
-
-    const umd = gulp.series(task('umdManifest'), task('umdLibraries'));
-
-    const sw = gulp.series(task('umd'), task('serviceWorker'));
-
-    const mainManifest = done => {
-        // Generate manifest.js file
-        regenManifest({
-            manifestFilePath: config.src.manifest,
-            manifestConfig: reactiumConfig.manifest,
-            manifestTemplateFilePath: path.resolve(
-                __dirname,
-                'manifest/templates/manifest.hbs',
-            ),
-            manifestProcessor: require('./manifest/processors/manifest'),
-        });
-
-        done();
-    };
-
-    const externalsManifest = done => {
-        // Generate manifest.js file
-        regenManifest({
-            manifestFilePath: config.src.externalsManifest,
-            manifestConfig: reactiumConfig.manifest,
-            manifestTemplateFilePath: path.resolve(
-                __dirname,
-                'manifest/templates/externals.hbs',
-            ),
-            manifestProcessor: require('./manifest/processors/externals'),
-        });
-        done();
-    };
-
-    const umdManifest = done => {
-        // Generate manifest all all umd libraries
-        regenManifest({
-            manifestFilePath: config.umd.manifest,
-            manifestConfig: reactiumConfig.manifest.umd,
-            manifestTemplateFilePath: path.resolve(
-                __dirname,
-                'manifest/templates/umd.hbs',
-            ),
-            manifestProcessor: require('./manifest/processors/umd'),
-        });
-        done();
-    };
-
-    const markup = () =>
-        gulp
-            .src(config.src.markup)
-            .pipe(rename(markupPath))
-            .pipe(gulp.dest(config.dest.markup));
-
-    const scripts = done => {
-        // Compile js
-        if (!isDev || process.env.MANUAL_DEV_BUILD === 'true') {
-            webpack(webpackConfig, (err, stats) => {
-                if (err) {
-                    console.log(err());
-                    done();
-                    return;
-                }
-
-                let result = stats.toJson();
-
-                if (result.errors.length > 0) {
-                    result.errors.forEach(error => {
-                        console.log(error);
-                    });
-
-                    done();
-                    return;
-                }
-
-                done();
-            });
-        } else {
-            done();
-        }
-    };
-
-    const umdLibraries = async done => {
-        let umdConfigs = [];
-        try {
-            umdConfigs = JSON.parse(
-                fs.readFileSync(config.umd.manifest, 'utf8'),
-            );
-        } catch (error) {
-            console.log(error);
-        }
-
-        for (let umd of umdConfigs) {
-            try {
-                console.log(`Generating UMD library ${umd.libraryName}`);
-                await new Promise((resolve, reject) => {
-                    webpack(umdWebpackGenerator(umd), (err, stats) => {
-                        if (err) {
-                            reject(err);
-                            return;
-                        }
-
-                        let result = stats.toJson();
-                        if (result.errors.length > 0) {
-                            result.errors.forEach(error => {
-                                console.log(error);
-                            });
-
-                            reject(result.errors);
-                            return;
-                        }
-
-                        resolve();
-                    });
-                });
-            } catch (error) {
-                console.log('error', error);
-            }
-        }
-
-        done();
-    };
-
-    // Stub serviceWorker task. Implementation moved to @atomic-reactor/reactium-service-worker plugin
-    const serviceWorker = () => Promise.resolve();
-
-    const ssg = gulp.series(task('ssg:flush'), task('ssg:warm'));
-
-    const ssgFlush = () => {
-        console.log(chalk.yellow('Flushing Server Side Generated HTML'));
-        del.sync([config.dest.dist + '/static-html']);
-        return Promise.resolve();
-    };
-
-    const ssgWarm = async () => {
-        console.log(chalk.green('Warming Server Side Generated HTML'));
-        const serverUrl = `http://localhost:${port}`;
-
-        let paths = [];
-        try {
-            const { data = [] } = await axios.get(serverUrl + '/ssg-paths');
-            paths = data;
-        } catch ({ response = {} }) {
-            const { status, statusText, data } = response;
-            const error = op.get(data, 'error', { status, statusText, data });
-            throw new Error(
-                `Getting generation paths: ${JSON.stringify(error)}`,
-            );
-        }
-
-        for (let chunk of _.chunk(paths, 5)) {
-            try {
-                await Promise.all(
-                    chunk.map(warmPath => {
-                        console.log(
-                            chalk.green('Warming URL:'),
-                            chalk.blueBright(serverUrl + warmPath),
-                        );
-                        return axios
-                            .get(serverUrl + warmPath)
-                            .catch(error =>
-                                console.error(
-                                    `Error warming ${serverUrl + warmPath}`,
-                                ),
-                            );
-                    }),
-                );
-            } catch (error) {
-                console.error(error);
-            }
-        }
-    };
-
-    const staticTask = task('static:copy');
-
-    const staticCopy = done => {
-        // Copy static files
-        fs.copySync(config.dest.dist, config.dest.static);
-        done();
-    };
-
-    const fileReader = file => {
-        return new Promise((resolve, reject) => {
-            const reader = new FileReader();
-
-            reader.onerror = () => {
-                reader.abort();
-                reject();
-            };
-
-            reader.onload = () => resolve(reader.result);
-            reader.readAsDataURL(file);
-        });
-    };
-
-    const pluginAssetsTemplate = data => {
-        const template = handlebars.compile(`
-// Generated Data URLs from plugin-assets.json
-$assets: (
-    {{#each this}}
-    '{{key}}': '{{{dataURL}}}',
-    {{/each}}
-);`);
-
-        return template(data);
-    };
-
-    const pluginAssets = async done => {
-        const files = globby.sync(config.src.pluginAssets);
-        for (const file of files) {
-            const manifest = path.resolve(file);
-            const base = path.dirname(manifest);
-
-            try {
-                let assets = fs.readFileSync(manifest);
-                assets = JSON.parse(assets);
-
-                const entries = Object.entries(assets);
-                const mappings = [];
-                for (const entry of entries) {
-                    const [key, fileName] = entry;
-                    const dataURL = await fileReader(
-                        new File(path.resolve(base, fileName)),
-                    );
-                    mappings.push({ key, dataURL });
-                }
-
-                fs.writeFileSync(
-                    path.resolve(base, '_plugin-assets.scss'),
-                    pluginAssetsTemplate(mappings),
-                    'utf8',
-                );
-            } catch (error) {
-                console.error(
-                    'error generating sass partial _plugin-assets.scss in ' +
-                        base,
-                    error,
-                );
-            }
-        }
-
-        done();
-    };
-
-    const sassPartialPreRegistrations = SassPartial => {
-        SassPartial.register('mixins-dir', {
-            pattern: /mixins\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.MIXINS,
-        });
-
-        SassPartial.register('mixins-ddd', {
-            pattern: /_reactium-style-mixins/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.MIXINS,
-        });
-
-        SassPartial.register('variables-dir', {
-            pattern: /variables\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.VARIABLES,
-        });
-
-        SassPartial.register('variables-ddd', {
-            pattern: /_reactium-style-variables/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.VARIABLES,
-        });
-
-        SassPartial.register('base-dir', {
-            pattern: /base\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.BASE,
-        });
-
-        SassPartial.register('base-ddd', {
-            pattern: /_reactium-style-base/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.BASE,
-        });
-
-        SassPartial.register('atoms-dir', {
-            pattern: /atoms\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.ATOMS,
-        });
-
-        SassPartial.register('atoms-ddd', {
-            pattern: /_reactium-style-atoms/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.ATOMS,
-        });
-
-        SassPartial.register('molecules-dir', {
-            pattern: /molecules\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.MOLECULES,
-        });
-
-        SassPartial.register('molecules-ddd', {
-            pattern: /_reactium-style-molecules/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.MOLECULES,
-        });
-
-        SassPartial.register('organisms-dir', {
-            pattern: /organisms\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.ORGANISMS,
-        });
-
-        SassPartial.register('organisms-ddd', {
-            pattern: /_reactium-style-organisms/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.ORGANISMS,
-        });
-
-        SassPartial.register('overrides-dir', {
-            pattern: /overrides\/_reactium-style/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.OVERRIDES,
-        });
-
-        SassPartial.register('overrides-ddd', {
-            pattern: /_reactium-style-overrides/,
-            exclude: false,
-            priority: ReactiumGulp.Enums.style.OVERRIDES,
-        });
-    };
-
-    const dddStylesPartial = done => {
-        const SassPartialRegistry = ReactiumGulp.Utils.registryFactory(
-            'SassPartialRegistry',
-            'id',
-            ReactiumGulp.Utils.Registry.MODES.CLEAN,
-        );
-
-        sassPartialPreRegistrations(SassPartialRegistry);
-        ReactiumGulp.Hook.runSync('ddd-styles-partial', SassPartialRegistry);
-
-        const stylePartials = globby
-            .sync(config.src.styleDDD)
-            .map(partial => {
-                if (/^reactium_modules\//.test(partial)) {
-                    return partial.replace('reactium_modules/', '+');
-                }
-
-                return path
-                    .relative(
-                        path.dirname(config.dest.modulesPartial),
-                        path.resolve(rootPath, partial),
-                    )
-                    .split(/[\\\/]/g)
-                    .join(path.posix.sep);
-            })
-            .map(partial => partial.replace(/\.scss$/, ''))
-            // sort by directory basename
-            .sort((a, b) => {
-                const aBase = path
-                    .basename(path.dirname(a))
-                    .toLocaleLowerCase();
-                const bBase = path
-                    .basename(path.dirname(b))
-                    .toLocaleLowerCase();
-                if (aBase > bBase) return 1;
-                if (aBase < bBase) return -1;
-                return 0;
-            })
-            // sort by file basename
-            .sort((a, b) => {
-                const aBase = path.basename(a).toLocaleLowerCase();
-                const bBase = path.basename(b).toLocaleLowerCase();
-                if (aBase > bBase) return 1;
-                if (aBase < bBase) return -1;
-                return 0;
-            })
-            // sort by priority
-            .sort((a, b) => {
-                const aMatch =
-                    SassPartialRegistry.list.find(({ pattern }) =>
-                        pattern.test(a),
-                    ) || {};
-                const bMatch =
-                    SassPartialRegistry.list.find(({ pattern }) =>
-                        pattern.test(b),
-                    ) || {};
-
-                const aPriority = op.get(
-                    aMatch,
-                    'priority',
-                    ReactiumGulp.Enums.style.ORGANISMS,
-                );
-                const bPriority = op.get(
-                    bMatch,
-                    'priority',
-                    ReactiumGulp.Enums.style.ORGANISMS,
-                );
-
-                if (aPriority > bPriority) return 1;
-                else if (bPriority > aPriority) return -1;
-                return 0;
-            })
-            .filter(partial => {
-                const match =
-                    SassPartialRegistry.list.find(({ pattern }) =>
-                        pattern.test(partial),
-                    ) || {};
-                return !match || op.get(match, 'exclude', false) !== true;
-            });
-
-        const template = handlebars.compile(`
-// WARNING: Do not directly edit this file !!!!
-// File generated by gulp styles:partials task
-
-{{#each this}}
-@import '{{ this }}';
-{{/each}}
-`);
-
-        fs.ensureFileSync(config.dest.modulesPartial);
-        fs.writeFileSync(
-            config.dest.modulesPartial,
-            template(stylePartials),
-            'utf8',
-        );
-        done();
-    };
-
-    const stylesColors = done => {
-        const colorProfiles = globby.sync(config.src.colors);
-        if (colorProfiles.length > 0) {
-            let colorFileContents =
-                '// WARNING: Do not directly edit this file !!!!\n// File generated by gulp styles:colors task\n';
-            let colorVars = [];
-            let colorArr = [];
-
-            colorProfiles.forEach(filePath => {
-                let profile = fs.readFileSync(path.resolve(filePath));
-                profile = JSON.parse(profile);
-
-                colorVars.push(`\n\n// ~/${filePath}`);
-
-                Object.keys(profile).forEach(k => {
-                    let code = profile[k];
-                    let cvar = `$${k}`;
-                    let vline = `${cvar}: ${code} !default;`;
-                    let cname = k.split('color-').join('');
-                    let aline = `\t"${cname}": ${cvar}`;
-
-                    colorVars.push(vline);
-                    colorArr.push(aline);
-                });
-            });
-
-            colorFileContents += colorVars.join('\n') + '\n\n\n';
-            colorFileContents += `$color: (\n${colorArr.join(
-                ',\n',
-            )}\n) !default;\n\n\n`;
-
-            fs.ensureFileSync(config.dest.colors);
-            fs.writeFileSync(config.dest.colors, colorFileContents, 'utf8');
-        }
-
-        done();
-    };
-
-    const stylesCompile = () => {
-        return gulp
-            .src(config.src.style)
-            .pipe(gulpif(isDev, sourcemaps.init()))
-            .pipe(
-                sass({
-                    importer: reactiumImporter,
-                    includePaths: config.src.includes,
-                    fiber,
-                }).on('error', sass.logError),
-            )
-            .pipe(prefix(config.browsers))
-            .pipe(gulpif(!isDev, cleanCSS()))
-            .pipe(gulpif(isDev, sourcemaps.write()))
-            .pipe(rename({ dirname: '' }))
-            .pipe(gulp.dest(config.dest.style))
-            .pipe(gulpif(isDev, browserSync.stream()));
-    };
-
-    const styles = gulp.series(
-        task('styles:colors'),
-        task('styles:partials'),
-        task('styles:pluginAssets'),
-        task('styles:compile'),
-    );
-
-    const compress = done =>
-        isDev
-            ? done()
-            : gulp
-                  .src(config.src.compress)
-                  .pipe(gzip())
-                  .pipe(gulp.dest(config.dest.assets));
-
-    const watchFork = done => {
-        // Watch for file changes
-        gulp.watch(config.watch.colors, gulp.task('styles:colors'));
-        gulp.watch(config.watch.pluginAssets, gulp.task('styles:pluginAssets'));
-        gulp.watch(config.watch.style, gulp.task('styles:compile'));
-        gulp.watch(config.src.styleDDD, gulp.task('styles:partials'));
-        gulpwatch(config.watch.markup, watcher);
-        gulpwatch(config.watch.assets, watcher);
-        const scriptWatcher = gulp.watch(
-            config.watch.js,
-            gulp.parallel(task('manifest')),
-        );
-        done();
-    };
-
-    const tasks = {
-        apidocs,
-        local: local(),
-        'local:ssr': local({ ssr: true }),
-        assets,
-        preBuild: noop,
-        build: build(config),
-        compress,
-        postBuild: noop,
-        postServe: noop,
-        clean,
-        ensureReactiumModules,
-        default: defaultTask,
-        json,
-        manifest,
-        mainManifest,
-        externalsManifest,
-        umd,
-        umdManifest,
-        umdLibraries,
-        markup,
-        scripts,
-        serve: serve(),
-        'serve-restart': serve({ open: false }),
-        serviceWorker,
-        sw,
-        ssg,
-        'ssg:flush': ssgFlush,
-        'ssg:warm': ssgWarm,
-        static: staticTask,
-        'static:copy': staticCopy,
-        'styles:partials': dddStylesPartial,
-        'styles:pluginAssets': pluginAssets,
-        'styles:colors': stylesColors,
-        'styles:compile': stylesCompile,
-        styles,
-        watch,
-        watchFork,
-    };
-
-    let tasksOverride = _ => _;
-    if (fs.existsSync(`${rootPath}/gulp.tasks.override.js`)) {
-        tasksOverride = require(`${rootPath}/gulp.tasks.override.js`);
-    }
-
-    return tasksOverride(tasks, config);
-};
-
-module.exports = reactium;
diff --git a/.core/gulp.watch.js b/.core/gulp.watch.js
deleted file mode 100644
index 58a0e391..00000000
--- a/.core/gulp.watch.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const gulp = require('gulp');
-const gulpTasks = require('./gulp.tasks');
-const gulpwatch = require('@atomic-reactor/gulp-watch');
-const task = require('./get-task')(gulp);
-
-process.on('message', ({ config, webpackConfig, restart }) => {
-    require('./gulp.bootup');
-
-    const asyncDone = done => {
-        process.send('build-started');
-        done();
-    };
-
-    const asyncBuild = gulp.series(
-        task('build'),
-        task('watchFork'),
-        restart ? task('serve-restart') : task('serve'),
-        task('postServe'),
-        asyncDone,
-    );
-
-    gulp.task('asyncBuild', asyncBuild);
-    gulp.task('asyncBuild')();
-
-    gulpwatch(config.watch.restartWatches, () => {
-        process.send('restart-watches');
-    });
-});
diff --git a/.core/gulpfile.js b/.core/gulpfile.js
deleted file mode 100644
index 95086808..00000000
--- a/.core/gulpfile.js
+++ /dev/null
@@ -1 +0,0 @@
-require('./gulp.bootup');
diff --git a/.core/index.js b/.core/index.js
deleted file mode 100644
index e9066110..00000000
--- a/.core/index.js
+++ /dev/null
@@ -1,362 +0,0 @@
-//------------------------------------------------------------------------------
-// Reactium Server
-//------------------------------------------------------------------------------
-
-import cors from 'cors';
-import express from 'express';
-import bodyParser from 'body-parser';
-import cookieParser from 'cookie-parser';
-import cookieSession from 'cookie-session';
-import proxy from 'http-proxy-middleware';
-import morgan from 'morgan';
-import path from 'path';
-import fs from 'fs';
-import op from 'object-path';
-import _ from 'underscore';
-import staticGzip from 'express-static-gzip';
-
-const globby = require('./globby-patch').sync;
-
-const globals = require('./server-globals');
-
-global.rootPath = path.resolve(__dirname, '..');
-
-global.app = express();
-
-const registeredMiddleware = async () => {
-    const { Enums } = ReactiumBoot;
-
-    // express middlewares
-    if (LOG_LEVEL >= LOG_LEVELS.INFO) {
-        ReactiumBoot.Server.Middleware.register('logging', {
-            name: 'logging',
-            use: morgan('combined'),
-            order: Enums.priority.highest,
-        });
-    }
-
-    ReactiumBoot.Server.Middleware.register('cors', {
-        name: 'cors',
-        use: cors(),
-        order: Enums.priority.highest,
-    });
-
-    if (global.restAPI && process.env.PROXY_ACTINIUM_API !== 'off') {
-        ReactiumBoot.Server.Middleware.register('api', {
-            name: 'api',
-            use: proxy('/api', {
-                target: global.restAPI,
-                changeOrigin: true,
-                pathRewrite: {
-                    '^/api': '',
-                },
-                logLevel: process.env.DEBUG === 'on' ? 'debug' : 'error',
-                ws: true,
-            }),
-            order: Enums.priority.highest,
-        });
-    }
-
-    if (global.restAPI && process.env.PROXY_ACTINIUM_API !== 'off') {
-        ReactiumBoot.Server.Middleware.register('api-socket-io', {
-            name: 'api-socket-io',
-            use: proxy('/actinium.io', {
-                target: global.restAPI.replace('/api', '') + '/actinium.io',
-                changeOrigin: true,
-                logLevel: process.env.DEBUG === 'on' ? 'debug' : 'error',
-                ws: true,
-            }),
-            order: Enums.priority.highest,
-        });
-    }
-
-    // parsers
-    ReactiumBoot.Server.Middleware.register('jsonParser', {
-        name: 'jsonParser',
-        use: bodyParser.json(),
-        order: Enums.priority.high,
-    });
-
-    ReactiumBoot.Server.Middleware.register('urlEncoded', {
-        name: 'urlEncoded',
-        use: bodyParser.urlencoded({ extended: true }),
-        order: Enums.priority.high,
-    });
-
-    // cookies
-    ReactiumBoot.Server.Middleware.register('cookieParser', {
-        name: 'cookieParser',
-        use: cookieParser(),
-        order: Enums.priority.high,
-    });
-
-    ReactiumBoot.Server.Middleware.register('cookieSession', {
-        name: 'cookieSession',
-        use: cookieSession({
-            name: op.get(process.env, 'COOKIE_SESSION_NAME', 'aljtka4'),
-            keys: JSON.parse(
-                op.get(
-                    process.env,
-                    'COOKIE_SESSION_KEYS',
-                    JSON.stringify([
-                        'Q2FtZXJvbiBSdWxlcw',
-                        'vT3GtyZKbnoNSdWxlcw',
-                    ]),
-                ),
-            ),
-            order: Enums.priority.high,
-        }),
-    });
-
-    // serve the static files out of ./public or specified directory
-    global.staticAssets =
-        process.env.PUBLIC_DIRECTORY || path.resolve(process.cwd(), 'public');
-
-    global.staticHTML =
-        process.env.PUBLIC_HTML ||
-        path.resolve(process.cwd(), 'public/static-html');
-
-    ReactiumBoot.Server.Middleware.register('static', {
-        name: 'static',
-        use: staticGzip(staticAssets),
-        order: Enums.priority.neutral,
-    });
-
-    ReactiumBoot.Server.Middleware.register('static-html', {
-        name: 'static-html',
-        use: staticGzip(staticHTML),
-        order: Enums.priority.neutral,
-    });
-
-    const reactiumModules = Object.keys(
-        op.get(
-            require(path.resolve(process.cwd(), 'package.json')),
-            'reactiumDependencies',
-            {},
-        ),
-    );
-
-    reactiumModules.forEach(mod => {
-        const modStaticPath = path.resolve(
-            process.cwd(),
-            'reactium_modules',
-            mod,
-            '_static',
-        );
-        if (fs.existsSync(modStaticPath)) {
-            ReactiumBoot.Server.Middleware.register(`static.${mod}`, {
-                use: staticGzip(modStaticPath),
-                order: Enums.priority.neutral,
-            });
-        }
-    });
-
-    // default route handler
-    ReactiumBoot.Server.Middleware.register('service-worker-allowed', {
-        name: 'service-worker-allowed',
-        use: async (req, res, next) => {
-            const responseHeaders = {
-                'Service-Worker-Allowed': '/',
-            };
-
-            /**
-             * @api {Hook} Server.ServiceWorkerAllowed Server.ServiceWorkerAllowed
-             * @apiDescription Called on server-side during service-worker-allowed middleware.
-             Used to define the HTTP response header "Service-Worker-Allowed".
-             By default, this header will allow the document root, "/".
-             Both sync and async version called.
-             * @apiParam {Object} responseHeader with property 'Service-Worker-Allowed' (case sensitive) and its value.
-             * @apiParam {Object} req Node/Express request object
-             * @apiParam {Object} res Node/Express response object
-             * @apiName Server.ServiceWorkerAllowed
-             * @apiGroup Hooks
-             */
-            ReactiumBoot.Hook.runSync(
-                'Server.ServiceWorkerAllowed',
-                responseHeaders,
-                req,
-                res,
-            );
-            await ReactiumBoot.Hook.run(
-                'Server.ServiceWorkerAllowed',
-                responseHeaders,
-                req,
-                res,
-            );
-
-            if (op.has(responseHeaders, 'Service-Worker-Allowed')) {
-                res.set(
-                    'Service-Worker-Allowed',
-                    op.get(responseHeaders, 'Service-Worker-Allowed'),
-                );
-            }
-
-            next();
-        },
-        order: Enums.priority.high,
-    });
-
-    // default route handler
-    ReactiumBoot.Server.Middleware.register('router', {
-        name: 'router',
-        use: require('./server/router').default,
-        order: Enums.priority.neutral,
-    });
-};
-
-const registeredDevMiddleware = () => {
-    const { Enums } = ReactiumBoot;
-
-    // set app variables
-    app.set('x-powered-by', false);
-
-    // development mode
-    if (process.env.NODE_ENV === 'development') {
-        const webpack = require('webpack');
-        const gulpConfig = require('./gulp.config');
-        const webpackConfig = require('./webpack.config')(gulpConfig);
-        const wpMiddlware = require('webpack-dev-middleware');
-        const wpHotMiddlware = require('webpack-hot-middleware');
-        const publicPath = `http://localhost:${PORT}/`;
-
-        // local development overrides for webpack config
-        webpackConfig.entry.main = [
-            'webpack-hot-middleware/client?path=/__webpack_hmr&quiet=true',
-            webpackConfig.entry.main,
-        ];
-        webpackConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
-        webpackConfig.output.publicPath = publicPath;
-
-        const compiler = webpack(webpackConfig);
-
-        ReactiumBoot.Server.Middleware.register('webpack', {
-            name: 'webpack',
-            use: wpMiddlware(compiler, {
-                serverSideRender: true,
-                path: '/',
-                publicPath,
-            }),
-            order: Enums.priority.high,
-        });
-
-        ReactiumBoot.Server.Middleware.register('hmr', {
-            name: 'hmr',
-            use: wpHotMiddlware(compiler, {
-                reload: true,
-            }),
-            order: Enums.priority.high,
-        });
-    }
-};
-
-const startServer = async () => {
-    await registeredMiddleware();
-    await registeredDevMiddleware();
-
-    /**
-     * @api {Hook} Server.Middleware Server.Middleware
-     * @apiName Server.Middleware
-     * @apiDescription Used to register or unregister express middleware.
-     * @apiParam {Object} Middleware Server express middleware registry object.
-     * @apiParam (middleware) {String} name Name of the middleware.
-     * @apiParam (middlware) {Function} use the express middleware function.
-     * @apiParam (middlware) {Number} order the loading order of the middleware
-     * @apiExample reactium-boot.js
-     const express = require('express');
-     const router = express.Router();
-     const axios = require('axios');
-
-     // register a new backend route /foo with express
-     router.get('/', (req, res) => {
-        res.send('Foo!!')
-     });
-
-     ReactiumBoot.Hook.registerSync('Server.Middleware', Middleware => {
-        Middleware.register('foo-page', {
-            name: 'foo-page',
-            use: router,
-            order: ReactiumBoot.Enums.priority.highest,
-        })
-     });
-
-     ReactiumBoot.Hook.registerSync('Server.Middleware', Middleware => {
-        const intercept = express.Router();
-        intercept.post('/api*', (req, res) => {
-            res.json({
-                foo: 'bar'
-            });
-        });
-
-        // check api health every 90 seconds and intercept api if it goes down
-        Middleware.register('downapi', {
-            name: 'downapi',
-            use: async (res, req, next) => {
-                try {
-                    let healthy = ReactiumBoot.Cache.get('health-check');
-                    if (healthy === undefined) {
-                        const response = await axios.get(process.env.REST_API_URI + '/healthcheck');
-                        healthy = response.data;
-                        ReactiumBoot.Cache.set('health-check', healthy, 1000 * 90);
-                    }
-                } catch (error) {
-                    console.error(error);
-                    ReactiumBoot.Cache.set('health-check', false, 1000 * 90);
-                    healthy = false;
-                }
-
-                if (healthy === true) next();
-                return intercept(req, req, next);
-            },
-            order: ReactiumBoot.Enums.priority.highest,
-        })
-     });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync(
-        'Server.Middleware',
-        ReactiumBoot.Server.Middleware,
-    );
-    await ReactiumBoot.Hook.run(
-        'Server.Middleware',
-        ReactiumBoot.Server.Middleware,
-    );
-
-    let middlewares = Object.values(ReactiumBoot.Server.Middleware.list);
-    // Deprecated: Give app an opportunity to change middlewares
-    if (fs.existsSync(`${rootPath}/src/app/server/middleware.js`)) {
-        ERROR(
-            'src/app/server/middleware.js has been discontinued. Use reactium-boot.js register to register or deregister express middleware.',
-        );
-    }
-
-    _.sortBy(_.compact(middlewares), 'order').forEach(({ use }) => {
-        if (Array.isArray(use)) {
-            app.use(...use);
-        } else {
-            app.use(use);
-        }
-    });
-
-    // TODO: Handle TLS server automatically
-    // start server on the specified port and binding host
-    app.listen(PORT, '0.0.0.0', function() {
-        BOOT(`Reactium Server running on port '${PORT}'...`);
-    });
-
-    // Provide opportunity for ssl server
-    if (fs.existsSync(`${rootPath}/src/app/server/ssl.js`)) {
-        require(`${rootPath}/src/app/server/ssl.js`)(app);
-    }
-};
-
-const bootup = async () => {
-    const logger = console;
-    try {
-        await globals();
-        await startServer();
-    } catch (error) {
-        console.error('Error on server startup:', error);
-    }
-};
-
-bootup();
diff --git a/.core/manifest/manifest-tools.js b/.core/manifest/manifest-tools.js
deleted file mode 100644
index 9523bb6c..00000000
--- a/.core/manifest/manifest-tools.js
+++ /dev/null
@@ -1,222 +0,0 @@
-const tree = require('directory-tree');
-const path = require('path');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const prettier = require('prettier');
-const moment = require('moment');
-const chalk = require('chalk');
-const diff = require('fast-diff');
-const hb = require('handlebars');
-
-const flattenRegistry = (registry = { children: [] }, manifest = []) => {
-    op.get(registry, 'children', []).forEach(item => {
-        const type = op.get(item, 'type');
-        if (type === 'directory') {
-            const children = op.get(item, 'children', []);
-            if (children.length > 0) {
-                return flattenRegistry(item, manifest);
-            }
-
-            return manifest;
-        }
-
-        if ('path' in item) {
-            manifest.push(item);
-        }
-    });
-
-    return manifest;
-};
-
-const sources = (sourcePath, searchParams) =>
-    flattenRegistry(tree(sourcePath, searchParams));
-
-const isRegExp = regEx =>
-    typeof regEx === 'object' && regEx.constructor == RegExp;
-
-const find = (searches = [], sourceMappings = [], searchParams = {}) => {
-    let mappings = {};
-    searches.forEach(({ name, type }) => {
-        mappings[name] = {
-            type,
-            imports: [],
-            originals: {},
-        };
-    });
-
-    sourceMappings.forEach(sourceMapping => {
-        const nodeModules = Boolean(op.get(sourceMapping, 'node_modules'));
-        const params = {
-            ...searchParams,
-            exclude: [...(op.get(searchParams, 'exclude', []) || [])],
-        };
-
-        const exclude = op
-            .get(params, 'exclude', [])
-            .concat(op.get(sourceMapping, 'exclude', []));
-
-        op.set(params, 'exclude', exclude);
-
-        const files = [];
-        if (nodeModules) {
-            // exclude deep packages
-            exclude.push(/node_modules$/);
-
-            const packagePath = module.paths
-                .map(p => path.resolve(path.dirname(p), 'package.json'))
-                .find(packagePath => fs.existsSync(packagePath));
-
-            let modules = Object.keys(
-                op.get(require(packagePath), 'dependencies', {}),
-            );
-
-            const reactiumModules = Object.keys(
-                op.get(require(packagePath), 'reactiumDependencies', {}),
-            );
-
-            // Special exception for reactium_modules dependencies, which will be considered
-            if (reactiumModules.length) {
-                const reactiumModuleDir = path.resolve(
-                    path.dirname(packagePath),
-                    'reactium_modules',
-                );
-                reactiumModules.forEach(reactiumModule => {
-                    const subPackage = path.resolve(
-                        reactiumModuleDir,
-                        reactiumModule,
-                        '_npm/package.json',
-                    );
-                    if (fs.existsSync(subPackage)) {
-                        modules = _.uniq(
-                            modules.concat(
-                                Object.keys(
-                                    op.get(
-                                        require(subPackage),
-                                        'dependencies',
-                                        {},
-                                    ),
-                                ),
-                            ),
-                        );
-                    }
-                });
-            }
-
-            modules.forEach(mod => {
-                let from;
-                try {
-                    from = path.dirname(require.resolve(mod));
-                } catch (err) {}
-
-                if (from) {
-                    sources(from, params).forEach(file => {
-                        file.mod = mod;
-                        files.push(file);
-                    });
-                }
-            });
-        } else if (op.has(sourceMapping, 'from')) {
-            sources(sourceMapping.from, params).forEach(file =>
-                files.push(file),
-            );
-        }
-
-        files.forEach(fileObj => {
-            const file = fileObj.path;
-
-            // ignore entire set of source paths if ignore specified
-            if (
-                op.has(sourceMapping, 'ignore') &&
-                isRegExp(sourceMapping.ignore) &&
-                sourceMapping.ignore.test(file)
-            )
-                return;
-
-            searches.forEach(search => {
-                const { name, pattern, ignore } = search;
-                if (ignore && isRegExp(ignore) && ignore.test(file)) return;
-
-                if (pattern.test(file)) {
-                    let normalized = file;
-                    if (nodeModules) {
-                        normalized = normalized.replace(
-                            new RegExp(`.*${fileObj.mod}`),
-                            fileObj.mod,
-                        );
-                    }
-
-                    normalized = normalized.replace(/\\/g, '/');
-                    if (op.has(sourceMapping, 'from')) {
-                        normalized = normalized.replace(
-                            sourceMapping.from,
-                            op.get(sourceMapping, 'to', sourceMapping.from),
-                        );
-                    }
-
-                    if (op.get(search, 'stripExtension', true)) {
-                        normalized = normalized.replace(fileObj.extension, '');
-                    }
-
-                    mappings[name].originals[normalized] = file;
-                    mappings[name].imports.push(normalized);
-                }
-            });
-        });
-    });
-
-    return mappings;
-};
-
-module.exports = function({
-    manifestFilePath,
-    manifestConfig,
-    manifestTemplateFilePath,
-    manifestProcessor,
-}) {
-    const patterns = op.get(manifestConfig, 'patterns', []);
-    const sourceMappings = op.get(manifestConfig, 'sourceMappings', []);
-    const searchParams = op.get(manifestConfig, 'searchParams', {
-        extensions: /\.jsx?$/,
-        exclude: [/.ds_store/i, /.core\/.cli\//i, /.cli\//i],
-    });
-
-    const manifest = find(patterns, sourceMappings, searchParams);
-
-    const template = hb.compile(
-        fs.readFileSync(manifestTemplateFilePath, 'utf-8'),
-    );
-
-    let fileContents = template(
-        manifestProcessor({
-            manifest,
-            manifestConfig,
-        }),
-    );
-
-    if (/.jsx?$/.test(manifestFilePath)) {
-        fileContents = prettier.format(fileContents, {
-            parser: 'babel',
-            trailingComma: 'all',
-            singleQuote: true,
-            tabWidth: 4,
-            useTabs: false,
-        });
-    }
-
-    const manifestHasChanged = () => {
-        const prevFileContents = fs.readFileSync(manifestFilePath, 'utf-8');
-        const changes = diff(prevFileContents, fileContents).filter(
-            ([code, change]) => code !== 0,
-        );
-        return changes.length > 0;
-    };
-
-    // Write Manifest only if it does not exist or has changed
-    if (!fs.existsSync(manifestFilePath) || manifestHasChanged()) {
-        console.log(`'${chalk.cyan(manifestFilePath)}'...`);
-        const dir = path.dirname(manifestFilePath);
-        fs.ensureDirSync(dir);
-        fs.writeFileSync(manifestFilePath, fileContents);
-    }
-};
diff --git a/.core/manifest/processors/externals.js b/.core/manifest/processors/externals.js
deleted file mode 100644
index b7cfbd38..00000000
--- a/.core/manifest/processors/externals.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const op = require('object-path');
-const fs = require('fs');
-const path = require('path');
-const rootPath = path.resolve(__dirname, '../../..');
-const chalk = require('chalk');
-module.exports = data => {
-    const externals = Object.values(
-        op.get(data, 'manifestConfig.pluginExternals', {}),
-    ).map(external => {
-        const { externalName, requirePath } = external;
-
-        if (/^\/.*\/i?$/.test(externalName))
-            return {
-                ...external,
-                externalName: requirePath,
-                requirePath,
-            };
-
-        return external;
-    });
-
-    const externalAliases = externals.filter(
-        ({ defaultAlias }) => defaultAlias,
-    );
-
-    return {
-        externals,
-        externalAliases,
-    };
-};
diff --git a/.core/manifest/processors/manifest.js b/.core/manifest/processors/manifest.js
deleted file mode 100644
index d2e30f11..00000000
--- a/.core/manifest/processors/manifest.js
+++ /dev/null
@@ -1,70 +0,0 @@
-const op = require('object-path');
-const fs = require('fs');
-const path = require('path');
-const rootPath = path.resolve(__dirname, '../../..');
-const chalk = require('chalk');
-module.exports = data => {
-    const types = Object.entries(data.manifest).map(([name, typeDomains]) => {
-        const domainRegExp = new RegExp('/([A-Za-z_0-9-]+?)/[A-Za-z_0-9-]+$');
-        const { imports, type } = typeDomains;
-
-        const fileToDomain = file => {
-            let [, domain] = file.match(domainRegExp) || [];
-            try {
-                const relativeOriginalPath = path.resolve(
-                    rootPath,
-                    typeDomains.originals[file],
-                );
-                const potentialDomainFile = path.normalize(
-                    path.dirname(relativeOriginalPath) + '/domain.js',
-                );
-                if (fs.existsSync(potentialDomainFile)) {
-                    const { name } = require(potentialDomainFile);
-                    if (name) domain = name;
-                }
-            } catch (error) {
-                // intentionally blank
-            }
-
-            if (!domain)
-                console.log(
-                    `Warning: Unable to add "${file}" of type "${type}. No domain.js found."`,
-                );
-            return domain;
-        };
-
-        const domains = [];
-        imports
-            .map(file => file.replace(/\\/g, '/'))
-            .filter(fileToDomain)
-            .forEach(file => {
-                const domain = fileToDomain(file);
-                let existing;
-                if (
-                    (existing = domains.find(({ domain: d }) => d === domain))
-                ) {
-                    console.warn(
-                        chalk.magenta(
-                            `Warning: Unable to add "${file}" of type "${type}" to "${domain}" manifest. "${existing.file}" will be used.`,
-                        ),
-                    );
-                    return domains;
-                }
-
-                domains.push({
-                    domain,
-                    file,
-                });
-            });
-
-        return {
-            name,
-            domains,
-        };
-    });
-
-    return {
-        types,
-        manifest: JSON.stringify(data.manifest, null, 2),
-    };
-};
diff --git a/.core/manifest/processors/umd.js b/.core/manifest/processors/umd.js
deleted file mode 100644
index ff5b53c2..00000000
--- a/.core/manifest/processors/umd.js
+++ /dev/null
@@ -1,76 +0,0 @@
-const path = require('path');
-const fs = require('fs-extra');
-const _ = require('underscore');
-const op = require('object-path');
-const config = require('../../gulp.config');
-
-module.exports = data => {
-    const umdConfigs = op
-        .get(data, 'manifest.allUmdConfig.imports', [])
-        .reduce((configs, configPath) => {
-            const dir = path.dirname(path.normalize(configPath));
-            let config = {};
-            try {
-                config = JSON.parse(
-                    fs.readFileSync(path.normalize(configPath), 'utf8'),
-                );
-            } catch (err) {}
-
-            configs[dir] = config;
-
-            return configs;
-        }, {});
-
-    const defaultLibraryExternals = Object.values(
-        op.get(data, 'manifestConfig.defaultLibraryExternals', {}),
-    ).reduce((externals, { externalName }) => {
-        externals[externalName] = externalName;
-        return externals;
-    }, {});
-
-    return JSON.stringify(
-        op.get(data, 'manifest.allUmdEntries.imports', []).map(entryPath => {
-            const dir = path.dirname(entryPath);
-            const umdConfig = op.get(umdConfigs, dir, {});
-            const libraryName = op.get(
-                umdConfig,
-                'libraryName',
-                path.basename(dir),
-            );
-            const outputBase = op.get(config, 'umd.outputPath');
-            const outputPath = path.resolve(
-                outputBase,
-                op.get(umdConfig, 'outputPath', libraryName),
-            );
-            const outputFile = op.get(
-                umdConfig,
-                'outputFile',
-                `${libraryName}.js`,
-            );
-            const externals = op.get(
-                umdConfig,
-                'externals',
-                defaultLibraryExternals,
-            );
-            const globalObject = op.get(umdConfig, 'globalObject', 'window');
-            const babelPresetEnv = op.get(umdConfig, 'babelPresetEnv', true);
-            const babelReact = op.get(umdConfig, 'babelReact', true);
-            const babelLoader = op.get(umdConfig, 'babelLoader', true);
-
-            return {
-                ...umdConfig,
-                entry: path.normalize(entryPath + '.js'),
-                libraryName,
-                outputPath,
-                outputFile,
-                externals,
-                globalObject,
-                babelPresetEnv,
-                babelReact,
-                babelLoader,
-            };
-        }),
-        null,
-        2,
-    );
-};
diff --git a/.core/manifest/templates/externals.hbs b/.core/manifest/templates/externals.hbs
deleted file mode 100644
index 196e5278..00000000
--- a/.core/manifest/templates/externals.hbs
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Generated by Reactium
- * DO NOT directly edit this file !!!!!!
- */
-import { isBrowserWindow } from '@atomic-reactor/reactium-sdk-core';
-
-if (isBrowserWindow()) {
-  {{#each externals}}
-  window['{{externalName}}'] = require('{{requirePath}}');
-  {{/each}}
-  {{#each externalAliases}}
-  window['{{defaultAlias}}'] = window['{{externalName}}'];
-  {{/each}}
-}
diff --git a/.core/manifest/templates/manifest.hbs b/.core/manifest/templates/manifest.hbs
deleted file mode 100644
index 2b059c48..00000000
--- a/.core/manifest/templates/manifest.hbs
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Generated by Reactium
- * DO NOT directly edit this file !!!!!!
- */
-import op from 'object-path';
-import _ from 'underscore';
-import { isBrowserWindow } from '@atomic-reactor/reactium-sdk-core';
-
-const deps = {};
-const reqs = {
-{{#each types}}
-    '{{name}}': {
-        {{#each domains}}
-            '{{domain}}': {
-                req: () => {
-                    return import('{{file}}');
-                },
-                file: '{{file}}',
-            },
-        {{/each}}
-    },
-{{/each}}
-};
-
-const manifest = {
-    get: () => {
-        const domainLoaders = {};
-        for (const [name, domains] of Object.entries(reqs)) {
-            const loaders = [];
-            for (const [domain, item] of Object.entries(domains)) {
-                loaders.push({
-                    name,
-                    domain,
-                    loader: () => new Promise((resolve, reject) => {
-                        try {
-                            item.req().then(module => {
-                                resolve({
-                                    name,
-                                    domain,
-                                    module,
-                                });
-                            });
-                        } catch (error) {
-                            const where = isBrowserWindow() ? ' in browser ' : ' on server ';
-                            console.error(`Error loading manifest resource "${item.file}" of type ${name} from domain ${domain}${where}`, error);
-                            resolve(false);
-                        }
-                    }),
-                });
-            }
-
-            op.set(domainLoaders, [name], loaders);
-        }
-
-        return domainLoaders;
-    },
-    list: () => {
-        return {{{manifest}}};
-    },
-}
-
-export default manifest;
diff --git a/.core/manifest/templates/umd.hbs b/.core/manifest/templates/umd.hbs
deleted file mode 100644
index f1c9f5a0..00000000
--- a/.core/manifest/templates/umd.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{{this}}}
diff --git a/.core/reactium-config.js b/.core/reactium-config.js
deleted file mode 100644
index b3c551ec..00000000
--- a/.core/reactium-config.js
+++ /dev/null
@@ -1,357 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const globby = require('./globby-patch');
-const rootPath = path.resolve(__dirname, '..');
-const gulpConfig = require('./gulp.config');
-
-const version = '4.1.12';
-
-const defaultLibraryExternals = {
-    axios: {
-        externalName: 'axios',
-        requirePath: 'axios',
-    },
-    classnames: {
-        externalName: 'classnames',
-        requirePath: 'classnames',
-    },
-    'copy-to-clipboard': {
-        externalName: 'copy-to-clipboard',
-        requirePath: 'copy-to-clipboard',
-    },
-
-    moment: {
-        externalName: 'moment',
-        requirePath: 'dayjs',
-    },
-
-    dayjs: {
-        externalName: 'dayjs',
-        requirePath: 'dayjs',
-    },
-
-    'object-path': {
-        externalName: 'object-path',
-        requirePath: 'object-path',
-    },
-    'prop-types': {
-        externalName: 'prop-types',
-        requirePath: 'prop-types',
-    },
-    react: {
-        externalName: 'react',
-        requirePath: 'react',
-        // to provide both es6 named exports and React default alias
-        defaultAlias: 'React',
-    },
-    'react-router-dom': {
-        externalName: 'react-router-dom',
-        requirePath: 'react-router-dom',
-    },
-    ReactDOM: {
-        externalName: 'react-dom',
-        requirePath: 'react-dom',
-        // to provide both es6 named exports and React default alias
-        defaultAlias: 'ReactDOM',
-    },
-    Reactium: {
-        externalName: '/reactium-core/sdk$/',
-        // relative to src/manifest.js
-        requirePath: 'reactium-core/sdk',
-        // to provide both es6 named exports and Reactium default alias
-        defaultAlias: 'Reactium',
-    },
-    semver: {
-        externalName: 'semver',
-        requirePath: 'semver',
-    },
-    'shallow-equals': {
-        externalName: 'shallow-equals',
-        requirePath: 'shallow-equals',
-    },
-    underscore: {
-        externalName: 'underscore',
-        requirePath: 'underscore',
-    },
-    uuid: {
-        externalName: 'uuid',
-        requirePath: 'uuid',
-    },
-    xss: {
-        externalName: 'xss',
-        requirePath: 'xss',
-    },
-};
-
-const defaultManifestConfig = {
-    patterns: [
-        {
-            name: 'allRoutes',
-            type: 'route',
-            pattern: /route.jsx?$/,
-        },
-        {
-            name: 'allServices',
-            type: 'services',
-            pattern: /services.jsx?$/,
-        },
-        {
-            name: 'allPlugins',
-            type: 'plugin',
-            pattern: /(plugin|zone).jsx?$/,
-        },
-        {
-            name: 'allHooks',
-            type: 'hooks',
-            pattern: /reactium-hooks.js$/,
-        },
-    ],
-    sourceMappings: [
-        {
-            from: 'src/app/',
-            to: '../src/app/',
-        },
-        {
-            from: '.core/',
-            to: 'reactium-core/',
-        },
-        {
-            from: 'reactium_modules/',
-            to: '../reactium_modules/',
-        },
-        {
-            node_modules: true,
-            ignore: /^((?!reactium-plugin).)*$/,
-        },
-    ],
-    pluginExternals: defaultLibraryExternals,
-    umd: {
-        defaultLibraryExternals,
-        patterns: [
-            {
-                name: 'allUmdEntries',
-                type: 'umd',
-                pattern: /umd.js$/,
-                ignore: /assets/,
-            },
-            {
-                name: 'allUmdConfig',
-                type: 'config',
-                pattern: /umd-config.json$/,
-                ignore: /assets/,
-                stripExtension: false,
-            },
-        ],
-        sourceMappings: [
-            {
-                from: 'src/',
-                to: path.resolve(rootPath, 'src') + '/',
-            },
-            {
-                from: 'reactium_modules/',
-                to: path.resolve(rootPath, 'reactium_modules') + '/',
-            },
-        ],
-        searchParams: {
-            extensions: /\.(js|json)$/,
-            exclude: [/\.ds_store/i, /\.core/i, /\.cli\//i, /src\/assets/],
-        },
-    },
-};
-
-const overrides = config => {
-    globby
-        .sync([
-            './manifest.config.override.js',
-            './node_modules/**/reactium-plugin/manifest.config.override.js',
-            './src/**/manifest.config.override.js',
-            './reactium_modules/**/manifest.config.override.js',
-        ])
-        .forEach(file => require(path.resolve(file))(config));
-    return config;
-};
-
-const manifestConfig = overrides(defaultManifestConfig);
-
-/**
- * Use liberally for additional core configuration.
- * @type {Object}
- */
-module.exports = {
-    version,
-    semver: '^3.0.0',
-    build: gulpConfig,
-    update: {
-        package: {
-            dependencies: {
-                remove: [
-                    '@babel/plugin-syntax-dynamic-import',
-                    '@babel/polyfill',
-                    'ajv',
-                    'beautify',
-                    'express-http-proxy',
-                    'htmltojsx',
-                    'js-beautify',
-                ],
-            },
-            devDependencies: {
-                remove: [
-                    '@atomic-reactor/cli',
-                    'atomic-reactor-cli',
-                    'babel-cli',
-                    'babel-core',
-                    'babel-preset-env',
-                    'babel-preset-react',
-                    'babel-preset-stage-2',
-                    'gulp-install',
-                    'gulp-csso',
-                    'nodemon',
-                    'run-sequence',
-                    'vinyl-source-stream',
-                    'webpack-visualizer-plugin',
-                ],
-            },
-            scripts: {
-                add: {
-                    build: 'npm-run-all build:*',
-                    'build:gulp': 'cross-env NODE_ENV=production gulp',
-                    'build:babel-core':
-                        'cross-env NODE_ENV=production babel .core --out-dir build/.core',
-                    'build:babel-reactium_modules':
-                        'cross-env NODE_ENV=production babel reactium_modules --out-dir build/reactium_modules',
-                    'build:babel-src':
-                        'cross-env NODE_ENV=production babel src --out-dir build/src',
-                    static: 'npm-run-all build:* && gulp static',
-                    local: 'gulp local',
-                    'local:ssr': 'gulp local:ssr',
-                },
-                remove: [
-                    'build',
-                    'build:gulp',
-                    'build:babel-core',
-                    'build:babel-reactium_modules',
-                    'build:babel-src',
-                    'local-fe-start',
-                    'local-fe:gulp',
-                    'local-fe:babel-node',
-                    'local-ssr-start',
-                    'local-ssr:gulp',
-                    'local-ssr:babel-node',
-                    'react-redux',
-                    'static:build',
-                ],
-            },
-            husky: {
-                remove: ['hooks'],
-            },
-        },
-        files: {
-            add: [
-                {
-                    overwrite: true,
-                    version: '>=3.1.0',
-                    destination: '/apidoc.json',
-                    source: '/tmp/update/apidoc.json',
-                },
-                {
-                    overwrite: true,
-                    version: '>=3.0.0',
-                    destination: '/Dockerfile',
-                    source: '/tmp/update/Dockerfile',
-                },
-                {
-                    overwrite: true,
-                    version: '>=2.3.16',
-                    destination: '/src/app/plugable/index.js',
-                    source: '/tmp/update/src/app/plugable/index.js',
-                },
-                {
-                    overwrite: false,
-                    version: '>=2.3.16',
-                    destination: '.stylelintrc',
-                    source: '/tmp/update/.stylelintrc',
-                },
-                {
-                    overwrite: true,
-                    version: '>=3.0.2',
-                    destination: '/.eslintrc',
-                    source: '/tmp/update/.eslintrc',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.0.19',
-                    destination: '/jest.config.js',
-                    source: '/tmp/update/jest.config.js',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.1.0',
-                    destination: '/.gettext.json',
-                    source: '/tmp/update/.gettext.json',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.1.0',
-                    destination: '/src/reactium-translations',
-                    source: '/tmp/update/src/reactium-translations',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.2.1',
-                    destination: '/.flowconfig',
-                    source: '/tmp/update/.flowconfig',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.2.2',
-                    destination: '/.huskyrc',
-                    source: '/tmp/update/.huskyrc',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.4.2',
-                    destination: '/src/app/api/reactium-hooks.js',
-                    source: '/tmp/update/src/app/api/reactium-hooks.js',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.4.2',
-                    destination: '/src/app/api/index.js',
-                    source: '/tmp/update/src/app/api/index.js',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.4.2',
-                    destination: '/src/app/api/domain.js',
-                    source: '/tmp/update/src/app/api/domain.js',
-                },
-                {
-                    overwrite: false,
-                    version: '>=3.4.2',
-                    destination: '/.npmrc',
-                    source: '/tmp/update/.npmrc',
-                },
-                {
-                    overwrite: true,
-                    version: '>=3.5.1',
-                    destination: '/src/sw',
-                    source: '/tmp/update/src/sw',
-                },
-                {
-                    overwrite: true,
-                    version: '>=3.5.1',
-                    destination: '/src/app/main.js',
-                    source: '/tmp/update/src/app/main.js',
-                },
-                {
-                    overwrite: true,
-                    version: '>=3.6.0',
-                    destination: '/.dockerignore',
-                    source: '/tmp/update/.dockerignore',
-                },
-            ],
-            remove: [],
-        },
-    },
-    manifest: manifestConfig,
-};
diff --git a/.core/reactium.log.js b/.core/reactium.log.js
deleted file mode 100644
index a74664c3..00000000
--- a/.core/reactium.log.js
+++ /dev/null
@@ -1,76 +0,0 @@
-const op = require('object-path');
-const dayjs = require('dayjs');
-const chalk = require('chalk');
-
-if (!global.REACTIUM_LOG_WRAPPED) {
-    global.REACTIUM_LOG_WRAPPED = true;
-    global.LOG_LEVELS = {
-        DEBUG: 1000,
-        INFO: 500,
-        BOOT: 0,
-        WARN: -500,
-        ERROR: -1000,
-    };
-
-    global.LEVEL_FUNCTIONS = {
-        DEBUG: 'log',
-        INFO: 'log',
-        BOOT: 'log',
-        WARN: 'warn',
-        ERROR: 'error',
-    };
-
-    global.LOG_LEVEL_STRING = op.get(process.env, 'LOG_LEVEL', 'BOOT');
-    global.LOG_LEVEL = op.get(LOG_LEVELS, LOG_LEVEL_STRING, LOG_LEVELS.BOOT);
-
-    const APP_NAME = op.get(process.env, 'APP_NAME', 'Reactium');
-    const LOG_THRESHOLD = op.get(
-        LOG_LEVELS,
-        [LOG_LEVEL_STRING],
-        LOG_LEVELS.BOOT,
-    );
-
-    const reactiumConsole = global.console;
-    for (const [LEVEL, THRESHOLD] of Object.entries(LOG_LEVELS)) {
-        global[LEVEL] = (...args) => {
-            if (
-                process.env.NO_LOGGING === 'true' ||
-                THRESHOLD > LOG_THRESHOLD
-            ) {
-                return;
-            }
-
-            const _W = THRESHOLD <= LOG_LEVELS.WARN;
-            const _E = THRESHOLD <= LOG_LEVELS.ERROR;
-            let color = _W ? chalk.yellow.bold : chalk.cyan;
-            color = _E ? chalk.red.bold : color;
-
-            const time = `[${chalk.magenta(dayjs().format('HH:mm:ss'))}]`;
-            let name = `${color(String(APP_NAME))}`;
-            name = _E ? `%${name}%` : _W ? `!${name}!` : `[${name}]`;
-
-            const [first, ...remaining] = args;
-            const logMethod =
-                op.get(
-                    reactiumConsole,
-                    [op.get(LEVEL_FUNCTIONS, [LEVEL], 'log')],
-                    reactiumConsole.log,
-                ) || reactiumConsole.log;
-
-            if (typeof first === 'string') {
-                logMethod(`${time} ${name} ${first}`, ...remaining);
-            } else {
-                logMethod(time, name, ...args);
-            }
-        };
-    }
-
-    global.console = {
-        log: global.BOOT,
-        warn: global.WARN,
-        error: global.ERROR,
-        info: global.BOOT,
-    };
-
-    global.LOG = global.BOOT;
-}
diff --git a/.core/sdk/i18n/index.js b/.core/sdk/i18n/index.js
deleted file mode 100644
index be4e19d5..00000000
--- a/.core/sdk/i18n/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import SDK, { isBrowserWindow } from '@atomic-reactor/reactium-sdk-core';
-import Jed from 'jed';
-
-const { Hook } = SDK;
-
-class i18n {
-    locale = 'en_US';
-
-    constructor() {
-        this.setDefaultLocale();
-    }
-
-    setDefaultLocale = async () => {
-        if (!isBrowserWindow()) this.locale = 'en_US';
-        else {
-            const langRaw =
-                window.navigator.userLanguage || window.navigator.language;
-            const [lang, location] = langRaw.replace('-', '_').split('_');
-            this.locale = `${lang}_${location}`;
-        }
-
-        return Hook.run('set-default-locale', this);
-    };
-
-    getStrings() {
-        // TODO: ssr version
-        const defaultStrings = { strings: JSON.stringify({}) };
-
-        try {
-            if (isBrowserWindow()) {
-                const context = require.context(
-                    'babel-loader!@atomic-reactor/webpack-po-loader!reactium-translations',
-                    true,
-                    /.pot?$/,
-                );
-
-                if (
-                    context
-                        .keys()
-                        .find(
-                            translation =>
-                                translation === `./${this.locale}.po`,
-                        )
-                ) {
-                    return context(`./${this.locale}.po`);
-                }
-
-                return context('./template.pot');
-            } else {
-                return defaultStrings;
-            }
-        } catch (error) {
-            return defaultStrings;
-        }
-    }
-
-    getJed() {
-        return new Jed(JSON.parse(this.getStrings().strings));
-    }
-}
-
-export default new i18n();
diff --git a/.core/sdk/index.js b/.core/sdk/index.js
deleted file mode 100644
index ba50b7b5..00000000
--- a/.core/sdk/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import {
-    Hook,
-    Enums,
-    Component,
-    Server,
-    ZoneRegistry as Zone,
-    Plugin,
-    Utils,
-    Handle,
-    Pulse,
-    Prefs,
-    Cache,
-} from '@atomic-reactor/reactium-sdk-core';
-
-import { AppContext } from './named-exports';
-
-export * from '@atomic-reactor/reactium-sdk-core';
-export * from './named-exports';
-
-const SDK = {
-    Hook,
-    Enums,
-    Component,
-    Server,
-    Zone,
-    Plugin,
-    Utils,
-    Handle,
-    Pulse,
-    Prefs,
-    Cache,
-    AppContext,
-};
-
-const apiHandler = {
-    get(SDK, prop) {
-        if (prop in SDK) return SDK[prop];
-        if (SDK.API) {
-            if (prop in SDK.API) return SDK.API[prop];
-            if (SDK.API.Actinium && prop in SDK.API.Actinium)
-                return SDK.API.Actinium[prop];
-        }
-    },
-
-    set(SDK, prop, value) {
-        // optionally protect SDK props by hook
-        const { ok = true } = SDK.Hook.runSync(
-            'reactium-sdk-set-prop',
-            prop,
-            value,
-        );
-        if (ok) {
-            SDK[prop] = value;
-        }
-
-        return true;
-    },
-};
-
-export default new Proxy(SDK, apiHandler);
diff --git a/.core/sdk/named-exports/app-context.js b/.core/sdk/named-exports/app-context.js
deleted file mode 100644
index 869688e9..00000000
--- a/.core/sdk/named-exports/app-context.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import { Registry, registryFactory } from '@atomic-reactor/reactium-sdk-core';
-
-/**
- * @api {Object} Reactium.AppContext Reactium.AppContext
- * @apiGroup Reactium
- * @apiName Reactium.AppContext
- * @apiDescription A Registry used for top-level React wrapping context provider, such as Redux or Theme. See [Registry](#api-Reactium-Registry) for full details on Registry methods / properties.
- * Use this to register a React context provider, as well as any properties that are passed to the context.
- *
- * @apiParam {Getter} list get list of most recent (or highest order) registered objects, filtering out unregistered or banned objects.
- * @apiParam {Method} register `reg.register(id,data)` pass an identifier and a data object to register the object. The identifier will be added if it is not already registered (but protected) and not banned.
- * @apiParam (register) {String} id the id of the data object to be registered
- * @apiParam (register) {Provider} data the object to be registered
- * @apiParam (Provider) {ContextProvider} provider the context provider. This provider must be a React component that will render children.
- * @apiParam {Method} unregister `reg.unregister(id)` pass an identifier to unregister an object. When in HISTORY mode (default), previous registration will be retained, but the object will not be listed. In CLEAN mode, the previous registrations will be removed, unless protected.
- * @apiExample reactium-hooks.js
-// Example of Registering Material UI Theme
-import Reactium from 'reactium-core/sdk';
-import { createTheme, ThemeProvider } from '@mui/material/styles';
-import { purple } from '@mui/material/colors';
-
-(async () => {
-    await Reactium.Plugin.register('MUI-Theme');
-
-    await Reactium.Hook.register('app-context-provider', async () => {
-        const theme = createTheme({
-            palette: {
-                primary: {
-                    // Purple and green play nicely together.
-                    main: purple[500],
-                },
-                secondary: {
-                    // This is green.A700 as hex.
-                    main: '#11cb5f',
-                },
-            },
-        });
-
-        Reactium.AppContext.register('ThemeProvider', {
-            // provider required
-            provider: ThemeProvider,
-
-            // remainder are optional props passed to your provider, in this case the theme
-            theme,
-        });
-    })
-})();
- */
-export const AppContext = registryFactory(
-    'AppContext',
-    'name',
-    Registry.MODES.CLEAN,
-);
-
-const Provider = ({ children }) => {
-    return children;
-};
-
-export const AppContexts = ({ children }) => {
-    const [, update] = useState(new Date());
-    useEffect(() => {
-        return AppContext.subscribe(() => update(new Date()));
-    }, []);
-
-    return AppContext.list.reduce(
-        (content, { name, order, provider: ContextProvider, ...props }) => {
-            return (
-                <ContextProvider key={`provider-${name}`} {...props}>
-                    {content}
-                </ContextProvider>
-            );
-        },
-        <Provider>{children}</Provider>,
-    );
-};
diff --git a/.core/sdk/named-exports/capability.js b/.core/sdk/named-exports/capability.js
deleted file mode 100644
index 76edf5ac..00000000
--- a/.core/sdk/named-exports/capability.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import { useAsyncEffect } from '@atomic-reactor/reactium-sdk-core';
-import { useRef, useState, useEffect } from 'react';
-import _ from 'underscore';
-
-/**
- * @api {ReactHook} useCapabilityCheck(capabilities,strict) useCapabilityCheck()
- * @apiDescription React hook to check a list of capabilities. Uses Reactium.Capability.check().
- * @apiParam {String} capabilities array of 1 or more capabilities
- * @apiParam {Boolean} [strict=true] when true all capabilities must be allowed for current user
- * @apiName useCapabilityCheck
- * @apiGroup ReactHook
- */
-export const useCapabilityCheck = (capabilities, strict = true) => {
-    const allowedRef = useRef(false);
-    const [, update] = useState(new Date());
-    const caps = _.uniq(_.compact(_.flatten([capabilities])));
-    const { default: SDK } = require('reactium-core/sdk');
-
-    useAsyncEffect(
-        async isMounted => {
-            allowedRef.current = false;
-            if (caps.length < 1) {
-                allowedRef.current = true;
-            } else {
-                allowedRef.current = await SDK.Capability.check(caps);
-            }
-
-            if (isMounted()) update(new Date());
-        },
-        [caps.sort().join(''), strict],
-    );
-
-    return allowedRef.current;
-};
-
-/**
- * @api {ReactHook} useCapability(capability) useCapability()
- * @apiDescription React hook to get capability object.
- * @apiParam {String} capability the name/tag of the capability
- * @apiName useCapability
- * @apiGroup ReactHook
- */
-export const useCapability = capability => {
-    const ref = useRef({});
-    const [, update] = useState(new Date());
-    const updateCapRef = cap => {
-        ref.current = cap;
-        update(new Date());
-    };
-    const { default: SDK } = require('reactium-core/sdk');
-
-    useAsyncEffect(
-        async isMounted => {
-            const cap = await SDK.Capability.get(capability);
-            if (isMounted()) updateCapRef(cap);
-        },
-        [capability],
-    );
-
-    return ref.current;
-};
diff --git a/.core/sdk/named-exports/hookable-component.js b/.core/sdk/named-exports/hookable-component.js
deleted file mode 100644
index 6ba43115..00000000
--- a/.core/sdk/named-exports/hookable-component.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import { useHookComponent } from '@atomic-reactor/reactium-sdk-core';
-
-export const hookableComponent = name => props => {
-    const Component = useHookComponent(name);
-    return <Component {...props} />;
-};
diff --git a/.core/sdk/named-exports/i18n.js b/.core/sdk/named-exports/i18n.js
deleted file mode 100644
index 8eb7b33a..00000000
--- a/.core/sdk/named-exports/i18n.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import i18n from '../i18n';
-
-/**
- * @api {Function} __(text) __()
- * @apiDescription Wrap this around string literals to make them translateable with gettext Poedit utility.
- Run `arcli i18n` to extract strings to `src/reactium-translations/template.pot` by default.
- * @apiName __
- * @apiParam {StringLiteral} text the text to be translated. Important: this should not be a variable. It must be a string literal, or
- `arcli i18n` command will not be able to locate the string. This string may not be an ES6 template literal.
- * @apiGroup Translation
- * @apiExample Usage
-import React from 'react';
-import { __ } = 'reactium-core/sdk';
-
-export default () => {
-    return (
-        <div>{__('My Translatable string.')}</div>
-    );
-};
- */
-export const __ = (...params) => i18n.getJed().gettext(...params);
-
-/**
- * @api {Function} _n(singular,plural,count) _n()
- * @apiDescription Wrap this around string literals to make them translateable with gettext Poedit utility.
- Run `arcli i18n` to extract strings to `src/reactium-translations/template.pot` by default.
- * @apiName _n
- * @apiParam {StringLiteral} singular the singular form text to be translated. Important: this should not be a variable. It must be a string literal, or
- `arcli i18n` command will not be able to locate the string. This string may not be an ES6 template literal.
- * @apiParam {StringLiteral} plural the plural form text to be translated. Important: this should not be a variable. It must be a string literal, or
- `arcli i18n` command will not be able to locate the string. This string may not be an ES6 template literal.
- * @apiParam {Number} count the number related to singular or plural string
- * @apiGroup Translation
- * @apiExample Usage
-import React from 'react';
-import { _n } = 'reactium-core/sdk';
-
-export default props => {
-    const count = props.count;
-    // singular / plural translation
-    const label = _n('%s thing', '%s things', count).replace('%s', count);
-    return (
-        <div>{label}</div>
-    );
-};
- */
-export const _n = (...params) => i18n.getJed().ngettext(...params);
diff --git a/.core/sdk/named-exports/index.js b/.core/sdk/named-exports/index.js
deleted file mode 100644
index 37d87ef4..00000000
--- a/.core/sdk/named-exports/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export * from './roles';
-export * from './capability';
-export * from './setting';
-export * from './window';
-export * from './i18n';
-export * from './routing';
-export * from './hookable-component';
-export * from './app-context';
diff --git a/.core/sdk/named-exports/roles.js b/.core/sdk/named-exports/roles.js
deleted file mode 100644
index 4995259a..00000000
--- a/.core/sdk/named-exports/roles.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { useRef, useState } from 'react';
-import { useAsyncEffect } from '@atomic-reactor/reactium-sdk-core';
-import uuid from 'uuid/v4';
-
-/**
- * @api {ReactHook} useRoles(search) useRoles()
- * @apiDescription React hook to get roles object. If search is provided, will retrieve a specific role.
- * @apiParam {String} [search] Name, level or object id of the roles to retrieve. If not provide, an object will all roles will be returned.
- * @apiName useRoles
- * @apiGroup ReactHook
- */
-export const useRoles = search => {
-    const ref = useRef({});
-    const [, update] = useState(uuid());
-    const setRoles = roles => {
-        ref.current = roles;
-        update(uuid());
-    };
-    const { default: SDK } = require('reactium-core/sdk');
-
-    useAsyncEffect(
-        async isMounted => {
-            const roles = await SDK.Roles.get(search);
-            if (isMounted()) setRoles(roles);
-        },
-        [search],
-    );
-
-    return ref.current;
-};
diff --git a/.core/sdk/named-exports/routing.js b/.core/sdk/named-exports/routing.js
deleted file mode 100644
index 27eeced8..00000000
--- a/.core/sdk/named-exports/routing.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import uuid from 'uuid/v4';
-import { useEffect } from 'react';
-import Routing from '../routing';
-import { useSyncState } from '@atomic-reactor/reactium-sdk-core';
-
-export const useRouting = () => {
-    const routing = useSyncState({
-        current: Routing.currentRoute,
-        previous: Routing.previousRoute,
-        active: Routing.currentRoute,
-        transitionState: Routing.transitionState || 'READY',
-        transitionStates: Routing.transitionStates || [],
-        changes: Routing.changes || {},
-    });
-
-    const handler = (updates, forceRefresh = true) => {
-        routing.set(updates, undefined, forceRefresh);
-    };
-
-    const refreshFromRouting = () => {
-        const {
-            active: activeLabel = 'current',
-            currentRoute,
-            previousRoute,
-            transitionState = 'READY',
-            transitionStates = [],
-            changes,
-        } = Routing;
-
-        const active =
-            activeLabel === 'previous' ? previousRoute : currentRoute;
-
-        handler(
-            {
-                current: currentRoute,
-                previous: previousRoute,
-                active,
-                transitionState,
-                transitionStates,
-                changes,
-            },
-            false,
-        );
-    };
-
-    useEffect(() => {
-        const id = uuid();
-        Routing.routeListeners.register(id, { handler });
-        refreshFromRouting();
-
-        return () => {
-            Routing.routeListeners.unregister(id);
-        };
-    }, []);
-
-    return routing;
-};
diff --git a/.core/sdk/named-exports/setting.js b/.core/sdk/named-exports/setting.js
deleted file mode 100644
index 526af1fc..00000000
--- a/.core/sdk/named-exports/setting.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import { useRef, useState } from 'react';
-import { useCapabilityCheck } from './capability';
-import { useAsyncEffect } from '@atomic-reactor/reactium-sdk-core';
-
-/**
- * @api {ReactHook} useSettingGroup(group) useSettingGroup()
- * @apiVersion 3.2.1
- * @apiDescription Get and set a group of Actinium settings.
- * @apiParam {String} group the setting group id
- * @apiName useSettingGroup
- * @apiGroup ReactHook
- * @apiExample Usage
-import React from 'react';
-import { useSettingGroup } from 'reactium-core/sdk';
-import op from 'object-path';
-
-export default () => {
-    const { canGet, canSet, settingGroup, setSettingGroup } = useSettingGroup('MySettings');
-
-    // Set MySetting.foo = 'bar' on click
-    return (
-        <div>
-            {canGet && <span>Foo Setting: {op.get(settingGroup, 'foo')}</span>}
-
-            <button disabled={!canSet} onClick={() => setSettingGroup({
-                ...settingGroup,
-                foo: 'bar',
-            })}>Update Setting</button>
-        </div>
-    )
-}
-
- * @apiExample Returns
-{
-    canGet, // Boolean, if current user is allowed to get this setting group
-    canSet, // Boolean, if current user is allowed to set this setting group
-    settingGroup, // setting group object
-    setSettingGroup, // wrapper around Reactium.Setting.set(), will trigger optimistic update and rerender on response
-}
- */
-export const useSettingGroup = group => {
-    const canSet = useCapabilityCheck(
-        ['Setting.create', 'Setting.update', `setting.${group}-set`],
-        false,
-    );
-    const canGet = useCapabilityCheck(
-        ['Setting.retrieve', `setting.${group}-get`],
-        false,
-    );
-
-    const settingRef = useRef({});
-
-    const [loading, setLoading] = useState(true);
-    const [getter, updateGetter] = useState(1);
-    const refresh = () => {
-        updateGetter(getter + 1);
-    };
-
-    const { default: SDK } = require('reactium-core/sdk');
-
-    const updateSettingRef = settingGroup => {
-        settingRef.current = settingGroup;
-        refresh();
-    };
-
-    const setSettingGroup = async (settingGroup, setPublic = false) => {
-        if (canSet) {
-            updateSettingRef(settingGroup);
-            setLoading(true);
-            const settings = await SDK.Setting.set(
-                group,
-                settingGroup,
-                setPublic,
-            );
-            setLoading(false);
-            return settings;
-        } else {
-            throw new Error(
-                'Unable to update setting %s. Not permitted.',
-            ).replace('%s', group);
-        }
-    };
-
-    useAsyncEffect(
-        async isMounted => {
-            if (group && canGet) {
-                const settingGroup = await SDK.Setting.get(group);
-                if (isMounted()) {
-                    updateSettingRef(settingGroup);
-                    setLoading(false);
-                }
-            }
-        },
-        [canGet, canSet, group],
-    );
-
-    return {
-        canGet,
-        canSet,
-        settingGroup: settingRef.current,
-        setSettingGroup,
-        loading,
-    };
-};
diff --git a/.core/sdk/named-exports/window.js b/.core/sdk/named-exports/window.js
deleted file mode 100644
index 90bd24d5..00000000
--- a/.core/sdk/named-exports/window.js
+++ /dev/null
@@ -1,218 +0,0 @@
-import { Context } from 'reactium-core/components/WindowProvider';
-import { useContext, useEffect, useState, useRef } from 'react';
-import SDK, { breakpoints, isWindow } from '@atomic-reactor/reactium-sdk-core';
-import _ from 'underscore';
-import op from 'object-path';
-
-const { Utils } = SDK;
-
-/**
- * @api {ReactHook} useWindow() useWindow()
- * @apiDescription React hook which resolves to the browser or electron window
- when run in normal context or in the Reactium toolkit. Otherwise will return `undefined`.
- This is important particularly when you need to inspect the window inside the `react-frame-component` (`FrameContextConsumer`)
- which sandboxes your component withing the toolkit.
- Your component will automatically be rendered inside the WindowProvider, which will provide the correct `window` and `document`
- objects. See `useWindowSize()` for the most important use case.
- @apiExample BrowserComponent.js
-import Reactium, { useWindow } from 'reactium-core/sdk';
-import React, { useEffect } from 'react';
-import op from 'object-path';
-
-export default () => {
-    const window = useWindow();
-    const [width, setWidth] = op.get(window, 'innerWidth', 1);
-
-    useEffect(() => {
-        const isBrowser = Reactium.Utils.isWindow(window);
-        const updateWidth = () => setWidth(window.innerWidth);
-
-        // safe for server-side rendering, which has no window
-        // when used in toolkit Frame, will use correct window object
-        if (isBrowser) {
-            window.addEventListener('resize', updateWidth)
-            return () => window.removeEventListener('resize', updateWidth);
-        }
-    }, []);
-};
-
- // import WindowProvider from 'reactium-core/components/WindowProvider';
-
- * @apiName useWindow
- * @apiGroup ReactHook
- *
- */
-export const useWindow = () => {
-    const { iWindow } = useContext(Context);
-    return iWindow;
-};
-
-/**
- * @api {ReactHook} useDocument() useDocument()
- * @apiDescription Serves same use-case as `useWindow()`, but provides context aware `document` object or `undefined`, that can be
- used normally as well as in the `react-frame-component` within the toolkit.
- * @apiName useDocument
- * @apiGroup ReactHook
- */
-export const useDocument = () => {
-    const { iDocument } = useContext(Context);
-    return iDocument;
-};
-
-/**
- * @api {ReactHook} useBreakpoints() useBreakpoints()
- * @apiDescription Provides an object describing the maximum width for each breakpoint used in the Reactium grid styles.
- When using the out of the box scss styles in Reactium, a grid system is in place, and is defined by an
- overridable sass map `$breakpoints-max`, defined by default as:
-
- ```
- $breakpoints-max: ('xs': 640, 'sm': 990, 'md': 1280, 'lg': 1440,'xl': 1600) !default;
- ```
-
- These breakpoint maximums are automatically encoded and added to the stylesheet as `:after` psuedo-element `content` property, which can
- be loaded in the browser and used for in browser responsive behavior. Potentially, this can mean only having to manage your
- responsive breakpoints in one place (the stylesheet).
- * @apiName useBreakpoints
- * @apiGroup ReactHook
- *
- */
-export const useBreakpoints = () => {
-    const iWindow = useWindow();
-    const iDocument = useDocument();
-    return breakpoints(iWindow, iDocument);
-};
-
-/**
- * @api {ReactHook} useBreakpoint(width) useBreakpoint()
- * @apiDescription Returns string representing the breakpoint size for a given width.
-
- When using the out of the box scss styles in Reactium, a grid system is in place, and is defined by an
- overridable sass map `$breakpoints-max`, defined by default as:
-
- ```
- $breakpoints-max: ('xs': 640, 'sm': 990, 'md': 1280, 'lg': 1440,'xl': 1600) !default;
- ```
- * @apiParam {Number} width the width to check the breakpoint for. Example for the default `$breakpoints-max`
- providing a width of 640 or less will return `xs`, 990 or less will return `sm` and so on.
- * @apiName useBreakpoint
- * @apiGroup ReactHook
- */
-export const useBreakpoint = width => {
-    const iWindow = useWindow();
-    const iDocument = useDocument();
-
-    return breakpoint(width, iWindow, iDocument);
-};
-
-/**
- * @api {ReactHook} useWindowSize(params) useWindowSize()
- * @apiDescription Returns window `innerWidth` number, `innerHeight` number, and current `breakpoint`, and updates on window resizes.
- When using the out of the box scss styles in Reactium, a grid system is in place, and is defined by an
- overridable sass map `$breakpoints-max`, defined by default as:
-
- ```
- $breakpoints-max: ('xs': 640, 'sm': 990, 'md': 1280, 'lg': 1440,'xl': 1600) !default;
- ```
- * @apiParam {Object} [params] `defaultWidth`, `defaultHeight`, and debounce `delay` properties.
- * @apiParam {Number} [params.defaultWidth=1] Default width returned by the hook when window object is `undefined`.
- * @apiParam {Number} [params.defaultHeight=1] Default height returned by the hook when window object is `undefined`.
- * @apiParam {Number} [params.delay=0] Debounce delay to throttle many window resize events, to prevent unnecessary rerenders of
- your component using this hook.
- * @apiName useWindowSize
- * @apiGroup ReactHook
- * @apiExample ResponsiveComponent.js
- import React from 'react';
- import { useWindowSize } from 'reactium-core/sdk';
-
- const Mobile = () => {
-    return (
-        <div>I'm a mobile component</div>
-    );
- }
-
- const Tablet = () => {
-    return (
-        <div>I'm a tablet component</div>
-    );
- }
-
- const Desktop = () => {
-    return (
-        <div>I'm a desktop component</div>
-    );
- }
-
- export () => {
-    const { breakpoint } = useWindowSize();
-
-    switch(breakpoint) {
-        case 'xl':
-        case 'lg':
-        return <Desktop />;
-
-        case 'md':
-        return <Tablet />;
-
-        case 'xs':
-        case 'sm':
-        default:
-        return <Mobile />;
-    }
- };
- *
- */
-export const useWindowSize = (params = {}) => {
-    const iWin = useWindow();
-    const iDoc = useWindow();
-    const hasWindow = isWindow(iWin);
-
-    let { defaultWidth = 1, defaultHeight = 1, delay = 0 } = params;
-
-    const getSize = () => {
-        return hasWindow
-            ? {
-                  width: iWin.innerWidth,
-                  height: iWin.innerHeight,
-                  breakpoint: breakpoint(iWin.innerWidth, iWin, iDoc),
-              }
-            : {
-                  width: defaultWidth,
-                  height: defaultHeight,
-                  breakpoint: breakpoint(defaultWidth),
-              };
-    };
-
-    const sizeRef = useRef(getSize());
-    const [, update] = useState(sizeRef.current);
-
-    const setWindowSize = _.debounce(() => {
-        sizeRef.current = { ...sizeRef.current, ...getSize() };
-        update(sizeRef.current);
-    }, delay);
-
-    const setScrollPosition = _.debounce(() => {
-        sizeRef.current = {
-            ...sizeRef.current,
-            scrollX: iWin.scrollX,
-            scrollY: iWin.scrollY,
-        };
-
-        update(sizeRef.current);
-    }, delay);
-
-    useEffect(() => {
-        if (!hasWindow) {
-            return;
-        }
-
-        iWin.addEventListener('resize', setWindowSize);
-        iWin.addEventListener('scroll', setScrollPosition);
-
-        return () => {
-            iWin.removeEventListener('resize', setWindowSize);
-            iWin.removeEventListener('scroll', setScrollPosition);
-        };
-    }, [delay, defaultWidth, defaultHeight]);
-
-    return sizeRef.current;
-};
diff --git a/.core/sdk/reactium-boot.js b/.core/sdk/reactium-boot.js
deleted file mode 100644
index e9417bb9..00000000
--- a/.core/sdk/reactium-boot.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const Enums = ReactiumBoot.Enums;
-Enums.priority.core = Enums.priority.highest - 1000;
-
-ReactiumBoot.Hook.register(
-    'sdk-init',
-    async () => {
-        const { default: Routing } = await import('./routing');
-        ReactiumBoot.Routing = Routing;
-    },
-    Enums.priority.core,
-    'REACTIUM_CORE_Routing',
-);
-
-ReactiumBoot.Hook.register(
-    'sdk-init',
-    async () => {
-        const { default: i18n } = await import('./i18n');
-        ReactiumBoot.i18n = i18n;
-    },
-    Enums.priority.core,
-    'REACTIUM_CORE_i18n',
-);
diff --git a/.core/sdk/reactium-hooks.js b/.core/sdk/reactium-hooks.js
deleted file mode 100644
index 36c95332..00000000
--- a/.core/sdk/reactium-hooks.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import Reactium, { Hook, Enums } from 'reactium-core/sdk';
-
-Enums.priority.core = Enums.priority.highest - 1000;
-
-Reactium.Hook.register(
-    'sdk-init',
-    async () => {
-        const { default: Routing } = await import('./routing');
-        Reactium.Routing = Routing;
-    },
-    Enums.priority.core,
-    'REACTIUM_CORE_Routing',
-);
-
-Reactium.Hook.register(
-    'sdk-init',
-    async () => {
-        const { default: i18n } = await import('./i18n');
-        Reactium.i18n = i18n;
-    },
-    Enums.priority.core,
-    'REACTIUM_CORE_i18n',
-);
diff --git a/.core/sdk/routing/index.js b/.core/sdk/routing/index.js
deleted file mode 100644
index c61759f6..00000000
--- a/.core/sdk/routing/index.js
+++ /dev/null
@@ -1,478 +0,0 @@
-import SDK, {
-    Handle,
-    ReactiumSyncState,
-    useHookComponent,
-    isServerWindow,
-    isBrowserWindow,
-    isElectronWindow,
-} from '@atomic-reactor/reactium-sdk-core';
-import uuid from 'uuid/v4';
-import _ from 'underscore';
-import op from 'object-path';
-import { createBrowserHistory, createMemoryHistory } from 'history';
-import queryString from 'querystring-browser';
-import { matchPath } from 'react-router';
-import React from 'react';
-
-const { Hook } = SDK;
-
-const createHistory = isElectronWindow()
-    ? createMemoryHistory
-    : createBrowserHistory;
-
-const NotFoundWrapper = props => {
-    const NotFound = useHookComponent('NotFound');
-    return <NotFound {...props} />;
-};
-
-const defaultTransitionStates = [
-    {
-        state: 'EXITING',
-        active: 'previous',
-    },
-    {
-        state: 'LOADING',
-        active: 'current',
-    },
-    {
-        state: 'ENTERING',
-        active: 'current',
-    },
-    {
-        state: 'READY',
-        active: 'current',
-    },
-];
-
-class Routing {
-    loaded = false;
-    updated = null;
-    routesRegistry = new SDK.Utils.Registry(
-        'Routing',
-        'id',
-        SDK.Utils.Registry.MODES.CLEAN,
-    );
-    routeListeners = new SDK.Utils.Registry(
-        'RoutingListeners',
-        'id',
-        SDK.Utils.Registry.MODES.CLEAN,
-    );
-
-    active = 'current';
-    currentRoute = null;
-    previousRoute = null;
-    subscriptions = {};
-
-    constructor() {
-        if (isBrowserWindow()) {
-            this.historyObj = createHistory();
-            this.historyObj.listen(this.setCurrentRoute);
-        }
-    }
-
-    set history(histObj) {
-        this.historyObj = histObj;
-    }
-
-    get history() {
-        if (!isBrowserWindow()) return {};
-        return this.historyObj;
-    }
-
-    get routes() {
-        return _.sortBy(
-            _.sortBy(this.routesRegistry.list, 'path').reverse(),
-            'order',
-        );
-    }
-
-    handleFrontEndDataLoading = async updates => {
-        if (
-            Boolean(
-                [
-                    'changes.pathChanged',
-                    'changes.routeChanged',
-                    'changes.searchChanged',
-                ].filter(path => Boolean(op.get(updates, path, false))).length,
-            )
-        ) {
-            // remove any handles from previous routes
-            Object.entries(Handle.handles)
-                .filter(([, handle]) => {
-                    return (
-                        op.get(handle, 'routeId') ===
-                        op.get(updates, 'previous.match.route.id', false)
-                    );
-                })
-                .filter(
-                    ([id]) =>
-                        Handle.get(id) &&
-                        op.get(Handle.get(id), 'persistHandle', false) !== true,
-                )
-                .forEach(([id]) => {
-                    Handle.unregister(id);
-                });
-
-            const loadState = op.get(
-                updates,
-                'active.match.route.component.loadState',
-                op.get(updates, 'active.match.route.loadState'),
-            );
-
-            const handleId = op.get(
-                updates,
-                'active.match.route.component.handleId',
-                op.get(updates, 'active.match.route.handleId', uuid()),
-            );
-
-            if (typeof loadState === 'function') {
-                try {
-                    const persistHandle = op.get(
-                        updates,
-                        'active.match.route.persistHandle',
-                        false,
-                    );
-                    if (!persistHandle || !Handle.get(handleId)) {
-                        Handle.register(handleId, {
-                            routeId: op.get(updates, 'active.match.route.id'),
-                            persistHandle,
-                            current: new ReactiumSyncState({}),
-                        });
-                    }
-
-                    const route = op.get(updates, 'active.match.route', {});
-
-                    // for consistency
-                    op.set(route, 'handleId', handleId);
-                    if (route.component)
-                        op.set(route, 'component.handleId', handleId);
-
-                    const params = op.get(updates, 'active.params', {});
-                    const search = op.get(updates, 'active.search', {});
-                    const content = await loadState({ route, params, search });
-                    const handle = op.get(Handle.handles, [
-                        handleId,
-                        'current',
-                    ]);
-                    if (handle) handle.set(content);
-                } catch (error) {
-                    const handle = op.get(Handle.handles, [
-                        handleId,
-                        'current',
-                    ]);
-                    if (handle) handle.set({ error });
-                    console.error('Error loading content for component', error);
-                }
-            }
-        }
-    };
-
-    setCurrentRoute = async location => {
-        const previous = this.currentRoute;
-        const current = {
-            location,
-        };
-
-        const matches = this.routes
-            .map(route => ({
-                route,
-                match: matchPath(location.pathname, route),
-            }))
-            .filter(({ match }) => match);
-
-        let [match] = matches;
-
-        const notFound = !match;
-
-        if (!match)
-            match = {
-                route: this.routes.find(({ id }) => id === 'NotFound'),
-                match: undefined,
-            };
-
-        op.set(current, 'match', match);
-        op.set(current, 'params', op.get(match, 'match.params', {}));
-        op.set(
-            current,
-            'search',
-            queryString.parse(
-                op.get(current, 'location.search', '').replace(/^\?/, ''),
-            ),
-        );
-        const changes = {
-            routeChanged:
-                op.get(previous, 'match.route.id') !==
-                op.get(match, 'route.id'),
-            pathChanged:
-                op.get(previous, 'location.pathname') !==
-                op.get(current, 'location.pathname'),
-            searchChanged:
-                op.get(previous, 'location.search', '') !==
-                op.get(current, 'location.search', ''),
-            notFound,
-            transitionStateChanged: false,
-            setCurrentRoute: 'setCurrentRoute',
-        };
-
-        this.currentRoute = current;
-        this.previousRoute = previous;
-        this.setupTransitions();
-
-        const active =
-            this.active === 'current' ? this.currentRoute : this.previousRoute;
-
-        const updates = {
-            previous: this.previousRoute,
-            current: this.currentRoute,
-            active,
-            changes,
-            transitionState: this.transitionState,
-            transitionStates: this.transitionStates,
-            setCurrentRoute: 'setCurrentRoute',
-        };
-
-        // Automatic Content Loading
-        this.routeListeners.register('loadState', {
-            handler: () => this.handleFrontEndDataLoading(updates),
-        });
-
-        this.updateListeners(updates);
-    };
-
-    updateListeners = updates => {
-        this.routeListeners.list.forEach(sub => {
-            const cb = op.get(sub, 'handler', () => {});
-            cb(updates);
-        });
-    };
-
-    setupTransitions = () => {
-        const previousTransitions =
-            op.get(this.previousRoute, 'match.route.transitions', false) ===
-                true && !isServerWindow();
-        const currentTransitions =
-            op.get(this.currentRoute, 'match.route.transitions', false) ===
-                true && !isServerWindow();
-        const currentTransitionStates =
-            op.get(
-                this.currentRoute,
-                'match.route.transitionStates',
-                defaultTransitionStates,
-            ) || [];
-
-        // set transitionStates on allowed components
-        this.transitionStates = (!currentTransitions
-            ? []
-            : currentTransitionStates
-        ).filter(({ active = 'current' }) => {
-            return (
-                active === 'current' ||
-                (active === 'previous' && previousTransitions)
-            );
-        });
-
-        const [transition, ...transitionStates] = this.transitionStates;
-        this.transitionStates = transitionStates;
-        this.setTransitionState(transition);
-    };
-
-    jumpCurrent = () => {
-        this.transitionStates = [];
-        this.setTransitionState(null);
-    };
-
-    nextState = () => {
-        if (this.transitionStates.length > 0) {
-            const [transition, ...transitionStates] = this.transitionStates;
-            this.transitionStates = transitionStates;
-            this.setTransitionState(transition);
-        }
-    };
-
-    setTransitionState = (transition, update = true) => {
-        this.active = op.get(transition, 'active', 'current') || 'current';
-        this.transitionState = op.get(transition, 'state', 'READY') || 'READY';
-        const changes = {
-            routeChanged: false,
-            pathChanged: false,
-            searchChanged: false,
-            notFound: false,
-            transitionStateChanged: true,
-        };
-
-        const active =
-            this.active === 'current' ? this.currentRoute : this.previousRoute;
-        const updates = {
-            previous: this.previousRoute,
-            current: this.currentRoute,
-            active,
-            changes,
-            transitionState: this.transitionState,
-            transitionStates: this.transitionStates,
-            setTransitionState: 'setTransitionState',
-        };
-        if (update) {
-            this.updateListeners(updates);
-        }
-    };
-
-    load = async () => {
-        if (this.loaded) return;
-
-        /**
-         * @api {Hook} routes-init routes-init
-         * @apiName routes-init
-         * @apiDescription Called after plugin-init, to add React Router routes to Reactium.Routing register before
-         the Router component is initialized and finally the application is bound to the DOM.
-         async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-         * @apiGroup Hooks
-         */
-        await Hook.run('routes-init', this.routesRegistry);
-
-        this.routesRegistry.register({
-            id: 'NotFound',
-            exact: false,
-            component: NotFoundWrapper,
-            order: SDK.Enums.priority.lowest,
-        });
-
-        this.loaded = true;
-
-        if (isBrowserWindow()) {
-            this.setCurrentRoute(this.historyObj.location);
-        }
-
-        this._update();
-
-        console.log('Initializing routes.');
-    };
-
-    subscribe(cb) {
-        if (typeof cb === 'function') {
-            const id = uuid();
-            this.subscriptions[id] = cb;
-
-            // initial callback
-            cb();
-            return () => {
-                delete this.subscriptions[id];
-            };
-        }
-    }
-
-    /**
- * @api {Function} Routing.register(route) Routing.register()
- * @apiDescription Dynamically register a new React router route.
- * @apiParam {Object} route object to be used as properties of React Router `<Route />` component, including:
- 1. path - the routing pattern
- 2. exact - true/false if the pattern should be matched exactly
- 3. component - the React component to render on this route
- 4. order - (special) the priority of this route in the list of routes (which route will resolve first)
- 5. load - (special) high-order Redux action function (thunk) to run when this route is resolved (should return a promise)
- 6. ... any other property `<Route />` component accepts
-
- ## Important Note
-
- Unless called in isomorphic javascript (ie. code executed both in browser and in node.js),
- these routes will not yield Server-Side-Rendered html in SSR mode. The browser will still
- render the route correctly (will not break the page), however the server will deliver a 404 status code on
- cold loads of the page (i.e. hard-refresh of the browser).
- * @apiName Routing.register
- * @apiGroup Reactium.Routing
- * @apiSuccess {String} uuid unique id of the route
- * @apiExample Example Usage:
-import React from 'react';
-import op from 'object-path';
-import Reactium, { useSelect } from 'reactium-core/sdk';
-
-// A new component subscribing to Redux state.myPlugin.name
-const HelloYou = () => {
-    const name = useSelect(state => op.get(state, 'myPlugin.name', 'unknown'));
-    return {
-        <div>Hello {name}</div>
-    };
-};
-
-// A Redux-Thunk high-order action function (useful for async actions)
-const loadAction = (params, search) => (dispatch, getState) => {
-    dispatch({
-        type: 'MY_NAME',
-        name: op.get(params, 'name', 'unknown'),
-    });
-
-    return Promise.resolve();
-};
-
-// Register new routing pattern '/hello-world/:name'
-const routeId = Reactium.Routing.register({
-    path: '/hello-world/:name',
-    exact: true,
-    component: HelloYou,
-    load: loadAction,
-});
-
-// Register reducer to handle 'MY_NAME' action
-const myReducer = (state = {name: 'unknown'}, action) => {
-    if (action.type === 'MY_NAME') return {
-        ...state,
-        name: action.name,
-    };
-    return state;
-};
-Reactium.Plugin.register('myPlugin').then(() => {
-    Reactium.Reducer.register('myPlugin', myReducer);
-})
-     */
-    async register(route = {}, update = true) {
-        if (!route.id) route.id = uuid();
-        if (!route.order) route.order = 0;
-
-        /**
-         * @api {Hook} register-route register-route
-         * @apiName register-route
-         * @apiDescription Called on boot after routes-init, and during runtime operation of the front-end application, whenever
-         a new route is registered. Can be used to augment a router object before it is registered to the router.
-         async only - used in front-end or isomorphically when running server-side rendering mode (SSR)
-         * @apiParam {Object} route the new or updated route, indentified by unique id (route.id)
-         * @apiGroup Hooks
-         */
-        await Hook.run('register-route', route);
-        this.routesRegistry.register(route.id, route);
-        if (update) this._update();
-        return route.id;
-    }
-
-    /**
-     * @api {Function} Routing.unregister(id) Routing.unregister()
-     * @apiName Routing.unregister
-     * @apiDescription Unregister an existing route, by id.
-     Note: You can not unregister the 'NotFound' component. You can only replace it
-     using the registering a NotFound component with Reactium.Component.register().
-     * @apiParam {String} id the route id
-     * @apiParam {Boolean} [update=true] update subscribers
-     * @apiGroup Reactium.Routing
-     */
-    unregister(id, update = true) {
-        this.routesRegistry.unregister(id);
-        if (update) this._update();
-    }
-
-    _update() {
-        this.updated = new Date();
-        Object.values(this.subscriptions).forEach(cb => cb());
-    }
-
-    /**
-     * @api {Function} Routing.get() Routing.get()
-     * @apiName Routing.get
-     * @apiDescription Get sorted array of all route objects.
-     * @apiGroup Reactium.Routing
-     */
-    get() {
-        return this.routes;
-    }
-}
-
-const routing = new Routing();
-
-export default routing;
diff --git a/.core/server-globals.js b/.core/server-globals.js
deleted file mode 100644
index 092206ec..00000000
--- a/.core/server-globals.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import path from 'path';
-import op from 'object-path';
-import _ from 'underscore';
-import bootHooks from './boot-hooks';
-
-const globby = require('./globby-patch').sync;
-
-global.rootPath = path.resolve(__dirname, '..');
-
-const reactiumBootHooks = require('./boot-hooks');
-
-const apiConfig = async () => {
-    if (ReactiumBoot.API && ReactiumBoot.API.ActiniumConfig) {
-        const apiConfig = ReactiumBoot.API.ActiniumConfig;
-
-        global.parseAppId = apiConfig.parseAppId;
-        global.actiniumAppId = apiConfig.actiniumAppId;
-        global.restAPI = apiConfig.restAPI;
-    }
-};
-
-module.exports = async () => {
-    const ReactiumBoot = (await import('reactium-core/sdk')).default;
-    global.ReactiumBoot = ReactiumBoot;
-    global.defines = {};
-    global.isSSR = 'SSR_MODE' in process.env && process.env.SSR_MODE === 'on';
-    global.useJSDOM =
-        global.isSSR &&
-        (!('SSR_MODE_JSDOM' in process.env) ||
-            process.env.SSR_MODE_JSDOM !== 'off');
-
-    global.actiniumAPIEnabled = process.env.ACTINIUM_API !== 'off';
-    global.actiniumProxyEnabled = process.env.PROXY_ACTINIUM_API !== 'off';
-
-    const defaultPort = 3030;
-    global.PORT = defaultPort;
-    let node_env = process.env.hasOwnProperty('NODE_ENV')
-        ? process.env.NODE_ENV
-        : 'development';
-
-    if (process.env.NODE_ENV === 'development') {
-        let gulpConfig;
-        try {
-            gulpConfig = require('./gulp.config');
-        } catch (err) {
-            gulpConfig = { port: { proxy: PORT } };
-        }
-        PORT = gulpConfig.port.proxy;
-    }
-
-    const PORT_VAR = op.get(process.env, 'PORT_VAR', 'APP_PORT');
-    if (PORT_VAR && op.has(process.env, [PORT_VAR])) {
-        PORT = op.get(process.env, [PORT_VAR], PORT);
-    } else {
-        PORT = op.get(process.env, ['PORT'], PORT);
-    }
-
-    PORT = parseInt(PORT) || defaultPort;
-
-    require('./reactium.log');
-
-    await reactiumBootHooks();
-
-    await apiConfig();
-};
diff --git a/.core/server/placeholder/reactium-boot.js b/.core/server/placeholder/reactium-boot.js
deleted file mode 100644
index ebb86ad7..00000000
--- a/.core/server/placeholder/reactium-boot.js
+++ /dev/null
@@ -1,110 +0,0 @@
-const express = require('express');
-const router = express.Router();
-const xss = require('xss');
-
-const Enums = ReactiumBoot.Enums;
-
-const placeholder = (req, res) => {
-    const { width = 640, height = 480, filename = '' } = req.params;
-
-    const {
-        title = '',
-        pattern = '#f7f7f7',
-        color = '#fff',
-        background = '#444',
-        notes = '',
-        region = '0,0,100,100',
-        content = 'none',
-    } = req.query;
-
-    const [
-        xPercent = 0,
-        yPercent = 0,
-        widthPercent = 100,
-        heightPercent = 100,
-    ] = (region || []).split(',');
-
-    const useTitle = title === '' ? filename : title;
-
-    res.set('Content-Type', 'image/svg+xml');
-    res.send(`<?xml version="1.0" standalone="no"?>
-    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${xss(
-        width,
-    )}" height="${xss(height)}" viewBox="0 0 ${xss(width)} ${xss(
-        height,
-    )}" font-family="sans-serif"  preserveAspectRatio="none">
-    <mask id="mask">
-        <rect width="100%" height="100%" fill="#444"/>
-        <rect x="${xss(xPercent)}%" y="${xss(yPercent)}%" width="${xss(
-        widthPercent,
-    )}%" height="${xss(heightPercent)}%" fill="#fff"/>
-    </mask>
-<pattern id="pattern" x="50%" y="50%" width="40" height="40" patternUnits="userSpaceOnUse">
-            <rect width="100%" height="100%"/>
-    <path fill="#fff" d="M0,0L50,50V40L10,0zM0,30V40H10M30,0L50,20V30L20,0zM0,10L40,50H30L0,20" />
-</pattern>
-<pattern id="mountains" width="100" height="11"  patternUnits="userSpaceOnUse">
-    <polygon fill="black" points="0,11.1 6.7,4.4 7.2,4.9 8.9,3.3 12.3,6.7 13.3,5.7 16.5,8.9 18.6,6.8 20.1,8.3 23.5,5 26.4,7.9 33.2,1.2 38.2,6.2 39.4,4.9 45.2,10.7 50.9,5.1 53.4,7.6 57.7,3.3 58.5,4.1 62.6,0 64.9,2.3 66,1.1 74.3,9.4 78.9,4.8 80.7,6.5 85.8,1.4 89.5,5.1 91.8,2.9 100,11.1 "/>
-</pattern>
-    <symbol id="male" viewBox="0 0 100 100" overflow="visible">
-        <circle cx="50" cy="50" r="30"/>
-        <rect x="10" y="85" width="80" height="100" rx="30"/>
-        <rect x="23" y="160" width="24" height="120" rx="10"/>
-        <rect x="53" y="160" width="24" height="120" rx="10"/>
-    </symbol>
-    <symbol id="female" viewBox="0 0 100 100" overflow="visible">
-        <use xlink:href="#male" />
-        <path d="M50,85L95,200H5"/>
-    </symbol>
-
-    <symbol id="landscape" viewBox="0 0 100 100" overflow="visible">
-        <circle cx="50" cy="50" r="30" fill="white"/>
-        <rect transform="translate(-2140,50) scale(8)"  width="4000" height="11" fill="url(#mountains)"/>
-<rect x="-2140" y="137" width="32000" height="5000%"  fill="black"/>
-    </symbol>
-<rect width="100%" height="100%" fill="${xss(background)}" />
-    <svg x="${xss(xPercent)}%" y="${xss(yPercent)}%" width="${xss(
-        widthPercent,
-    )}%" height="${xss(heightPercent)}%" overflow="visible" opacity="0.25" >
-    <use xlink:href="#${xss(content)}"/>
-</svg>
-<rect mask="url(#mask)" width="100%" height="100%" fill="url(#pattern)" opacity=".05" />
-<rect width="100%" height="100%" fill="none" stroke="${xss(
-        color,
-    )}" stroke-opacity="0.7" stroke-width="2%" />
-<svg viewBox="0 0 60 100">
-    <text transform="translate(30,44)" text-anchor="middle" alignment-baseline="central" font-size="12" fill="${xss(
-        color,
-    )}">
-        <tspan x="0">${xss(
-            width,
-        )}</tspan><tspan x="0" dy="9">×</tspan><tspan x="0" dy="11">${xss(
-        height,
-    )}</tspan>
-    </text>
-</svg>
-<svg height="20%" viewBox="0 0 200 40" preserveAspectRatio="xMidYMin" opacity=".5" font-size="10" overflow="visible">
-    <text transform="translate(100,37)" text-anchor="middle" fill="${xss(
-        color,
-    )}">
-        <tspan x="0">${xss(useTitle)}</tspan>
-    </text>
-</svg>
-<svg y="80%" height="20%" viewBox="0 0 200 40" preserveAspectRatio="xMidYMax" font-size="10" opacity=".5" overflow="visible">
-    <text transform="translate(100,11)" text-anchor="middle" fill="${xss(
-        color,
-    )}">
-        <tspan x="0">${xss(notes)}</tspan>
-    </text>
-</svg>
-</svg>`);
-};
-
-router.get('/placeholder/:width/:height/:filename', placeholder);
-router.get('/placeholder/:width/:height', placeholder);
-
-ReactiumBoot.Server.Middleware.register('placeholder', {
-    name: 'placeholder',
-    use: router,
-    order: Enums.priority.highest,
-});
diff --git a/.core/server/renderer/feo.js b/.core/server/renderer/feo.js
deleted file mode 100644
index d68c8b1f..00000000
--- a/.core/server/renderer/feo.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = async (req, res, context) => req.template(req, res, context);
diff --git a/.core/server/renderer/index.js b/.core/server/renderer/index.js
deleted file mode 100644
index 188523c7..00000000
--- a/.core/server/renderer/index.js
+++ /dev/null
@@ -1,651 +0,0 @@
-const globby = require('globby');
-const path = require('path');
-const fs = require('fs');
-const semver = require('semver');
-const op = require('object-path');
-const _ = require('underscore');
-const serialize = require('serialize-javascript');
-
-const normalizeAssets = assets => _.flatten([assets]);
-
-ReactiumBoot.Hook.registerSync(
-    'Server.AppStyleSheets',
-    (req, AppStyleSheets) => {
-        const theme = op.get(
-            req,
-            'query.theme',
-            process.env.DEFAULT_THEME || 'style',
-        );
-
-        const defaultStylesheet = `${theme}.css`;
-
-        let styles = [];
-        let publicDir =
-            process.env.PUBLIC_DIRECTORY ||
-            path.resolve(process.cwd(), 'public');
-        let styleDir = path.normalize(path.join(publicDir, '/assets/style'));
-
-        const corePath = path
-            .normalize(path.join(styleDir, 'core.css'))
-            .split(publicDir)
-            .join('');
-
-        const when = (req, itemPath) => {
-            const [url] = req.originalUrl.split('?');
-
-            const includes = [defaultStylesheet];
-            ReactiumBoot.Hook.runSync(
-                'Server.AppStyleSheets.includes',
-                includes,
-            );
-
-            const excludes = ['core.css', 'toolkit.css'];
-            ReactiumBoot.Hook.runSync(
-                'Server.AppStyleSheets.excludes',
-                excludes,
-            );
-
-            const included = Boolean(
-                includes.find(search => itemPath.indexOf(search) >= 0),
-            );
-            const excluded = Boolean(
-                excludes.find(search => itemPath.indexOf(search) >= 0),
-            );
-
-            return included && !excluded;
-        };
-
-        fs.readdirSync(styleDir).forEach(item => {
-            const itemPath = path.normalize(path.join(styleDir, item));
-            const cssPath = itemPath.split(publicDir).join('');
-
-            AppStyleSheets.register(path.basename(itemPath), {
-                path: itemPath.split(publicDir).join(''),
-                when,
-            });
-        });
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'SERVER-APP-STYLESHEETS-CORE',
-);
-
-ReactiumBoot.Hook.registerSync(
-    'Server.AppScripts',
-    (req, AppScripts, res) => {
-        // Webpack assets
-        if (process.env.NODE_ENV === 'development') {
-            const assetsByChunkName = res.locals.webpackStats.toJson()
-                .assetsByChunkName;
-
-            Object.values(assetsByChunkName).forEach(chunk => {
-                _.flatten([
-                    normalizeAssets(chunk)
-                        .filter(path => path.endsWith('.js'))
-                        .filter(path => /main\.js$/.test(path)),
-                ]).forEach(path =>
-                    AppScripts.register(path, {
-                        path: `/${path}`,
-                        order: ReactiumBoot.Enums.priority.highest,
-                        footer: true,
-                    }),
-                );
-            });
-
-            return;
-        }
-
-        const scriptPathBase =
-            process.env.PUBLIC_DIRECTORY || `${process.cwd()}/public`;
-
-        globby
-            .sync(
-                path
-                    .resolve(scriptPathBase, 'assets', 'js', '*main.js')
-                    .replace(/\\/g, '/'),
-            )
-            .map(script => `/assets/js/${path.parse(script).base}`)
-            .forEach(path =>
-                AppScripts.register(path, {
-                    path,
-                    order: ReactiumBoot.Enums.priority.highest,
-                    footer: true,
-                }),
-            );
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'SERVER-APP-SCRIPTS-CORE',
-);
-
-ReactiumBoot.Hook.registerSync(
-    'Server.AppHeaders',
-    (req, AppHeaders, res) => {
-        AppHeaders.register('shortcut', {
-            header:
-                '<link rel="shortcut icon" type="image/x-icon" href="/assets/images/favicon.ico" />',
-            order: ReactiumBoot.Enums.priority.highest,
-        });
-        AppHeaders.register('favicon', {
-            header:
-                '<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico" />',
-            order: ReactiumBoot.Enums.priority.highest,
-        });
-        AppHeaders.register('viewport', {
-            header:
-                '<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />',
-            order: ReactiumBoot.Enums.priority.highest,
-        });
-        AppHeaders.register('charset', {
-            header: '<meta charset="UTF-8" />',
-            order: ReactiumBoot.Enums.priority.highest,
-        });
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'SERVER-APP-HEADERS-CORE',
-);
-
-ReactiumBoot.Hook.registerSync(
-    'Server.AppBindings',
-    (req, AppBindings) => {
-        AppBindings.register('router', {
-            template: () => {
-                const binding = `<div id="router">${req.content || ''}</div>`;
-                return binding;
-            },
-            requestParams: ['content'],
-        });
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'SERVER-APP-BINDINGS-CORE',
-);
-
-const sanitizeTemplateVersion = version => {
-    if (semver.valid(version)) {
-        return version;
-    }
-    return semver.coerce(version);
-};
-
-ReactiumBoot.Hook.registerSync(
-    'Server.beforeApp',
-    req => {
-        const renderMode = op.get(req, 'renderMode', 'feo');
-        const {
-            semver: coreSemver,
-        } = require(`${rootPath}/.core/reactium-config`);
-
-        if (
-            fs.existsSync(
-                `${rootPath}/src/app/server/template/${renderMode}.js`,
-            )
-        ) {
-            let localTemplate = require(`${rootPath}/src/app/server/template/${renderMode}`);
-            let templateVersion = sanitizeTemplateVersion(
-                localTemplate.version,
-            );
-
-            // Check to see if local template should be compatible with core
-            if (semver.satisfies(templateVersion, coreSemver)) {
-                req.template = localTemplate.template;
-            } else {
-                console.warn(
-                    `${rootPath}/src/app/server/template/${renderMode}.js is out of date, and will not be used. Use 'arcli server template' command to update.`,
-                );
-            }
-        }
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'SERVER-BEFORE-APP-CORE-TEMPLATES',
-);
-
-ReactiumBoot.Hook.registerSync('Server.AppGlobals', (req, AppGlobals) => {
-    AppGlobals.register('actiniumAPIEnabled', {
-        name: 'actiniumAPIEnabled',
-        value: global.actiniumAPIEnabled,
-    });
-
-    if (global.actiniumAPIEnabled) {
-        AppGlobals.register('actiniumAppId', {
-            name: 'actiniumAppId',
-            value: global.actiniumAppId,
-        });
-
-        AppGlobals.register('actiniumAPIEnabled', {
-            name: 'actiniumAPIEnabled',
-            value: global.actiniumAPIEnabled,
-        });
-
-        AppGlobals.register('restAPI', {
-            name: 'restAPI',
-            value: global.actiniumProxyEnabled ? '/api' : global.restAPI,
-            serverValue: global.restAPI,
-        });
-    }
-});
-
-export const renderAppBindings = req => {
-    let bindingsMarkup = '';
-    _.sortBy(Object.values(req.Server.AppBindings.list), 'order').forEach(
-        ({ component, markup, template, requestParams = [] }) => {
-            // Reactium App will lookup these components and bind them
-            if (component && typeof component === 'string') {
-                bindingsMarkup += `<Component type="${component}"></Component>`;
-            } else if (markup && typeof markup === 'string') {
-                bindingsMarkup += markup;
-            } else if (template && typeof template === 'function') {
-                const context = {};
-                requestParams.forEach(name => {
-                    context[name] = req[name] || '';
-                });
-                bindingsMarkup += template(context);
-            }
-        },
-    );
-
-    return bindingsMarkup;
-};
-
-const requestRegistries = () => {
-    const Server = {};
-    Server.AppHeaders = ReactiumBoot.Utils.registryFactory(
-        'AppHeaders',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-    Server.AppScripts = ReactiumBoot.Utils.registryFactory(
-        'AppScripts',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-    Server.AppSnippets = ReactiumBoot.Utils.registryFactory(
-        'AppSnippets',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-    Server.AppStyleSheets = ReactiumBoot.Utils.registryFactory(
-        'AppStyleSheets',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-    Server.AppBindings = ReactiumBoot.Utils.registryFactory(
-        'AppBindings',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-    Server.AppGlobals = ReactiumBoot.Utils.registryFactory(
-        'AppGlobals',
-        'name',
-        ReactiumBoot.Utils.Registry.MODES.CLEAN,
-    );
-
-    return Server;
-};
-
-export default async (req, res, context) => {
-    const Server = (req.Server = requestRegistries());
-    let template,
-        renderMode = isSSR ? 'ssr' : 'feo';
-
-    req.Server = Server;
-    req.isSSR = isSSR;
-    req.renderMode = renderMode;
-    req.scripts = '';
-    req.headerScripts = '';
-    req.styles = '';
-    req.appGlobals = '';
-    req.appAfterScripts = '';
-    req.headTags = '';
-    req.appBindings = '';
-
-    const coreTemplate = require(`../template/${renderMode}`);
-    req.template = coreTemplate.template;
-
-    /**
-     * @api {Hook} Server.beforeApp Server.beforeApp
-     * @apiName Server.beforeApp
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Called before other Server hooks.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} Server ReactiumBoot Server object.
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.beforeApp', req, Server);
-    await ReactiumBoot.Hook.run('Server.beforeApp', req, Server);
-
-    /**
-     * @api {Hook} Server.AppGlobals Server.AppGlobals
-     * @apiName Server.AppGlobals
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines window globals to be defined in template. Will also define
-     global for nodejs (useful for Server-Side-Rendering).
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppGlobals Server app globals registry object.
-     * @apiParam (global) {String} name The property name that will be added to window (for browser) or global (for nodejs).
-     * @apiParam (global) {Mixed} value any javascript value that can be serialized for use in a script tag
-     * @apiParam (global) {Mixed} [serverValue] optional different value for the server global, useful when value should be used differently on the server code
-     * @apiExample reactium-boot.js
-     // will result in window.environment = 'local' in browser and global.environment = 'local' on nodejs
-     ReactiumBoot.Hook.registerSync(
-         'Server.AppGlobals',
-         (req, AppGlobals) => {
-             // Find the registered component "DevTools" and bind it
-             AppGlobals.register('environment', {
-                 name: 'environment',
-                 value: 'local',
-             });
-         });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.AppGlobals', req, Server.AppGlobals);
-    await ReactiumBoot.Hook.run('Server.AppGlobals', req, Server.AppGlobals);
-
-    // Add application globals
-    _.sortBy(Object.values(Server.AppGlobals.list), 'order').forEach(
-        ({ name, value, serverValue }) => {
-            global[name] =
-                typeof serverValue !== 'undefined' ? serverValue : value;
-            req.appGlobals += `window["${name}"] = ${serialize(value)};\n`;
-        },
-    );
-
-    /**
-     * @api {Hook} Server.AppHeaders Server.AppHeaders
-     * @apiName Server.AppHeaders
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines html head tags (exluding stylesheet).
-     Use this hook to register/unregister <head> tags as strings. Note: if using Server Side Render and react-helmet, this is often unnecessary to do.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppHeaders Server app header registry object.
-     * @apiExample reactium-boot.js
-     ReactiumBoot.Hook.register('Server.AppHeaders', async (req, AppHeaders) => {
-        // given some data was added to req by express middleware
-        const seo = req.seo;
-        if (seo) {
-            if (seo.canonicalURL) {
-                AppHeaders.register('canonical-url', {
-                    header: `<link rel="canonical" href="${seo.canonicalURL}" />`
-                });
-            }
-            if (seo.description) {
-                AppHeaders.register('meta-description', {
-                    header: `<meta name="description" content="${seo.description}"/>`
-                });
-            }
-        }
-     });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.AppHeaders', req, Server.AppHeaders, res);
-    await ReactiumBoot.Hook.run(
-        'Server.AppHeaders',
-        req,
-        Server.AppHeaders,
-        res,
-    );
-
-    // Add header tags
-    _.sortBy(Object.values(Server.AppHeaders.list), 'order').forEach(
-        ({ header = '' }) => {
-            req.headTags += header;
-        },
-    );
-
-    /**
-     * @api {Hook} Server.AppScripts Server.AppScripts
-     * @apiName Server.AppScripts
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines javascript files to be loaded.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppScripts Server app scripts registry object.
-     * @apiParam (script) {Boolean} [footer=true] Place the script tag in the footer if true
-     * @apiParam (script) {Boolean} [header=false] Place the script tag above the body if true
-     * @apiParam (script) {String} [path] the src of the javascript
-     * @apiParam (script) {String} [charset=UTF-8] charset attribute
-     * @apiParam (script) {String} [type] type attribute
-     * @apiParam (script) {Boolean} [defer=false] Add defer attribute
-     * @apiParam (script) {Boolean} [async=false] Add async attribute
-     * @apiParam (script) {Boolean} [content] script content
-     * @apiParam (script) {Number} [order=0] loading order of script
-     * @apiExample reactium-boot.js
-     ReactiumBoot.Hook.register('Server.AppScripts', async (req, AppScripts) => {
-         AppScripts.register('my-onsite-script', {
-             path: '/assets/js/some-additional.js'
-             footer: true, // load in footer (optional)
-             header: false, // don't load in header (optional)
-             order: 1, // scripts will be ordered by this
-         });
-
-         AppScripts.register('my-csn-script', {
-             path: 'https://cdn.example.com/cdn.loaded.js'
-             header: true, // maybe for an external
-             order: 1, // scripts will be ordered by this
-         });
-     });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.AppScripts', req, Server.AppScripts, res);
-    await ReactiumBoot.Hook.run(
-        'Server.AppScripts',
-        req,
-        Server.AppScripts,
-        res,
-    );
-
-    // Add scripts and headerScripts
-    _.sortBy(Object.values(Server.AppScripts.list), 'order').forEach(
-        ({
-            path,
-            footer = true,
-            header = false,
-            charset = 'UTF-8',
-            type,
-            defer = false,
-            async = false,
-            content,
-        }) => {
-            const attributes = {
-                charset: typeof charset === 'string' && `charset="${charset}"`,
-                defer: defer === true && 'defer',
-                type: typeof type === 'string' && `type="${type}"`,
-                src: typeof path === 'string' && `src="${path}"`,
-                async: async === true && 'async',
-            };
-
-            content =
-                typeof content === 'string'
-                    ? `//<![CDATA[\n${content}//]]>\n`
-                    : '';
-
-            const script = `<script ${_.compact(Object.values(attributes)).join(
-                ' ',
-            )}>${content}</script>\n`;
-            if (footer) {
-                req.scripts += script;
-                return;
-            }
-
-            if (header || !footer) {
-                req.headerScripts += script;
-            }
-        },
-    );
-
-    /**
-     * @api {Hook} Server.AppStyleSheets Server.AppStyleSheets
-     * @apiName Server.AppStyleSheets
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines css files to be loaded.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppStyleSheets Server app styles registry object.
-     * @apiParam (stylesheet) {String} [href] the src of the stylesheet or resource
-     * @apiParam (stylesheet) {Number} [order=0] loading order of stylesheet or resource
-     * @apiParam (stylesheet) {String} [rel=stylesheet] the rel attribute
-     * @apiParam (stylesheet) {String} [crossorigin] the crossorigin attribute
-     * @apiParam (stylesheet) {String} [referrerpolicy] the referrerpolicy attribute
-     * @apiParam (stylesheet) {String} [hrefLang] the hreflang attribute
-     * @apiParam (stylesheet) {String} [sizes] the sizes attribute if rel=icon
-     * @apiParam (stylesheet) {String} [type] the type attribute
-     * @apiParam (stylesheet) {Function} [when] callback passed the request object, and returns true or false if the css should be included
-     * @apiExample reactium-boot.js
-     ReactiumBoot.Hook.register('Server.AppStyleSheets', async (req, AppStyleSheets) => {
-         AppStyleSheets.register('my-stylesheet', {
-             href: '/assets/css/some-additional.css'
-         });
-
-         AppStyleSheets.register('my-csn-script', {
-             href: 'https://cdn.example.com/cdn.loaded.css'
-             order: 1, // scripts will be ordered by this
-         });
-     });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync(
-        'Server.AppStyleSheets',
-        req,
-        Server.AppStyleSheets,
-    );
-    await ReactiumBoot.Hook.run(
-        'Server.AppStyleSheets',
-        req,
-        Server.AppStyleSheets,
-    );
-
-    // Add stylesheets
-    _.sortBy(Object.values(Server.AppStyleSheets.list), 'order').forEach(
-        ({
-            path,
-            href,
-            rel = 'stylesheet',
-            crossorigin,
-            referrerpolicy,
-            hrefLang,
-            media,
-            sizes,
-            type,
-            when = () => true,
-        }) => {
-            const hrefPath = path || href;
-            const attributes = {
-                rel:
-                    typeof rel === 'string' &&
-                    [
-                        'alternate',
-                        'author',
-                        'dns-prefetch',
-                        'help',
-                        'icon',
-                        'license',
-                        'next',
-                        'pingback',
-                        'preconnect',
-                        'prefetch',
-                        'preload',
-                        'prerender',
-                        'prev',
-                        'search',
-                        'stylesheet',
-                    ].includes(rel) &&
-                    `rel="${rel}"`,
-                crossorigin:
-                    typeof crossorigin === 'string' &&
-                    ['anonymous', 'use-credentials'].includes(crossorigin) &&
-                    `crossorigin="${crossorigin}"`,
-                referrerpolicy:
-                    typeof referrerpolicy === 'string' &&
-                    [
-                        'no-referrer',
-                        'no-referrer-when-downgrade',
-                        'origin',
-                        'origin-when-cross-origin',
-                        'unsafe-url',
-                    ].includes(referrerpolicy) &&
-                    `referrerpolicy="${referrerpolicy}"`,
-                href: typeof hrefPath === 'string' && `href="${hrefPath}"`,
-                hrefLang:
-                    typeof hrefLang === 'string' && `hreflang="${hrefLang}"`,
-                media: typeof media === 'string' && `media="${media}"`,
-                sizes:
-                    typeof sizes === 'string' &&
-                    rel === 'icon' &&
-                    `sizes="${media}"`,
-                type: typeof type === 'string' && `type="${type}"`,
-            };
-
-            const stylesSheet = `<link ${_.compact(
-                Object.values(attributes),
-            ).join(' ')} />\n`;
-            if (when(req, hrefPath)) req.styles += stylesSheet;
-        },
-    );
-
-    /**
-     * @api {Hook} Server.AppBindings Server.AppBindings
-     * @apiName Server.AppBindings
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines React bind pointes in markup.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppBindings Server app binding registry object.
-     * @apiParam (binding) {String} [component] string name of component to bind directly if possible (must be in a webpack search context in reactium-config)
-     * @apiParam (binding) {String} [markup] ordinary markup that React will use to bind the app.
-     * @apiExample reactium-boot.js
-     ReactiumBoot.Hook.registerSync(
-         'Server.AppBindings',
-         (req, AppBindings) => {
-             // Find the registered component "DevTools" and bind it
-             AppBindings.register('DevTools', {
-                 component: 'DevTools',
-             });
-
-             // Add ordinary markup for React to bind to
-             AppBindings.register('router', {
-                 markup: '<div id="router"></div>',
-             });
-         },
-         ReactiumBoot.Enums.priority.highest,
-         'SERVER-APP-BINDINGS-CORE',
-     );
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.AppBindings', req, Server.AppBindings);
-    await ReactiumBoot.Hook.run('Server.AppBindings', req, Server.AppBindings);
-    req.appBindings = renderAppBindings(req);
-
-    /**
-     * @api {Hook} Server.AppSnippets Server.AppSnippets
-     * @apiName Server.AppSnippets
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Defines snippets of code to be added to document in their entirety.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} AppSnippets Server app snippets registry object.
-     * @apiExample reactium-boot.js
-     ReactiumBoot.Hook.register('Server.AppSnippets', async (req, AppSnippets) => {
-        AppSnippets.register('ga-tracking', {
-            snippet: `<script>
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
-
-ga('create', '', 'auto');
-ga('send', 'pageview');
-</script>`,
-          order: 1,
-        })
-     });
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.AppSnippets', req, Server.AppSnippets);
-    await ReactiumBoot.Hook.run('Server.AppSnippets', req, Server.AppSnippets);
-
-    // Add entire text script snippets
-    _.sortBy(Object.values(Server.AppSnippets.list), 'order').forEach(
-        ({ snippet = '' }) => {
-            req.appAfterScripts += `${snippet}\n`;
-        },
-    );
-
-    /**
-     * @api {Hook} Server.afterApp Server.afterApp
-     * @apiName Server.afterApp
-     * @apiDescription Before index.html template render for SPA template (both Front-end and Server-Side Render). Called after other Server hooks.
-     * @apiParam {Object} req express request object
-     * @apiParam {Object} Server ReactiumBoot Server object.
-     * @apiGroup Hooks
-     */
-    ReactiumBoot.Hook.runSync('Server.afterApp', req, Server);
-    await ReactiumBoot.Hook.run('Server.afterApp', req, Server);
-
-    return require(`./${renderMode}`)(req, res, context);
-};
diff --git a/.core/server/renderer/reactium-boot.js b/.core/server/renderer/reactium-boot.js
deleted file mode 100644
index fc21b56d..00000000
--- a/.core/server/renderer/reactium-boot.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Create a stub redux store
-ReactiumBoot.Hook.register(
-    'store-create',
-    async (config, context) => {
-        context.store = { dispatch: () => {}, getState: () => ({}) };
-    },
-    ReactiumBoot.Enums.priority.highest,
-    'CORE_STUB_REDUX_STORE',
-);
diff --git a/.core/server/renderer/ssr-thread.js b/.core/server/renderer/ssr-thread.js
deleted file mode 100644
index 05f9250b..00000000
--- a/.core/server/renderer/ssr-thread.js
+++ /dev/null
@@ -1,152 +0,0 @@
-import React from 'react';
-import { Helmet } from 'react-helmet';
-import { renderToString } from 'react-dom/server';
-import op from 'object-path';
-import _ from 'underscore';
-import { matchRoutes } from 'react-router-config';
-import Router from 'reactium-core/components/Router/server';
-import {
-    Zone,
-    AppContexts,
-    Handle,
-    ReactiumSyncState,
-} from 'reactium-core/sdk';
-import uuid from 'uuid/v4';
-
-const ssrStartup = require('../../ssr-startup');
-
-const ssr = async ({ url, query = {}, req = {}, bootHooks, appGlobals }) => {
-    // prevent expensive and excessive globbing
-    if (bootHooks) global.bootHooks = bootHooks;
-
-    // apply globals inside ssr context
-    _.sortBy(Object.values(appGlobals), 'order').forEach(
-        ({ name, value, serverValue }) => {
-            global[name] =
-                typeof serverValue !== 'undefined' ? serverValue : value;
-        },
-    );
-
-    const rendered = {};
-    const context = {};
-
-    await ssrStartup();
-
-    const matches = matchRoutes(ReactiumBoot.Routing.get(), url);
-    let [match] = matches;
-    if (matches.length > 1) {
-        match = matches.find(match => match.isExact);
-    }
-
-    const matchedRoute = op.get(match, 'route', {});
-    const route = {
-        ...matchedRoute,
-        params: op.get(match, 'match.params', {}),
-        query,
-    };
-
-    // Check for 404
-    context.notFound = !matches.length || !('path' in matchedRoute);
-
-    // Wait for loader or go ahead and render on error
-    INFO('Loading page data...');
-
-    const loadState = op.get(
-        route,
-        'component.loadState',
-        op.get(route, 'loadState'),
-    );
-    const handleId = op.get(
-        route,
-        'component.handleId',
-        op.get(route, 'handleId', uuid()),
-    );
-
-    let data;
-
-    // for consistency
-    op.set(route, 'component.handleId', handleId);
-    op.set(route, 'handleId', handleId);
-    op.set(context, 'handleId', handleId);
-    if (typeof loadState == 'function') {
-        data = await loadState({
-            route,
-            params: route.params,
-            search: route.query,
-        });
-        Handle.register(handleId, {
-            routeId: op.get(route, 'id'),
-            current: new ReactiumSyncState(data),
-        });
-    }
-
-    await ReactiumBoot.Hook.run(
-        'data-loaded',
-        data,
-        route,
-        route.params,
-        route.query,
-    );
-    INFO('Page data loading complete.');
-
-    await ReactiumBoot.Hook.run('ssr-before-render', {
-        data,
-        route,
-        req,
-    });
-
-    const content = renderToString(
-        <AppContexts>
-            <Zone zone='reactium-provider' />
-            <Router
-                server={true}
-                location={url}
-                context={context}
-                routes={routes}
-            />
-            <Zone zone='reactium-provider-after' />
-        </AppContexts>,
-    );
-
-    rendered.content = content;
-
-    await ReactiumBoot.Hook.run('ssr-after-render', {
-        data,
-        route,
-        rendered,
-        req,
-    });
-
-    Object.entries(req).forEach(([key, value]) => op.set(rendered, key, value));
-
-    await ReactiumBoot.Hook.run('app-ready', true);
-
-    const helmet = Helmet.renderStatic();
-    rendered.helmet = Object.entries(helmet).reduce((helmet, [key, value]) => {
-        if (typeof value.toString == 'function') {
-            helmet[key] = value.toString();
-        }
-        return helmet;
-    }, {});
-
-    // Server Side Generation - Conditionally Caching Routed Components markup
-    const loadPaths = op.get(
-        route,
-        'component.loadPaths',
-        op.get(route, 'loadPaths'),
-    );
-
-    if (loadPaths) {
-        rendered.ssgPaths = (await loadPaths(route)) || [];
-    }
-
-    process.send({ rendered, context });
-};
-
-process.on('message', async message => {
-    try {
-        await ssr(message);
-    } catch (error) {
-        console.error({ error });
-    }
-});
diff --git a/.core/server/renderer/ssr.js b/.core/server/renderer/ssr.js
deleted file mode 100644
index ad264ebb..00000000
--- a/.core/server/renderer/ssr.js
+++ /dev/null
@@ -1,98 +0,0 @@
-const { fork } = require('child_process');
-import op from 'object-path';
-import fs from 'fs-extra';
-import path from 'path';
-import { Hook } from 'reactium-core/sdk';
-
-const app = {};
-app.dependencies = global.dependencies;
-
-const simplifyRequest = req => {
-    const reqFields = [
-        'baseUrl',
-        'body',
-        'cookies',
-        'fresh',
-        'hostname',
-        'ip',
-        'ips',
-        'method',
-        'originalUrl',
-        'params',
-        'path',
-        'protocol',
-        'query',
-        'isSSR',
-        'renderMode',
-        'scripts',
-        'headerScripts',
-        'styles',
-        'appGlobals',
-        'appAfterScripts',
-        'headTags',
-        'appBindings',
-    ];
-
-    Hook.run('ssr-request-fields', reqFields);
-
-    return reqFields.reduce((fields, field) => {
-        fields[field] = op.get(req, field);
-        return fields;
-    }, {});
-};
-
-const renderer = async (req, res, context) => {
-    const [url] = req.originalUrl.split('?');
-
-    try {
-        const ssr = fork(path.resolve(__dirname, './ssr-thread.js'));
-        const { rendered, context: ssrContext } = await new Promise(
-            (resolve, reject) => {
-                ssr.send({
-                    url,
-                    query: op.get(req, 'query', {}),
-                    req: simplifyRequest(req),
-                    bootHooks: global.bootHooks,
-                    appGlobals: req.Server.AppGlobals.list,
-                });
-                ssr.on('message', resolve);
-                ssr.on('error', reject);
-            },
-        );
-        ssr.kill();
-
-        // pass context up
-        Object.entries(ssrContext).forEach(([key, value]) =>
-            op.set(context, key, value),
-        );
-        Object.entries(rendered).forEach(([key, value]) =>
-            op.set(req, key, value),
-        );
-
-        const html = req.template(req);
-
-        // Server Side Generation - Conditionally Caching Routed Components markup
-        if (req.ssgPaths) {
-            if (
-                Array.isArray(req.ssgPaths) &&
-                req.ssgPaths.includes(req.originalUrl)
-            ) {
-                const staticHTMLPath = path.normalize(
-                    staticHTML + req.originalUrl,
-                );
-                fs.ensureDirSync(staticHTMLPath);
-                fs.writeFileSync(
-                    path.resolve(staticHTMLPath, 'index.html'),
-                    html,
-                    'utf8',
-                );
-            }
-        }
-
-        return html;
-    } catch (error) {
-        ERROR('Page data loading error.', error);
-    }
-};
-
-module.exports = renderer;
diff --git a/.core/server/router.js b/.core/server/router.js
deleted file mode 100644
index caa61f30..00000000
--- a/.core/server/router.js
+++ /dev/null
@@ -1,129 +0,0 @@
-import express from 'express';
-import renderer from './renderer';
-import fs from 'fs';
-import path from 'path';
-import httpAuth from 'http-auth';
-import op from 'object-path';
-import _ from 'underscore';
-
-const router = express.Router();
-
-// Conditional basic auth
-const basicAuthFile = path.resolve(process.env.BASIC_AUTH_FILE || '.htpasswd');
-if (fs.existsSync(basicAuthFile)) {
-    router.use((req, res, next) => {
-        if (req.url !== '/elb-healthcheck') {
-            let basic = httpAuth.basic({
-                realm: 'Reactium.',
-                file: basicAuthFile,
-            });
-
-            httpAuth.connect(basic)(req, res, next);
-        } else {
-            next();
-        }
-    });
-}
-
-router.get('/elb-healthcheck', (req, res) => res.send('Up'));
-
-router.get('/ssg-paths', async (req, res) => {
-    if (process.env.SSR_MODE !== 'on') {
-        res.status(403).json({
-            error: 'You must start server in Server Side Rendering mode.',
-        });
-        return;
-    }
-
-    if (!Boolean(ReactiumBoot.Routing.get().length)) {
-        await require('../ssr-startup')();
-    }
-
-    let paths = [];
-    for (let route of ReactiumBoot.Routing.get()) {
-        const loadPaths = op.get(
-            route,
-            'component.loadPaths',
-            op.get(route, 'loadPaths'),
-        );
-        if (typeof loadPaths == 'function') {
-            try {
-                const routePaths = await loadPaths(route);
-                paths = paths.concat(routePaths);
-            } catch (error) {
-                console.error(
-                    'Unable to load Server Side Generation paths for route',
-                    { route },
-                );
-            }
-        }
-    }
-
-    res.send(_.uniq(paths));
-});
-
-process.on('unhandledRejection', (reason, p) => {
-    ERROR('Unhandled Rejection at: Promise', p, 'reason:', reason);
-    // application specific logging, throwing an error, or other logic here
-});
-
-router.use(async (req, res, next) => {
-    const [url] = req.originalUrl.split('?');
-    const parsed = path.parse(path.basename(url));
-
-    // Slim down index.html handling to paths that aren't handling a file extension
-    if (['', 'htm', 'html'].includes(parsed.ext)) {
-        const context = {};
-
-        try {
-            const content = await renderer(req, res, context);
-            if (context.url) {
-                INFO('Redirecting to ', context.url);
-                return res.redirect(302, context.url);
-            }
-
-            const responseHeaders = {};
-
-            /**
-             * @api {Hook} Server.ResponseHeaders Server.ResponseHeaders
-             * @apiName Server.ResponseHeaders
-             * @apiDescription On html template responses on server, this hook is called
-             when HTTP headers are added to the response. Both sync and async hook is called.
-             * @apiParam {Object} responseHeaders object with key pairs (header name => header value)
-             * @apiParam {Object} req Node/Express request object
-             * @apiParam {Object} res Node/Express response object
-             * @apiGroup Hooks
-             */
-            ReactiumBoot.Hook.runSync(
-                'Server.ResponseHeaders',
-                responseHeaders,
-                req,
-                res,
-            );
-            await ReactiumBoot.Hook.run(
-                'Server.ResponseHeaders',
-                responseHeaders,
-                req,
-                res,
-            );
-            Object.entries(responseHeaders).forEach(([key, value]) =>
-                res.set(key, value),
-            );
-
-            let status = 200;
-            if (/^\/404/.test(req.path) || context.notFound) {
-                status = 404;
-            }
-
-            res.status(status).send(content);
-        } catch (err) {
-            ERROR('React SSR Error', err);
-            res.status(500).send('[Reactium] Internal Server Error');
-        }
-    } else {
-        // let assets naturally 404, or be handled by subsequent middleware
-        next();
-    }
-});
-
-export default router;
diff --git a/.core/server/template/feo.js b/.core/server/template/feo.js
deleted file mode 100644
index b33e7498..00000000
--- a/.core/server/template/feo.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import serialize from 'serialize-javascript';
-
-module.exports = {
-    version: '%TEMPLATE_VERSION%',
-    template: req => {
-        return `<!DOCTYPE html>
-        <html>
-            <head>
-                ${req.headTags}
-                ${req.styles}
-            </head>
-            <body>
-                ${req.headerScripts}
-                ${req.appBindings}
-
-                <script>
-                    window.ssr = false;
-                    window.defines = ${serialize(defines)};
-                    ${req.appGlobals}
-                </script>
-                ${req.scripts}
-                ${req.appAfterScripts}
-            </body>
-        </html>`;
-    },
-};
diff --git a/.core/server/template/ssr.js b/.core/server/template/ssr.js
deleted file mode 100644
index 931eeff5..00000000
--- a/.core/server/template/ssr.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import serialize from 'serialize-javascript';
-import { renderAppBindings } from '../renderer';
-
-module.exports = {
-    version: '%TEMPLATE_VERSION%',
-    template: req => {
-        return `<!DOCTYPE html>
-        <html ${req.helmet.htmlAttributes}>
-            <head>
-                ${req.headTags}
-                ${req.styles}
-                ${req.helmet.title}
-                ${req.helmet.meta}
-                ${req.helmet.link}
-            </head>
-            <body ${req.helmet.bodyAttributes}>
-                ${req.headerScripts}
-                ${renderAppBindings(req)}
-
-                <script>
-                    window.ssr = true;
-                    window.defines = ${serialize(defines)};
-                    ${req.appGlobals}
-                </script>
-                ${req.scripts}
-                ${req.appAfterScripts}
-            </body>
-        </html>`;
-    },
-};
diff --git a/.core/ssr-startup.js b/.core/ssr-startup.js
deleted file mode 100644
index 73cb4e61..00000000
--- a/.core/ssr-startup.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import fs from 'fs';
-import _ from 'underscore';
-
-const ssrStartup = async () => {
-    if (global.SSR_STARTED) return;
-    global.SSR_STARTED = true;
-
-    await require('./server-globals')();
-    DEBUG('SSR/SSG Startup.');
-    const { default: deps } = await import('dependencies');
-    global.dependencies = deps;
-
-    if (global.useJSDOM && !global.window) {
-        // react-side-effect/lib/index.js:85:17 does the opposite of normal
-        // it tries to check to see if the DOM is available, and blows up if it
-        // does on static render
-        // Fixes "You may only call rewind() on the server. Call peek() to read the current state." throw.
-        //
-        // The condition used for this error is set at file scope of this loaded early, so
-        // let's get this in early, before creating global.window with JSDOM.
-        require('react-side-effect');
-
-        const jsdom = require('jsdom');
-        const { JSDOM } = jsdom;
-        const { window } = new JSDOM('<!DOCTYPE html>');
-        const { document, navigator, location } = window;
-
-        // build a soft cushy server-side window environment to catch server-unsafe code
-        global.window = window;
-        global.JSDOM = window;
-        global.document = document;
-        global.navigator = navigator;
-        global.location = location;
-
-        // Important: We'll use this to differential the JSDOM "window" from others.
-        global.window.isJSDOM = true;
-        DEBUG('SSR: creating JSDOM object as global.window.');
-    }
-
-    await deps().loadAll('allHooks');
-    await ReactiumBoot.Hook.run('init');
-    await ReactiumBoot.Hook.run('dependencies-load');
-    await ReactiumBoot.Zone.init();
-    await ReactiumBoot.Routing.load();
-    await ReactiumBoot.Hook.run('plugin-dependencies');
-    global.routes = ReactiumBoot.Routing.get();
-
-    if (!'defines' in global) {
-        global.defines = {};
-    }
-
-    if (fs.existsSync(`${rootPath}/src/app/server/defines.js`)) {
-        const defs = require(`${rootPath}/src/app/server/defines.js`);
-        Object.keys(defs).forEach(key => {
-            if (key !== 'process.env') {
-                global.defines[key] = defs[key];
-            }
-        });
-    }
-
-    await ReactiumBoot.Hook.run('plugin-ready');
-    await ReactiumBoot.Hook.run('app-context-provider');
-};
-
-module.exports = ssrStartup;
diff --git a/.core/umd.webpack.config.js b/.core/umd.webpack.config.js
deleted file mode 100644
index d26e6dbc..00000000
--- a/.core/umd.webpack.config.js
+++ /dev/null
@@ -1,95 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const globby = require('./globby-patch');
-const op = require('object-path');
-const rootPath = path.resolve(__dirname, '..');
-const env = process.env.NODE_ENV || 'development';
-const CompressionPlugin = require('compression-webpack-plugin');
-const webpack = require('webpack');
-const WebpackSDK = require('./webpack.sdk');
-
-const overrides = (umd, config) => {
-    globby
-        .sync([
-            './umd.webpack.override.js',
-            './node_modules/**/reactium-plugin/umd.webpack.override.js',
-            './src/**/umd.webpack.override.js',
-            './reactium_modules/**/umd.webpack.override.js',
-        ])
-        .forEach(file => {
-            try {
-                require(path.resolve(file))(umd, config);
-            } catch (error) {
-                console.error(chalk.red(`Error loading ${file}:`));
-                console.error(error);
-            }
-        });
-    return config;
-};
-
-module.exports = umd => {
-    const sdk = new WebpackSDK(umd.libraryName, 'reactium-webpack.js', umd);
-
-    const plugins = [];
-    const presets = [];
-    const rules = [];
-    const defines = op.get(umd, 'staticDefines', {});
-
-    if (op.get(umd, 'babelPresetEnv', true)) presets.push('@babel/preset-env');
-    if (op.get(umd, 'babelReact', true)) presets.push('@babel/react');
-    if (op.get(umd, 'babelLoader', true))
-        sdk.addRule('babel-loader', {
-            test: /(\.jsx|\.js)$/,
-            loader: 'babel-loader',
-            options: {
-                presets,
-                plugins: [
-                    [
-                        '@babel/plugin-proposal-class-properties',
-                        {
-                            loose: true,
-                        },
-                    ],
-                    ['module-resolver'],
-                ],
-            },
-        });
-
-    if (op.get(umd, 'workerRestAPI', true)) {
-        op.set(
-            defines,
-            'workerRestAPIConfig',
-            JSON.stringify({
-                actiniumAppId: process.env.ACTINIUM_APP_ID || 'Actinium',
-                restAPI: process.env.WORKER_REST_API_URL || '/api',
-            }),
-        );
-    }
-
-    const externals = [];
-    Object.entries(umd.externals).forEach(([key, value]) => {
-        sdk.addExternal(key, { key, value });
-    });
-
-    if (op.get(umd, 'addDefines', true)) {
-        sdk.addPlugin('defines', new webpack.DefinePlugin(defines));
-    }
-
-    sdk.mode = env;
-    sdk.entry = umd.entry;
-    sdk.output = {
-        path: umd.outputPath,
-        filename: umd.outputFile,
-        library: umd.libraryName,
-        libraryTarget: 'umd',
-        globalObject: umd.globalObject,
-    };
-
-    if (env === 'production') {
-        sdk.addPlugin('compression', new CompressionPlugin());
-    } else if (op.get(umd, 'sourcemaps', true)) {
-        sdk.devtool = 'cheap-source-map';
-    }
-
-    return overrides(umd, sdk.config());
-};
diff --git a/.core/webpack.config.js b/.core/webpack.config.js
deleted file mode 100644
index c5bc9e12..00000000
--- a/.core/webpack.config.js
+++ /dev/null
@@ -1,151 +0,0 @@
-'use strict';
-
-const fs = require('fs');
-const _ = require('underscore');
-const path = require('path');
-const globby = require('./globby-patch');
-const webpack = require('webpack');
-const FilterWarningsPlugin = require('webpack-filter-warnings-plugin');
-const CompressionPlugin = require('compression-webpack-plugin');
-const env = process.env.NODE_ENV || 'development';
-const rootPath = path.resolve(__dirname, '..');
-const chalk = require('chalk');
-const WebpackSDK = require('./webpack.sdk');
-
-let defines = {};
-if (fs.existsSync(`${rootPath}/src/app/server/defines.js`)) {
-    defines = require(`${rootPath}/src/app/server/defines.js`);
-}
-
-const overrides = config => {
-    globby
-        .sync([
-            './webpack.override.js',
-            './node_modules/**/reactium-plugin/webpack.override.js',
-            './src/**/webpack.override.js',
-            './reactium_modules/**/webpack.override.js',
-        ])
-        .forEach(file => {
-            try {
-                require(path.resolve(file))(config);
-            } catch (error) {
-                console.error(chalk.red(`Error loading ${file}:`));
-                console.error(error);
-            }
-        });
-    return config;
-};
-
-module.exports = config => {
-    const sdk = new WebpackSDK('reactium', 'reactium-webpack.js', config);
-
-    let filename = '[name].js';
-    let dest = config.dest.js;
-
-    sdk.mode = env;
-    sdk.entry = config.entries;
-    sdk.target = 'web';
-    sdk.output = {
-        publicPath: '/assets/js/',
-        path: path.resolve(__dirname, dest),
-        filename,
-    };
-    sdk.devtool = env === 'development' ? 'source-map' : '';
-
-    sdk.setCodeSplittingOptimize(env);
-    if (process.env.DISABLE_CODE_SPLITTING === 'true') {
-        sdk.setNoCodeSplitting();
-    }
-
-    Object.keys(defines).forEach(key => {
-        if (key !== 'process.env') {
-            config.defines[key] = JSON.stringify(defines[key]);
-        }
-    });
-
-    config.defines['process.env'] = {
-        NODE_ENV: JSON.stringify(env),
-    };
-
-    if ('process.env' in defines) {
-        Object.keys(defines['process.env']).forEach(key => {
-            config.defines['process.env'][key] = JSON.stringify(
-                defines['process.env'][key],
-            );
-        });
-    }
-
-    sdk.addPlugin('defines', new webpack.DefinePlugin(config.defines));
-
-    sdk.addContext('reactium-modules-context', {
-        from: /reactium-translations$/,
-        to: path.resolve('./src/reactium-translations'),
-    });
-
-    sdk.addPlugin(
-        'suppress-critical-dep-warning',
-        new FilterWarningsPlugin({
-            exclude: /Critical dependency: the request of a dependency is an expression/i,
-        }),
-    );
-
-    if (env === 'production') {
-        sdk.addPlugin('asset-compression', new CompressionPlugin());
-    }
-
-    sdk.addRule('po-loader', {
-        test: [/\.pot?$/],
-        use: [
-            {
-                loader: '@atomic-reactor/webpack-po-loader',
-            },
-        ],
-    });
-
-    sdk.addRule('babel-loader', {
-        test: [/\.jsx|js($|\?)/],
-        exclude: [/node_modules/, /umd.js$/],
-        resolve: {
-            extensions: ['.js', '.jsx', '.json'],
-        },
-        use: [
-            {
-                loader: 'babel-loader',
-            },
-        ],
-    });
-
-    sdk.addIgnore('umd', /umd.js$/);
-    sdk.addIgnore('hbs', /\.hbs$/);
-    sdk.addIgnore('css', /\.css$/);
-    sdk.addIgnore('sass', /\.sass$/);
-    sdk.addIgnore('scss', /\.scss$/);
-    sdk.addIgnore('less', /\.less$/);
-    sdk.addIgnore('backup', /\.BACKUP$/);
-    sdk.addIgnore('png', /\.png$/);
-    sdk.addIgnore('jpg', /\.jpg$/);
-    sdk.addIgnore('gif', /\.gif$/);
-    sdk.addIgnore('server-src', /\.core\/server/);
-    sdk.addIgnore('manifest-tools', /\.core\/manifest/);
-    sdk.addIgnore('core-index', /\.core\/index.js/);
-    sdk.addIgnore('gulp', /\.core\/gulp/);
-    sdk.addIgnore('reactium-config', /\.core\/reactium-config.js$/);
-    sdk.addIgnore('webpack-sdk', /webpack.sdk/);
-    sdk.addIgnore('core-configs', /\.core\/.*?\.config/);
-    sdk.addIgnore('core-cli', /\.core\/.cli\//);
-    sdk.addIgnore('project-cli', /\.cli/);
-    sdk.addIgnore('server-app', /src\/app\/server/);
-    sdk.addIgnore('arcli-install', /arcli-install.js$/);
-    sdk.addIgnore('arcli-publish', /arcli-publish.js$/);
-    sdk.addIgnore('reactium-boot', /reactium-boot.js$/);
-    sdk.addIgnore('reactium-gulp', /reactium-gulp.js$/);
-    sdk.addIgnore('reactium-webpack', /reactium-webpack.js$/);
-    sdk.addIgnore('parse-node', /parse\/node/);
-    sdk.addIgnore('xmlhttprequest', /xmlhttprequest/);
-
-    if (env === 'production') {
-        sdk.addIgnore('redux-devtools', /redux-devtools/);
-    }
-
-    return overrides(sdk.config());
-};
diff --git a/.core/webpack.sdk.js b/.core/webpack.sdk.js
deleted file mode 100644
index c82493af..00000000
--- a/.core/webpack.sdk.js
+++ /dev/null
@@ -1,387 +0,0 @@
-const ReactiumWebpack = require('@atomic-reactor/reactium-sdk-core').default;
-const op = require('object-path');
-const _ = require('underscore');
-const webpack = require('webpack');
-const globby = require('./globby-patch');
-const chalk = require('chalk');
-const path = require('path');
-
-global.ReactiumWebpack = ReactiumWebpack;
-
-const matchChunk = (test, debug) => module => {
-    const chunkNames = [];
-    for (const chunk of module.chunksIterable) {
-        chunkNames.push(chunk.name);
-    }
-
-    const names = _.compact(
-        _.flatten([
-            module.nameForCondition && module.nameForCondition(),
-            chunkNames,
-        ]),
-    );
-
-    const match = !!names.find(name => test.test(name));
-    if (debug && match) {
-        console.log({
-            test: test.toString(),
-            name: module.nameForCondition && module.nameForCondition(),
-            chunkNames,
-        });
-    }
-
-    return match;
-};
-
-let artifacts = {};
-class WebpackReactiumWebpack {
-    constructor(name, ddd, context) {
-        this.name = name;
-        this.context = context;
-
-        // setter/getter initial values
-        this.entryValue = {
-            main: './src/app/main.js',
-        };
-        this.modeValue = 'development';
-        this.targetValue = 'web';
-        this.outputValue = {};
-        this.devtoolValue = '';
-        this.optimizationValue = {
-            minimize: false,
-        };
-
-        this.ignores = ReactiumWebpack.Utils.registryFactory(
-            'ignores',
-            'id',
-            ReactiumWebpack.Utils.Registry.MODES.CLEAN,
-        );
-        this.ignores.sdk = this;
-
-        this.externals = ReactiumWebpack.Utils.registryFactory(
-            'externals',
-            'id',
-            ReactiumWebpack.Utils.Registry.MODES.CLEAN,
-        );
-        this.externals.sdk = this;
-
-        this.rules = ReactiumWebpack.Utils.registryFactory(
-            'rules',
-            'id',
-            ReactiumWebpack.Utils.Registry.MODES.CLEAN,
-        );
-        this.rules.sdk = this;
-
-        this.plugins = ReactiumWebpack.Utils.registryFactory(
-            'plugins',
-            'id',
-            ReactiumWebpack.Utils.Registry.MODES.CLEAN,
-        );
-        this.plugins.sdk = this;
-
-        this.overridesValue = {};
-
-        // avoid costly globbing
-        if (op.get(artifacts, [ddd])) return;
-
-        globby
-            .sync([
-                `./${ddd}`,
-                `./node_modules/**/reactium-plugin/${ddd}`,
-                `./src/**/${ddd}`,
-                `./reactium_modules/**/${ddd}`,
-            ])
-            .forEach(file => {
-                try {
-                    require(path.resolve(file));
-                } catch (error) {
-                    console.error(chalk.red(`Error loading ${file}:`));
-                    console.error(error);
-                }
-            });
-
-        op.set(artifacts, [ddd], true);
-    }
-
-    set mode(value) {
-        this.modeValue = value;
-    }
-
-    get mode() {
-        return this.modeValue;
-    }
-
-    set entry(value) {
-        this.entryValue = value;
-    }
-
-    get entry() {
-        return this.entryValue;
-    }
-
-    set target(value) {
-        this.targetValue = value;
-    }
-
-    get target() {
-        return this.targetValue;
-    }
-
-    set output(value) {
-        this.outputValue = value;
-    }
-
-    get output() {
-        return this.outputValue;
-    }
-
-    set devtool(value) {
-        this.devtoolValue = value;
-    }
-
-    get devtool() {
-        return this.devtoolValue;
-    }
-
-    set optimization(value) {
-        this.optimizationValue = value;
-    }
-
-    get optimization() {
-        return this.optimizationValue;
-    }
-
-    set overrides(value) {
-        this.overridesValue = value;
-    }
-
-    get overrides() {
-        return this.overridesValue || {};
-    }
-
-    addRule(id, rule) {
-        this.rules.register(id, { rule });
-    }
-
-    addIgnore(id, test) {
-        this.ignores.register(id, { test });
-    }
-
-    addPlugin(id, plugin) {
-        this.plugins.register(id, { plugin });
-    }
-
-    addContext(id, context) {
-        const { from, to } = context;
-        this.plugins.register(id, {
-            plugin: new webpack.ContextReplacementPlugin(from, context => {
-                context.request = to;
-            }),
-        });
-    }
-
-    addExternal(id, config) {
-        const { key, value } = config;
-        if (typeof key === 'string' || key instanceof String) {
-            // regex string
-            if (/^\/.*\/i?$/.test(key)) {
-                const args = [key.replace(/^\//, '').replace(/\/i?$/, '')];
-                if (/i$/.test(key)) args.push('i');
-                this.externals.register(id, { external: new RegExp(...args) });
-                // string keypair
-            } else {
-                this.externals.register(id, { external: { key, value } });
-            }
-        } else if (typeof value === 'object' && value instanceof RegExp) {
-            this.externals.register(id, { external: value });
-        } else if (Array.isArray(value)) {
-            this.externals.register(id, { external: { key, value } });
-        } else if (typeof value === 'function') {
-            this.externals.register(id, { external: value });
-        }
-    }
-
-    getIgnores() {
-        ReactiumWebpack.Hook.runSync(
-            'ignores',
-            this.ignores,
-            this.name,
-            this.context,
-        );
-
-        const ignores = this.ignores.list;
-        if (ignores.length > 0) {
-            return {
-                test: ignores.map(ignore => ignore.test),
-                use: [
-                    {
-                        loader: 'ignore-loader',
-                    },
-                ],
-            };
-        }
-
-        return false;
-    }
-
-    getExternals() {
-        ReactiumWebpack.Hook.runSync(
-            'externals',
-            this.externals,
-            this.name,
-            this.context,
-        );
-        return _.compact(
-            this.externals.list.map(({ external }) => {
-                if (typeof external === 'object' && 'key' in external) {
-                    const { key, value } = external;
-                    return { [key]: value };
-                }
-
-                return external;
-            }),
-        );
-    }
-
-    getRules() {
-        ReactiumWebpack.Hook.runSync(
-            'rules',
-            this.rules,
-            this.name,
-            this.context,
-        );
-        return this.rules.list.map(({ id, rule }) => rule);
-    }
-
-    getPlugins() {
-        ReactiumWebpack.Hook.runSync(
-            'plugins',
-            this.plugins,
-            this.name,
-            this.context,
-        );
-        return this.plugins.list.map(({ id, plugin }) => plugin);
-    }
-
-    matchChunk(test, debug) {
-        return module => {
-            const chunkNames = [];
-            for (const chunk of module.chunksIterable) {
-                chunkNames.push(chunk.name);
-            }
-
-            const names = _.compact(
-                _.flatten([
-                    module.nameForCondition && module.nameForCondition(),
-                    chunkNames,
-                ]),
-            );
-
-            const match = !!names.find(name => test.test(name));
-            if (debug && match) {
-                console.log({
-                    test: test.toString(),
-                    name: module.nameForCondition && module.nameForCondition(),
-                    chunkNames,
-                });
-            }
-
-            return match;
-        };
-    }
-
-    setNoCodeSplitting(env) {
-        this.optimizationValue = {
-            minimize: Boolean(env !== 'development'),
-        };
-
-        this.addPlugin(
-            'limit-chunks',
-            new webpack.optimize.LimitChunkCountPlugin({
-                maxChunks: 1,
-            }),
-        );
-    }
-
-    setWebpackDefaultOptimize(env) {
-        this.optimizationValue = {
-            minimize: Boolean(env !== 'development'),
-            splitChunks: {
-                chunks: 'async',
-                minSize: 20000,
-                minRemainingSize: 0,
-                minChunks: 1,
-                maxAsyncRequests: 30,
-                maxInitialRequests: 30,
-                enforceSizeThreshold: 50000,
-                cacheGroups: {
-                    defaultVendors: {
-                        test: /[\\/]node_modules[\\/]/,
-                        priority: -10,
-                        reuseExistingChunk: true,
-                    },
-                    default: {
-                        minChunks: 2,
-                        priority: -20,
-                        reuseExistingChunk: true,
-                    },
-                },
-            },
-        };
-    }
-
-    setCodeSplittingOptimize(env) {
-        this.optimizationValue = {
-            minimize: Boolean(env !== 'development'),
-            splitChunks: {
-                chunks: 'all',
-                cacheGroups: {
-                    vendors: {
-                        test: this.matchChunk(/[\\/]node_modules[\\/]/),
-                        priority: -10,
-                        reuseExistingChunk: true,
-                    },
-                    core: {
-                        test: this.matchChunk(/[\\/]\.core/),
-                        priority: -10,
-                        reuseExistingChunk: true,
-                    },
-                    sdk: {
-                        test: this.matchChunk(/[\\/]\.core[\\/]sdk/),
-                        priority: -20,
-                        priority: 0,
-                        reuseExistingChunk: true,
-                    },
-                    sw: {
-                        test: this.matchChunk(/[\\/]node_modules[\\/]workbox/),
-                        priority: -20,
-                        reuseExistingChunk: true,
-                    },
-                },
-            },
-        };
-    }
-
-    config() {
-        ReactiumWebpack.Hook.runSync('before-config', this);
-
-        return {
-            mode: this.mode,
-            target: this.target,
-            output: this.output,
-            entry: this.entry,
-            devtool: this.devtool,
-            optimization: this.optimization,
-            externals: this.getExternals(),
-            module: {
-                rules: _.compact(
-                    [...this.getRules()].concat(this.getIgnores()),
-                ),
-            },
-            plugins: this.getPlugins(),
-            ...this.overrides,
-        };
-    }
-}
-
-module.exports = WebpackReactiumWebpack;
diff --git a/.gitignore b/.gitignore
index 4de6ea69..e23b9e15 100644
--- a/.gitignore
+++ b/.gitignore
@@ -83,22 +83,21 @@ Thumbs.db
 
 # Manifest
 src/manifest.js
+src/domains.js
 
 # Translation .mo
 *.mo
 
-# rui components for testing
-ReactiumUI
-Reactium-UI
-
 # Ignore All but @atomic-reactor reactium-admin modules in this directory
 reactium_modules/*
 reactium_modules/@atomic-reactor/reactium-api
+reactium_modules/@atomic-reactor/reactium-core
 reactium_modules/@atomic-reactor/reactium-capability
 reactium_modules/@atomic-reactor/reactium-redux
 reactium_modules/@atomic-reactor/reactium-role
 reactium_modules/@atomic-reactor/reactium-setting
 reactium_modules/@atomic-reactor/reactium-user
+reactium_modules/@atomic-reactor/reactium-svg
 !reactium_modules/@atomic-reactor
 !reactium_modules/@atomic-reactor/reactium-admin*
 
diff --git a/.prettierignore b/.prettierignore
index 957e5f24..fafd168b 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,4 +1,4 @@
-.core
+# .core
 package.json
 src/assets/vendor
 docs
diff --git a/Dockerfile b/Dockerfile
index 5790deb1..bd87c6cd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # Build Stage
-FROM node:lts as build
+FROM node:lts-hydrogen as build
 
 RUN mkdir /tmp/app
 
@@ -17,12 +17,12 @@ COPY . .
 ENV NODE_OPTIONS=--max_old_space_size=2078
 
 # Run App build within container context
-RUN npx -p @atomic-reactor/cli arcli install && npm run build
+RUN npx reactium install && npm run build
 
 RUN npm prune --production
 
 # Deployable Stage
-FROM node:lts
+FROM node:lts-hydrogen
 
 # Create app directory
 WORKDIR /usr/src/app
@@ -34,9 +34,6 @@ COPY --from=build /tmp/app/public ./public
 COPY --from=build /tmp/app/package.json ./package.json
 COPY --from=build /tmp/app/node_modules ./node_modules
 
-# Includes entire server-side app (including reactium_modules)
-COPY --from=build /tmp/app/build ./build
-
 RUN chown -R node ./
 
 USER node
diff --git a/babel.config.js b/babel.config.js
index c6efd151..f2cc5d55 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,4 +1,4 @@
-const config = require('./.core/babel.config');
+const config = require('@atomic-reactor/reactium-core/babel.config');
 
 // @example
 //
diff --git a/gulpfile.js b/gulpfile.js
index 32385cbe..7aacd8b5 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -2,4 +2,4 @@
 //   THIS FILE IS GENERATED VIA THE ARCLI UPDATE COMMAND
 // *******************************************************
 
-require('./.core/gulpfile');
+require('@atomic-reactor/reactium-core/gulpfile');
diff --git a/package-lock.json b/package-lock.json
index f273c334..a14ede34 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,359 +1,47 @@
 {
-    "name": "Actinium-Admin",
-    "version": "0.0.1",
-    "lockfileVersion": 1,
+    "name": "actinium-admin",
+    "version": "5.0.0-alpha-1",
+    "lockfileVersion": 3,
     "requires": true,
-    "dependencies": {
-        "@ampproject/remapping": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
-            "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
-            "dev": true,
-            "requires": {
-                "@jridgewell/trace-mapping": "^0.3.0"
-            }
-        },
-        "@atomic-reactor/actinium-auth": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/actinium-auth/-/actinium-auth-1.1.3.tgz",
-            "integrity": "sha512-oOjmop25AihOWfndNi/7VZeMixPpHqZ77a3Zn83F5fcCz+x2Piawj63dfOo8vzMO6Bh4MzbI0piUJT0hv5cYwQ==",
-            "requires": {
-                "@babel/cli": "^7.6.2",
-                "@babel/node": "^7.6.2",
-                "@loadable/component": "^5.10.3",
-                "action-sequence": "^1.1.1",
-                "axios": "^0.19.0",
-                "body-parser": "^1.19.0",
-                "classnames": "^2.2.6",
-                "cookie-parser": "^1.4.4",
-                "cookie-session": "^2.0.0-beta.3",
-                "copy-to-clipboard": "^3.2.0",
-                "core-js": "^3.2.1",
-                "cors": "^2.8.5",
-                "cross-env": "^6.0.0",
-                "directory-tree": "^2.2.4",
-                "express": "^4.17.1",
-                "express-static-gzip": "^2.0.5",
-                "fs-extra": "^8.1.0",
-                "globby": "^10.0.1",
-                "gsap": "^3.0.1",
-                "handlebars": "^4.5.1",
-                "http-auth": "^3.2.3",
-                "http-proxy-middleware": "^0.20.0",
-                "jed": "^1.1.1",
-                "marked": "^0.7.0",
-                "memory-cache": "^0.2.0",
-                "moment": "^2.24.0",
-                "morgan": "^1.9.1",
-                "npm-run-all": "^4.1.5",
-                "object-path": "^0.11.4",
-                "parse": "^2.7.1",
-                "prettier": "^1.18.2",
-                "prop-types": "^15.7.2",
-                "querystring-browser": "^1.0.4",
-                "react": "^16.9.0",
-                "react-dom": "^16.9.0",
-                "react-frame-component": "^4.1.1",
-                "react-helmet": "^5.2.1",
-                "react-redux": "^7.1.1",
-                "react-router-config": "^5.1.0",
-                "react-router-dom": "^5.1.0",
-                "react-syntax-highlighter": "^11.0.2",
-                "redbox-react": "^1.6.0",
-                "redux": "^4.0.4",
-                "redux-devtools": "^3.5.0",
-                "redux-devtools-dock-monitor": "^1.1.3",
-                "redux-devtools-log-monitor": "^1.4.0",
-                "redux-local-persist": "0.1.0",
-                "redux-super-thunk": "0.0.8",
-                "regenerator-runtime": "^0.13.3",
-                "run-script-os": "^1.0.7",
-                "semver": "^6.3.0",
-                "serialize-javascript": "^2.1.0",
-                "shallow-equals": "^1.0.0",
-                "slugify": "^1.3.6",
-                "underscore": "*",
-                "uuid": "^3.3.3",
-                "xss": "^1.0.6"
-            },
-            "dependencies": {
-                "axios": {
-                    "version": "0.19.2",
-                    "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
-                    "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
-                    "requires": {
-                        "follow-redirects": "1.5.10"
-                    }
-                },
-                "cross-env": {
-                    "version": "6.0.3",
-                    "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz",
-                    "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==",
-                    "requires": {
-                        "cross-spawn": "^7.0.0"
-                    }
-                },
-                "fs-extra": {
-                    "version": "8.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-                    "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-                    "requires": {
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^4.0.0",
-                        "universalify": "^0.1.0"
-                    }
-                },
-                "globby": {
-                    "version": "10.0.2",
-                    "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
-                    "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
-                    "requires": {
-                        "@types/glob": "^7.1.1",
-                        "array-union": "^2.1.0",
-                        "dir-glob": "^3.0.1",
-                        "fast-glob": "^3.0.3",
-                        "glob": "^7.1.3",
-                        "ignore": "^5.1.1",
-                        "merge2": "^1.2.3",
-                        "slash": "^3.0.0"
-                    }
-                },
-                "gsap": {
-                    "version": "3.9.1",
-                    "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.9.1.tgz",
-                    "integrity": "sha512-JSGVYoC6da4pIjdF/yxFU6Rz8OojOIDkbooveZlfNg0+JIoFoRruyfWAEi6R/gUeNcuOiTqUIb0gi1nCNrHf8w=="
-                },
-                "marked": {
-                    "version": "0.7.0",
-                    "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
-                    "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg=="
-                },
-                "react": {
-                    "version": "16.14.0",
-                    "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
-                    "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
-                    "requires": {
-                        "loose-envify": "^1.1.0",
-                        "object-assign": "^4.1.1",
-                        "prop-types": "^15.6.2"
-                    }
-                },
-                "react-dom": {
-                    "version": "16.14.0",
-                    "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
-                    "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
-                    "requires": {
-                        "loose-envify": "^1.1.0",
-                        "object-assign": "^4.1.1",
-                        "prop-types": "^15.6.2",
-                        "scheduler": "^0.19.1"
-                    }
-                },
-                "react-helmet": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.1.tgz",
-                    "integrity": "sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA==",
-                    "requires": {
-                        "object-assign": "^4.1.1",
-                        "prop-types": "^15.5.4",
-                        "react-fast-compare": "^2.0.2",
-                        "react-side-effect": "^1.1.0"
-                    }
-                },
-                "redux-devtools-log-monitor": {
-                    "version": "1.4.0",
-                    "resolved": "https://registry.npmjs.org/redux-devtools-log-monitor/-/redux-devtools-log-monitor-1.4.0.tgz",
-                    "integrity": "sha1-cWuVgO2iozHNNZo2qgnjoWAqhUs=",
-                    "requires": {
-                        "lodash.debounce": "^4.0.4",
-                        "prop-types": "^15.0.0",
-                        "react-json-tree": "^0.11.0",
-                        "react-pure-render": "^1.0.2",
-                        "redux-devtools-themes": "^1.0.0"
-                    }
-                },
-                "redux-super-thunk": {
-                    "version": "0.0.8",
-                    "resolved": "https://registry.npmjs.org/redux-super-thunk/-/redux-super-thunk-0.0.8.tgz",
-                    "integrity": "sha512-7MBfzdUCeNAyE+R8adRDtwdzSznmDQfzWFRSey+TMrdwLIxWyHeRZt/z6L/RD7uFOscp7vZVhGJW0TeXJby+5A=="
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-                },
-                "serialize-javascript": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-                    "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ=="
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-                }
+    "packages": {
+        "": {
+            "name": "actinium-admin",
+            "version": "5.0.0-alpha-1",
+            "license": "MIT",
+            "workspaces": [
+                "reactium_modules/*",
+                "reactium_modules/@*/*"
+            ],
+            "dependencies": {
+                "drag-and-drop-files": "^0.0.1",
+                "react": "^18.2.0"
+            },
+            "devDependencies": {
+                "prettier": "^2.8.8"
+            },
+            "engines": {
+                "node": "18.x",
+                "npm": "9.x"
             }
         },
-        "@atomic-reactor/cli": {
-            "version": "2.2.76",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/cli/-/cli-2.2.76.tgz",
-            "integrity": "sha512-XhjgjnWWqoJ8BtFrXAwWMJvhI3VZLfyasZXgXR6wSOa4ffDwT07YtxZPYmtjvvMha/MPi5HWQwUixlLu6Bkopg==",
-            "dev": true,
-            "requires": {
-                "@atomic-reactor/decompress": "^4.2.5",
-                "@atomic-reactor/reactium-sdk-core": "^1.2.13",
-                "action-sequence": "^1.1.2",
-                "axios": "^0.23.0",
-                "camelcase": "^6.2.0",
-                "chalk": "^4.1.2",
-                "cli-spinners": "^2.6.1",
-                "commander": "^6.1.0",
-                "crypto": "^1.0.1",
-                "decamelize": "^4.0.0",
-                "delete-empty": "^3.0.0",
-                "folder-zipper": "^1.0.0",
-                "fs-extra": "^9.1.0",
-                "fs-readdir-recursive": "^1.1.0",
-                "globby": "^11.0.3",
-                "handlebars": "^4.7.7",
-                "inquirer": "^7.3.3",
-                "inquirer-autocomplete-prompt": "^1.0.2",
-                "inquirer-fuzzy-path": "^2.3.0",
-                "memory-cache": "^0.2.0",
-                "moment": "^2.29.1",
-                "object-path": "^0.11.8",
-                "ora": "^5.1.0",
-                "parse": "^3.3.1",
-                "pm2": "^5.1.2",
-                "portscanner": "^2.2.0",
-                "prettier": "1.18.1",
-                "prompt": "^1.0.0",
-                "request": "^2.88.2",
-                "semver": "^7.3.5",
-                "slugify": "^1.4.5",
-                "tar": "^6.0.5",
-                "text-table": "^0.2.0",
-                "underscore": "^1.13.1",
-                "uuid": "^3.3.3"
-            },
+        "node_modules/@ampproject/remapping": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+            "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
             "dependencies": {
-                "@babel/runtime": {
-                    "version": "7.15.4",
-                    "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
-                    "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
-                    "dev": true,
-                    "requires": {
-                        "regenerator-runtime": "^0.13.4"
-                    }
-                },
-                "@babel/runtime-corejs3": {
-                    "version": "7.14.7",
-                    "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz",
-                    "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==",
-                    "dev": true,
-                    "requires": {
-                        "core-js-pure": "^3.15.0",
-                        "regenerator-runtime": "^0.13.4"
-                    }
-                },
-                "axios": {
-                    "version": "0.23.0",
-                    "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz",
-                    "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==",
-                    "dev": true,
-                    "requires": {
-                        "follow-redirects": "^1.14.4"
-                    }
-                },
-                "commander": {
-                    "version": "6.2.1",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
-                    "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
-                    "dev": true
-                },
-                "crypto-js": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
-                    "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
-                    "dev": true,
-                    "optional": true
-                },
-                "decamelize": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
-                    "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
-                    "dev": true
-                },
-                "follow-redirects": {
-                    "version": "1.14.9",
-                    "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
-                    "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
-                    "dev": true
-                },
-                "fs-extra": {
-                    "version": "9.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-                    "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-                    "dev": true,
-                    "requires": {
-                        "at-least-node": "^1.0.0",
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^6.0.1",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "jsonfile": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-                    "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.6",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "parse": {
-                    "version": "3.4.1",
-                    "resolved": "https://registry.npmjs.org/parse/-/parse-3.4.1.tgz",
-                    "integrity": "sha512-XTMaHfcOwAOiWLraNtPbCzR8o94ZWjOfaZDMM2jZ1ZDB5twtK1B82lPa+N197efZhcQ+QFbW/eDJsBybD48aSQ==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/runtime": "7.15.4",
-                        "@babel/runtime-corejs3": "7.14.7",
-                        "crypto-js": "4.1.1",
-                        "idb-keyval": "6.0.3",
-                        "react-native-crypto-js": "1.0.0",
-                        "uuid": "3.4.0",
-                        "ws": "7.5.1",
-                        "xmlhttprequest": "1.8.0"
-                    }
-                },
-                "prettier": {
-                    "version": "1.18.1",
-                    "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.1.tgz",
-                    "integrity": "sha512-cO2Lm9UuFJHhNgHSChbFddQEzNPP+sA6fX1tGmC0VNqTc2X+7EH0gpGWdEX0HfCe5+NVyOyyyWUpLKsb8LU5vg==",
-                    "dev": true
-                },
-                "universalify": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-                    "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-                    "dev": true
-                },
-                "ws": {
-                    "version": "7.5.1",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz",
-                    "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==",
-                    "dev": true
-                }
+                "@jridgewell/gen-mapping": "^0.3.0",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "@atomic-reactor/decompress": {
+        "node_modules/@atomic-reactor/decompress": {
             "version": "4.2.5",
             "resolved": "https://registry.npmjs.org/@atomic-reactor/decompress/-/decompress-4.2.5.tgz",
             "integrity": "sha512-uhg8YcvDMMGFCaNocg/LRPi8YNsPheqWe+lSOFxei7WmWafFnlIJmY38yvIBhVZjKYqRYBK+uvQfF9WxaHvsIQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "decompress-tar": "^4.0.0",
                 "decompress-tarbz2": "^4.0.0",
                 "decompress-targz": "^4.0.0",
@@ -363,38 +51,126 @@
                 "pify": "^2.3.0",
                 "strip-dirs": "^2.0.0"
             },
+            "engines": {
+                "node": ">=12.13.0",
+                "npm": ">=6.12.0"
+            }
+        },
+        "node_modules/@atomic-reactor/decompress/node_modules/make-dir": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+            "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+            "dev": true,
             "dependencies": {
-                "make-dir": {
-                    "version": "1.3.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
-                    "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
-                    "dev": true,
-                    "requires": {
-                        "pify": "^3.0.0"
-                    },
-                    "dependencies": {
-                        "pify": {
-                            "version": "3.0.0",
-                            "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-                            "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-                            "dev": true
-                        }
-                    }
-                },
-                "pify": {
-                    "version": "2.3.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-                    "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-                    "dev": true
-                }
+                "pify": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@atomic-reactor/decompress/node_modules/make-dir/node_modules/pify": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+            "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@atomic-reactor/decompress/node_modules/pify": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/@atomic-reactor/dirname": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/dirname/-/dirname-1.0.7.tgz",
+            "integrity": "sha512-jbhcrpFN1HqE35NVntOc/Gu0eSD8snH5u/Qk1tZ5z9NQPGu7TiG0VvJWi8aaawMn5iZXkhvOUkgQB7rBhEYoTw=="
+        },
+        "node_modules/@atomic-reactor/gulp-run": {
+            "version": "1.8.0",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/gulp-run/-/gulp-run-1.8.0.tgz",
+            "integrity": "sha512-1j51Lq3nJsl0ch30qMzGt5rAfvDqzyRSwylseWARX3qh8pVJEbtEo08jR4x8daj13xwTmuWfkkkXFLiZ9EQgGQ==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^2.4.2",
+                "lodash.defaults": "^4.0.1",
+                "lodash.template": "^4.0.2",
+                "vinyl": "^0.4.6"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-run/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "@atomic-reactor/gulp-watch": {
+        "node_modules/@atomic-reactor/gulp-watch": {
             "version": "5.0.2",
             "resolved": "https://registry.npmjs.org/@atomic-reactor/gulp-watch/-/gulp-watch-5.0.2.tgz",
             "integrity": "sha512-fNE8c6WpcZK8JOCIGim4By+B79Y2NapcVv5tASXowTsdo671GpIDnT1YRjqGtMDiv6ozTSj/zAWApCM+L52h9w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "ansi-colors": "4.1.1",
                 "anymatch": "^3.0.3",
                 "chokidar": "^2.0.0",
@@ -408,1604 +184,2004 @@
                 "vinyl": "^2.2.0",
                 "vinyl-file": "^3.0.0"
             },
+            "engines": {
+                "node": ">=10.16.0",
+                "npm": ">=6.9.0"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-watch/node_modules/clone": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+            "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-watch/node_modules/clone-stats": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+            "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+            "dev": true
+        },
+        "node_modules/@atomic-reactor/gulp-watch/node_modules/replace-ext": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/@atomic-reactor/gulp-watch/node_modules/vinyl": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+            "dev": true,
             "dependencies": {
-                "binary-extensions": {
-                    "version": "1.13.1",
-                    "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-                    "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-                    "dev": true
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "chokidar": {
-                    "version": "2.1.8",
-                    "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-                    "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-                    "dev": true,
-                    "requires": {
-                        "anymatch": "^2.0.0",
-                        "async-each": "^1.0.1",
-                        "braces": "^2.3.2",
-                        "fsevents": "^1.2.7",
-                        "glob-parent": "^3.1.0",
-                        "inherits": "^2.0.3",
-                        "is-binary-path": "^1.0.0",
-                        "is-glob": "^4.0.0",
-                        "normalize-path": "^3.0.0",
-                        "path-is-absolute": "^1.0.0",
-                        "readdirp": "^2.2.1",
-                        "upath": "^1.1.1"
-                    },
-                    "dependencies": {
-                        "anymatch": {
-                            "version": "2.0.0",
-                            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-                            "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-                            "dev": true,
-                            "requires": {
-                                "micromatch": "^3.1.4",
-                                "normalize-path": "^2.1.1"
-                            },
-                            "dependencies": {
-                                "normalize-path": {
-                                    "version": "2.1.1",
-                                    "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                                    "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                                    "dev": true,
-                                    "requires": {
-                                        "remove-trailing-separator": "^1.0.1"
-                                    }
-                                }
-                            }
-                        },
-                        "glob-parent": {
-                            "version": "3.1.0",
-                            "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-                            "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-                            "dev": true,
-                            "requires": {
-                                "is-glob": "^3.1.0",
-                                "path-dirname": "^1.0.0"
-                            },
-                            "dependencies": {
-                                "is-glob": {
-                                    "version": "3.1.0",
-                                    "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                                    "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                                    "dev": true,
-                                    "requires": {
-                                        "is-extglob": "^2.1.0"
-                                    }
-                                }
-                            }
-                        },
-                        "path-is-absolute": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-                            "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-                            "dev": true
-                        }
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "fsevents": {
-                    "version": "1.2.13",
-                    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-                    "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "bindings": "^1.5.0",
-                        "nan": "^2.12.1"
-                    }
-                },
-                "is-binary-path": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-                    "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-                    "dev": true,
-                    "requires": {
-                        "binary-extensions": "^1.0.0"
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "isarray": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-                    "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-                    "dev": true
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "path-is-absolute": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-2.0.0.tgz",
-                    "integrity": "sha512-ajROpjq1SLxJZsgSVCcVIt+ZebVH+PwJtPnVESjfg6JKwJGwAgHRC3zIcjvI0LnecjIHCJhtfNZ/Y/RregqyXg==",
-                    "dev": true
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "readdirp": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-                    "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.11",
-                        "micromatch": "^3.1.10",
-                        "readable-stream": "^2.0.2"
-                    },
-                    "dependencies": {
-                        "readable-stream": {
-                            "version": "2.3.7",
-                            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-                            "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-                            "dev": true,
-                            "requires": {
-                                "core-util-is": "~1.0.0",
-                                "inherits": "~2.0.3",
-                                "isarray": "~1.0.0",
-                                "process-nextick-args": "~2.0.0",
-                                "safe-buffer": "~5.1.1",
-                                "string_decoder": "~1.1.1",
-                                "util-deprecate": "~1.0.1"
-                            }
-                        }
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+                "clone": "^2.1.1",
+                "clone-buffer": "^1.0.0",
+                "clone-stats": "^1.0.0",
+                "cloneable-readable": "^1.0.0",
+                "remove-trailing-separator": "^1.0.1",
+                "replace-ext": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "@atomic-reactor/node-sass-reactium-importer": {
+        "node_modules/@atomic-reactor/node-sass-reactium-importer": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/@atomic-reactor/node-sass-reactium-importer/-/node-sass-reactium-importer-1.0.0.tgz",
             "integrity": "sha512-HM4cDQaaUhPC7de4tBhLH1eEGw62lu8wvBB274K4bz6VrNm5OXI6N2MnWkKWHQ7ywaZCCtA1fmOkiJ9oic+e9w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "find-parent-dir": "^0.3.0"
             }
         },
-        "@atomic-reactor/reactium-api": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-api/_npm",
-            "requires": {
-                "parse": "^2.17.0",
-                "socket.io-client": "^3.1.0"
+        "node_modules/@atomic-reactor/react-custom-scrollbars": {
+            "version": "4.2.2",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/react-custom-scrollbars/-/react-custom-scrollbars-4.2.2.tgz",
+            "integrity": "sha512-bSgQ8/vl1koz+HOGfO7PzA4rOhMABOFHk4BOBA8YsLpjurCaTq3GApfsdTB0vmnAM4O1UAOqpAvJqTLM3CnzUw==",
+            "dependencies": {
+                "dom-css": "^2.0.0",
+                "prop-types": "^15.5.10",
+                "raf": "^3.1.0"
             }
         },
-        "@atomic-reactor/reactium-capability": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-capability/_npm"
-        },
-        "@atomic-reactor/reactium-redux": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-redux/_npm",
-            "requires": {
-                "@atomic-reactor/use-select": "^1.0.1",
-                "react-redux": "^7.2.3",
-                "redux": "^4.0.5",
-                "redux-devtools": "^3.6.0",
-                "redux-devtools-dock-monitor": "^1.1.3",
-                "redux-devtools-log-monitor": "^2.0.0",
-                "redux-super-thunk": "0.0.10"
+        "node_modules/@atomic-reactor/react-jsx-parser": {
+            "version": "1.29.0",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/react-jsx-parser/-/react-jsx-parser-1.29.0.tgz",
+            "integrity": "sha512-pABWfK9PzuX4POGkH5nlxlbPoR8y2zbi+mC96QfIEWNceB+PaZsOSTpEst3Nceu0iewvbjlooGy58LgBnkhcKg==",
+            "hasInstallScript": true,
+            "dependencies": {
+                "@types/jsdom": "^16.2.6",
+                "acorn": "^8.0.5",
+                "acorn-jsx": "^5.3.1",
+                "browserslist": "^4.14.5",
+                "core-js": "^3.8.3"
+            },
+            "optionalDependencies": {
+                "@types/react": "^17.0.1",
+                "@types/react-dom": "^17.0.0"
             }
         },
-        "@atomic-reactor/reactium-role": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-role/_npm"
+        "node_modules/@atomic-reactor/reactium-admin-core": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-admin-core",
+            "link": true
         },
-        "@atomic-reactor/reactium-sdk-core": {
-            "version": "1.2.13",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/reactium-sdk-core/-/reactium-sdk-core-1.2.13.tgz",
-            "integrity": "sha512-CO5kG9fr68RyjwjNGWi/WyZcX43VWnWKqDYi7Ziaeyi2axS3eSBW5M3BzTiVT7+Y7xU0bEkZJl6t4JdND4PBLQ==",
-            "requires": {
+        "node_modules/@atomic-reactor/reactium-api": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-api",
+            "link": true
+        },
+        "node_modules/@atomic-reactor/reactium-capability": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-capability",
+            "link": true
+        },
+        "node_modules/@atomic-reactor/reactium-core": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-core",
+            "link": true
+        },
+        "node_modules/@atomic-reactor/reactium-forcessl": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-forcessl",
+            "link": true
+        },
+        "node_modules/@atomic-reactor/reactium-role": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-role",
+            "link": true
+        },
+        "node_modules/@atomic-reactor/reactium-sdk-core": {
+            "version": "1.4.3",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/reactium-sdk-core/-/reactium-sdk-core-1.4.3.tgz",
+            "integrity": "sha512-2cN74HOZLjCKWdZoLf5IUgNQdhJoCz2yof2lICPmiv13DVL3pHGf1Hr8vb3QGBBu0fFnupfHTDdCsRUNafy93A==",
+            "dependencies": {
                 "action-sequence": "^1.1.2",
-                "classnames": "^2.3.1",
-                "dayjs": "^1.10.7",
+                "classnames": "^2.3.2",
+                "dayjs": "^1.11.7",
                 "memory-cache": "^0.2.0",
                 "object-path": "^0.11.8",
                 "shallow-equals": "^1.0.0",
-                "underscore": "^1.13.1",
+                "underscore": "^1.13.6",
                 "uuid": "^3.3.3"
             }
         },
-        "@atomic-reactor/reactium-setting": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-setting/_npm"
-        },
-        "@atomic-reactor/reactium-ui": {
-            "version": "0.3.6",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/reactium-ui/-/reactium-ui-0.3.6.tgz",
-            "integrity": "sha512-9jMecfKU5BAZGA6B46PcOsDhAeQmHdHOmJEPLicHfLqPZbK7s13DDC4x8wOQ7PpGOhmfH/6UguHwZUamNrYaag==",
-            "requires": {
-                "camelcase": "^6.2.1",
-                "classnames": "^2.3.1",
-                "dropzone": "^5.9.3",
-                "gsap": "^3.8.0",
-                "lunr": "^2.3.9",
-                "moment": "^2.29.1",
-                "object-path": "^0.11.8",
-                "react": "^17.0.2",
-                "react-beautiful-dnd": "^11.0.3",
-                "react-custom-scrollbars": "^4.2.1",
-                "react-toastify": "^5.2.1",
-                "react-touch-events": "^2.1.0",
-                "slugify": "^1.6.3",
-                "underscore": "*",
-                "uuid": "^3.4.0",
-                "victory": "^32.3.0"
-            },
-            "dependencies": {
-                "gsap": {
-                    "version": "3.9.1",
-                    "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.9.1.tgz",
-                    "integrity": "sha512-JSGVYoC6da4pIjdF/yxFU6Rz8OojOIDkbooveZlfNg0+JIoFoRruyfWAEi6R/gUeNcuOiTqUIb0gi1nCNrHf8w=="
-                }
-            }
+        "node_modules/@atomic-reactor/reactium-setting": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-setting",
+            "link": true
         },
-        "@atomic-reactor/reactium-user": {
-            "version": "file:reactium_modules/@atomic-reactor/reactium-user/_npm"
+        "node_modules/@atomic-reactor/reactium-svg": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-svg",
+            "link": true
         },
-        "@atomic-reactor/use-select": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/use-select/-/use-select-1.0.1.tgz",
-            "integrity": "sha512-clm+o5qRJAdFAj30jPCKezpkq2N6mPQacYWtrmkfEC2X+eQMMRLtnqfDuQq5/K2Dxp9q2E55M3diU00o12zgvw==",
-            "requires": {
-                "enzyme": "^3.11.0",
-                "enzyme-adapter-react-16": "^1.15.2"
-            }
+        "node_modules/@atomic-reactor/reactium-user": {
+            "resolved": "reactium_modules/@atomic-reactor/reactium-user",
+            "link": true
         },
-        "@atomic-reactor/webpack-po-loader": {
-            "version": "0.0.3",
-            "resolved": "https://registry.npmjs.org/@atomic-reactor/webpack-po-loader/-/webpack-po-loader-0.0.3.tgz",
-            "integrity": "sha512-E5tznWgBIDReFJ3tVih79Cig16ZRu4/NqTAMrmTEjWauXK/+bADN9+yDO2DaEoYEvbJIKz6ayFAmQ7vWSc7VFQ==",
+        "node_modules/@atomic-reactor/webpack-po-loader": {
+            "version": "5.0.2",
+            "resolved": "https://registry.npmjs.org/@atomic-reactor/webpack-po-loader/-/webpack-po-loader-5.0.2.tgz",
+            "integrity": "sha512-4BmrXE7jMv1TRedTt54Ij1ZOzkt580zYB+GgcChPp4uviiZbuuAxrs062KPEjvOMnrvG3LPkcLLzo89otxm8yA==",
             "dev": true,
-            "requires": {
-                "po2json": "^1.0.0-alpha"
+            "dependencies": {
+                "po2json": "^0.4.5"
             }
         },
-        "@babel/cli": {
-            "version": "7.17.6",
-            "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.17.6.tgz",
-            "integrity": "sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==",
-            "requires": {
-                "@jridgewell/trace-mapping": "^0.3.4",
-                "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
-                "chokidar": "^3.4.0",
+        "node_modules/@babel/cli": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.21.0.tgz",
+            "integrity": "sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA==",
+            "dependencies": {
+                "@jridgewell/trace-mapping": "^0.3.17",
                 "commander": "^4.0.1",
                 "convert-source-map": "^1.1.0",
                 "fs-readdir-recursive": "^1.1.0",
-                "glob": "^7.0.0",
+                "glob": "^7.2.0",
                 "make-dir": "^2.1.0",
-                "slash": "^2.0.0",
-                "source-map": "^0.5.0"
+                "slash": "^2.0.0"
+            },
+            "bin": {
+                "babel": "bin/babel.js",
+                "babel-external-helpers": "bin/babel-external-helpers.js"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "optionalDependencies": {
+                "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
+                "chokidar": "^3.4.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/code-frame": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
-            "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
-            "dev": true,
-            "requires": {
-                "@babel/highlight": "^7.16.7"
+        "node_modules/@babel/cli/node_modules/binary-extensions": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+            "optional": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@babel/compat-data": {
-            "version": "7.17.0",
-            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz",
-            "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==",
-            "dev": true
-        },
-        "@babel/core": {
-            "version": "7.17.5",
-            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz",
-            "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==",
-            "dev": true,
-            "requires": {
-                "@ampproject/remapping": "^2.1.0",
-                "@babel/code-frame": "^7.16.7",
-                "@babel/generator": "^7.17.3",
-                "@babel/helper-compilation-targets": "^7.16.7",
-                "@babel/helper-module-transforms": "^7.16.7",
-                "@babel/helpers": "^7.17.2",
-                "@babel/parser": "^7.17.3",
-                "@babel/template": "^7.16.7",
-                "@babel/traverse": "^7.17.3",
-                "@babel/types": "^7.17.0",
-                "convert-source-map": "^1.7.0",
-                "debug": "^4.1.0",
-                "gensync": "^1.0.0-beta.2",
-                "json5": "^2.1.2",
-                "semver": "^6.3.0"
-            },
+        "node_modules/@babel/cli/node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "optional": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@babel/generator": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz",
-            "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.17.0",
-                "jsesc": "^2.5.1",
-                "source-map": "^0.5.0"
-            },
-            "dependencies": {
-                "jsesc": {
-                    "version": "2.5.2",
-                    "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-                    "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-                    "dev": true
+        "node_modules/@babel/cli/node_modules/chokidar": {
+            "version": "3.5.3",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+            "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://paulmillr.com/funding/"
                 }
+            ],
+            "optional": true,
+            "dependencies": {
+                "anymatch": "~3.1.2",
+                "braces": "~3.0.2",
+                "glob-parent": "~5.1.2",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.6.0"
+            },
+            "engines": {
+                "node": ">= 8.10.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.2"
             }
         },
-        "@babel/helper-annotate-as-pure": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
-            "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/cli/node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "optional": true,
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@babel/helper-builder-binary-assignment-operator-visitor": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
-            "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-explode-assignable-expression": "^7.16.7",
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/cli/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
             }
         },
-        "@babel/helper-compilation-targets": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
-            "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
-            "dev": true,
-            "requires": {
-                "@babel/compat-data": "^7.16.4",
-                "@babel/helper-validator-option": "^7.16.7",
-                "browserslist": "^4.17.5",
-                "semver": "^6.3.0"
-            },
+        "node_modules/@babel/cli/node_modules/is-binary-path": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+            "optional": true,
             "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+                "binary-extensions": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@babel/helper-create-class-features-plugin": {
-            "version": "7.17.6",
-            "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz",
-            "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-environment-visitor": "^7.16.7",
-                "@babel/helper-function-name": "^7.16.7",
-                "@babel/helper-member-expression-to-functions": "^7.16.7",
-                "@babel/helper-optimise-call-expression": "^7.16.7",
-                "@babel/helper-replace-supers": "^7.16.7",
-                "@babel/helper-split-export-declaration": "^7.16.7"
+        "node_modules/@babel/cli/node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "optional": true,
+            "engines": {
+                "node": ">=0.12.0"
             }
         },
-        "@babel/helper-create-regexp-features-plugin": {
-            "version": "7.17.0",
-            "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz",
-            "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "regexpu-core": "^5.0.1"
-            },
+        "node_modules/@babel/cli/node_modules/readdirp": {
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+            "optional": true,
             "dependencies": {
-                "regenerate-unicode-properties": {
-                    "version": "10.0.1",
-                    "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
-                    "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
-                    "dev": true,
-                    "requires": {
-                        "regenerate": "^1.4.2"
-                    }
-                },
-                "regexpu-core": {
-                    "version": "5.0.1",
-                    "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz",
-                    "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==",
-                    "dev": true,
-                    "requires": {
-                        "regenerate": "^1.4.2",
-                        "regenerate-unicode-properties": "^10.0.1",
-                        "regjsgen": "^0.6.0",
-                        "regjsparser": "^0.8.2",
-                        "unicode-match-property-ecmascript": "^2.0.0",
-                        "unicode-match-property-value-ecmascript": "^2.0.0"
-                    }
-                },
-                "regjsgen": {
-                    "version": "0.6.0",
-                    "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
-                    "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
-                    "dev": true
-                },
-                "regjsparser": {
-                    "version": "0.8.4",
-                    "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
-                    "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
-                    "dev": true,
-                    "requires": {
-                        "jsesc": "~0.5.0"
-                    }
-                }
+                "picomatch": "^2.2.1"
+            },
+            "engines": {
+                "node": ">=8.10.0"
             }
         },
-        "@babel/helper-define-polyfill-provider": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
-            "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-compilation-targets": "^7.13.0",
-                "@babel/helper-module-imports": "^7.12.13",
-                "@babel/helper-plugin-utils": "^7.13.0",
-                "@babel/traverse": "^7.13.0",
-                "debug": "^4.1.1",
-                "lodash.debounce": "^4.0.8",
-                "resolve": "^1.14.2",
-                "semver": "^6.1.2"
-            },
+        "node_modules/@babel/cli/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+            "optional": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
             }
         },
-        "@babel/helper-environment-visitor": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
-            "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/code-frame": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
+            "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+            "dependencies": {
+                "@babel/highlight": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-explode-assignable-expression": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
-            "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/compat-data": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz",
+            "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-function-name": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
-            "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-get-function-arity": "^7.16.7",
-                "@babel/template": "^7.16.7",
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/core": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz",
+            "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==",
+            "dependencies": {
+                "@ampproject/remapping": "^2.2.0",
+                "@babel/code-frame": "^7.21.4",
+                "@babel/generator": "^7.21.4",
+                "@babel/helper-compilation-targets": "^7.21.4",
+                "@babel/helper-module-transforms": "^7.21.2",
+                "@babel/helpers": "^7.21.0",
+                "@babel/parser": "^7.21.4",
+                "@babel/template": "^7.20.7",
+                "@babel/traverse": "^7.21.4",
+                "@babel/types": "^7.21.4",
+                "convert-source-map": "^1.7.0",
+                "debug": "^4.1.0",
+                "gensync": "^1.0.0-beta.2",
+                "json5": "^2.2.2",
+                "semver": "^6.3.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/babel"
             }
         },
-        "@babel/helper-get-function-arity": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
-            "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/core/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "@babel/helper-hoist-variables": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
-            "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/generator": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz",
+            "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==",
+            "dependencies": {
+                "@babel/types": "^7.21.4",
+                "@jridgewell/gen-mapping": "^0.3.2",
+                "@jridgewell/trace-mapping": "^0.3.17",
+                "jsesc": "^2.5.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-member-expression-to-functions": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz",
-            "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+            "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+            "dependencies": {
+                "@babel/types": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-module-imports": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
-            "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
+            "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
+            "dependencies": {
+                "@babel/helper-explode-assignable-expression": "^7.18.6",
+                "@babel/types": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-module-transforms": {
-            "version": "7.17.6",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz",
-            "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-environment-visitor": "^7.16.7",
-                "@babel/helper-module-imports": "^7.16.7",
-                "@babel/helper-simple-access": "^7.16.7",
-                "@babel/helper-split-export-declaration": "^7.16.7",
-                "@babel/helper-validator-identifier": "^7.16.7",
-                "@babel/template": "^7.16.7",
-                "@babel/traverse": "^7.17.3",
-                "@babel/types": "^7.17.0"
+        "node_modules/@babel/helper-compilation-targets": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz",
+            "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==",
+            "dependencies": {
+                "@babel/compat-data": "^7.21.4",
+                "@babel/helper-validator-option": "^7.21.0",
+                "browserslist": "^4.21.3",
+                "lru-cache": "^5.1.1",
+                "semver": "^6.3.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "@babel/helper-optimise-call-expression": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
-            "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "@babel/helper-plugin-utils": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
-            "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
-            "dev": true
+        "node_modules/@babel/helper-create-class-features-plugin": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz",
+            "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-function-name": "^7.21.0",
+                "@babel/helper-member-expression-to-functions": "^7.21.0",
+                "@babel/helper-optimise-call-expression": "^7.18.6",
+                "@babel/helper-replace-supers": "^7.20.7",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+                "@babel/helper-split-export-declaration": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
         },
-        "@babel/helper-remap-async-to-generator": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
-            "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-wrap-function": "^7.16.8",
-                "@babel/types": "^7.16.8"
+        "node_modules/@babel/helper-create-regexp-features-plugin": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz",
+            "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "regexpu-core": "^5.3.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "@babel/helper-replace-supers": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
-            "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-environment-visitor": "^7.16.7",
-                "@babel/helper-member-expression-to-functions": "^7.16.7",
-                "@babel/helper-optimise-call-expression": "^7.16.7",
-                "@babel/traverse": "^7.16.7",
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-define-polyfill-provider": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
+            "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
+            "dependencies": {
+                "@babel/helper-compilation-targets": "^7.17.7",
+                "@babel/helper-plugin-utils": "^7.16.7",
+                "debug": "^4.1.1",
+                "lodash.debounce": "^4.0.8",
+                "resolve": "^1.14.2",
+                "semver": "^6.1.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.4.0-0"
             }
         },
-        "@babel/helper-simple-access": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
-            "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "@babel/helper-skip-transparent-expression-wrappers": {
-            "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.16.0"
+        "node_modules/@babel/helper-environment-visitor": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+            "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-split-export-declaration": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
-            "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/helper-explode-assignable-expression": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
+            "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
+            "dependencies": {
+                "@babel/types": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helper-validator-identifier": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
-            "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
-            "dev": true
+        "node_modules/@babel/helper-function-name": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+            "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+            "dependencies": {
+                "@babel/template": "^7.20.7",
+                "@babel/types": "^7.21.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
         },
-        "@babel/helper-validator-option": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
-            "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
-            "dev": true
+        "node_modules/@babel/helper-hoist-variables": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+            "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+            "dependencies": {
+                "@babel/types": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
         },
-        "@babel/helper-wrap-function": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
-            "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-function-name": "^7.16.7",
-                "@babel/template": "^7.16.7",
-                "@babel/traverse": "^7.16.8",
-                "@babel/types": "^7.16.8"
+        "node_modules/@babel/helper-member-expression-to-functions": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
+            "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
+            "dependencies": {
+                "@babel/types": "^7.21.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/helpers": {
-            "version": "7.17.2",
-            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz",
-            "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==",
-            "dev": true,
-            "requires": {
-                "@babel/template": "^7.16.7",
-                "@babel/traverse": "^7.17.0",
-                "@babel/types": "^7.17.0"
+        "node_modules/@babel/helper-module-imports": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
+            "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
+            "dependencies": {
+                "@babel/types": "^7.21.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/highlight": {
-            "version": "7.16.10",
-            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
-            "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-validator-identifier": "^7.16.7",
-                "chalk": "^2.0.0",
-                "js-tokens": "^4.0.0"
+        "node_modules/@babel/helper-module-transforms": {
+            "version": "7.21.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+            "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+            "dependencies": {
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-module-imports": "^7.18.6",
+                "@babel/helper-simple-access": "^7.20.2",
+                "@babel/helper-split-export-declaration": "^7.18.6",
+                "@babel/helper-validator-identifier": "^7.19.1",
+                "@babel/template": "^7.20.7",
+                "@babel/traverse": "^7.21.2",
+                "@babel/types": "^7.21.2"
             },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-optimise-call-expression": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+            "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                }
+                "@babel/types": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/node": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.16.8.tgz",
-            "integrity": "sha512-V2dopEtPUL4LD+e8UtMIZB6BbsmMsS/7E1ZAvWNINzBfi7Cf3X9MLCpzHVZT4HeeF1lQl72IRtqqVt2RUImwyA==",
-            "requires": {
-                "@babel/register": "^7.16.8",
-                "commander": "^4.0.1",
-                "core-js": "^3.20.2",
-                "node-environment-flags": "^1.0.5",
-                "regenerator-runtime": "^0.13.4",
-                "v8flags": "^3.1.1"
+        "node_modules/@babel/helper-plugin-utils": {
+            "version": "7.20.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+            "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/parser": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
-            "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
-            "dev": true
+        "node_modules/@babel/helper-remap-async-to-generator": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
+            "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-wrap-function": "^7.18.9",
+                "@babel/types": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
         },
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
-            "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/helper-replace-supers": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
+            "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
+            "dependencies": {
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-member-expression-to-functions": "^7.20.7",
+                "@babel/helper-optimise-call-expression": "^7.18.6",
+                "@babel/template": "^7.20.7",
+                "@babel/traverse": "^7.20.7",
+                "@babel/types": "^7.20.7"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
-            "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
-                "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+        "node_modules/@babel/helper-simple-access": {
+            "version": "7.20.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+            "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+            "dependencies": {
+                "@babel/types": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-async-generator-functions": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
-            "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-remap-async-to-generator": "^7.16.8",
-                "@babel/plugin-syntax-async-generators": "^7.8.4"
+        "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+            "version": "7.20.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+            "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+            "dependencies": {
+                "@babel/types": "^7.20.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-class-properties": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
-            "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-class-features-plugin": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/helper-split-export-declaration": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+            "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+            "dependencies": {
+                "@babel/types": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-class-static-block": {
-            "version": "7.17.6",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz",
-            "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-class-features-plugin": "^7.17.6",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-class-static-block": "^7.14.5"
+        "node_modules/@babel/helper-string-parser": {
+            "version": "7.19.4",
+            "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+            "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-dynamic-import": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
-            "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+        "node_modules/@babel/helper-validator-identifier": {
+            "version": "7.19.1",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+            "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-export-default-from": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz",
-            "integrity": "sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-export-default-from": "^7.16.7"
+        "node_modules/@babel/helper-validator-option": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+            "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-export-namespace-from": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
-            "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+        "node_modules/@babel/helper-wrap-function": {
+            "version": "7.20.5",
+            "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
+            "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
+            "dependencies": {
+                "@babel/helper-function-name": "^7.19.0",
+                "@babel/template": "^7.18.10",
+                "@babel/traverse": "^7.20.5",
+                "@babel/types": "^7.20.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-json-strings": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
-            "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-json-strings": "^7.8.3"
+        "node_modules/@babel/helpers": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+            "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+            "dependencies": {
+                "@babel/template": "^7.20.7",
+                "@babel/traverse": "^7.21.0",
+                "@babel/types": "^7.21.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-logical-assignment-operators": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
-            "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+        "node_modules/@babel/highlight": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+            "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+            "dependencies": {
+                "@babel/helper-validator-identifier": "^7.18.6",
+                "chalk": "^2.0.0",
+                "js-tokens": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/plugin-proposal-nullish-coalescing-operator": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
-            "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+        "node_modules/@babel/highlight/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "@babel/plugin-proposal-numeric-separator": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
-            "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+        "node_modules/@babel/highlight/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "@babel/plugin-proposal-object-rest-spread": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz",
-            "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==",
-            "dev": true,
-            "requires": {
-                "@babel/compat-data": "^7.17.0",
-                "@babel/helper-compilation-targets": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-                "@babel/plugin-transform-parameters": "^7.16.7"
+        "node_modules/@babel/highlight/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "@babel/plugin-proposal-optional-catch-binding": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
-            "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+        "node_modules/@babel/highlight/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+        },
+        "node_modules/@babel/highlight/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "@babel/plugin-proposal-optional-chaining": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
-            "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
-                "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+        "node_modules/@babel/highlight/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "@babel/plugin-proposal-private-methods": {
-            "version": "7.16.11",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
-            "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-class-features-plugin": "^7.16.10",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/node": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.20.7.tgz",
+            "integrity": "sha512-AQt3gVcP+fpFuoFn4FmIW/+5JovvEoA9og4Y1LrRw0pv3jkl4tujZMMy3X/3ugjLrEy3k1aNywo3JIl3g+jVXQ==",
+            "dependencies": {
+                "@babel/register": "^7.18.9",
+                "commander": "^4.0.1",
+                "core-js": "^3.26.0",
+                "node-environment-flags": "^1.0.5",
+                "regenerator-runtime": "^0.13.11",
+                "v8flags": "^3.1.1"
+            },
+            "bin": {
+                "babel-node": "bin/babel-node.js"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-proposal-private-property-in-object": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
-            "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-create-class-features-plugin": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+        "node_modules/@babel/parser": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz",
+            "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==",
+            "bin": {
+                "parser": "bin/babel-parser.js"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "@babel/plugin-proposal-unicode-property-regex": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
-            "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
+            "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "@babel/plugin-syntax-async-generators": {
+        "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
+            "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+                "@babel/plugin-proposal-optional-chaining": "^7.20.7"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-async-generator-functions": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
+            "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
+            "dependencies": {
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-remap-async-to-generator": "^7.18.9",
+                "@babel/plugin-syntax-async-generators": "^7.8.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-class-properties": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+            "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-class-static-block": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz",
+            "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.21.0",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-class-static-block": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.12.0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-dynamic-import": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
+            "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-export-default-from": {
+            "version": "7.18.10",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz",
+            "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9",
+                "@babel/plugin-syntax-export-default-from": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-export-namespace-from": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
+            "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-json-strings": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
+            "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/plugin-syntax-json-strings": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
+            "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+            "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@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": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+            "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-object-rest-spread": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
+            "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
+            "dependencies": {
+                "@babel/compat-data": "^7.20.5",
+                "@babel/helper-compilation-targets": "^7.20.7",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-transform-parameters": "^7.20.7"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+            "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-optional-chaining": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+            "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.20.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": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+            "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-private-property-in-object": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz",
+            "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-create-class-features-plugin": "^7.21.0",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+            "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-async-generators": {
             "version": "7.8.4",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
             "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-bigint": {
+        "node_modules/@babel/plugin-syntax-bigint": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
             "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-class-properties": {
+        "node_modules/@babel/plugin-syntax-class-properties": {
             "version": "7.12.13",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
             "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-class-static-block": {
+        "node_modules/@babel/plugin-syntax-class-static-block": {
             "version": "7.14.5",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
             "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-dynamic-import": {
+        "node_modules/@babel/plugin-syntax-dynamic-import": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
             "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-export-default-from": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz",
-            "integrity": "sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-syntax-export-default-from": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz",
+            "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-export-namespace-from": {
+        "node_modules/@babel/plugin-syntax-export-namespace-from": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
             "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-flow": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz",
-            "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-syntax-flow": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz",
+            "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-import-assertions": {
+            "version": "7.20.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
+            "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.19.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-import-meta": {
+        "node_modules/@babel/plugin-syntax-import-meta": {
             "version": "7.10.4",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
             "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-json-strings": {
+        "node_modules/@babel/plugin-syntax-json-strings": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
             "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-jsx": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
-            "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-syntax-jsx": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz",
+            "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-logical-assignment-operators": {
+        "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
             "version": "7.10.4",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
             "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-nullish-coalescing-operator": {
+        "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
             "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-numeric-separator": {
+        "node_modules/@babel/plugin-syntax-numeric-separator": {
             "version": "7.10.4",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
             "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-object-rest-spread": {
+        "node_modules/@babel/plugin-syntax-object-rest-spread": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
             "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-optional-catch-binding": {
+        "node_modules/@babel/plugin-syntax-optional-catch-binding": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
             "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-optional-chaining": {
+        "node_modules/@babel/plugin-syntax-optional-chaining": {
             "version": "7.8.3",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
             "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-private-property-in-object": {
+        "node_modules/@babel/plugin-syntax-private-property-in-object": {
             "version": "7.14.5",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
             "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-syntax-top-level-await": {
+        "node_modules/@babel/plugin-syntax-top-level-await": {
             "version": "7.14.5",
             "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
             "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.14.5"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-arrow-functions": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
-            "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-syntax-typescript": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz",
+            "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-async-to-generator": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
-            "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-module-imports": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-remap-async-to-generator": "^7.16.8"
+        "node_modules/@babel/plugin-transform-arrow-functions": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
+            "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-block-scoped-functions": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
-            "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-async-to-generator": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
+            "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
+            "dependencies": {
+                "@babel/helper-module-imports": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-remap-async-to-generator": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-block-scoping": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
-            "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-block-scoped-functions": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+            "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-classes": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
-            "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-environment-visitor": "^7.16.7",
-                "@babel/helper-function-name": "^7.16.7",
-                "@babel/helper-optimise-call-expression": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-replace-supers": "^7.16.7",
-                "@babel/helper-split-export-declaration": "^7.16.7",
-                "globals": "^11.1.0"
+        "node_modules/@babel/plugin-transform-block-scoping": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz",
+            "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-computed-properties": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
-            "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-classes": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz",
+            "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-compilation-targets": "^7.20.7",
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-function-name": "^7.21.0",
+                "@babel/helper-optimise-call-expression": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-replace-supers": "^7.20.7",
+                "@babel/helper-split-export-declaration": "^7.18.6",
+                "globals": "^11.1.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-destructuring": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz",
-            "integrity": "sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-computed-properties": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
+            "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/template": "^7.20.7"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-dotall-regex": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
-            "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-destructuring": {
+            "version": "7.21.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz",
+            "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-duplicate-keys": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
-            "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-dotall-regex": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+            "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-exponentiation-operator": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
-            "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-duplicate-keys": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
+            "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-flow-strip-types": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz",
-            "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-flow": "^7.16.7"
+        "node_modules/@babel/plugin-transform-exponentiation-operator": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+            "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
+            "dependencies": {
+                "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-for-of": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
-            "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-flow-strip-types": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz",
+            "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-flow": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-function-name": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
-            "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-compilation-targets": "^7.16.7",
-                "@babel/helper-function-name": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-for-of": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz",
+            "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-literals": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
-            "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-function-name": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
+            "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
+            "dependencies": {
+                "@babel/helper-compilation-targets": "^7.18.9",
+                "@babel/helper-function-name": "^7.18.9",
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-member-expression-literals": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
-            "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-literals": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
+            "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-modules-amd": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
-            "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-module-transforms": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "babel-plugin-dynamic-import-node": "^2.3.3"
+        "node_modules/@babel/plugin-transform-member-expression-literals": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+            "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-modules-commonjs": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz",
-            "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-module-transforms": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-simple-access": "^7.16.7",
-                "babel-plugin-dynamic-import-node": "^2.3.3"
+        "node_modules/@babel/plugin-transform-modules-amd": {
+            "version": "7.20.11",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
+            "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.20.11",
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-modules-systemjs": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz",
-            "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-hoist-variables": "^7.16.7",
-                "@babel/helper-module-transforms": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-validator-identifier": "^7.16.7",
-                "babel-plugin-dynamic-import-node": "^2.3.3"
+        "node_modules/@babel/plugin-transform-modules-commonjs": {
+            "version": "7.21.2",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz",
+            "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.21.2",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-simple-access": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-modules-umd": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
-            "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-module-transforms": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-modules-systemjs": {
+            "version": "7.20.11",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
+            "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
+            "dependencies": {
+                "@babel/helper-hoist-variables": "^7.18.6",
+                "@babel/helper-module-transforms": "^7.20.11",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-validator-identifier": "^7.19.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-named-capturing-groups-regex": {
-            "version": "7.16.8",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
-            "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+        "node_modules/@babel/plugin-transform-modules-umd": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+            "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-new-target": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
-            "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+            "version": "7.20.5",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
+            "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.20.5",
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "@babel/plugin-transform-object-super": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
-            "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-replace-supers": "^7.16.7"
+        "node_modules/@babel/plugin-transform-new-target": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
+            "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-parameters": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
-            "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-object-super": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+            "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/helper-replace-supers": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-property-literals": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
-            "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-parameters": {
+            "version": "7.21.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz",
+            "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-react-display-name": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
-            "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-property-literals": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+            "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-react-jsx": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz",
-            "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-module-imports": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/plugin-syntax-jsx": "^7.16.7",
-                "@babel/types": "^7.17.0"
+        "node_modules/@babel/plugin-transform-react-constant-elements": {
+            "version": "7.21.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz",
+            "integrity": "sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-react-jsx-development": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz",
-            "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==",
-            "dev": true,
-            "requires": {
-                "@babel/plugin-transform-react-jsx": "^7.16.7"
+        "node_modules/@babel/plugin-transform-react-display-name": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
+            "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-react-pure-annotations": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz",
-            "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-annotate-as-pure": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-react-jsx": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz",
+            "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-module-imports": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-jsx": "^7.18.6",
+                "@babel/types": "^7.21.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-regenerator": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz",
-            "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==",
-            "dev": true,
-            "requires": {
-                "regenerator-transform": "^0.14.2"
+        "node_modules/@babel/plugin-transform-react-jsx-development": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
+            "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
+            "dependencies": {
+                "@babel/plugin-transform-react-jsx": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-reserved-words": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
-            "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-react-jsx-self": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz",
+            "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-shorthand-properties": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
-            "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-react-jsx-source": {
+            "version": "7.19.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
+            "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.19.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-spread": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
-            "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+        "node_modules/@babel/plugin-transform-react-pure-annotations": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
+            "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-sticky-regex": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
-            "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-regenerator": {
+            "version": "7.20.5",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
+            "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "regenerator-transform": "^0.15.1"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-template-literals": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
-            "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-reserved-words": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+            "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-typeof-symbol": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
-            "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-runtime": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz",
+            "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-module-imports": "^7.21.4",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "babel-plugin-polyfill-corejs2": "^0.3.3",
+                "babel-plugin-polyfill-corejs3": "^0.6.0",
+                "babel-plugin-polyfill-regenerator": "^0.4.1",
+                "semver": "^6.3.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/plugin-transform-unicode-escapes": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
-            "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "peer": true,
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "@babel/plugin-transform-unicode-regex": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
-            "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-create-regexp-features-plugin": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7"
+        "node_modules/@babel/plugin-transform-shorthand-properties": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+            "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/preset-env": {
-            "version": "7.16.11",
-            "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
-            "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
-            "dev": true,
-            "requires": {
-                "@babel/compat-data": "^7.16.8",
-                "@babel/helper-compilation-targets": "^7.16.7",
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-validator-option": "^7.16.7",
-                "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
-                "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
-                "@babel/plugin-proposal-async-generator-functions": "^7.16.8",
-                "@babel/plugin-proposal-class-properties": "^7.16.7",
-                "@babel/plugin-proposal-class-static-block": "^7.16.7",
-                "@babel/plugin-proposal-dynamic-import": "^7.16.7",
-                "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
-                "@babel/plugin-proposal-json-strings": "^7.16.7",
-                "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
-                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
-                "@babel/plugin-proposal-numeric-separator": "^7.16.7",
-                "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
-                "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
-                "@babel/plugin-proposal-optional-chaining": "^7.16.7",
-                "@babel/plugin-proposal-private-methods": "^7.16.11",
-                "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
-                "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+        "node_modules/@babel/plugin-transform-spread": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
+            "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-sticky-regex": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+            "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-template-literals": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
+            "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-typeof-symbol": {
+            "version": "7.18.9",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
+            "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-typescript": {
+            "version": "7.21.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz",
+            "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.18.6",
+                "@babel/helper-create-class-features-plugin": "^7.21.0",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/plugin-syntax-typescript": "^7.20.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-unicode-escapes": {
+            "version": "7.18.10",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
+            "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-unicode-regex": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+            "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/preset-env": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz",
+            "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==",
+            "dependencies": {
+                "@babel/compat-data": "^7.21.4",
+                "@babel/helper-compilation-targets": "^7.21.4",
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-validator-option": "^7.21.0",
+                "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+                "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7",
+                "@babel/plugin-proposal-async-generator-functions": "^7.20.7",
+                "@babel/plugin-proposal-class-properties": "^7.18.6",
+                "@babel/plugin-proposal-class-static-block": "^7.21.0",
+                "@babel/plugin-proposal-dynamic-import": "^7.18.6",
+                "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+                "@babel/plugin-proposal-json-strings": "^7.18.6",
+                "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+                "@babel/plugin-proposal-numeric-separator": "^7.18.6",
+                "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
+                "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
+                "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+                "@babel/plugin-proposal-private-methods": "^7.18.6",
+                "@babel/plugin-proposal-private-property-in-object": "^7.21.0",
+                "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
                 "@babel/plugin-syntax-async-generators": "^7.8.4",
                 "@babel/plugin-syntax-class-properties": "^7.12.13",
                 "@babel/plugin-syntax-class-static-block": "^7.14.5",
                 "@babel/plugin-syntax-dynamic-import": "^7.8.3",
                 "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+                "@babel/plugin-syntax-import-assertions": "^7.20.0",
                 "@babel/plugin-syntax-json-strings": "^7.8.3",
                 "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
                 "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
@@ -2015,634 +2191,636 @@
                 "@babel/plugin-syntax-optional-chaining": "^7.8.3",
                 "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
                 "@babel/plugin-syntax-top-level-await": "^7.14.5",
-                "@babel/plugin-transform-arrow-functions": "^7.16.7",
-                "@babel/plugin-transform-async-to-generator": "^7.16.8",
-                "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
-                "@babel/plugin-transform-block-scoping": "^7.16.7",
-                "@babel/plugin-transform-classes": "^7.16.7",
-                "@babel/plugin-transform-computed-properties": "^7.16.7",
-                "@babel/plugin-transform-destructuring": "^7.16.7",
-                "@babel/plugin-transform-dotall-regex": "^7.16.7",
-                "@babel/plugin-transform-duplicate-keys": "^7.16.7",
-                "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
-                "@babel/plugin-transform-for-of": "^7.16.7",
-                "@babel/plugin-transform-function-name": "^7.16.7",
-                "@babel/plugin-transform-literals": "^7.16.7",
-                "@babel/plugin-transform-member-expression-literals": "^7.16.7",
-                "@babel/plugin-transform-modules-amd": "^7.16.7",
-                "@babel/plugin-transform-modules-commonjs": "^7.16.8",
-                "@babel/plugin-transform-modules-systemjs": "^7.16.7",
-                "@babel/plugin-transform-modules-umd": "^7.16.7",
-                "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8",
-                "@babel/plugin-transform-new-target": "^7.16.7",
-                "@babel/plugin-transform-object-super": "^7.16.7",
-                "@babel/plugin-transform-parameters": "^7.16.7",
-                "@babel/plugin-transform-property-literals": "^7.16.7",
-                "@babel/plugin-transform-regenerator": "^7.16.7",
-                "@babel/plugin-transform-reserved-words": "^7.16.7",
-                "@babel/plugin-transform-shorthand-properties": "^7.16.7",
-                "@babel/plugin-transform-spread": "^7.16.7",
-                "@babel/plugin-transform-sticky-regex": "^7.16.7",
-                "@babel/plugin-transform-template-literals": "^7.16.7",
-                "@babel/plugin-transform-typeof-symbol": "^7.16.7",
-                "@babel/plugin-transform-unicode-escapes": "^7.16.7",
-                "@babel/plugin-transform-unicode-regex": "^7.16.7",
+                "@babel/plugin-transform-arrow-functions": "^7.20.7",
+                "@babel/plugin-transform-async-to-generator": "^7.20.7",
+                "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+                "@babel/plugin-transform-block-scoping": "^7.21.0",
+                "@babel/plugin-transform-classes": "^7.21.0",
+                "@babel/plugin-transform-computed-properties": "^7.20.7",
+                "@babel/plugin-transform-destructuring": "^7.21.3",
+                "@babel/plugin-transform-dotall-regex": "^7.18.6",
+                "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+                "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+                "@babel/plugin-transform-for-of": "^7.21.0",
+                "@babel/plugin-transform-function-name": "^7.18.9",
+                "@babel/plugin-transform-literals": "^7.18.9",
+                "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+                "@babel/plugin-transform-modules-amd": "^7.20.11",
+                "@babel/plugin-transform-modules-commonjs": "^7.21.2",
+                "@babel/plugin-transform-modules-systemjs": "^7.20.11",
+                "@babel/plugin-transform-modules-umd": "^7.18.6",
+                "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5",
+                "@babel/plugin-transform-new-target": "^7.18.6",
+                "@babel/plugin-transform-object-super": "^7.18.6",
+                "@babel/plugin-transform-parameters": "^7.21.3",
+                "@babel/plugin-transform-property-literals": "^7.18.6",
+                "@babel/plugin-transform-regenerator": "^7.20.5",
+                "@babel/plugin-transform-reserved-words": "^7.18.6",
+                "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+                "@babel/plugin-transform-spread": "^7.20.7",
+                "@babel/plugin-transform-sticky-regex": "^7.18.6",
+                "@babel/plugin-transform-template-literals": "^7.18.9",
+                "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+                "@babel/plugin-transform-unicode-escapes": "^7.18.10",
+                "@babel/plugin-transform-unicode-regex": "^7.18.6",
                 "@babel/preset-modules": "^0.1.5",
-                "@babel/types": "^7.16.8",
-                "babel-plugin-polyfill-corejs2": "^0.3.0",
-                "babel-plugin-polyfill-corejs3": "^0.5.0",
-                "babel-plugin-polyfill-regenerator": "^0.3.0",
-                "core-js-compat": "^3.20.2",
+                "@babel/types": "^7.21.4",
+                "babel-plugin-polyfill-corejs2": "^0.3.3",
+                "babel-plugin-polyfill-corejs3": "^0.6.0",
+                "babel-plugin-polyfill-regenerator": "^0.4.1",
+                "core-js-compat": "^3.25.1",
                 "semver": "^6.3.0"
             },
-            "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/preset-flow": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz",
-            "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-validator-option": "^7.16.7",
-                "@babel/plugin-transform-flow-strip-types": "^7.16.7"
+        "node_modules/@babel/preset-env/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/@babel/preset-flow": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.21.4.tgz",
+            "integrity": "sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==",
+            "peer": true,
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-validator-option": "^7.21.0",
+                "@babel/plugin-transform-flow-strip-types": "^7.21.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/preset-modules": {
+        "node_modules/@babel/preset-modules": {
             "version": "0.1.5",
             "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
             "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.0.0",
                 "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
                 "@babel/plugin-transform-dotall-regex": "^7.4.4",
                 "@babel/types": "^7.4.4",
                 "esutils": "^2.0.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/preset-react": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz",
-            "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-plugin-utils": "^7.16.7",
-                "@babel/helper-validator-option": "^7.16.7",
-                "@babel/plugin-transform-react-display-name": "^7.16.7",
-                "@babel/plugin-transform-react-jsx": "^7.16.7",
-                "@babel/plugin-transform-react-jsx-development": "^7.16.7",
-                "@babel/plugin-transform-react-pure-annotations": "^7.16.7"
-            }
-        },
-        "@babel/register": {
-            "version": "7.17.0",
-            "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz",
-            "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==",
-            "requires": {
+        "node_modules/@babel/preset-react": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
+            "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.18.6",
+                "@babel/helper-validator-option": "^7.18.6",
+                "@babel/plugin-transform-react-display-name": "^7.18.6",
+                "@babel/plugin-transform-react-jsx": "^7.18.6",
+                "@babel/plugin-transform-react-jsx-development": "^7.18.6",
+                "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/preset-typescript": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz",
+            "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.20.2",
+                "@babel/helper-validator-option": "^7.21.0",
+                "@babel/plugin-syntax-jsx": "^7.21.4",
+                "@babel/plugin-transform-modules-commonjs": "^7.21.2",
+                "@babel/plugin-transform-typescript": "^7.21.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/register": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.21.0.tgz",
+            "integrity": "sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==",
+            "dependencies": {
                 "clone-deep": "^4.0.1",
                 "find-cache-dir": "^2.0.0",
                 "make-dir": "^2.1.0",
                 "pirates": "^4.0.5",
                 "source-map-support": "^0.5.16"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@babel/runtime": {
-            "version": "7.17.2",
-            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz",
-            "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==",
-            "requires": {
-                "regenerator-runtime": "^0.13.4"
-            }
+        "node_modules/@babel/regjsgen": {
+            "version": "0.8.0",
+            "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+            "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
         },
-        "@babel/runtime-corejs2": {
-            "version": "7.17.2",
-            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.17.2.tgz",
-            "integrity": "sha512-EamjJvKlHTdSmJ8t6yHtqttdiA3xThvTNdmGb0Kh0oqRhV1SU2JGFU5TjVCg35Vnn8MYfUBHHtLZYHIY+W28qw==",
-            "requires": {
-                "core-js": "^2.6.5",
-                "regenerator-runtime": "^0.13.4"
+        "node_modules/@babel/runtime": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+            "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+            "dependencies": {
+                "regenerator-runtime": "^0.13.11"
             },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/runtime-corejs2": {
+            "version": "7.21.0",
+            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.21.0.tgz",
+            "integrity": "sha512-hVFDLYkuthnvQwWoOniPSq+RWyQTiimVdMXQJujoiSX8maFh/62+qRImGkRpeRflsVXXSMFS4HgNe3X9fuw5ww==",
             "dependencies": {
-                "core-js": {
-                    "version": "2.6.12",
-                    "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
-                    "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
-                }
+                "core-js": "^2.6.12",
+                "regenerator-runtime": "^0.13.11"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/runtime-corejs3": {
-            "version": "7.12.5",
-            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz",
-            "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==",
-            "requires": {
-                "core-js-pure": "^3.0.0",
+        "node_modules/@babel/runtime-corejs2/node_modules/core-js": {
+            "version": "2.6.12",
+            "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+            "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+            "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+            "hasInstallScript": true
+        },
+        "node_modules/@babel/runtime-corejs3": {
+            "version": "7.17.8",
+            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz",
+            "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==",
+            "dependencies": {
+                "core-js-pure": "^3.20.2",
                 "regenerator-runtime": "^0.13.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/template": {
-            "version": "7.16.7",
-            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
-            "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.16.7",
-                "@babel/parser": "^7.16.7",
-                "@babel/types": "^7.16.7"
+        "node_modules/@babel/template": {
+            "version": "7.20.7",
+            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+            "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+            "dependencies": {
+                "@babel/code-frame": "^7.18.6",
+                "@babel/parser": "^7.20.7",
+                "@babel/types": "^7.20.7"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/traverse": {
-            "version": "7.17.3",
-            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
-            "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.16.7",
-                "@babel/generator": "^7.17.3",
-                "@babel/helper-environment-visitor": "^7.16.7",
-                "@babel/helper-function-name": "^7.16.7",
-                "@babel/helper-hoist-variables": "^7.16.7",
-                "@babel/helper-split-export-declaration": "^7.16.7",
-                "@babel/parser": "^7.17.3",
-                "@babel/types": "^7.17.0",
+        "node_modules/@babel/traverse": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz",
+            "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==",
+            "dependencies": {
+                "@babel/code-frame": "^7.21.4",
+                "@babel/generator": "^7.21.4",
+                "@babel/helper-environment-visitor": "^7.18.9",
+                "@babel/helper-function-name": "^7.21.0",
+                "@babel/helper-hoist-variables": "^7.18.6",
+                "@babel/helper-split-export-declaration": "^7.18.6",
+                "@babel/parser": "^7.21.4",
+                "@babel/types": "^7.21.4",
                 "debug": "^4.1.0",
                 "globals": "^11.1.0"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@babel/types": {
-            "version": "7.17.0",
-            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
-            "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-validator-identifier": "^7.16.7",
+        "node_modules/@babel/types": {
+            "version": "7.21.4",
+            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz",
+            "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==",
+            "dependencies": {
+                "@babel/helper-string-parser": "^7.19.4",
+                "@babel/helper-validator-identifier": "^7.19.1",
                 "to-fast-properties": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "@bcoe/v8-coverage": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
-            "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+        "node_modules/@bufbuild/protobuf": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.2.0.tgz",
+            "integrity": "sha512-MBVuQMOBHxgGnZ9XCUIi8WOy5O/T4ma3TduCRhRvndv3UDbG9cHgd8h6nOYSGyBYPEvXf1z9nTwhp8mVIDbq2g==",
             "dev": true
         },
-        "@cnakazawa/watch": {
+        "node_modules/@cnakazawa/watch": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
             "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "exec-sh": "^0.3.2",
                 "minimist": "^1.2.0"
+            },
+            "bin": {
+                "watch": "cli.js"
+            },
+            "engines": {
+                "node": ">=0.1.95"
             }
         },
-        "@colors/colors": {
+        "node_modules/@colors/colors": {
             "version": "1.5.0",
             "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
             "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=0.1.90"
+            }
         },
-        "@dabh/diagnostics": {
+        "node_modules/@dabh/diagnostics": {
             "version": "2.0.3",
             "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
             "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "colorspace": "1.1.x",
                 "enabled": "2.0.x",
                 "kuler": "^2.0.0"
             }
         },
-        "@gar/promisify": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
-            "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
-            "dev": true
-        },
-        "@gulp-sourcemaps/identity-map": {
+        "node_modules/@gulp-sourcemaps/identity-map": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz",
             "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "acorn": "^6.4.1",
                 "normalize-path": "^3.0.0",
                 "postcss": "^7.0.16",
                 "source-map": "^0.6.0",
                 "through2": "^3.0.1"
             },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": {
+            "version": "6.4.2",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+            "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+            "dev": true,
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/@gulp-sourcemaps/identity-map/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+            "dev": true
+        },
+        "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+            "dev": true,
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
+            }
+        },
+        "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+            "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+            "dev": true,
             "dependencies": {
-                "acorn": {
-                    "version": "6.4.2",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-                    "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-                    "dev": true
-                },
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                },
-                "through2": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
-                    "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.4",
-                        "readable-stream": "2 || 3"
-                    }
-                }
+                "inherits": "^2.0.4",
+                "readable-stream": "2 || 3"
             }
         },
-        "@gulp-sourcemaps/map-sources": {
+        "node_modules/@gulp-sourcemaps/map-sources": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz",
-            "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=",
+            "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "normalize-path": "^2.0.1",
                 "through2": "^2.0.3"
             },
-            "dependencies": {
-                "normalize-path": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                    "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                    "dev": true,
-                    "requires": {
-                        "remove-trailing-separator": "^1.0.1"
-                    }
-                }
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "@hapi/address": {
-            "version": "2.1.4",
-            "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
-            "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
             "dev": true
         },
-        "@hapi/bourne": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
-            "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
-            "dev": true
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+            "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+            "dev": true,
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
         },
-        "@hapi/hoek": {
-            "version": "8.5.1",
-            "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
-            "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "@hapi/joi": {
-            "version": "15.1.1",
-            "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
-            "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "@hapi/address": "2.x.x",
-                "@hapi/bourne": "1.x.x",
-                "@hapi/hoek": "8.x.x",
-                "@hapi/topo": "3.x.x"
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "@hapi/topo": {
-            "version": "3.1.6",
-            "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
-            "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+        "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
             "dev": true,
-            "requires": {
-                "@hapi/hoek": "^8.3.0"
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/@hapi/hoek": {
+            "version": "9.3.0",
+            "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+            "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
+            "peer": true
+        },
+        "node_modules/@hapi/topo": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+            "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+            "peer": true,
+            "dependencies": {
+                "@hapi/hoek": "^9.0.0"
             }
         },
-        "@istanbuljs/load-nyc-config": {
+        "node_modules/@istanbuljs/load-nyc-config": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
             "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "camelcase": "^5.3.1",
                 "find-up": "^4.1.0",
                 "get-package-type": "^0.1.0",
                 "js-yaml": "^3.13.1",
                 "resolve-from": "^5.0.0"
             },
-            "dependencies": {
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+            "version": "5.3.1",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "@istanbuljs/schema": {
+        "node_modules/@istanbuljs/schema": {
             "version": "0.1.3",
             "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
             "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
-            "dev": true
-        },
-        "@jest/console": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz",
-            "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "chalk": "^4.0.0",
-                "jest-message-util": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "slash": "^3.0.0"
-            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@jest/create-cache-key-function": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz",
+            "integrity": "sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==",
+            "peer": true,
             "dependencies": {
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                }
+                "@jest/types": "^29.5.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/core": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz",
-            "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==",
-            "dev": true,
-            "requires": {
-                "@jest/console": "^26.6.2",
-                "@jest/reporters": "^26.6.2",
-                "@jest/test-result": "^26.6.2",
-                "@jest/transform": "^26.6.2",
-                "@jest/types": "^26.6.2",
+        "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
+            "dependencies": {
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
                 "@types/node": "*",
-                "ansi-escapes": "^4.2.1",
-                "chalk": "^4.0.0",
-                "exit": "^0.1.2",
-                "graceful-fs": "^4.2.4",
-                "jest-changed-files": "^26.6.2",
-                "jest-config": "^26.6.3",
-                "jest-haste-map": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-regex-util": "^26.0.0",
-                "jest-resolve": "^26.6.2",
-                "jest-resolve-dependencies": "^26.6.3",
-                "jest-runner": "^26.6.3",
-                "jest-runtime": "^26.6.3",
-                "jest-snapshot": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jest-validate": "^26.6.2",
-                "jest-watcher": "^26.6.2",
-                "micromatch": "^4.0.2",
-                "p-each-series": "^2.1.0",
-                "rimraf": "^3.0.0",
-                "slash": "^3.0.0",
-                "strip-ansi": "^6.0.0"
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
             },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
             "dependencies": {
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                }
+                "@types/yargs-parser": "*"
             }
         },
-        "@jest/environment": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz",
-            "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==",
-            "dev": true,
-            "requires": {
-                "@jest/fake-timers": "^26.6.2",
-                "@jest/types": "^26.6.2",
+        "node_modules/@jest/environment": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
+            "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+            "peer": true,
+            "dependencies": {
+                "@jest/fake-timers": "^29.5.0",
+                "@jest/types": "^29.5.0",
                 "@types/node": "*",
-                "jest-mock": "^26.6.2"
+                "jest-mock": "^29.5.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/fake-timers": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz",
-            "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==",
-            "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "@sinonjs/fake-timers": "^6.0.1",
+        "node_modules/@jest/environment/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
+            "dependencies": {
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
                 "@types/node": "*",
-                "jest-message-util": "^26.6.2",
-                "jest-mock": "^26.6.2",
-                "jest-util": "^26.6.2"
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/globals": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz",
-            "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==",
-            "dev": true,
-            "requires": {
-                "@jest/environment": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "expect": "^26.6.2"
+        "node_modules/@jest/environment/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
+            "dependencies": {
+                "@types/yargs-parser": "*"
             }
         },
-        "@jest/reporters": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz",
-            "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==",
-            "dev": true,
-            "requires": {
-                "@bcoe/v8-coverage": "^0.2.3",
-                "@jest/console": "^26.6.2",
-                "@jest/test-result": "^26.6.2",
-                "@jest/transform": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "chalk": "^4.0.0",
-                "collect-v8-coverage": "^1.0.0",
-                "exit": "^0.1.2",
-                "glob": "^7.1.2",
-                "graceful-fs": "^4.2.4",
-                "istanbul-lib-coverage": "^3.0.0",
-                "istanbul-lib-instrument": "^4.0.3",
-                "istanbul-lib-report": "^3.0.0",
-                "istanbul-lib-source-maps": "^4.0.0",
-                "istanbul-reports": "^3.0.2",
-                "jest-haste-map": "^26.6.2",
-                "jest-resolve": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jest-worker": "^26.6.2",
-                "node-notifier": "^8.0.0",
-                "slash": "^3.0.0",
-                "source-map": "^0.6.0",
-                "string-length": "^4.0.1",
-                "terminal-link": "^2.0.0",
-                "v8-to-istanbul": "^7.0.0"
-            },
-            "dependencies": {
-                "istanbul-lib-instrument": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
-                    "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/core": "^7.7.5",
-                        "@istanbuljs/schema": "^0.1.2",
-                        "istanbul-lib-coverage": "^3.0.0",
-                        "semver": "^6.3.0"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+        "node_modules/@jest/fake-timers": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
+            "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^29.5.0",
+                "@sinonjs/fake-timers": "^10.0.2",
+                "@types/node": "*",
+                "jest-message-util": "^29.5.0",
+                "jest-mock": "^29.5.0",
+                "jest-util": "^29.5.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/source-map": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz",
-            "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==",
-            "dev": true,
-            "requires": {
-                "callsites": "^3.0.0",
-                "graceful-fs": "^4.2.4",
-                "source-map": "^0.6.0"
+        "node_modules/@jest/fake-timers/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
+            "dependencies": {
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
             },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/@jest/fake-timers/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "@types/yargs-parser": "*"
             }
         },
-        "@jest/test-result": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz",
-            "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==",
-            "dev": true,
-            "requires": {
-                "@jest/console": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/istanbul-lib-coverage": "^2.0.0",
-                "collect-v8-coverage": "^1.0.0"
+        "node_modules/@jest/fake-timers/node_modules/ci-info": {
+            "version": "3.8.0",
+            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+            "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/sibiraj-s"
+                }
+            ],
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@jest/fake-timers/node_modules/jest-util": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+            "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^29.5.0",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "graceful-fs": "^4.2.9",
+                "picomatch": "^2.2.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/test-sequencer": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz",
-            "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==",
-            "dev": true,
-            "requires": {
-                "@jest/test-result": "^26.6.2",
-                "graceful-fs": "^4.2.4",
-                "jest-haste-map": "^26.6.2",
-                "jest-runner": "^26.6.3",
-                "jest-runtime": "^26.6.3"
+        "node_modules/@jest/schemas": {
+            "version": "29.4.3",
+            "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+            "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+            "peer": true,
+            "dependencies": {
+                "@sinclair/typebox": "^0.25.16"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "@jest/transform": {
+        "node_modules/@jest/transform": {
             "version": "26.6.2",
             "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz",
             "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/core": "^7.1.0",
                 "@jest/types": "^26.6.2",
                 "babel-plugin-istanbul": "^6.0.0",
@@ -2659,1490 +2837,2014 @@
                 "source-map": "^0.6.1",
                 "write-file-atomic": "^3.0.0"
             },
-            "dependencies": {
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "@jest/types": {
+        "node_modules/@jest/transform/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/@jest/types": {
             "version": "26.6.2",
             "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
             "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "@types/istanbul-lib-coverage": "^2.0.0",
                 "@types/istanbul-reports": "^3.0.0",
                 "@types/node": "*",
                 "@types/yargs": "^15.0.0",
                 "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 10.14.2"
+            }
+        },
+        "node_modules/@jridgewell/gen-mapping": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+            "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+            "dependencies": {
+                "@jridgewell/set-array": "^1.0.1",
+                "@jridgewell/sourcemap-codec": "^1.4.10",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@jridgewell/resolve-uri": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+            "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@jridgewell/set-array": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+            "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "@jridgewell/resolve-uri": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
-            "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew=="
+        "node_modules/@jridgewell/source-map": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+            "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+            "dependencies": {
+                "@jridgewell/gen-mapping": "^0.3.0",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            }
         },
-        "@jridgewell/sourcemap-codec": {
-            "version": "1.4.11",
-            "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
-            "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
+        "node_modules/@jridgewell/sourcemap-codec": {
+            "version": "1.4.15",
+            "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+            "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
         },
-        "@jridgewell/trace-mapping": {
-            "version": "0.3.4",
-            "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
-            "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
-            "requires": {
-                "@jridgewell/resolve-uri": "^3.0.3",
-                "@jridgewell/sourcemap-codec": "^1.4.10"
+        "node_modules/@jridgewell/trace-mapping": {
+            "version": "0.3.18",
+            "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+            "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+            "dependencies": {
+                "@jridgewell/resolve-uri": "3.1.0",
+                "@jridgewell/sourcemap-codec": "1.4.14"
             }
         },
-        "@loadable/component": {
-            "version": "5.15.2",
-            "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz",
-            "integrity": "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==",
-            "requires": {
+        "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+            "version": "1.4.14",
+            "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+            "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+        },
+        "node_modules/@loadable/component": {
+            "version": "5.15.3",
+            "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.3.tgz",
+            "integrity": "sha512-VOgYgCABn6+/7aGIpg7m0Ruj34tGetaJzt4bQ345FwEovDQZ+dua+NWLmuJKv8rWZyxOUSfoJkmGnzyDXH2BAQ==",
+            "dependencies": {
                 "@babel/runtime": "^7.7.7",
                 "hoist-non-react-statics": "^3.3.1",
                 "react-is": "^16.12.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "react": "^16.3.0 || ^17.0.0 || ^18.0.0"
             }
         },
-        "@nicolo-ribaudo/chokidar-2": {
+        "node_modules/@nicolo-ribaudo/chokidar-2": {
             "version": "2.1.8-no-fsevents.3",
             "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
             "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
             "optional": true
         },
-        "@nodelib/fs.scandir": {
+        "node_modules/@nodelib/fs.scandir": {
             "version": "2.1.5",
             "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
             "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-            "requires": {
+            "dependencies": {
                 "@nodelib/fs.stat": "2.0.5",
                 "run-parallel": "^1.1.9"
+            },
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "@nodelib/fs.stat": {
+        "node_modules/@nodelib/fs.stat": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-            "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+            "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+            "engines": {
+                "node": ">= 8"
+            }
         },
-        "@nodelib/fs.walk": {
+        "node_modules/@nodelib/fs.walk": {
             "version": "1.2.8",
             "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
             "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-            "requires": {
+            "dependencies": {
                 "@nodelib/fs.scandir": "2.1.5",
                 "fastq": "^1.6.0"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/@react-native-community/cli": {
+            "version": "10.2.2",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-10.2.2.tgz",
+            "integrity": "sha512-aZVcVIqj+OG6CrliR/Yn8wHxrvyzbFBY9cj7n0MvRw/P54QUru2nNqUTSSbqv0Qaa297yHJbe6kFDojDMSTM8Q==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-clean": "^10.1.1",
+                "@react-native-community/cli-config": "^10.1.1",
+                "@react-native-community/cli-debugger-ui": "^10.0.0",
+                "@react-native-community/cli-doctor": "^10.2.2",
+                "@react-native-community/cli-hermes": "^10.2.0",
+                "@react-native-community/cli-plugin-metro": "^10.2.2",
+                "@react-native-community/cli-server-api": "^10.1.1",
+                "@react-native-community/cli-tools": "^10.1.1",
+                "@react-native-community/cli-types": "^10.0.0",
+                "chalk": "^4.1.2",
+                "commander": "^9.4.1",
+                "execa": "^1.0.0",
+                "find-up": "^4.1.0",
+                "fs-extra": "^8.1.0",
+                "graceful-fs": "^4.1.3",
+                "prompts": "^2.4.0",
+                "semver": "^6.3.0"
+            },
+            "bin": {
+                "react-native": "build/bin.js"
+            },
+            "engines": {
+                "node": ">=14"
             }
         },
-        "@npmcli/fs": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
-            "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
-            "dev": true,
-            "requires": {
-                "@gar/promisify": "^1.0.1",
-                "semver": "^7.3.5"
+        "node_modules/@react-native-community/cli-clean": {
+            "version": "10.1.1",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-10.1.1.tgz",
+            "integrity": "sha512-iNsrjzjIRv9yb5y309SWJ8NDHdwYtnCpmxZouQDyOljUdC9MwdZ4ChbtA4rwQyAwgOVfS9F/j56ML3Cslmvrxg==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "execa": "^1.0.0",
+                "prompts": "^2.4.0"
             }
         },
-        "@npmcli/move-file": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
-            "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
-            "dev": true,
-            "requires": {
-                "mkdirp": "^1.0.4",
-                "rimraf": "^3.0.2"
-            },
+        "node_modules/@react-native-community/cli-config": {
+            "version": "10.1.1",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-10.1.1.tgz",
+            "integrity": "sha512-p4mHrjC+s/ayiNVG6T35GdEGdP6TuyBUg5plVGRJfTl8WT6LBfLYLk+fz/iETrEZ/YkhQIsQcEUQC47MqLNHog==",
+            "peer": true,
             "dependencies": {
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "cosmiconfig": "^5.1.0",
+                "deepmerge": "^3.2.0",
+                "glob": "^7.1.3",
+                "joi": "^17.2.1"
             }
         },
-        "@opencensus/core": {
-            "version": "0.0.9",
-            "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz",
-            "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==",
-            "dev": true,
-            "requires": {
-                "continuation-local-storage": "^3.2.1",
-                "log-driver": "^1.2.7",
-                "semver": "^5.5.0",
-                "shimmer": "^1.2.0",
-                "uuid": "^3.2.1"
-            },
+        "node_modules/@react-native-community/cli-config/node_modules/deepmerge": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+            "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/@react-native-community/cli-debugger-ui": {
+            "version": "10.0.0",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-10.0.0.tgz",
+            "integrity": "sha512-8UKLcvpSNxnUTRy8CkCl27GGLqZunQ9ncGYhSrWyKrU9SWBJJGeZwi2k2KaoJi5FvF2+cD0t8z8cU6lsq2ZZmA==",
+            "peer": true,
             "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                }
+                "serve-static": "^1.13.1"
             }
         },
-        "@opencensus/propagation-b3": {
-            "version": "0.0.8",
-            "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz",
-            "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==",
-            "dev": true,
-            "requires": {
-                "@opencensus/core": "^0.0.8",
-                "uuid": "^3.2.1"
-            },
-            "dependencies": {
-                "@opencensus/core": {
-                    "version": "0.0.8",
-                    "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz",
-                    "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==",
-                    "dev": true,
-                    "requires": {
-                        "continuation-local-storage": "^3.2.1",
-                        "log-driver": "^1.2.7",
-                        "semver": "^5.5.0",
-                        "shimmer": "^1.2.0",
-                        "uuid": "^3.2.1"
-                    }
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                }
+        "node_modules/@react-native-community/cli-doctor": {
+            "version": "10.2.2",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-10.2.2.tgz",
+            "integrity": "sha512-49Ep2aQOF0PkbAR/TcyMjOm9XwBa8VQr+/Zzf4SJeYwiYLCT1NZRAVAVjYRXl0xqvq5S5mAGZZShS4AQl4WsZw==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-config": "^10.1.1",
+                "@react-native-community/cli-platform-ios": "^10.2.1",
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "command-exists": "^1.2.8",
+                "envinfo": "^7.7.2",
+                "execa": "^1.0.0",
+                "hermes-profile-transformer": "^0.0.6",
+                "ip": "^1.1.5",
+                "node-stream-zip": "^1.9.1",
+                "ora": "^5.4.1",
+                "prompts": "^2.4.0",
+                "semver": "^6.3.0",
+                "strip-ansi": "^5.2.0",
+                "sudo-prompt": "^9.0.0",
+                "wcwidth": "^1.0.1"
             }
         },
-        "@pm2/agent": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz",
-            "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==",
-            "dev": true,
-            "requires": {
-                "async": "~3.2.0",
-                "chalk": "~3.0.0",
-                "dayjs": "~1.8.24",
-                "debug": "~4.3.1",
-                "eventemitter2": "~5.0.1",
-                "fast-json-patch": "^3.0.0-1",
-                "fclone": "~1.0.11",
-                "nssocket": "0.6.0",
-                "pm2-axon": "~4.0.1",
-                "pm2-axon-rpc": "~0.7.0",
-                "proxy-agent": "~5.0.0",
-                "semver": "~7.2.0",
-                "ws": "~7.4.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "async": {
-                    "version": "3.2.3",
-                    "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
-                    "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-                    "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.1.0",
-                        "supports-color": "^7.1.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "dayjs": {
-                    "version": "1.8.36",
-                    "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz",
-                    "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==",
-                    "dev": true
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "7.2.3",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz",
-                    "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==",
-                    "dev": true
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+        "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+            "peer": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "@pm2/io": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz",
-            "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==",
-            "dev": true,
-            "requires": {
-                "@opencensus/core": "0.0.9",
-                "@opencensus/propagation-b3": "0.0.8",
-                "async": "~2.6.1",
-                "debug": "~4.3.1",
-                "eventemitter2": "^6.3.1",
-                "require-in-the-middle": "^5.0.0",
-                "semver": "6.3.0",
-                "shimmer": "^1.2.0",
-                "signal-exit": "^3.0.3",
-                "tslib": "1.9.3"
+        "node_modules/@react-native-community/cli-doctor/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "peer": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "peer": true,
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
             },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/@react-native-community/cli-hermes": {
+            "version": "10.2.0",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-10.2.0.tgz",
+            "integrity": "sha512-urfmvNeR8IiO/Sd92UU3xPO+/qI2lwCWQnxOkWaU/i2EITFekE47MD6MZrfVulRVYRi5cuaFqKZO/ccOdOB/vQ==",
+            "peer": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "eventemitter2": {
-                    "version": "6.4.5",
-                    "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz",
-                    "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "tslib": {
-                    "version": "1.9.3",
-                    "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-                    "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
-                    "dev": true
-                }
+                "@react-native-community/cli-platform-android": "^10.2.0",
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "hermes-profile-transformer": "^0.0.6",
+                "ip": "^1.1.5"
             }
         },
-        "@pm2/js-api": {
-            "version": "0.6.7",
-            "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz",
-            "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==",
-            "dev": true,
-            "requires": {
-                "async": "^2.6.3",
-                "axios": "^0.21.0",
-                "debug": "~4.3.1",
-                "eventemitter2": "^6.3.1",
-                "ws": "^7.0.0"
-            },
-            "dependencies": {
-                "axios": {
-                    "version": "0.21.4",
-                    "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
-                    "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
-                    "dev": true,
-                    "requires": {
-                        "follow-redirects": "^1.14.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "eventemitter2": {
-                    "version": "6.4.5",
-                    "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz",
-                    "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==",
-                    "dev": true
-                },
-                "follow-redirects": {
-                    "version": "1.14.9",
-                    "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
-                    "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+        "node_modules/@react-native-community/cli-platform-android": {
+            "version": "10.2.0",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-10.2.0.tgz",
+            "integrity": "sha512-CBenYwGxwFdObZTn1lgxWtMGA5ms2G/ALQhkS+XTAD7KHDrCxFF9yT/fnAjFZKM6vX/1TqGI1RflruXih3kAhw==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "execa": "^1.0.0",
+                "glob": "^7.1.3",
+                "logkitty": "^0.7.1"
             }
         },
-        "@pm2/pm2-version-check": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz",
-            "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==",
-            "dev": true,
-            "requires": {
-                "debug": "^4.3.1"
-            },
+        "node_modules/@react-native-community/cli-platform-ios": {
+            "version": "10.2.1",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-10.2.1.tgz",
+            "integrity": "sha512-hz4zu4Y6eyj7D0lnZx8Mf2c2si8y+zh/zUTgCTaPPLzQD8jSZNNBtUUiA1cARm2razpe8marCZ1QbTMAGbf3mg==",
+            "peer": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "execa": "^1.0.0",
+                "fast-xml-parser": "^4.0.12",
+                "glob": "^7.1.3",
+                "ora": "^5.4.1"
             }
         },
-        "@react-spring/animated": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.4.3.tgz",
-            "integrity": "sha512-hKKmeXPoGpJ/zrG/RC8stwW8PmMH0BbewHD8aUPLbyzD9fNvZEJ0mjKmOI0CcSwMpb43kuwY2nX3ZJVImPQCoQ==",
-            "requires": {
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/core": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.4.3.tgz",
-            "integrity": "sha512-Jr6/GjHwXYxAtttcYDXOtH36krO0XGjYaSsGR6g+vOUO4y0zAPPXoAwpK6vS7Haip5fRwk7rMdNG+OzU7bB4Bg==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/rafz": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/konva": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/konva/-/konva-9.4.3.tgz",
-            "integrity": "sha512-JWxx0YIwipjJTDs7q9XtArlBCTjejyAJZrbhvxmizOM6ZukUj8hcEFYU03Vt5HUTSC4WfG0rkg2O9V1EAXuzCQ==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/native": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.4.3.tgz",
-            "integrity": "sha512-dfOwzSxJcbHKTNJ26pceZ7xCrqf2+L6W/U17/7aogQwGec4yf1zocWXV3QS+h0HDuY0Bk/yYa7PEy+D+HWc7Og==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/rafz": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.4.3.tgz",
-            "integrity": "sha512-KnujiZNIHzXsRq1D4tVbCajl8Lx+e6vtvUk7o69KbuneSpEgil9P/x3b+hMDk8U0NHGhJjzhU7723/CNsQansA=="
-        },
-        "@react-spring/shared": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.4.3.tgz",
-            "integrity": "sha512-mB1UUD/pl1LzaY0XeNWZtvJzxMa8gLQf02nY12HAz4Rukm9dFRj0jeYwQYLdfYLsGFo1ldvHNurun6hZMG7kiQ==",
-            "requires": {
-                "@react-spring/rafz": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/three": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.4.3.tgz",
-            "integrity": "sha512-AhCPqoZZXUnzVcKal01sdYBRqkVd2iNxDMk7BGXZsQNWeqaOMaaBT/a6d3oG3wwPX6xIa9ogBtzmzEasN6HYzA==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/types": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.4.3.tgz",
-            "integrity": "sha512-dzJrPvUc42K2un9y6D1IsrPQO5tKsbWwUo+wsATnXjG3ePWyuDBIOMJuPe605NhIXUmPH+Vik2wMoZz06hD1uA=="
-        },
-        "@react-spring/web": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.4.3.tgz",
-            "integrity": "sha512-llKve/uJ73JVagBAVvA74S/LfZP4oSB3XP1qmggSUNXzPZZo5ylIMrs55PxpLyxgzzihuhDU5N17ct3ATViOHw==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@react-spring/zdog": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/@react-spring/zdog/-/zdog-9.4.3.tgz",
-            "integrity": "sha512-ujRJBKEWC6miwPhCwHkn13h9OfqK+Kkq49crebo5neY4kCK2efNoagQo54DwXFgbVNFJV+6GwcAZVI2ybS5L1Q==",
-            "requires": {
-                "@react-spring/animated": "~9.4.3-beta.0",
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/shared": "~9.4.3-beta.0",
-                "@react-spring/types": "~9.4.3-beta.0"
-            }
-        },
-        "@rollup/plugin-node-resolve": {
-            "version": "7.1.3",
-            "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
-            "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==",
-            "dev": true,
-            "requires": {
-                "@rollup/pluginutils": "^3.0.8",
-                "@types/resolve": "0.0.8",
-                "builtin-modules": "^3.1.0",
-                "is-module": "^1.0.0",
-                "resolve": "^1.14.2"
-            }
-        },
-        "@rollup/plugin-replace": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
-            "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
-            "dev": true,
-            "requires": {
-                "@rollup/pluginutils": "^3.1.0",
-                "magic-string": "^0.25.7"
+        "node_modules/@react-native-community/cli-plugin-metro": {
+            "version": "10.2.2",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-10.2.2.tgz",
+            "integrity": "sha512-sTGjZlD3OGqbF9v1ajwUIXhGmjw9NyJ/14Lo0sg7xH8Pv4qUd5ZvQ6+DWYrQn3IKFUMfGFWYyL81ovLuPylrpw==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-server-api": "^10.1.1",
+                "@react-native-community/cli-tools": "^10.1.1",
+                "chalk": "^4.1.2",
+                "execa": "^1.0.0",
+                "metro": "0.73.9",
+                "metro-config": "0.73.9",
+                "metro-core": "0.73.9",
+                "metro-react-native-babel-transformer": "0.73.9",
+                "metro-resolver": "0.73.9",
+                "metro-runtime": "0.73.9",
+                "readline": "^1.3.0"
+            }
+        },
+        "node_modules/@react-native-community/cli-server-api": {
+            "version": "10.1.1",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-10.1.1.tgz",
+            "integrity": "sha512-NZDo/wh4zlm8as31UEBno2bui8+ufzsZV+KN7QjEJWEM0levzBtxaD+4je0OpfhRIIkhaRm2gl/vVf7OYAzg4g==",
+            "peer": true,
+            "dependencies": {
+                "@react-native-community/cli-debugger-ui": "^10.0.0",
+                "@react-native-community/cli-tools": "^10.1.1",
+                "compression": "^1.7.1",
+                "connect": "^3.6.5",
+                "errorhandler": "^1.5.0",
+                "nocache": "^3.0.1",
+                "pretty-format": "^26.6.2",
+                "serve-static": "^1.13.1",
+                "ws": "^7.5.1"
             }
         },
-        "@rollup/pluginutils": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
-            "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
-            "dev": true,
-            "requires": {
-                "@types/estree": "0.0.39",
-                "estree-walker": "^1.0.1",
-                "picomatch": "^2.2.2"
+        "node_modules/@react-native-community/cli-tools": {
+            "version": "10.1.1",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-10.1.1.tgz",
+            "integrity": "sha512-+FlwOnZBV+ailEzXjcD8afY2ogFEBeHOw/8+XXzMgPaquU2Zly9B+8W089tnnohO3yfiQiZqkQlElP423MY74g==",
+            "peer": true,
+            "dependencies": {
+                "appdirsjs": "^1.2.4",
+                "chalk": "^4.1.2",
+                "find-up": "^5.0.0",
+                "mime": "^2.4.1",
+                "node-fetch": "^2.6.0",
+                "open": "^6.2.0",
+                "ora": "^5.4.1",
+                "semver": "^6.3.0",
+                "shell-quote": "^1.7.3"
             }
         },
-        "@samverschueren/stream-to-observable": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz",
-            "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==",
-            "dev": true,
-            "requires": {
-                "any-observable": "^0.3.0"
+        "node_modules/@react-native-community/cli-tools/node_modules/find-up": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+            "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+            "peer": true,
+            "dependencies": {
+                "locate-path": "^6.0.0",
+                "path-exists": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "@sindresorhus/is": {
-            "version": "0.14.0",
-            "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-            "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
-            "dev": true
+        "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+            "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+            "peer": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "@sinonjs/commons": {
-            "version": "1.8.3",
-            "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
-            "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
-            "dev": true,
-            "requires": {
-                "type-detect": "4.0.8"
+        "node_modules/@react-native-community/cli-tools/node_modules/locate-path": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+            "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+            "peer": true,
+            "dependencies": {
+                "p-locate": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "@sinonjs/fake-timers": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
-            "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
-            "dev": true,
-            "requires": {
-                "@sinonjs/commons": "^1.7.0"
+        "node_modules/@react-native-community/cli-tools/node_modules/mime": {
+            "version": "2.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+            "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+            "peer": true,
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4.0.0"
             }
         },
-        "@stylelint/postcss-css-in-js": {
-            "version": "0.37.2",
-            "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz",
-            "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==",
-            "dev": true,
-            "requires": {
-                "@babel/core": ">=7.9.0"
+        "node_modules/@react-native-community/cli-tools/node_modules/open": {
+            "version": "6.4.0",
+            "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+            "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+            "peer": true,
+            "dependencies": {
+                "is-wsl": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@stylelint/postcss-markdown": {
-            "version": "0.36.2",
-            "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz",
-            "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==",
-            "dev": true,
-            "requires": {
-                "remark": "^13.0.0",
-                "unist-util-find-all-after": "^3.0.2"
+        "node_modules/@react-native-community/cli-tools/node_modules/p-limit": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+            "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+            "peer": true,
+            "dependencies": {
+                "yocto-queue": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "@surma/rollup-plugin-off-main-thread": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz",
-            "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==",
-            "dev": true,
-            "requires": {
-                "ejs": "^2.6.1",
-                "magic-string": "^0.25.0"
+        "node_modules/@react-native-community/cli-tools/node_modules/p-locate": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+            "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+            "peer": true,
+            "dependencies": {
+                "p-limit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "@szmarczak/http-timer": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
-            "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
-            "dev": true,
-            "requires": {
-                "defer-to-connect": "^1.0.1"
+        "node_modules/@react-native-community/cli-tools/node_modules/path-exists": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+            "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+            "peer": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "@tootallnate/once": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
-            "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
+        "node_modules/@react-native-community/cli-tools/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "peer": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
         },
-        "@types/babel__core": {
-            "version": "7.1.18",
-            "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz",
-            "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==",
-            "dev": true,
-            "requires": {
-                "@babel/parser": "^7.1.0",
-                "@babel/types": "^7.0.0",
-                "@types/babel__generator": "*",
-                "@types/babel__template": "*",
-                "@types/babel__traverse": "*"
+        "node_modules/@react-native-community/cli-types": {
+            "version": "10.0.0",
+            "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-10.0.0.tgz",
+            "integrity": "sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw==",
+            "peer": true,
+            "dependencies": {
+                "joi": "^17.2.1"
             }
         },
-        "@types/babel__generator": {
-            "version": "7.6.4",
-            "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
-            "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.0.0"
+        "node_modules/@react-native-community/cli/node_modules/commander": {
+            "version": "9.5.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+            "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+            "peer": true,
+            "engines": {
+                "node": "^12.20.0 || >=14"
             }
         },
-        "@types/babel__template": {
-            "version": "7.4.1",
-            "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
-            "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
-            "dev": true,
-            "requires": {
-                "@babel/parser": "^7.1.0",
-                "@babel/types": "^7.0.0"
+        "node_modules/@react-native-community/cli/node_modules/fs-extra": {
+            "version": "8.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+            "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+            "peer": true,
+            "dependencies": {
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^4.0.0",
+                "universalify": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=6 <7 || >=8"
             }
         },
-        "@types/babel__traverse": {
-            "version": "7.14.2",
-            "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
-            "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.3.0"
+        "node_modules/@react-native-community/cli/node_modules/jsonfile": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+            "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+            "peer": true,
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
             }
         },
-        "@types/base16": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/@types/base16/-/base16-1.0.2.tgz",
-            "integrity": "sha512-oYO/U4VD1DavwrKuCSQWdLG+5K22SLPem2OQaHmFcQuwHoVeGC+JGVRji2MUqZUAIQZHEonOeVfAX09hYiLsdg=="
+        "node_modules/@react-native-community/cli/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "peer": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
         },
-        "@types/buble": {
-            "version": "0.20.1",
-            "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.20.1.tgz",
-            "integrity": "sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ==",
-            "requires": {
-                "magic-string": "^0.25.0"
+        "node_modules/@react-native-community/cli/node_modules/universalify": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+            "peer": true,
+            "engines": {
+                "node": ">= 4.0.0"
             }
         },
-        "@types/component-emitter": {
-            "version": "1.2.11",
-            "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
-            "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ=="
+        "node_modules/@react-native/assets": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
+            "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==",
+            "peer": true
         },
-        "@types/esrever": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/@types/esrever/-/esrever-0.2.1.tgz",
-            "integrity": "sha512-vRLFhQxGVkyUF7opxv66MQHoRSOBkbbitj1OGd6My4XR6HwCorUZxSiJejF3s4OxmEFTjfRRGwm6GUhuQETP6Q=="
+        "node_modules/@react-native/normalize-color": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+            "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==",
+            "peer": true
         },
-        "@types/estree": {
-            "version": "0.0.39",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-            "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-            "dev": true
+        "node_modules/@react-native/polyfills": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
+            "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==",
+            "peer": true
         },
-        "@types/glob": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
-            "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
-            "requires": {
-                "@types/minimatch": "*",
-                "@types/node": "*"
+        "node_modules/@react-spring/animated": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.2.tgz",
+            "integrity": "sha512-ipvleJ99ipqlnHkz5qhSsgf/ny5aW0ZG8Q+/2Oj9cI7LCc7COdnrSO6V/v8MAX3JOoQNzfz6dye2s5Pt5jGaIA==",
+            "dependencies": {
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
             }
         },
-        "@types/graceful-fs": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
-            "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
-            "dev": true,
-            "requires": {
-                "@types/node": "*"
+        "node_modules/@react-spring/core": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.2.tgz",
+            "integrity": "sha512-fF512edZT/gKVCA90ZRxfw1DmELeVwiL4OC2J6bMUlNr707C0h4QRoec6DjzG27uLX2MvS1CEatf9KRjwZR9/w==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/rafz": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/react-spring/donate"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
             }
         },
-        "@types/hoist-non-react-statics": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
-            "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
-            "requires": {
-                "@types/react": "*",
-                "hoist-non-react-statics": "^3.3.0"
+        "node_modules/@react-spring/konva": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/konva/-/konva-9.7.2.tgz",
+            "integrity": "sha512-xMA0XkIyv02euso8BGlLA4iXVJ76p6WCjABMTjdvcp//KvIub596vLwoLzmqHYjqRhH7BP4UQKxzhHvM7AylQA==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/core": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "konva": ">=2.6",
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "react-konva": "^16.8.0 || ^16.8.7-0 || ^16.9.0-0 || ^16.10.1-0 || ^16.12.0-0 || ^16.13.0-0 || ^17.0.0-0 || ^17.0.1-0 || ^17.0.2-0 || ^18.0.0-0"
             }
         },
-        "@types/is-hotkey": {
-            "version": "0.1.7",
-            "resolved": "https://registry.npmjs.org/@types/is-hotkey/-/is-hotkey-0.1.7.tgz",
-            "integrity": "sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ=="
+        "node_modules/@react-spring/native": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.7.2.tgz",
+            "integrity": "sha512-Ltq/F+4jY7aqHW1/f1xUb+e3XGbVxnllXfDYU+3nXi4sa7O+du755hpNbCHJ5ZgtkQYFKtQ7I+InTY+CDXPYfw==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/core": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0  || >=17.0.0 || >=18.0.0",
+                "react-native": ">=0.58"
+            }
+        },
+        "node_modules/@react-spring/rafz": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.2.tgz",
+            "integrity": "sha512-kDWMYDQto3+flkrX3vy6DU/l9pxQ4TVW91DglQEc11iDc7shF4+WVDRJvOVLX+xoMP7zyag1dMvlIgvQ+dvA/A=="
+        },
+        "node_modules/@react-spring/shared": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.2.tgz",
+            "integrity": "sha512-6U9qkno+9DxlH5nSltnPs+kU6tYKf0bPLURX2te13aGel8YqgcpFYp5Av8DcN2x3sukinAsmzHUS/FRsdZMMBA==",
+            "dependencies": {
+                "@react-spring/rafz": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/@react-spring/three": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.7.2.tgz",
+            "integrity": "sha512-u7VAjc+az82PM+WOC2sTbZQLBixuN+0jX/oahzyjEnIds5eUJgaBqZRYAAEMupuzGGl8H3QqL3bFgBEQLq6ADQ==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/core": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "@react-three/fiber": ">=6.0",
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "three": ">=0.126"
+            }
+        },
+        "node_modules/@react-spring/types": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.2.tgz",
+            "integrity": "sha512-GEflx2Ex/TKVMHq5g5MxQDNNPNhqg+4Db9m7+vGTm8ttZiyga7YQUF24shgRNebKIjahqCuei16SZga8h1pe4g=="
         },
-        "@types/istanbul-lib-coverage": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
-            "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
-            "dev": true
+        "node_modules/@react-spring/web": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.2.tgz",
+            "integrity": "sha512-7qNc7/5KShu2D05x7o2Ols2nUE7mCKfKLaY2Ix70xPMfTle1sZisoQMBFgV9w/fSLZlHZHV9P0uWJqEXQnbV4Q==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/core": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/@react-spring/zdog": {
+            "version": "9.7.2",
+            "resolved": "https://registry.npmjs.org/@react-spring/zdog/-/zdog-9.7.2.tgz",
+            "integrity": "sha512-6z2qqhmbpoZrw1oThyn4zfejtLkuadsaZFVMFf/5l5cHTEdRC8HZsBRLo+Wiomkprg/F1hyhcXI5X1lJ+T/zdQ==",
+            "dependencies": {
+                "@react-spring/animated": "~9.7.2",
+                "@react-spring/core": "~9.7.2",
+                "@react-spring/shared": "~9.7.2",
+                "@react-spring/types": "~9.7.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "react-zdog": ">=1.0",
+                "zdog": ">=1.0"
+            }
+        },
+        "node_modules/@react-three/fiber": {
+            "version": "8.12.2",
+            "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.12.2.tgz",
+            "integrity": "sha512-CIjSK02ffXnT6q+/7HJ1JTX9dDS4N67OAs/yYYtUKK5qkO2WUFVt6ymQDAp7yLPRFA+frvYfAHSIIYwQ48dmDQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/runtime": "^7.17.8",
+                "@types/react-reconciler": "^0.26.7",
+                "its-fine": "^1.0.6",
+                "react-reconciler": "^0.27.0",
+                "react-use-measure": "^2.1.1",
+                "scheduler": "^0.21.0",
+                "suspend-react": "^0.0.8",
+                "zustand": "^3.7.1"
+            },
+            "peerDependencies": {
+                "expo": ">=43.0",
+                "expo-asset": ">=8.4",
+                "expo-gl": ">=11.0",
+                "react": ">=18.0",
+                "react-dom": ">=18.0",
+                "react-native": ">=0.64",
+                "three": ">=0.133"
+            },
+            "peerDependenciesMeta": {
+                "expo": {
+                    "optional": true
+                },
+                "expo-asset": {
+                    "optional": true
+                },
+                "expo-gl": {
+                    "optional": true
+                },
+                "react-dom": {
+                    "optional": true
+                },
+                "react-native": {
+                    "optional": true
+                }
+            }
         },
-        "@types/istanbul-lib-report": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-            "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
-            "dev": true,
-            "requires": {
-                "@types/istanbul-lib-coverage": "*"
+        "node_modules/@react-three/fiber/node_modules/scheduler": {
+            "version": "0.21.0",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
+            "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0"
             }
         },
-        "@types/istanbul-reports": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
-            "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+        "node_modules/@samverschueren/stream-to-observable": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz",
+            "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==",
             "dev": true,
-            "requires": {
-                "@types/istanbul-lib-report": "*"
+            "dependencies": {
+                "any-observable": "^0.3.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependenciesMeta": {
+                "rxjs": {
+                    "optional": true
+                },
+                "zen-observable": {
+                    "optional": true
+                }
             }
         },
-        "@types/jsdom": {
-            "version": "16.2.14",
-            "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.14.tgz",
-            "integrity": "sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==",
-            "requires": {
-                "@types/node": "*",
-                "@types/parse5": "*",
-                "@types/tough-cookie": "*"
+        "node_modules/@sideway/address": {
+            "version": "4.1.4",
+            "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
+            "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
+            "peer": true,
+            "dependencies": {
+                "@hapi/hoek": "^9.0.0"
             }
         },
-        "@types/json-schema": {
-            "version": "7.0.9",
-            "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
-            "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
-            "dev": true
+        "node_modules/@sideway/formula": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+            "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
+            "peer": true
+        },
+        "node_modules/@sideway/pinpoint": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+            "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
+            "peer": true
         },
-        "@types/lodash": {
-            "version": "4.14.179",
-            "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.179.tgz",
-            "integrity": "sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w=="
+        "node_modules/@sinclair/typebox": {
+            "version": "0.25.24",
+            "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+            "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+            "peer": true
         },
-        "@types/lodash.debounce": {
-            "version": "4.0.6",
-            "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.6.tgz",
-            "integrity": "sha512-4WTmnnhCfDvvuLMaF3KV4Qfki93KebocUF45msxhYyjMttZDQYzHkO639ohhk8+oco2cluAFL3t5+Jn4mleylQ==",
-            "requires": {
-                "@types/lodash": "*"
+        "node_modules/@sinonjs/commons": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+            "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+            "peer": true,
+            "dependencies": {
+                "type-detect": "4.0.8"
             }
         },
-        "@types/mdast": {
-            "version": "3.0.10",
-            "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
-            "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
-            "dev": true,
-            "requires": {
-                "@types/unist": "*"
+        "node_modules/@sinonjs/fake-timers": {
+            "version": "10.0.2",
+            "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
+            "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
+            "peer": true,
+            "dependencies": {
+                "@sinonjs/commons": "^2.0.0"
             }
         },
-        "@types/minimatch": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
-            "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="
+        "node_modules/@socket.io/component-emitter": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+            "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
         },
-        "@types/minimist": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
-            "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
-            "dev": true
+        "node_modules/@stylelint/postcss-css-in-js": {
+            "version": "0.37.3",
+            "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz",
+            "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==",
+            "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.17.9"
+            },
+            "peerDependencies": {
+                "postcss": ">=7.0.0",
+                "postcss-syntax": ">=0.36.2"
+            }
         },
-        "@types/node": {
-            "version": "17.0.21",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz",
-            "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ=="
+        "node_modules/@stylelint/postcss-markdown": {
+            "version": "0.36.2",
+            "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz",
+            "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==",
+            "deprecated": "Use the original unforked package instead: postcss-markdown",
+            "dev": true,
+            "dependencies": {
+                "remark": "^13.0.0",
+                "unist-util-find-all-after": "^3.0.2"
+            },
+            "peerDependencies": {
+                "postcss": ">=7.0.0",
+                "postcss-syntax": ">=0.36.2"
+            }
         },
-        "@types/normalize-package-data": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
-            "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
-            "dev": true
+        "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
+            "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "@types/parse-json": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
-            "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
-            "dev": true
+        "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-7.0.0.tgz",
+            "integrity": "sha512-iiZaIvb3H/c7d3TH2HBeK91uI2rMhZNwnsIrvd7ZwGLkFw6mmunOCoVnjdYua662MqGFxlN9xTq4fv9hgR4VXQ==",
+            "engines": {
+                "node": ">=14"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "@types/parse5": {
-            "version": "6.0.3",
-            "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
-            "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
+        "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-7.0.0.tgz",
+            "integrity": "sha512-sQQmyo+qegBx8DfFc04PFmIO1FP1MHI1/QEpzcIcclo5OAISsOJPW76ZIs0bDyO/DBSJEa/tDa1W26pVtt0FRw==",
+            "engines": {
+                "node": ">=14"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "@types/prettier": {
-            "version": "2.4.4",
-            "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz",
-            "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==",
-            "dev": true
+        "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz",
+            "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "@types/prop-types": {
-            "version": "15.7.4",
-            "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
-            "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ=="
+        "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz",
+            "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "@types/react": {
-            "version": "17.0.39",
-            "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz",
-            "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==",
-            "requires": {
-                "@types/prop-types": "*",
-                "@types/scheduler": "*",
-                "csstype": "^3.0.2"
+        "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz",
+            "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@types/react-dom": {
-            "version": "17.0.11",
-            "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz",
-            "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==",
-            "optional": true,
-            "requires": {
-                "@types/react": "*"
+        "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz",
+            "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@types/react-redux": {
-            "version": "7.1.22",
-            "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.22.tgz",
-            "integrity": "sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ==",
-            "requires": {
-                "@types/hoist-non-react-statics": "^3.3.0",
-                "@types/react": "*",
-                "hoist-non-react-statics": "^3.3.0",
-                "redux": "^4.0.0"
+        "node_modules/@svgr/babel-plugin-transform-svg-component": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz",
+            "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==",
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@types/redux-devtools-themes": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/@types/redux-devtools-themes/-/redux-devtools-themes-1.0.0.tgz",
-            "integrity": "sha512-ul3x0MYM5Nzj57Fh9wINyHFne8vZL04RC4nWAUWLYcL105vHoa/oJyopuKOrQmqVmhqmDiL4c9FfLbUmIB7TWQ==",
-            "requires": {
-                "@types/base16": "*"
+        "node_modules/@svgr/babel-preset": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz",
+            "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==",
+            "dependencies": {
+                "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1",
+                "@svgr/babel-plugin-remove-jsx-attribute": "*",
+                "@svgr/babel-plugin-remove-jsx-empty-expression": "*",
+                "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1",
+                "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1",
+                "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1",
+                "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1",
+                "@svgr/babel-plugin-transform-svg-component": "^6.5.1"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "@types/resolve": {
-            "version": "0.0.8",
-            "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
-            "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
-            "dev": true,
-            "requires": {
-                "@types/node": "*"
+        "node_modules/@svgr/core": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz",
+            "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==",
+            "dependencies": {
+                "@babel/core": "^7.19.6",
+                "@svgr/babel-preset": "^6.5.1",
+                "@svgr/plugin-jsx": "^6.5.1",
+                "camelcase": "^6.2.0",
+                "cosmiconfig": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
             }
         },
-        "@types/scheduler": {
-            "version": "0.16.2",
-            "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-            "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+        "node_modules/@svgr/core/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "@types/stack-utils": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
-            "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
-            "dev": true
+        "node_modules/@svgr/core/node_modules/cosmiconfig": {
+            "version": "7.1.0",
+            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+            "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+            "dependencies": {
+                "@types/parse-json": "^4.0.0",
+                "import-fresh": "^3.2.1",
+                "parse-json": "^5.0.0",
+                "path-type": "^4.0.0",
+                "yaml": "^1.10.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "@types/tough-cookie": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz",
-            "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg=="
+        "node_modules/@svgr/core/node_modules/parse-json": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "error-ex": "^1.3.1",
+                "json-parse-even-better-errors": "^2.3.0",
+                "lines-and-columns": "^1.1.6"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "@types/unist": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
-            "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
-            "dev": true
+        "node_modules/@svgr/hast-util-to-babel-ast": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz",
+            "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==",
+            "dependencies": {
+                "@babel/types": "^7.20.0",
+                "entities": "^4.4.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            }
         },
-        "@types/yargs": {
-            "version": "15.0.14",
-            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz",
-            "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==",
-            "dev": true,
-            "requires": {
-                "@types/yargs-parser": "*"
+        "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+            "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+            "engines": {
+                "node": ">=0.12"
+            },
+            "funding": {
+                "url": "https://github.com/fb55/entities?sponsor=1"
             }
         },
-        "@types/yargs-parser": {
-            "version": "20.2.1",
-            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
-            "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
-            "dev": true
+        "node_modules/@svgr/plugin-jsx": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz",
+            "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==",
+            "dependencies": {
+                "@babel/core": "^7.19.6",
+                "@svgr/babel-preset": "^6.5.1",
+                "@svgr/hast-util-to-babel-ast": "^6.5.1",
+                "svg-parser": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@svgr/core": "^6.0.0"
+            }
         },
-        "@webassemblyjs/ast": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
-            "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/helper-module-context": "1.9.0",
-                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-                "@webassemblyjs/wast-parser": "1.9.0"
+        "node_modules/@svgr/plugin-svgo": {
+            "version": "6.5.1",
+            "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz",
+            "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==",
+            "dependencies": {
+                "cosmiconfig": "^7.0.1",
+                "deepmerge": "^4.2.2",
+                "svgo": "^2.8.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            },
+            "peerDependencies": {
+                "@svgr/core": "*"
             }
         },
-        "@webassemblyjs/floating-point-hex-parser": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
-            "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
-            "dev": true
+        "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": {
+            "version": "7.1.0",
+            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+            "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+            "dependencies": {
+                "@types/parse-json": "^4.0.0",
+                "import-fresh": "^3.2.1",
+                "parse-json": "^5.0.0",
+                "path-type": "^4.0.0",
+                "yaml": "^1.10.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "@webassemblyjs/helper-api-error": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
-            "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
-            "dev": true
+        "node_modules/@svgr/plugin-svgo/node_modules/parse-json": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "error-ex": "^1.3.1",
+                "json-parse-even-better-errors": "^2.3.0",
+                "lines-and-columns": "^1.1.6"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "@webassemblyjs/helper-buffer": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
-            "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
-            "dev": true
+        "node_modules/@svgr/webpack": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.3.1.tgz",
+            "integrity": "sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==",
+            "dependencies": {
+                "@babel/core": "^7.18.5",
+                "@babel/plugin-transform-react-constant-elements": "^7.17.12",
+                "@babel/preset-env": "^7.18.2",
+                "@babel/preset-react": "^7.17.12",
+                "@babel/preset-typescript": "^7.17.12",
+                "@svgr/core": "^6.3.1",
+                "@svgr/plugin-jsx": "^6.3.1",
+                "@svgr/plugin-svgo": "^6.3.1"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/gregberge"
+            }
         },
-        "@webassemblyjs/helper-code-frame": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
-            "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/wast-printer": "1.9.0"
+        "node_modules/@tootallnate/once": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+            "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "@webassemblyjs/helper-fsm": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
-            "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
-            "dev": true
+        "node_modules/@trysound/sax": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+            "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+            "engines": {
+                "node": ">=10.13.0"
+            }
         },
-        "@webassemblyjs/helper-module-context": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
-            "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+        "node_modules/@types/babel__core": {
+            "version": "7.20.0",
+            "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
+            "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0"
+            "dependencies": {
+                "@babel/parser": "^7.20.7",
+                "@babel/types": "^7.20.7",
+                "@types/babel__generator": "*",
+                "@types/babel__template": "*",
+                "@types/babel__traverse": "*"
             }
         },
-        "@webassemblyjs/helper-wasm-bytecode": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
-            "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
-            "dev": true
-        },
-        "@webassemblyjs/helper-wasm-section": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
-            "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+        "node_modules/@types/babel__generator": {
+            "version": "7.6.4",
+            "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+            "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-buffer": "1.9.0",
-                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-                "@webassemblyjs/wasm-gen": "1.9.0"
+            "dependencies": {
+                "@babel/types": "^7.0.0"
             }
         },
-        "@webassemblyjs/ieee754": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
-            "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+        "node_modules/@types/babel__template": {
+            "version": "7.4.1",
+            "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+            "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
             "dev": true,
-            "requires": {
-                "@xtuc/ieee754": "^1.2.0"
+            "dependencies": {
+                "@babel/parser": "^7.1.0",
+                "@babel/types": "^7.0.0"
             }
         },
-        "@webassemblyjs/leb128": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
-            "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+        "node_modules/@types/babel__traverse": {
+            "version": "7.18.5",
+            "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz",
+            "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==",
             "dev": true,
-            "requires": {
-                "@xtuc/long": "4.2.2"
+            "dependencies": {
+                "@babel/types": "^7.3.0"
             }
         },
-        "@webassemblyjs/utf8": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
-            "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+        "node_modules/@types/buble": {
+            "version": "0.20.1",
+            "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.20.1.tgz",
+            "integrity": "sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ==",
+            "dependencies": {
+                "magic-string": "^0.25.0"
+            }
+        },
+        "node_modules/@types/cookie": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+            "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
             "dev": true
         },
-        "@webassemblyjs/wasm-edit": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
-            "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+        "node_modules/@types/cors": {
+            "version": "2.8.13",
+            "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
+            "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-buffer": "1.9.0",
-                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-                "@webassemblyjs/helper-wasm-section": "1.9.0",
-                "@webassemblyjs/wasm-gen": "1.9.0",
-                "@webassemblyjs/wasm-opt": "1.9.0",
-                "@webassemblyjs/wasm-parser": "1.9.0",
-                "@webassemblyjs/wast-printer": "1.9.0"
+            "dependencies": {
+                "@types/node": "*"
             }
         },
-        "@webassemblyjs/wasm-gen": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
-            "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+        "node_modules/@types/eslint": {
+            "version": "8.37.0",
+            "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz",
+            "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-                "@webassemblyjs/ieee754": "1.9.0",
-                "@webassemblyjs/leb128": "1.9.0",
-                "@webassemblyjs/utf8": "1.9.0"
+            "dependencies": {
+                "@types/estree": "*",
+                "@types/json-schema": "*"
             }
         },
-        "@webassemblyjs/wasm-opt": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
-            "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+        "node_modules/@types/eslint-scope": {
+            "version": "3.7.4",
+            "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+            "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-buffer": "1.9.0",
-                "@webassemblyjs/wasm-gen": "1.9.0",
-                "@webassemblyjs/wasm-parser": "1.9.0"
+            "dependencies": {
+                "@types/eslint": "*",
+                "@types/estree": "*"
             }
         },
-        "@webassemblyjs/wasm-parser": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
-            "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+        "node_modules/@types/estree": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
+            "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+            "dev": true
+        },
+        "node_modules/@types/glob": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+            "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
             "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-api-error": "1.9.0",
-                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-                "@webassemblyjs/ieee754": "1.9.0",
-                "@webassemblyjs/leb128": "1.9.0",
-                "@webassemblyjs/utf8": "1.9.0"
+            "dependencies": {
+                "@types/minimatch": "*",
+                "@types/node": "*"
             }
         },
-        "@webassemblyjs/wast-parser": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
-            "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/floating-point-hex-parser": "1.9.0",
-                "@webassemblyjs/helper-api-error": "1.9.0",
-                "@webassemblyjs/helper-code-frame": "1.9.0",
-                "@webassemblyjs/helper-fsm": "1.9.0",
-                "@xtuc/long": "4.2.2"
+        "node_modules/@types/graceful-fs": {
+            "version": "4.1.6",
+            "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+            "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+            "dev": true,
+            "dependencies": {
+                "@types/node": "*"
             }
         },
-        "@webassemblyjs/wast-printer": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
-            "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/wast-parser": "1.9.0",
-                "@xtuc/long": "4.2.2"
+        "node_modules/@types/hoist-non-react-statics": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+            "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+            "dependencies": {
+                "@types/react": "*",
+                "hoist-non-react-statics": "^3.3.0"
             }
         },
-        "@xtuc/ieee754": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-            "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-            "dev": true
+        "node_modules/@types/istanbul-lib-coverage": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+            "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
         },
-        "@xtuc/long": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-            "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+        "node_modules/@types/istanbul-lib-report": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+            "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+            "dependencies": {
+                "@types/istanbul-lib-coverage": "*"
+            }
+        },
+        "node_modules/@types/istanbul-reports": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+            "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+            "dependencies": {
+                "@types/istanbul-lib-report": "*"
+            }
+        },
+        "node_modules/@types/jsdom": {
+            "version": "16.2.15",
+            "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz",
+            "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==",
+            "dependencies": {
+                "@types/node": "*",
+                "@types/parse5": "^6.0.3",
+                "@types/tough-cookie": "*"
+            }
+        },
+        "node_modules/@types/json-schema": {
+            "version": "7.0.11",
+            "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+            "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
             "dev": true
         },
-        "File": {
-            "version": "0.10.2",
-            "resolved": "https://registry.npmjs.org/File/-/File-0.10.2.tgz",
-            "integrity": "sha1-6Jn3dtJz4iQ7qGEFuzsFbQ+5VgQ=",
+        "node_modules/@types/mdast": {
+            "version": "3.0.11",
+            "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz",
+            "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==",
             "dev": true,
-            "requires": {
-                "mime": ">= 0.0.0"
+            "dependencies": {
+                "@types/unist": "*"
             }
         },
-        "FileList": {
-            "version": "0.10.2",
-            "resolved": "https://registry.npmjs.org/FileList/-/FileList-0.10.2.tgz",
-            "integrity": "sha1-YAOxqXFZNBZLZ8Q0rWqHQaHNFHo=",
+        "node_modules/@types/minimatch": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+            "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
             "dev": true
         },
-        "abab": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
-            "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
+        "node_modules/@types/minimist": {
+            "version": "1.2.2",
+            "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
+            "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+            "dev": true
         },
-        "abbrev": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+        "node_modules/@types/node": {
+            "version": "18.16.1",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz",
+            "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA=="
+        },
+        "node_modules/@types/normalize-package-data": {
+            "version": "2.4.1",
+            "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+            "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
             "dev": true
         },
-        "accepts": {
-            "version": "1.3.8",
-            "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-            "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-            "requires": {
-                "mime-types": "~2.1.34",
-                "negotiator": "0.6.3"
+        "node_modules/@types/parse-json": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+            "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+        },
+        "node_modules/@types/parse5": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
+            "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
+        },
+        "node_modules/@types/prop-types": {
+            "version": "15.7.5",
+            "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+            "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+        },
+        "node_modules/@types/react": {
+            "version": "17.0.58",
+            "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.58.tgz",
+            "integrity": "sha512-c1GzVY97P0fGxwGxhYq989j4XwlcHQoto6wQISOC2v6wm3h0PORRWJFHlkRjfGsiG3y1609WdQ+J+tKxvrEd6A==",
+            "dependencies": {
+                "@types/prop-types": "*",
+                "@types/scheduler": "*",
+                "csstype": "^3.0.2"
             }
         },
-        "accord": {
-            "version": "0.29.0",
-            "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz",
-            "integrity": "sha512-3OOR92FTc2p5/EcOzPcXp+Cbo+3C15nV9RXHlOUBCBpHhcB+0frbSNR9ehED/o7sTcyGVtqGJpguToEdlXhD0w==",
-            "dev": true,
-            "requires": {
-                "convert-source-map": "^1.5.0",
-                "glob": "^7.0.5",
-                "indx": "^0.2.3",
-                "lodash.clone": "^4.3.2",
-                "lodash.defaults": "^4.0.1",
-                "lodash.flatten": "^4.2.0",
-                "lodash.merge": "^4.4.0",
-                "lodash.partialright": "^4.1.4",
-                "lodash.pick": "^4.2.1",
-                "lodash.uniq": "^4.3.0",
-                "resolve": "^1.5.0",
-                "semver": "^5.3.0",
-                "uglify-js": "^2.8.22",
-                "when": "^3.7.8"
-            },
-            "dependencies": {
-                "camelcase": {
-                    "version": "1.2.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-                    "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-                    "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-                    "dev": true,
-                    "requires": {
-                        "center-align": "^0.1.1",
-                        "right-align": "^0.1.1",
-                        "wordwrap": "0.0.2"
-                    }
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                },
-                "uglify-js": {
-                    "version": "2.8.29",
-                    "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
-                    "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
-                    "dev": true,
-                    "requires": {
-                        "source-map": "~0.5.1",
-                        "uglify-to-browserify": "~1.0.0",
-                        "yargs": "~3.10.0"
-                    }
-                },
-                "wordwrap": {
-                    "version": "0.0.2",
-                    "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-                    "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "3.10.0",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-                    "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^1.0.2",
-                        "cliui": "^2.1.0",
-                        "decamelize": "^1.0.0",
-                        "window-size": "0.1.0"
-                    }
-                }
+        "node_modules/@types/react-dom": {
+            "version": "17.0.20",
+            "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz",
+            "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==",
+            "optional": true,
+            "dependencies": {
+                "@types/react": "^17"
             }
         },
-        "acorn": {
-            "version": "8.7.0",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
-            "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="
+        "node_modules/@types/react-reconciler": {
+            "version": "0.26.7",
+            "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz",
+            "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==",
+            "peer": true,
+            "dependencies": {
+                "@types/react": "*"
+            }
         },
-        "acorn-globals": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
-            "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
-            "requires": {
-                "acorn": "^7.1.1",
-                "acorn-walk": "^7.1.1"
-            },
+        "node_modules/@types/react-redux": {
+            "version": "7.1.25",
+            "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.25.tgz",
+            "integrity": "sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==",
             "dependencies": {
-                "acorn": {
-                    "version": "7.4.1",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-                    "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
-                }
+                "@types/hoist-non-react-statics": "^3.3.0",
+                "@types/react": "*",
+                "hoist-non-react-statics": "^3.3.0",
+                "redux": "^4.0.0"
             }
         },
-        "acorn-jsx": {
-            "version": "5.3.2",
-            "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-            "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
+        "node_modules/@types/scheduler": {
+            "version": "0.16.3",
+            "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
+            "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
         },
-        "acorn-walk": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
-            "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
+        "node_modules/@types/stack-utils": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+            "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+            "peer": true
         },
-        "action-sequence": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/action-sequence/-/action-sequence-1.1.2.tgz",
-            "integrity": "sha512-i8bDSIewSmPWKAciwfem3NSmf8zdQ1HdPKGjruHTgoXiyk/kntuZUiUJRXDLO7ec5WcwCosTyJoiTMWPqLQ+9g=="
+        "node_modules/@types/tough-cookie": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
+            "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw=="
         },
-        "add-px-to-style": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz",
-            "integrity": "sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo="
+        "node_modules/@types/triple-beam": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz",
+            "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==",
+            "dev": true
         },
-        "after": {
-            "version": "0.8.2",
-            "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-            "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+        "node_modules/@types/unist": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
+            "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
             "dev": true
         },
-        "agent-base": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-            "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-            "requires": {
-                "debug": "4"
-            },
+        "node_modules/@types/yargs": {
+            "version": "15.0.15",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
+            "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
-            }
-        },
-        "aggregate-error": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-            "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-            "dev": true,
-            "requires": {
-                "clean-stack": "^2.0.0",
-                "indent-string": "^4.0.0"
+                "@types/yargs-parser": "*"
             }
         },
-        "airbnb-prop-types": {
-            "version": "2.16.0",
-            "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz",
-            "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==",
-            "requires": {
-                "array.prototype.find": "^2.1.1",
-                "function.prototype.name": "^1.1.2",
-                "is-regex": "^1.1.0",
-                "object-is": "^1.1.2",
-                "object.assign": "^4.1.0",
-                "object.entries": "^1.1.2",
-                "prop-types": "^15.7.2",
-                "prop-types-exact": "^1.2.0",
-                "react-is": "^16.13.1"
-            }
+        "node_modules/@types/yargs-parser": {
+            "version": "21.0.0",
+            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+            "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
         },
-        "ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+        "node_modules/@webassemblyjs/ast": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz",
+            "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==",
             "dev": true,
-            "requires": {
-                "fast-deep-equal": "^3.1.1",
-                "fast-json-stable-stringify": "^2.0.0",
-                "json-schema-traverse": "^0.4.1",
-                "uri-js": "^4.2.2"
+            "dependencies": {
+                "@webassemblyjs/helper-numbers": "1.11.5",
+                "@webassemblyjs/helper-wasm-bytecode": "1.11.5"
             }
         },
-        "ajv-errors": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-            "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-            "dev": true
-        },
-        "ajv-keywords": {
-            "version": "3.5.2",
-            "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-            "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+        "node_modules/@webassemblyjs/floating-point-hex-parser": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz",
+            "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==",
             "dev": true
         },
-        "align-text": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
-            "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
-            "dev": true,
-            "requires": {
-                "kind-of": "^3.0.2",
-                "longest": "^1.0.1",
-                "repeat-string": "^1.5.2"
-            },
-            "dependencies": {
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
-            }
-        },
-        "amdefine": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-            "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+        "node_modules/@webassemblyjs/helper-api-error": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz",
+            "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==",
             "dev": true
         },
-        "amp": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz",
-            "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=",
+        "node_modules/@webassemblyjs/helper-buffer": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz",
+            "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==",
             "dev": true
         },
-        "amp-message": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz",
-            "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=",
+        "node_modules/@webassemblyjs/helper-numbers": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz",
+            "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==",
             "dev": true,
-            "requires": {
-                "amp": "0.3.1"
+            "dependencies": {
+                "@webassemblyjs/floating-point-hex-parser": "1.11.5",
+                "@webassemblyjs/helper-api-error": "1.11.5",
+                "@xtuc/long": "4.2.2"
             }
         },
-        "ansi-align": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
-            "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+        "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz",
+            "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==",
+            "dev": true
+        },
+        "node_modules/@webassemblyjs/helper-wasm-section": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz",
+            "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==",
             "dev": true,
-            "requires": {
-                "string-width": "^4.1.0"
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@webassemblyjs/helper-buffer": "1.11.5",
+                "@webassemblyjs/helper-wasm-bytecode": "1.11.5",
+                "@webassemblyjs/wasm-gen": "1.11.5"
             }
         },
-        "ansi-colors": {
+        "node_modules/@webassemblyjs/ieee754": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz",
+            "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==",
+            "dev": true,
+            "dependencies": {
+                "@xtuc/ieee754": "^1.2.0"
+            }
+        },
+        "node_modules/@webassemblyjs/leb128": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz",
+            "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==",
+            "dev": true,
+            "dependencies": {
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "node_modules/@webassemblyjs/utf8": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz",
+            "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==",
+            "dev": true
+        },
+        "node_modules/@webassemblyjs/wasm-edit": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz",
+            "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==",
+            "dev": true,
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@webassemblyjs/helper-buffer": "1.11.5",
+                "@webassemblyjs/helper-wasm-bytecode": "1.11.5",
+                "@webassemblyjs/helper-wasm-section": "1.11.5",
+                "@webassemblyjs/wasm-gen": "1.11.5",
+                "@webassemblyjs/wasm-opt": "1.11.5",
+                "@webassemblyjs/wasm-parser": "1.11.5",
+                "@webassemblyjs/wast-printer": "1.11.5"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-gen": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz",
+            "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==",
+            "dev": true,
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@webassemblyjs/helper-wasm-bytecode": "1.11.5",
+                "@webassemblyjs/ieee754": "1.11.5",
+                "@webassemblyjs/leb128": "1.11.5",
+                "@webassemblyjs/utf8": "1.11.5"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-opt": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz",
+            "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==",
+            "dev": true,
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@webassemblyjs/helper-buffer": "1.11.5",
+                "@webassemblyjs/wasm-gen": "1.11.5",
+                "@webassemblyjs/wasm-parser": "1.11.5"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-parser": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz",
+            "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==",
+            "dev": true,
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@webassemblyjs/helper-api-error": "1.11.5",
+                "@webassemblyjs/helper-wasm-bytecode": "1.11.5",
+                "@webassemblyjs/ieee754": "1.11.5",
+                "@webassemblyjs/leb128": "1.11.5",
+                "@webassemblyjs/utf8": "1.11.5"
+            }
+        },
+        "node_modules/@webassemblyjs/wast-printer": {
+            "version": "1.11.5",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz",
+            "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==",
+            "dev": true,
+            "dependencies": {
+                "@webassemblyjs/ast": "1.11.5",
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "node_modules/@xtuc/ieee754": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+            "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+            "dev": true
+        },
+        "node_modules/@xtuc/long": {
+            "version": "4.2.2",
+            "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+            "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+            "dev": true
+        },
+        "node_modules/abab": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+            "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+        },
+        "node_modules/abbrev": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+            "dev": true
+        },
+        "node_modules/abort-controller": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+            "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+            "dependencies": {
+                "event-target-shim": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=6.5"
+            }
+        },
+        "node_modules/absolute-path": {
+            "version": "0.0.0",
+            "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
+            "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==",
+            "peer": true
+        },
+        "node_modules/accepts": {
+            "version": "1.3.8",
+            "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+            "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+            "dependencies": {
+                "mime-types": "~2.1.34",
+                "negotiator": "0.6.3"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/acorn": {
+            "version": "8.8.2",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+            "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/acorn-globals": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+            "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+            "dependencies": {
+                "acorn": "^7.1.1",
+                "acorn-walk": "^7.1.1"
+            }
+        },
+        "node_modules/acorn-globals/node_modules/acorn": {
+            "version": "7.4.1",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+            "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/acorn-import-assertions": {
+            "version": "1.8.0",
+            "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+            "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
+            "dev": true,
+            "peerDependencies": {
+                "acorn": "^8"
+            }
+        },
+        "node_modules/acorn-jsx": {
+            "version": "5.3.2",
+            "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+            "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+            "peerDependencies": {
+                "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+            }
+        },
+        "node_modules/acorn-walk": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+            "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/action-sequence": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/action-sequence/-/action-sequence-1.1.2.tgz",
+            "integrity": "sha512-i8bDSIewSmPWKAciwfem3NSmf8zdQ1HdPKGjruHTgoXiyk/kntuZUiUJRXDLO7ec5WcwCosTyJoiTMWPqLQ+9g=="
+        },
+        "node_modules/add-px-to-style": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz",
+            "integrity": "sha512-YMyxSlXpPjD8uWekCQGuN40lV4bnZagUwqa2m/uFv1z/tNImSk9fnXVMUI5qwME/zzI3MMQRvjZ+69zyfSSyew=="
+        },
+        "node_modules/agent-base": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+            "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+            "dependencies": {
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 6.0.0"
+            }
+        },
+        "node_modules/aggregate-error": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+            "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+            "dev": true,
+            "dependencies": {
+                "clean-stack": "^2.0.0",
+                "indent-string": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/aggregate-error/node_modules/indent-string": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+            "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/ajv": {
+            "version": "8.12.0",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+            "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "json-schema-traverse": "^1.0.0",
+                "require-from-string": "^2.0.2",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
+        },
+        "node_modules/ajv-formats": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+            "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+            "dev": true,
+            "dependencies": {
+                "ajv": "^8.0.0"
+            },
+            "peerDependencies": {
+                "ajv": "^8.0.0"
+            },
+            "peerDependenciesMeta": {
+                "ajv": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/ajv-keywords": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+            "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.3"
+            },
+            "peerDependencies": {
+                "ajv": "^8.8.2"
+            }
+        },
+        "node_modules/anser": {
+            "version": "1.4.10",
+            "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+            "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
+            "peer": true
+        },
+        "node_modules/ansi-colors": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
             "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
-            "dev": true
-        },
-        "ansi-cyan": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
-            "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
             "dev": true,
-            "requires": {
-                "ansi-wrap": "0.1.0"
+            "engines": {
+                "node": ">=6"
             }
         },
-        "ansi-escapes": {
-            "version": "4.3.2",
-            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
-            "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+        "node_modules/ansi-escapes": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+            "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
             "dev": true,
-            "requires": {
-                "type-fest": "^0.21.3"
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/ansi-fragments": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+            "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+            "peer": true,
+            "dependencies": {
+                "colorette": "^1.0.7",
+                "slice-ansi": "^2.0.0",
+                "strip-ansi": "^5.0.0"
+            }
+        },
+        "node_modules/ansi-fragments/node_modules/ansi-regex": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+            "peer": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/ansi-fragments/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "peer": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/ansi-fragments/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "peer": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/ansi-fragments/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "peer": true
+        },
+        "node_modules/ansi-fragments/node_modules/slice-ansi": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+            "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+            "peer": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.0",
+                "astral-regex": "^1.0.0",
+                "is-fullwidth-code-point": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "ansi-gray": {
+        "node_modules/ansi-fragments/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "peer": true,
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/ansi-gray": {
             "version": "0.1.1",
             "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
-            "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+            "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "ansi-wrap": "0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "ansi-html-community": {
+        "node_modules/ansi-html-community": {
             "version": "0.0.8",
             "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
             "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
-            "dev": true
-        },
-        "ansi-red": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
-            "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
             "dev": true,
-            "requires": {
-                "ansi-wrap": "0.1.0"
+            "engines": [
+                "node >= 0.8.0"
+            ],
+            "bin": {
+                "ansi-html": "bin/ansi-html"
             }
         },
-        "ansi-regex": {
+        "node_modules/ansi-regex": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
             "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-            "dev": true
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "ansi-styles": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-            "requires": {
-                "color-convert": "^1.9.0"
+        "node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
-        "ansi-wrap": {
+        "node_modules/ansi-wrap": {
             "version": "0.1.0",
             "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
-            "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
-            "dev": true
+            "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "any-observable": {
+        "node_modules/any-observable": {
             "version": "0.3.0",
             "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
             "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "any-promise": {
+        "node_modules/any-promise": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-            "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+            "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
             "dev": true
         },
-        "anymatch": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-            "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-            "requires": {
+        "node_modules/anymatch": {
+            "version": "3.1.3",
+            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+            "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+            "dependencies": {
                 "normalize-path": "^3.0.0",
                 "picomatch": "^2.0.4"
+            },
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "apache-crypt": {
-            "version": "1.2.5",
-            "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz",
-            "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==",
-            "requires": {
+        "node_modules/apache-crypt": {
+            "version": "1.2.6",
+            "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.6.tgz",
+            "integrity": "sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==",
+            "dependencies": {
                 "unix-crypt-td-js": "^1.1.4"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "apache-md5": {
-            "version": "1.1.7",
-            "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz",
-            "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw=="
+        "node_modules/apache-md5": {
+            "version": "1.1.8",
+            "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz",
+            "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==",
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "apidoc": {
+        "node_modules/apidoc": {
             "version": "0.25.0",
             "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.25.0.tgz",
             "integrity": "sha512-5g9fp8OffXZOdBTzm4BBvV5Vw54s+NmKnGZIUKuH+gRTqqJuRJpcGN6sz6WnjJ+NcvXhB7rIRp6FhtJahazx2Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "apidoc-core": "^0.12.0",
                 "commander": "^2.20.0",
                 "fs-extra": "^9.0.1",
@@ -4152,90 +4854,19 @@
                 "nodemon": "^2.0.4",
                 "winston": "^3.3.3"
             },
-            "dependencies": {
-                "async": {
-                    "version": "3.2.3",
-                    "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
-                    "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
-                    "dev": true
-                },
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-                    "dev": true
-                },
-                "fs-extra": {
-                    "version": "9.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-                    "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-                    "dev": true,
-                    "requires": {
-                        "at-least-node": "^1.0.0",
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^6.0.1",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "is-stream": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-                    "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-                    "dev": true
-                },
-                "jsonfile": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-                    "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.6",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "universalify": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-                    "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-                    "dev": true
-                },
-                "winston": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz",
-                    "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==",
-                    "dev": true,
-                    "requires": {
-                        "@dabh/diagnostics": "^2.0.2",
-                        "async": "^3.2.3",
-                        "is-stream": "^2.0.0",
-                        "logform": "^2.4.0",
-                        "one-time": "^1.0.0",
-                        "readable-stream": "^3.4.0",
-                        "safe-stable-stringify": "^2.3.1",
-                        "stack-trace": "0.0.x",
-                        "triple-beam": "^1.3.0",
-                        "winston-transport": "^4.5.0"
-                    }
-                }
+            "bin": {
+                "apidoc": "bin/apidoc"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "apidoc-core": {
+        "node_modules/apidoc-core": {
             "version": "0.12.0",
             "resolved": "https://registry.npmjs.org/apidoc-core/-/apidoc-core-0.12.0.tgz",
             "integrity": "sha512-VMhkJWz5IAyvWM0RnEbKNi1qe8se+id3/Ki3H/ePM8ih0KYTfaaSDxqo2w4uIVB1UVVKFvrTWyYUyQs7CEcoKQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "fs-extra": "^9.0.1",
                 "glob": "^7.1.6",
                 "iconv-lite": "^0.6.2",
@@ -4243,73 +4874,103 @@
                 "lodash": "^4.17.20",
                 "semver": "~7.3.2"
             },
-            "dependencies": {
-                "fs-extra": {
-                    "version": "9.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-                    "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-                    "dev": true,
-                    "requires": {
-                        "at-least-node": "^1.0.0",
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^6.0.1",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "iconv-lite": {
-                    "version": "0.6.3",
-                    "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-                    "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-                    "dev": true,
-                    "requires": {
-                        "safer-buffer": ">= 2.1.2 < 3.0.0"
-                    }
-                },
-                "jsonfile": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-                    "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.6",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "universalify": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-                    "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "append-buffer": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
-            "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+        "node_modules/apidoc-core/node_modules/fs-extra": {
+            "version": "9.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+            "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
             "dev": true,
-            "requires": {
-                "buffer-equal": "^1.0.0"
+            "dependencies": {
+                "at-least-node": "^1.0.0",
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^6.0.1",
+                "universalify": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
             }
         },
-        "aproba": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-            "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-            "dev": true
-        },
-        "arch": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
-            "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+        "node_modules/apidoc-core/node_modules/lru-cache": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+            "dev": true,
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/apidoc-core/node_modules/semver": {
+            "version": "7.3.8",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+            "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+            "dev": true,
+            "dependencies": {
+                "lru-cache": "^6.0.0"
+            },
+            "bin": {
+                "semver": "bin/semver.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/apidoc-core/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+            "dev": true
+        },
+        "node_modules/apidoc/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
             "dev": true
         },
-        "archiver": {
+        "node_modules/apidoc/node_modules/fs-extra": {
+            "version": "9.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+            "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+            "dev": true,
+            "dependencies": {
+                "at-least-node": "^1.0.0",
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^6.0.1",
+                "universalify": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/appdirsjs": {
+            "version": "1.2.7",
+            "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz",
+            "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==",
+            "peer": true
+        },
+        "node_modules/append-buffer": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+            "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",
+            "dev": true,
+            "dependencies": {
+                "buffer-equal": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/archiver": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
             "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "archiver-utils": "^2.1.0",
                 "async": "^2.6.3",
                 "buffer-crc32": "^0.2.1",
@@ -4318,50 +4979,16 @@
                 "tar-stream": "^2.1.0",
                 "zip-stream": "^2.1.2"
             },
-            "dependencies": {
-                "bl": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-                    "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-                    "dev": true,
-                    "requires": {
-                        "buffer": "^5.5.0",
-                        "inherits": "^2.0.4",
-                        "readable-stream": "^3.4.0"
-                    }
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "tar-stream": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-                    "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-                    "dev": true,
-                    "requires": {
-                        "bl": "^4.0.3",
-                        "end-of-stream": "^1.4.1",
-                        "fs-constants": "^1.0.0",
-                        "inherits": "^2.0.3",
-                        "readable-stream": "^3.1.1"
-                    }
-                }
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "archiver-utils": {
+        "node_modules/archiver-utils": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
             "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "glob": "^7.1.4",
                 "graceful-fs": "^4.2.0",
                 "lazystream": "^1.0.0",
@@ -4372,496 +4999,600 @@
                 "lodash.union": "^4.6.0",
                 "normalize-path": "^3.0.0",
                 "readable-stream": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "archy": {
+        "node_modules/archiver-utils/node_modules/isarray": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
-            "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
             "dev": true
         },
-        "are-we-there-yet": {
-            "version": "1.1.7",
-            "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
-            "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
+        "node_modules/archiver-utils/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/archiver-utils/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/archiver-utils/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/archiver/node_modules/tar-stream": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+            "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
             "dev": true,
-            "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
+            "dependencies": {
+                "bl": "^4.0.3",
+                "end-of-stream": "^1.4.1",
+                "fs-constants": "^1.0.0",
+                "inherits": "^2.0.3",
+                "readable-stream": "^3.1.1"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "argparse": {
+        "node_modules/archy": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+            "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
+            "dev": true
+        },
+        "node_modules/argparse": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
             "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-            "dev": true,
-            "requires": {
-                "sprintf-js": "~1.0.2"
-            },
             "dependencies": {
-                "sprintf-js": {
-                    "version": "1.0.3",
-                    "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-                    "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-                    "dev": true
-                }
+                "sprintf-js": "~1.0.2"
             }
         },
-        "arr-diff": {
+        "node_modules/arr-diff": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-            "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-            "dev": true
+            "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "arr-filter": {
+        "node_modules/arr-filter": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
-            "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
+            "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "make-iterator": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "arr-flatten": {
+        "node_modules/arr-flatten": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
             "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-            "dev": true
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "arr-map": {
+        "node_modules/arr-map": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
-            "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
+            "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "make-iterator": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "arr-union": {
+        "node_modules/arr-union": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-            "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-            "dev": true
+            "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "array-differ": {
+        "node_modules/array-buffer-byte-length": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
-            "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+            "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "is-array-buffer": "^3.0.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "array-each": {
+        "node_modules/array-each": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
-            "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
-            "dev": true
-        },
-        "array-find-index": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-            "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-            "dev": true
+            "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "array-flatten": {
+        "node_modules/array-flatten": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-            "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+            "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
         },
-        "array-includes": {
-            "version": "3.1.4",
-            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
-            "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+        "node_modules/array-includes": {
+            "version": "3.1.6",
+            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
+            "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1",
-                "get-intrinsic": "^1.1.1",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "get-intrinsic": "^1.1.3",
                 "is-string": "^1.0.7"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "array-initial": {
+        "node_modules/array-initial": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
-            "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
+            "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "array-slice": "^1.0.0",
                 "is-number": "^4.0.0"
             },
-            "dependencies": {
-                "is-number": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-                    "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-initial/node_modules/is-number": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+            "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "array-last": {
+        "node_modules/array-last": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
             "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "is-number": "^4.0.0"
             },
-            "dependencies": {
-                "is-number": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-                    "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-last/node_modules/is-number": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+            "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "array-slice": {
+        "node_modules/array-slice": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
             "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "array-sort": {
+        "node_modules/array-sort": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
             "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "default-compare": "^1.0.0",
                 "get-value": "^2.0.6",
                 "kind-of": "^5.0.2"
             },
-            "dependencies": {
-                "kind-of": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                    "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-sort/node_modules/kind-of": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+            "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "array-union": {
+        "node_modules/array-union": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-            "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
-        },
-        "array-uniq": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-            "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
-            "dev": true
+            "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "array-unique": {
+        "node_modules/array-unique": {
             "version": "0.3.2",
             "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-            "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-            "dev": true
-        },
-        "array.prototype.filter": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz",
-            "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.0",
-                "es-array-method-boxes-properly": "^1.0.0",
-                "is-string": "^1.0.7"
+            "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "array.prototype.find": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz",
-            "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==",
-            "requires": {
+        "node_modules/array.prototype.flatmap": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+            "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+            "dev": true,
+            "dependencies": {
                 "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.0"
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "es-shim-unscopables": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "array.prototype.flat": {
-            "version": "1.2.5",
-            "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
-            "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
-            "requires": {
+        "node_modules/array.prototype.reduce": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
+            "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
+            "dependencies": {
                 "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.0"
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "es-array-method-boxes-properly": "^1.0.0",
+                "is-string": "^1.0.7"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "array.prototype.flatmap": {
-            "version": "1.2.5",
-            "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz",
-            "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==",
+        "node_modules/array.prototype.tosorted": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
+            "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
             "dev": true,
-            "requires": {
-                "call-bind": "^1.0.0",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.0"
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "es-shim-unscopables": "^1.0.0",
+                "get-intrinsic": "^1.1.3"
             }
         },
-        "arraybuffer.slice": {
-            "version": "0.0.7",
-            "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
-            "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
-            "dev": true
-        },
-        "arrify": {
+        "node_modules/arrify": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-            "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-            "dev": true
+            "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/asap": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+            "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+            "peer": true
         },
-        "asn1": {
+        "node_modules/asn1": {
             "version": "0.2.6",
             "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
             "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "safer-buffer": "~2.1.0"
             }
         },
-        "asn1.js": {
+        "node_modules/asn1.js": {
             "version": "5.4.1",
             "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
             "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^4.0.0",
                 "inherits": "^2.0.1",
                 "minimalistic-assert": "^1.0.0",
                 "safer-buffer": "^2.1.0"
-            },
-            "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
             }
         },
-        "assert": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-            "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+        "node_modules/asn1.js/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+            "dev": true
+        },
+        "node_modules/assert": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
+            "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
             "dev": true,
-            "requires": {
-                "object-assign": "^4.1.1",
-                "util": "0.10.3"
-            },
             "dependencies": {
-                "inherits": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-                    "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
-                    "dev": true
-                },
-                "util": {
-                    "version": "0.10.3",
-                    "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-                    "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "2.0.1"
-                    }
-                }
+                "es6-object-assign": "^1.1.0",
+                "is-nan": "^1.2.1",
+                "object-is": "^1.0.1",
+                "util": "^0.12.0"
             }
         },
-        "assert-plus": {
+        "node_modules/assert-plus": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-            "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-            "dev": true
+            "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8"
+            }
         },
-        "assign-symbols": {
+        "node_modules/assign-symbols": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-            "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-            "dev": true
+            "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "ast-types": {
-            "version": "0.13.4",
-            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
-            "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
-            "dev": true,
-            "requires": {
+        "node_modules/ast-types": {
+            "version": "0.14.2",
+            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
+            "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
+            "peer": true,
+            "dependencies": {
                 "tslib": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "astral-regex": {
+        "node_modules/astral-regex": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
             "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
-            "dev": true
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "async": {
-            "version": "2.6.3",
-            "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-            "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+        "node_modules/async": {
+            "version": "2.6.4",
+            "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+            "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "lodash": "^4.17.14"
             }
         },
-        "async-done": {
+        "node_modules/async-done": {
             "version": "1.3.2",
             "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
             "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "end-of-stream": "^1.1.0",
                 "once": "^1.3.2",
                 "process-nextick-args": "^2.0.0",
                 "stream-exhaust": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "async-each": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-            "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-            "dev": true
+        "node_modules/async-each": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz",
+            "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://paulmillr.com/funding/"
+                }
+            ]
         },
-        "async-each-series": {
+        "node_modules/async-each-series": {
             "version": "0.1.1",
             "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz",
-            "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=",
-            "dev": true
-        },
-        "async-foreach": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-            "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
-            "dev": true
-        },
-        "async-listener": {
-            "version": "0.6.10",
-            "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
-            "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
+            "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==",
             "dev": true,
-            "requires": {
-                "semver": "^5.3.0",
-                "shimmer": "^1.1.0"
-            },
-            "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.8.0"
             }
         },
-        "async-settle": {
+        "node_modules/async-limiter": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+            "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+            "peer": true
+        },
+        "node_modules/async-settle": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
-            "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
+            "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "async-done": "^1.2.2"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "asynckit": {
+        "node_modules/asynckit": {
             "version": "0.4.0",
             "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-            "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+            "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
         },
-        "at-least-node": {
+        "node_modules/at-least-node": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
             "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">= 4.0.0"
+            }
         },
-        "atob": {
+        "node_modules/atob": {
             "version": "2.1.2",
             "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
             "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-            "dev": true
+            "bin": {
+                "atob": "bin/atob.js"
+            },
+            "engines": {
+                "node": ">= 4.5.0"
+            }
         },
-        "autoprefixer": {
-            "version": "10.4.2",
-            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
-            "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
+        "node_modules/autoprefixer": {
+            "version": "10.4.14",
+            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+            "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
             "dev": true,
-            "requires": {
-                "browserslist": "^4.19.1",
-                "caniuse-lite": "^1.0.30001297",
-                "fraction.js": "^4.1.2",
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/postcss/"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+                }
+            ],
+            "dependencies": {
+                "browserslist": "^4.21.5",
+                "caniuse-lite": "^1.0.30001464",
+                "fraction.js": "^4.2.0",
                 "normalize-range": "^0.1.2",
                 "picocolors": "^1.0.0",
                 "postcss-value-parser": "^4.2.0"
+            },
+            "bin": {
+                "autoprefixer": "bin/autoprefixer"
+            },
+            "engines": {
+                "node": "^10 || ^12 || >=14"
+            },
+            "peerDependencies": {
+                "postcss": "^8.1.0"
+            }
+        },
+        "node_modules/available-typed-arrays": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+            "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "aws-sign2": {
+        "node_modules/aws-sign2": {
             "version": "0.7.0",
             "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-            "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-            "dev": true
+            "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
         },
-        "aws4": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-            "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+        "node_modules/aws4": {
+            "version": "1.12.0",
+            "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
+            "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
             "dev": true
         },
-        "axios": {
-            "version": "0.26.0",
-            "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
-            "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
-            "requires": {
-                "follow-redirects": "^1.14.8"
-            },
+        "node_modules/axios": {
+            "version": "0.26.1",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
+            "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
             "dependencies": {
-                "follow-redirects": {
-                    "version": "1.14.9",
-                    "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
-                    "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
-                }
+                "follow-redirects": "^1.14.8"
             }
         },
-        "axios-retry": {
-            "version": "3.2.4",
-            "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.2.4.tgz",
-            "integrity": "sha512-Co3UXiv4npi6lM963mfnuH90/YFLKWWDmoBYfxkHT5xtkSSWNqK9zdG3fw5/CP/dsoKB5aMMJCsgab+tp1OxLQ==",
-            "requires": {
+        "node_modules/axios-retry": {
+            "version": "3.4.0",
+            "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz",
+            "integrity": "sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==",
+            "dependencies": {
                 "@babel/runtime": "^7.15.4",
                 "is-retry-allowed": "^2.2.0"
             }
         },
-        "babel-core": {
+        "node_modules/babel-core": {
             "version": "7.0.0-bridge.0",
             "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
             "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
-            "dev": true
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
         },
-        "babel-eslint": {
+        "node_modules/babel-eslint": {
             "version": "10.1.0",
             "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
             "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+            "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/code-frame": "^7.0.0",
                 "@babel/parser": "^7.7.0",
                 "@babel/traverse": "^7.7.0",
                 "@babel/types": "^7.7.0",
                 "eslint-visitor-keys": "^1.0.0",
                 "resolve": "^1.12.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependencies": {
+                "eslint": ">= 4.12.1"
             }
         },
-        "babel-extract-comments": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
-            "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==",
-            "dev": true,
-            "requires": {
-                "babylon": "^6.18.0"
-            }
-        },
-        "babel-jest": {
+        "node_modules/babel-jest": {
             "version": "26.6.3",
             "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz",
             "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@jest/transform": "^26.6.2",
                 "@jest/types": "^26.6.2",
                 "@types/babel__core": "^7.1.7",
@@ -4871,205 +5602,195 @@
                 "graceful-fs": "^4.2.4",
                 "slash": "^3.0.0"
             },
+            "engines": {
+                "node": ">= 10.14.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/babel-jest/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/babel-loader": {
+            "version": "9.1.2",
+            "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz",
+            "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==",
+            "dev": true,
             "dependencies": {
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                }
+                "find-cache-dir": "^3.3.2",
+                "schema-utils": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 14.15.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.12.0",
+                "webpack": ">=5"
             }
         },
-        "babel-loader": {
-            "version": "8.2.3",
-            "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz",
-            "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==",
-            "dev": true,
-            "requires": {
-                "find-cache-dir": "^3.3.1",
-                "loader-utils": "^1.4.0",
-                "make-dir": "^3.1.0",
-                "schema-utils": "^2.6.5"
-            },
-            "dependencies": {
-                "find-cache-dir": {
-                    "version": "3.3.2",
-                    "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-                    "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-                    "dev": true,
-                    "requires": {
-                        "commondir": "^1.0.1",
-                        "make-dir": "^3.0.2",
-                        "pkg-dir": "^4.1.0"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "make-dir": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-                    "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-                    "dev": true,
-                    "requires": {
-                        "semver": "^6.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "pkg-dir": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-                    "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.0.0"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+        "node_modules/babel-loader/node_modules/find-cache-dir": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+            "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+            "dev": true,
+            "dependencies": {
+                "commondir": "^1.0.1",
+                "make-dir": "^3.0.2",
+                "pkg-dir": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
             }
         },
-        "babel-plugin-dynamic-import-node": {
-            "version": "2.3.3",
-            "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-            "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+        "node_modules/babel-loader/node_modules/make-dir": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+            "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
             "dev": true,
-            "requires": {
-                "object.assign": "^4.1.0"
+            "dependencies": {
+                "semver": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/babel-loader/node_modules/pkg-dir": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+            "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+            "dev": true,
+            "dependencies": {
+                "find-up": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/babel-loader/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "babel-plugin-istanbul": {
+        "node_modules/babel-plugin-istanbul": {
             "version": "6.1.1",
             "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
             "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/helper-plugin-utils": "^7.0.0",
                 "@istanbuljs/load-nyc-config": "^1.0.0",
                 "@istanbuljs/schema": "^0.1.2",
                 "istanbul-lib-instrument": "^5.0.4",
                 "test-exclude": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "babel-plugin-jest-hoist": {
+        "node_modules/babel-plugin-jest-hoist": {
             "version": "26.6.2",
             "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz",
             "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/template": "^7.3.3",
                 "@babel/types": "^7.3.3",
                 "@types/babel__core": "^7.0.0",
                 "@types/babel__traverse": "^7.0.6"
+            },
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "babel-plugin-module-resolver": {
+        "node_modules/babel-plugin-module-resolver": {
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz",
             "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "find-babel-config": "^1.2.0",
                 "glob": "^7.1.6",
                 "pkg-up": "^3.1.0",
                 "reselect": "^4.0.0",
                 "resolve": "^1.13.1"
+            },
+            "engines": {
+                "node": ">= 8.0.0"
             }
         },
-        "babel-plugin-polyfill-corejs2": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
-            "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
-            "dev": true,
-            "requires": {
-                "@babel/compat-data": "^7.13.11",
-                "@babel/helper-define-polyfill-provider": "^0.3.1",
+        "node_modules/babel-plugin-polyfill-corejs2": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
+            "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
+            "dependencies": {
+                "@babel/compat-data": "^7.17.7",
+                "@babel/helper-define-polyfill-provider": "^0.3.3",
                 "semver": "^6.1.1"
             },
-            "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "babel-plugin-polyfill-corejs3": {
-            "version": "0.5.2",
-            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
-            "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-define-polyfill-provider": "^0.3.1",
-                "core-js-compat": "^3.21.0"
+        "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "babel-plugin-polyfill-regenerator": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
-            "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-define-polyfill-provider": "^0.3.1"
+        "node_modules/babel-plugin-polyfill-corejs3": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
+            "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
+            "dependencies": {
+                "@babel/helper-define-polyfill-provider": "^0.3.3",
+                "core-js-compat": "^3.25.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "babel-plugin-syntax-object-rest-spread": {
-            "version": "6.13.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
-            "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
-            "dev": true
-        },
-        "babel-plugin-transform-object-rest-spread": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
-            "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
-            "dev": true,
-            "requires": {
-                "babel-plugin-syntax-object-rest-spread": "^6.8.0",
-                "babel-runtime": "^6.26.0"
+        "node_modules/babel-plugin-polyfill-regenerator": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
+            "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
+            "dependencies": {
+                "@babel/helper-define-polyfill-provider": "^0.3.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "babel-preset-current-node-syntax": {
+        "node_modules/babel-plugin-syntax-trailing-function-commas": {
+            "version": "7.0.0-beta.0",
+            "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
+            "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==",
+            "peer": true
+        },
+        "node_modules/babel-preset-current-node-syntax": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
             "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/plugin-syntax-async-generators": "^7.8.4",
                 "@babel/plugin-syntax-bigint": "^7.8.3",
                 "@babel/plugin-syntax-class-properties": "^7.8.3",
@@ -5082,51 +5803,71 @@
                 "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
                 "@babel/plugin-syntax-optional-chaining": "^7.8.3",
                 "@babel/plugin-syntax-top-level-await": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "babel-preset-jest": {
+        "node_modules/babel-preset-fbjs": {
+            "version": "3.4.0",
+            "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz",
+            "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==",
+            "peer": true,
+            "dependencies": {
+                "@babel/plugin-proposal-class-properties": "^7.0.0",
+                "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+                "@babel/plugin-syntax-class-properties": "^7.0.0",
+                "@babel/plugin-syntax-flow": "^7.0.0",
+                "@babel/plugin-syntax-jsx": "^7.0.0",
+                "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+                "@babel/plugin-transform-arrow-functions": "^7.0.0",
+                "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+                "@babel/plugin-transform-block-scoping": "^7.0.0",
+                "@babel/plugin-transform-classes": "^7.0.0",
+                "@babel/plugin-transform-computed-properties": "^7.0.0",
+                "@babel/plugin-transform-destructuring": "^7.0.0",
+                "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+                "@babel/plugin-transform-for-of": "^7.0.0",
+                "@babel/plugin-transform-function-name": "^7.0.0",
+                "@babel/plugin-transform-literals": "^7.0.0",
+                "@babel/plugin-transform-member-expression-literals": "^7.0.0",
+                "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+                "@babel/plugin-transform-object-super": "^7.0.0",
+                "@babel/plugin-transform-parameters": "^7.0.0",
+                "@babel/plugin-transform-property-literals": "^7.0.0",
+                "@babel/plugin-transform-react-display-name": "^7.0.0",
+                "@babel/plugin-transform-react-jsx": "^7.0.0",
+                "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+                "@babel/plugin-transform-spread": "^7.0.0",
+                "@babel/plugin-transform-template-literals": "^7.0.0",
+                "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/babel-preset-jest": {
             "version": "26.6.2",
             "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz",
             "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "babel-plugin-jest-hoist": "^26.6.2",
                 "babel-preset-current-node-syntax": "^1.0.0"
-            }
-        },
-        "babel-runtime": {
-            "version": "6.26.0",
-            "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-            "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-            "requires": {
-                "core-js": "^2.4.0",
-                "regenerator-runtime": "^0.11.0"
             },
-            "dependencies": {
-                "core-js": {
-                    "version": "2.6.12",
-                    "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
-                    "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
-                },
-                "regenerator-runtime": {
-                    "version": "0.11.1",
-                    "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-                    "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-                }
+            "engines": {
+                "node": ">= 10.14.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "babylon": {
-            "version": "6.18.0",
-            "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-            "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
-            "dev": true
-        },
-        "bach": {
+        "node_modules/bach": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
-            "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
+            "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "arr-filter": "^1.1.1",
                 "arr-flatten": "^1.0.1",
                 "arr-map": "^2.0.0",
@@ -5136,30 +5877,31 @@
                 "async-done": "^1.2.2",
                 "async-settle": "^1.0.0",
                 "now-and-later": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "backo2": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-            "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
-        },
-        "bail": {
+        "node_modules/bail": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
             "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
-            "dev": true
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
         },
-        "balanced-match": {
+        "node_modules/balanced-match": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
             "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
         },
-        "base": {
+        "node_modules/base": {
             "version": "0.11.2",
             "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
             "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "cache-base": "^1.0.1",
                 "class-utils": "^0.3.5",
                 "component-emitter": "^1.2.1",
@@ -5168,272 +5910,287 @@
                 "mixin-deep": "^1.2.0",
                 "pascalcase": "^0.1.1"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/define-property": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+            "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
             "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "dev": true,
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                }
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "base16": {
+        "node_modules/base/node_modules/is-accessor-descriptor": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz",
-            "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA="
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "base64-arraybuffer": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
-            "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
+        "node_modules/base/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "base64-js": {
+        "node_modules/base64-js": {
             "version": "1.5.1",
             "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-            "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+            "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
         },
-        "base64id": {
+        "node_modules/base64id": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
             "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": "^4.5.0 || >= 5.9"
+            }
         },
-        "basic-auth": {
+        "node_modules/basic-auth": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
             "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
-            "requires": {
+            "dependencies": {
                 "safe-buffer": "5.1.2"
+            },
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "batch": {
+        "node_modules/basic-auth/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+        },
+        "node_modules/batch": {
             "version": "0.6.1",
             "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-            "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+            "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
             "dev": true
         },
-        "bcrypt-pbkdf": {
+        "node_modules/bcrypt-pbkdf": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-            "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+            "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "tweetnacl": "^0.14.3"
             }
         },
-        "bcryptjs": {
+        "node_modules/bcryptjs": {
             "version": "2.4.3",
             "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-            "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
-        },
-        "beeper": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
-            "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
-            "dev": true
+            "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
         },
-        "big.js": {
-            "version": "5.2.2",
-            "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-            "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-            "dev": true
-        },
-        "binary-extensions": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+        "node_modules/binary-extensions": {
+            "version": "1.13.1",
+            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+            "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "bindings": {
+        "node_modules/bindings": {
             "version": "1.5.0",
             "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
             "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
             "dev": true,
             "optional": true,
-            "requires": {
-                "file-uri-to-path": "1.0.0"
-            },
             "dependencies": {
-                "file-uri-to-path": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-                    "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-                    "dev": true,
-                    "optional": true
-                }
+                "file-uri-to-path": "1.0.0"
             }
         },
-        "bl": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
-            "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
-            "dev": true,
-            "requires": {
-                "readable-stream": "^2.3.5",
-                "safe-buffer": "^5.1.1"
+        "node_modules/bl": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+            "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+            "dependencies": {
+                "buffer": "^5.5.0",
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.4.0"
             }
         },
-        "blessed": {
-            "version": "0.1.81",
-            "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz",
-            "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=",
-            "dev": true
-        },
-        "blob": {
-            "version": "0.0.5",
-            "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
-            "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
-            "dev": true
-        },
-        "bluebird": {
-            "version": "3.7.2",
-            "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-            "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-            "dev": true
-        },
-        "bn.js": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
-            "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
-            "dev": true
+        "node_modules/bl/node_modules/buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
         },
-        "bodec": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz",
-            "integrity": "sha1-vIUVVUMPI8n3ZQp172TGqUw0GMw=",
+        "node_modules/bn.js": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+            "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
             "dev": true
         },
-        "body-parser": {
-            "version": "1.19.2",
-            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
-            "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
-            "requires": {
+        "node_modules/body-parser": {
+            "version": "1.20.2",
+            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+            "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+            "dependencies": {
                 "bytes": "3.1.2",
-                "content-type": "~1.0.4",
+                "content-type": "~1.0.5",
                 "debug": "2.6.9",
-                "depd": "~1.1.2",
-                "http-errors": "1.8.1",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "http-errors": "2.0.0",
                 "iconv-lite": "0.4.24",
-                "on-finished": "~2.3.0",
-                "qs": "6.9.7",
-                "raw-body": "2.4.3",
-                "type-is": "~1.6.18"
+                "on-finished": "2.4.1",
+                "qs": "6.11.0",
+                "raw-body": "2.5.2",
+                "type-is": "~1.6.18",
+                "unpipe": "1.0.0"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
             }
         },
-        "boolbase": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-            "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+        "node_modules/body-parser/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
         },
-        "boxen": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
-            "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
-            "dev": true,
-            "requires": {
-                "ansi-align": "^3.0.0",
-                "camelcase": "^6.2.0",
-                "chalk": "^4.1.0",
-                "cli-boxes": "^2.2.1",
-                "string-width": "^4.2.2",
-                "type-fest": "^0.20.2",
-                "widest-line": "^3.1.0",
-                "wrap-ansi": "^7.0.0"
-            },
+        "node_modules/body-parser/node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
             "dependencies": {
-                "type-fest": {
-                    "version": "0.20.2",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-                    "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-                    "dev": true
-                }
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "brace-expansion": {
+        "node_modules/body-parser/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/boolbase": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+            "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+        },
+        "node_modules/brace-expansion": {
             "version": "1.1.11",
             "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
             "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-            "requires": {
+            "dependencies": {
                 "balanced-match": "^1.0.0",
                 "concat-map": "0.0.1"
             }
         },
-        "braces": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-            "requires": {
-                "fill-range": "^7.0.1"
+        "node_modules/braces": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+            "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+            "dependencies": {
+                "arr-flatten": "^1.1.0",
+                "array-unique": "^0.3.2",
+                "extend-shallow": "^2.0.1",
+                "fill-range": "^4.0.0",
+                "isobject": "^3.0.1",
+                "repeat-element": "^1.1.2",
+                "snapdragon": "^0.8.1",
+                "snapdragon-node": "^2.0.1",
+                "split-string": "^3.0.2",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "brorand": {
+        "node_modules/brorand": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-            "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+            "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
             "dev": true
         },
-        "browser-process-hrtime": {
+        "node_modules/browser-process-hrtime": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
             "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
         },
-        "browser-sync": {
-            "version": "2.27.7",
-            "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.7.tgz",
-            "integrity": "sha512-9ElnnA/u+s2Jd+IgY+2SImB+sAEIteHsMG0NR96m7Ph/wztpvJCUpyC2on1KqmG9iAp941j+5jfmd34tEguGbg==",
+        "node_modules/browser-sync": {
+            "version": "2.29.1",
+            "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.1.tgz",
+            "integrity": "sha512-WXy9HMJVQaNUTPjmai330E2fnDA6W84l/vBILGkYu9yHXIpWw1gJYjdQWDfEhLFljYUHNTN9jM3GCej2T55m+g==",
             "dev": true,
-            "requires": {
-                "browser-sync-client": "^2.27.7",
-                "browser-sync-ui": "^2.27.7",
+            "dependencies": {
+                "browser-sync-client": "^2.29.1",
+                "browser-sync-ui": "^2.29.1",
                 "bs-recipes": "1.3.4",
                 "bs-snippet-injector": "^2.0.1",
+                "chalk": "4.1.2",
                 "chokidar": "^3.5.1",
                 "connect": "3.6.6",
                 "connect-history-api-fallback": "^1",
                 "dev-ip": "^1.0.1",
                 "easy-extender": "^2.3.4",
-                "eazy-logger": "3.1.0",
+                "eazy-logger": "^4.0.1",
                 "etag": "^1.8.1",
                 "fresh": "^0.5.2",
                 "fs-extra": "3.0.1",
@@ -5442,8 +6199,8 @@
                 "localtunnel": "^2.0.1",
                 "micromatch": "^4.0.2",
                 "opn": "5.3.0",
-                "portscanner": "2.1.1",
-                "qs": "6.2.3",
+                "portscanner": "2.2.0",
+                "qs": "^6.11.0",
                 "raw-body": "^2.3.2",
                 "resp-modifier": "6.0.2",
                 "rx": "4.1.0",
@@ -5451,385 +6208,200 @@
                 "serve-index": "1.9.1",
                 "serve-static": "1.13.2",
                 "server-destroy": "1.0.1",
-                "socket.io": "2.4.0",
-                "ua-parser-js": "1.0.2",
-                "yargs": "^15.4.1"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "async": {
-                    "version": "1.5.2",
-                    "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-                    "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
-                    "dev": true
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "6.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-                    "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^4.2.0",
-                        "strip-ansi": "^6.0.0",
-                        "wrap-ansi": "^6.2.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "fs-extra": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
-                    "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "jsonfile": "^3.0.0",
-                        "universalify": "^0.1.0"
-                    }
-                },
-                "http-errors": {
-                    "version": "1.6.3",
-                    "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-                    "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-                    "dev": true,
-                    "requires": {
-                        "depd": "~1.1.2",
-                        "inherits": "2.0.3",
-                        "setprototypeof": "1.1.0",
-                        "statuses": ">= 1.4.0 < 2"
-                    }
-                },
-                "inherits": {
-                    "version": "2.0.3",
-                    "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-                    "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-                    "dev": true
-                },
-                "jsonfile": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
-                    "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.6"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "mime": {
-                    "version": "1.4.1",
-                    "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-                    "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
-                    "dev": true
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "portscanner": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz",
-                    "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=",
-                    "dev": true,
-                    "requires": {
-                        "async": "1.5.2",
-                        "is-number-like": "^1.0.3"
-                    }
-                },
-                "qs": {
-                    "version": "6.2.3",
-                    "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz",
-                    "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=",
-                    "dev": true
-                },
-                "send": {
-                    "version": "0.16.2",
-                    "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-                    "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
-                    "dev": true,
-                    "requires": {
-                        "debug": "2.6.9",
-                        "depd": "~1.1.2",
-                        "destroy": "~1.0.4",
-                        "encodeurl": "~1.0.2",
-                        "escape-html": "~1.0.3",
-                        "etag": "~1.8.1",
-                        "fresh": "0.5.2",
-                        "http-errors": "~1.6.2",
-                        "mime": "1.4.1",
-                        "ms": "2.0.0",
-                        "on-finished": "~2.3.0",
-                        "range-parser": "~1.2.0",
-                        "statuses": "~1.4.0"
-                    }
-                },
-                "serve-static": {
-                    "version": "1.13.2",
-                    "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-                    "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
-                    "dev": true,
-                    "requires": {
-                        "encodeurl": "~1.0.2",
-                        "escape-html": "~1.0.3",
-                        "parseurl": "~1.3.2",
-                        "send": "0.16.2"
-                    }
-                },
-                "setprototypeof": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-                    "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-                    "dev": true
-                },
-                "statuses": {
-                    "version": "1.4.0",
-                    "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-                    "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
-                    "dev": true
-                },
-                "wrap-ansi": {
-                    "version": "6.2.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-                    "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.0.0",
-                        "string-width": "^4.1.0",
-                        "strip-ansi": "^6.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-                    "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "15.4.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-                    "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-                    "dev": true,
-                    "requires": {
-                        "cliui": "^6.0.0",
-                        "decamelize": "^1.2.0",
-                        "find-up": "^4.1.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^4.2.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^18.1.2"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "18.1.3",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-                    "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
+                "socket.io": "^4.4.1",
+                "ua-parser-js": "^1.0.33",
+                "yargs": "^17.3.1"
+            },
+            "bin": {
+                "browser-sync": "dist/bin.js"
+            },
+            "engines": {
+                "node": ">= 8.0.0"
             }
         },
-        "browser-sync-client": {
-            "version": "2.27.7",
-            "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.7.tgz",
-            "integrity": "sha512-wKg9UP9a4sCIkBBAXUdbkdWFJzfSAQizGh+nC19W9y9zOo9s5jqeYRFUUbs7x5WKhjtspT+xetVp9AtBJ6BmWg==",
+        "node_modules/browser-sync-client": {
+            "version": "2.29.1",
+            "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.1.tgz",
+            "integrity": "sha512-aESnjt3rU7CZpzjyqzhIC2UJ3MVhzRis7cPKkGbyYWDf/wnbxyRa3fFenF3Qx9061/guY3HHhD67uiTVV26DVg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "etag": "1.8.1",
                 "fresh": "0.5.2",
-                "mitt": "^1.1.3",
-                "rxjs": "^5.5.6"
+                "mitt": "^1.1.3"
             },
-            "dependencies": {
-                "rxjs": {
-                    "version": "5.5.12",
-                    "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
-                    "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
-                    "dev": true,
-                    "requires": {
-                        "symbol-observable": "1.0.1"
-                    }
-                },
-                "symbol-observable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
-                    "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=8.0.0"
             }
         },
-        "browser-sync-ui": {
-            "version": "2.27.7",
-            "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.7.tgz",
-            "integrity": "sha512-Bt4OQpx9p18OIzk0KKyu7jqlvmjacasUlk8ARY3uuIyiFWSBiRgr2i6XY8dEMF14DtbooaEBOpHEu9VCYvMcCw==",
+        "node_modules/browser-sync-ui": {
+            "version": "2.29.1",
+            "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.1.tgz",
+            "integrity": "sha512-MB7SAiUgVUrhipO2xyO1sheC9H0+LKXPQ3L1tQWcZ3AgizBnUNKAqDZPSwe4grNSa8o8ImSAwJp7lMS6XYy1Dw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "async-each-series": "0.1.1",
+                "chalk": "4.1.2",
                 "connect-history-api-fallback": "^1",
                 "immutable": "^3",
                 "server-destroy": "1.0.1",
-                "socket.io-client": "^2.4.0",
+                "socket.io-client": "^4.4.1",
                 "stream-throttle": "^0.1.3"
-            },
+            }
+        },
+        "node_modules/browser-sync/node_modules/binary-extensions": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/browser-sync/node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "dev": true,
             "dependencies": {
-                "engine.io-client": {
-                    "version": "3.5.2",
-                    "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
-                    "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
-                    "dev": true,
-                    "requires": {
-                        "component-emitter": "~1.3.0",
-                        "component-inherit": "0.0.3",
-                        "debug": "~3.1.0",
-                        "engine.io-parser": "~2.2.0",
-                        "has-cors": "1.1.0",
-                        "indexof": "0.0.1",
-                        "parseqs": "0.0.6",
-                        "parseuri": "0.0.6",
-                        "ws": "~7.4.2",
-                        "xmlhttprequest-ssl": "~1.6.2",
-                        "yeast": "0.1.2"
-                    }
-                },
-                "engine.io-parser": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
-                    "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
-                    "dev": true,
-                    "requires": {
-                        "after": "0.8.2",
-                        "arraybuffer.slice": "~0.0.7",
-                        "base64-arraybuffer": "0.1.4",
-                        "blob": "0.0.5",
-                        "has-binary2": "~1.0.2"
-                    }
-                },
-                "isarray": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-                    "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-                    "dev": true
-                },
-                "socket.io-client": {
-                    "version": "2.4.0",
-                    "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz",
-                    "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==",
-                    "dev": true,
-                    "requires": {
-                        "backo2": "1.0.2",
-                        "component-bind": "1.0.0",
-                        "component-emitter": "~1.3.0",
-                        "debug": "~3.1.0",
-                        "engine.io-client": "~3.5.0",
-                        "has-binary2": "~1.0.2",
-                        "indexof": "0.0.1",
-                        "parseqs": "0.0.6",
-                        "parseuri": "0.0.6",
-                        "socket.io-parser": "~3.3.0",
-                        "to-array": "0.1.4"
-                    }
-                },
-                "socket.io-parser": {
-                    "version": "3.3.2",
-                    "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
-                    "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
-                    "dev": true,
-                    "requires": {
-                        "component-emitter": "~1.3.0",
-                        "debug": "~3.1.0",
-                        "isarray": "2.0.1"
-                    }
-                },
-                "ws": {
-                    "version": "7.4.6",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-                    "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
-                    "dev": true
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/browser-sync/node_modules/chokidar": {
+            "version": "3.5.3",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+            "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://paulmillr.com/funding/"
                 }
+            ],
+            "dependencies": {
+                "anymatch": "~3.1.2",
+                "braces": "~3.0.2",
+                "glob-parent": "~5.1.2",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.6.0"
+            },
+            "engines": {
+                "node": ">= 8.10.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.2"
+            }
+        },
+        "node_modules/browser-sync/node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "dev": true,
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/browser-sync/node_modules/fs-extra": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
+            "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==",
+            "dev": true,
+            "dependencies": {
+                "graceful-fs": "^4.1.2",
+                "jsonfile": "^3.0.0",
+                "universalify": "^0.1.0"
+            }
+        },
+        "node_modules/browser-sync/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+            "dev": true,
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+            }
+        },
+        "node_modules/browser-sync/node_modules/is-binary-path": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+            "dev": true,
+            "dependencies": {
+                "binary-extensions": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/browser-sync/node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/browser-sync/node_modules/jsonfile": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
+            "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==",
+            "dev": true,
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
+            }
+        },
+        "node_modules/browser-sync/node_modules/readdirp": {
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+            "dev": true,
+            "dependencies": {
+                "picomatch": "^2.2.1"
+            },
+            "engines": {
+                "node": ">=8.10.0"
+            }
+        },
+        "node_modules/browser-sync/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+            "dev": true,
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
+            }
+        },
+        "node_modules/browser-sync/node_modules/universalify": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4.0.0"
             }
         },
-        "browserify-aes": {
+        "node_modules/browserify-aes": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
             "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "buffer-xor": "^1.0.3",
                 "cipher-base": "^1.0.0",
                 "create-hash": "^1.1.0",
@@ -5838,45 +6410,45 @@
                 "safe-buffer": "^5.0.1"
             }
         },
-        "browserify-cipher": {
+        "node_modules/browserify-cipher": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
             "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "browserify-aes": "^1.0.4",
                 "browserify-des": "^1.0.0",
                 "evp_bytestokey": "^1.0.0"
             }
         },
-        "browserify-des": {
+        "node_modules/browserify-des": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
             "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "cipher-base": "^1.0.1",
                 "des.js": "^1.0.0",
                 "inherits": "^2.0.1",
                 "safe-buffer": "^5.1.2"
             }
         },
-        "browserify-rsa": {
+        "node_modules/browserify-rsa": {
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
             "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^5.0.0",
                 "randombytes": "^2.0.1"
             }
         },
-        "browserify-sign": {
+        "node_modules/browserify-sign": {
             "version": "4.2.1",
             "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
             "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^5.1.1",
                 "browserify-rsa": "^4.0.1",
                 "create-hash": "^1.2.0",
@@ -5886,82 +6458,69 @@
                 "parse-asn1": "^5.1.5",
                 "readable-stream": "^3.6.0",
                 "safe-buffer": "^5.2.0"
-            },
-            "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-                    "dev": true
-                }
             }
         },
-        "browserify-zlib": {
+        "node_modules/browserify-zlib": {
             "version": "0.2.0",
             "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
             "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
             "dev": true,
-            "requires": {
-                "pako": "~1.0.5"
-            },
             "dependencies": {
-                "pako": {
-                    "version": "1.0.11",
-                    "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-                    "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-                    "dev": true
-                }
+                "pako": "~1.0.5"
             }
         },
-        "browserslist": {
-            "version": "4.19.3",
-            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz",
-            "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==",
-            "requires": {
-                "caniuse-lite": "^1.0.30001312",
-                "electron-to-chromium": "^1.4.71",
-                "escalade": "^3.1.1",
-                "node-releases": "^2.0.2",
-                "picocolors": "^1.0.0"
+        "node_modules/browserslist": {
+            "version": "4.21.5",
+            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+            "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/browserslist"
+                }
+            ],
+            "dependencies": {
+                "caniuse-lite": "^1.0.30001449",
+                "electron-to-chromium": "^1.4.284",
+                "node-releases": "^2.0.8",
+                "update-browserslist-db": "^1.0.10"
+            },
+            "bin": {
+                "browserslist": "cli.js"
+            },
+            "engines": {
+                "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
             }
         },
-        "bs-recipes": {
+        "node_modules/bs-recipes": {
             "version": "1.3.4",
             "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz",
-            "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=",
+            "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==",
             "dev": true
         },
-        "bs-snippet-injector": {
+        "node_modules/bs-snippet-injector": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz",
-            "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=",
+            "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==",
             "dev": true
         },
-        "bser": {
+        "node_modules/bser": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
             "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "node-int64": "^0.4.0"
             }
         },
-        "buble": {
+        "node_modules/buble": {
             "version": "0.19.6",
             "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.6.tgz",
             "integrity": "sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg==",
-            "requires": {
+            "dependencies": {
                 "chalk": "^2.4.1",
                 "magic-string": "^0.25.1",
                 "minimist": "^1.2.0",
@@ -5969,140 +6528,224 @@
                 "regexpu-core": "^4.2.0",
                 "vlq": "^1.0.0"
             },
+            "bin": {
+                "buble": "bin/buble"
+            }
+        },
+        "node_modules/buble/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                }
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "buffer": {
-            "version": "5.7.1",
-            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+        "node_modules/buble/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/buble/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/buble/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+        },
+        "node_modules/buble/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/buble/node_modules/jsesc": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+            "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+            "bin": {
+                "jsesc": "bin/jsesc"
+            }
+        },
+        "node_modules/buble/node_modules/regenerate-unicode-properties": {
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
+            "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+            "dependencies": {
+                "regenerate": "^1.4.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/buble/node_modules/regexpu-core": {
+            "version": "4.8.0",
+            "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
+            "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+            "dependencies": {
+                "regenerate": "^1.4.2",
+                "regenerate-unicode-properties": "^9.0.0",
+                "regjsgen": "^0.5.2",
+                "regjsparser": "^0.7.0",
+                "unicode-match-property-ecmascript": "^2.0.0",
+                "unicode-match-property-value-ecmascript": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/buble/node_modules/regjsparser": {
+            "version": "0.7.0",
+            "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
+            "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+            "dependencies": {
+                "jsesc": "~0.5.0"
+            },
+            "bin": {
+                "regjsparser": "bin/parser"
+            }
+        },
+        "node_modules/buble/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/buffer": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+            "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
             "dev": true,
-            "requires": {
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
                 "base64-js": "^1.3.1",
-                "ieee754": "^1.1.13"
+                "ieee754": "^1.2.1"
             }
         },
-        "buffer-alloc": {
+        "node_modules/buffer-alloc": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
             "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "buffer-alloc-unsafe": "^1.1.0",
                 "buffer-fill": "^1.0.0"
             }
         },
-        "buffer-alloc-unsafe": {
+        "node_modules/buffer-alloc-unsafe": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
             "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
             "dev": true
         },
-        "buffer-crc32": {
+        "node_modules/buffer-builder": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz",
+            "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==",
+            "dev": true
+        },
+        "node_modules/buffer-crc32": {
             "version": "0.2.13",
             "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-            "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
-            "dev": true
+            "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
         },
-        "buffer-equal": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
-            "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
-            "dev": true
+        "node_modules/buffer-equal": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz",
+            "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "buffer-fill": {
+        "node_modules/buffer-fill": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-            "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+            "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
             "dev": true
         },
-        "buffer-from": {
+        "node_modules/buffer-from": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
             "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
         },
-        "buffer-xor": {
+        "node_modules/buffer-xor": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-            "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+            "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
             "dev": true
         },
-        "bufferjs": {
+        "node_modules/bufferjs": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-3.0.1.tgz",
-            "integrity": "sha1-BpLoKcsQoQVQ5kc5CwNesGw46O8=",
-            "dev": true
-        },
-        "builtin-modules": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
-            "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
-            "dev": true
+            "integrity": "sha512-qrCIGPcd9ODawCNyqR2o55zgaC/r7XHZ7oUh2s99uk+NVBS3SjIHigxS1S2KXpt8wsoQxAN55iPi8GIH8TGMRg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.2.0"
+            }
         },
-        "builtin-status-codes": {
+        "node_modules/builtin-status-codes": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-            "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+            "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
             "dev": true
         },
-        "bytes": {
+        "node_modules/bytes": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-            "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
-        },
-        "cacache": {
-            "version": "15.3.0",
-            "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
-            "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
-            "dev": true,
-            "requires": {
-                "@npmcli/fs": "^1.0.0",
-                "@npmcli/move-file": "^1.0.1",
-                "chownr": "^2.0.0",
-                "fs-minipass": "^2.0.0",
-                "glob": "^7.1.4",
-                "infer-owner": "^1.0.4",
-                "lru-cache": "^6.0.0",
-                "minipass": "^3.1.1",
-                "minipass-collect": "^1.0.2",
-                "minipass-flush": "^1.0.5",
-                "minipass-pipeline": "^1.2.2",
-                "mkdirp": "^1.0.3",
-                "p-map": "^4.0.0",
-                "promise-inflight": "^1.0.1",
-                "rimraf": "^3.0.2",
-                "ssri": "^8.0.1",
-                "tar": "^6.0.2",
-                "unique-filename": "^1.1.1"
-            },
-            "dependencies": {
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
+            "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "cache-base": {
+        "node_modules/cache-base": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
             "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "collection-visit": "^1.0.0",
                 "component-emitter": "^1.2.1",
                 "get-value": "^2.0.6",
@@ -6112,1293 +6755,1376 @@
                 "to-object-path": "^0.3.0",
                 "union-value": "^1.0.0",
                 "unset-value": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "cacheable-request": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-            "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-            "dev": true,
-            "requires": {
-                "clone-response": "^1.0.2",
-                "get-stream": "^5.1.0",
-                "http-cache-semantics": "^4.0.0",
-                "keyv": "^3.0.0",
-                "lowercase-keys": "^2.0.0",
-                "normalize-url": "^4.1.0",
-                "responselike": "^1.0.2"
-            },
-            "dependencies": {
-                "get-stream": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-                    "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-                    "dev": true,
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "lowercase-keys": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-                    "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-                    "dev": true
-                }
-            }
-        },
-        "call-bind": {
+        "node_modules/call-bind": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
             "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-            "requires": {
+            "dependencies": {
                 "function-bind": "^1.1.1",
                 "get-intrinsic": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "caller-callsite": {
+        "node_modules/caller-callsite": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-            "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
-            "dev": true,
-            "requires": {
+            "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+            "dependencies": {
                 "callsites": "^2.0.0"
             },
-            "dependencies": {
-                "callsites": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-                    "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/caller-callsite/node_modules/callsites": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+            "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "caller-path": {
+        "node_modules/caller-path": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-            "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
-            "dev": true,
-            "requires": {
+            "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+            "dependencies": {
                 "caller-callsite": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "callsites": {
+        "node_modules/callsites": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
             "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-            "dev": true
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "camelcase": {
-            "version": "6.3.0",
-            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
+        "node_modules/camelcase": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+            "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+            "engines": {
+                "node": ">=14.16"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "camelcase-keys": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-            "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+        "node_modules/camelcase-keys": {
+            "version": "6.2.2",
+            "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+            "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
             "dev": true,
-            "requires": {
-                "camelcase": "^2.0.0",
-                "map-obj": "^1.0.0"
-            },
             "dependencies": {
-                "camelcase": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-                    "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-                    "dev": true
-                }
+                "camelcase": "^5.3.1",
+                "map-obj": "^4.0.0",
+                "quick-lru": "^4.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/camelcase-keys/node_modules/camelcase": {
+            "version": "5.3.1",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "caniuse-lite": {
-            "version": "1.0.30001312",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz",
-            "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ=="
+        "node_modules/caniuse-lite": {
+            "version": "1.0.30001481",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz",
+            "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==",
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ]
         },
-        "capture-exit": {
+        "node_modules/capture-exit": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
             "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "rsvp": "^4.8.4"
+            },
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
             }
         },
-        "caseless": {
+        "node_modules/caseless": {
             "version": "0.12.0",
             "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-            "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+            "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
             "dev": true
         },
-        "center-align": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
-            "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
-            "dev": true,
-            "requires": {
-                "align-text": "^0.1.3",
-                "lazy-cache": "^1.0.3"
-            }
-        },
-        "chalk": {
+        "node_modules/chalk": {
             "version": "4.1.2",
             "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
             "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-            "requires": {
+            "dependencies": {
                 "ansi-styles": "^4.1.0",
                 "supports-color": "^7.1.0"
             },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-                },
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/chalk?sponsor=1"
             }
         },
-        "char-regex": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
-            "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
-            "dev": true
-        },
-        "character-entities": {
+        "node_modules/character-entities": {
             "version": "1.2.4",
             "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
-            "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
+            "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
         },
-        "character-entities-legacy": {
+        "node_modules/character-entities-legacy": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
-            "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
+            "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
         },
-        "character-reference-invalid": {
+        "node_modules/character-reference-invalid": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
-            "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
+            "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
         },
-        "chardet": {
+        "node_modules/chardet": {
             "version": "0.7.0",
             "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
             "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
             "dev": true
         },
-        "charm": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz",
-            "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=",
-            "dev": true
+        "node_modules/chokidar": {
+            "version": "2.1.8",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+            "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+            "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+            "dev": true,
+            "dependencies": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+            },
+            "optionalDependencies": {
+                "fsevents": "^1.2.7"
+            }
         },
-        "cheerio": {
-            "version": "1.0.0-rc.10",
-            "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
-            "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
-            "requires": {
-                "cheerio-select": "^1.5.0",
-                "dom-serializer": "^1.3.2",
-                "domhandler": "^4.2.0",
-                "htmlparser2": "^6.1.0",
-                "parse5": "^6.0.1",
-                "parse5-htmlparser2-tree-adapter": "^6.0.1",
-                "tslib": "^2.2.0"
+        "node_modules/chokidar/node_modules/anymatch": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+            "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+            "dev": true,
+            "dependencies": {
+                "micromatch": "^3.1.4",
+                "normalize-path": "^2.1.1"
             }
         },
-        "cheerio-select": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
-            "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
-            "requires": {
-                "css-select": "^4.1.3",
-                "css-what": "^5.0.1",
-                "domelementtype": "^2.2.0",
-                "domhandler": "^4.2.0",
-                "domutils": "^2.7.0"
+        "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+            "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+            "dev": true,
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "chokidar": {
-            "version": "3.5.3",
-            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-            "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-            "requires": {
-                "anymatch": "~3.1.2",
-                "braces": "~3.0.2",
-                "fsevents": "~2.3.2",
-                "glob-parent": "~5.1.2",
-                "is-binary-path": "~2.1.0",
-                "is-glob": "~4.0.1",
-                "normalize-path": "~3.0.0",
-                "readdirp": "~3.6.0"
+        "node_modules/chokidar/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dev": true,
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/glob-parent": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+            "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+            "dev": true,
+            "dependencies": {
+                "is-glob": "^3.1.0",
+                "path-dirname": "^1.0.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+            "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+            "dev": true,
+            "dependencies": {
+                "is-extglob": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dev": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/path-is-absolute": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+            "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "chownr": {
+        "node_modules/chownr": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
             "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "chrome-trace-event": {
+        "node_modules/chrome-trace-event": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
             "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=6.0"
+            }
         },
-        "ci-info": {
+        "node_modules/ci-info": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-            "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
-            "dev": true
+            "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
         },
-        "cipher-base": {
+        "node_modules/cipher-base": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
             "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "inherits": "^2.0.1",
                 "safe-buffer": "^5.0.1"
             }
         },
-        "cjs-module-lexer": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz",
-            "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
-            "dev": true
-        },
-        "class-utils": {
+        "node_modules/class-utils": {
             "version": "0.3.6",
             "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
             "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "arr-union": "^3.1.0",
                 "define-property": "^0.2.5",
                 "isobject": "^3.0.0",
                 "static-extend": "^0.1.1"
             },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "classnames": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
-            "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
+        "node_modules/classnames": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+            "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
         },
-        "clean-css": {
+        "node_modules/clean-css": {
             "version": "4.2.3",
             "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
             "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "source-map": "~0.6.0"
             },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 4.0"
             }
         },
-        "clean-stack": {
+        "node_modules/clean-stack": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
             "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-            "dev": true
-        },
-        "cli-boxes": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-            "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
-            "dev": true
-        },
-        "cli-cursor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
-            "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
             "dev": true,
-            "requires": {
-                "restore-cursor": "^3.1.0"
+            "engines": {
+                "node": ">=6"
             }
         },
-        "cli-spinners": {
-            "version": "2.6.1",
-            "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
-            "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
-            "dev": true
-        },
-        "cli-tableau": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz",
-            "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==",
+        "node_modules/cli-cursor": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+            "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
             "dev": true,
-            "requires": {
-                "chalk": "3.0.0"
-            },
             "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "chalk": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-                    "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.1.0",
-                        "supports-color": "^7.1.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+                "restore-cursor": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/cli-spinners": {
+            "version": "2.8.0",
+            "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz",
+            "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==",
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "cli-truncate": {
+        "node_modules/cli-truncate": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
-            "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+            "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "slice-ansi": "0.0.4",
                 "string-width": "^1.0.1"
             },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-                    "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-                    "dev": true,
-                    "requires": {
-                        "number-is-nan": "^1.0.0"
-                    }
-                },
-                "slice-ansi": {
-                    "version": "0.0.4",
-                    "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
-                    "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "dev": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "cli-width": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
-            "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
-            "dev": true
-        },
-        "clipboard": {
-            "version": "2.0.10",
-            "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz",
-            "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==",
-            "optional": true,
-            "requires": {
-                "good-listener": "^1.2.2",
-                "select": "^1.1.2",
-                "tiny-emitter": "^2.0.0"
+        "node_modules/cli-truncate/node_modules/ansi-regex": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+            "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "clipboardy": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
-            "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+        "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+            "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
             "dev": true,
-            "requires": {
-                "arch": "^2.1.1",
-                "execa": "^1.0.0",
-                "is-wsl": "^2.1.1"
-            },
             "dependencies": {
-                "is-wsl": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-                    "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-                    "dev": true,
-                    "requires": {
-                        "is-docker": "^2.0.0"
-                    }
-                }
+                "number-is-nan": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "cliui": {
-            "version": "7.0.4",
-            "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
-            "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+        "node_modules/cli-truncate/node_modules/string-width": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+            "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
             "dev": true,
-            "requires": {
-                "string-width": "^4.2.0",
-                "strip-ansi": "^6.0.0",
-                "wrap-ansi": "^7.0.0"
+            "dependencies": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "clone": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-            "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
-            "dev": true
+        "node_modules/cli-truncate/node_modules/strip-ansi": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+            "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+            "dev": true,
+            "dependencies": {
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "clone-buffer": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
-            "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+        "node_modules/cli-width": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+            "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
             "dev": true
         },
-        "clone-deep": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-            "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-            "requires": {
-                "is-plain-object": "^2.0.4",
-                "kind-of": "^6.0.2",
-                "shallow-clone": "^3.0.0"
-            }
-        },
-        "clone-regexp": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
-            "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
-            "dev": true,
-            "requires": {
-                "is-regexp": "^2.0.0"
-            },
+        "node_modules/cliui": {
+            "version": "8.0.1",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+            "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
             "dependencies": {
-                "is-regexp": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz",
-                    "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
-                    "dev": true
-                }
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.1",
+                "wrap-ansi": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=12"
             }
         },
-        "clone-response": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
-            "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
-            "dev": true,
-            "requires": {
-                "mimic-response": "^1.0.0"
+        "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "engines": {
+                "node": ">=8"
             }
         },
-        "clone-stats": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
-            "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+        "node_modules/cliui/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/cliui/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/cliui/node_modules/wrap-ansi": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+            "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "dependencies": {
+                "ansi-styles": "^4.0.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+            }
+        },
+        "node_modules/clone": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+            "integrity": "sha512-g62n3Kb9cszeZvmvBUqP/dsEJD/+80pDA8u8KqHnAPrVnQ2Je9rVV6opxkhuWCd1kCn2gOibzDKxCtBvD3q5kA==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/clone-buffer": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+            "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/clone-deep": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+            "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4",
+                "kind-of": "^6.0.2",
+                "shallow-clone": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/clone-regexp": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
+            "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
+            "dev": true,
+            "dependencies": {
+                "is-regexp": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/clone-regexp/node_modules/is-regexp": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz",
+            "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/clone-stats": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+            "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==",
             "dev": true
         },
-        "cloneable-readable": {
+        "node_modules/cloneable-readable": {
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
             "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "inherits": "^2.0.1",
                 "process-nextick-args": "^2.0.0",
                 "readable-stream": "^2.3.5"
             }
         },
-        "clsx": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
-            "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
+        "node_modules/cloneable-readable/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
         },
-        "co": {
-            "version": "4.6.0",
-            "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-            "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+        "node_modules/cloneable-readable/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/cloneable-readable/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "code-point-at": {
+        "node_modules/cloneable-readable/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/clsx": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
+            "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/code-point-at": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-            "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-            "dev": true
-        },
-        "collect-v8-coverage": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
-            "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
-            "dev": true
+            "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "collection-map": {
+        "node_modules/collection-map": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
-            "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
+            "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "arr-map": "^2.0.2",
                 "for-own": "^1.0.0",
                 "make-iterator": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "collection-visit": {
+        "node_modules/collection-visit": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-            "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-            "dev": true,
-            "requires": {
+            "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+            "dependencies": {
                 "map-visit": "^1.0.0",
                 "object-visit": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "color": {
+        "node_modules/color": {
             "version": "3.2.1",
             "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
             "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
-            "requires": {
+            "dev": true,
+            "dependencies": {
                 "color-convert": "^1.9.3",
                 "color-string": "^1.6.0"
             }
         },
-        "color-convert": {
-            "version": "1.9.3",
-            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-            "requires": {
-                "color-name": "1.1.3"
+        "node_modules/color-convert": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+            "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+            "dependencies": {
+                "color-name": "~1.1.4"
+            },
+            "engines": {
+                "node": ">=7.0.0"
             }
         },
-        "color-name": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-            "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+        "node_modules/color-name": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
-        "color-string": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz",
-            "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==",
-            "requires": {
+        "node_modules/color-string": {
+            "version": "1.9.1",
+            "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+            "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+            "dev": true,
+            "dependencies": {
                 "color-name": "^1.0.0",
                 "simple-swizzle": "^0.2.2"
             }
         },
-        "color-support": {
+        "node_modules/color-support": {
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
             "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+            "dev": true,
+            "bin": {
+                "color-support": "bin.js"
+            }
+        },
+        "node_modules/color/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/color/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
             "dev": true
         },
-        "colors": {
+        "node_modules/colorette": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+            "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+            "peer": true
+        },
+        "node_modules/colors": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
-            "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
-            "dev": true
+            "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.1.90"
+            }
         },
-        "colorspace": {
+        "node_modules/colorspace": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
             "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "color": "^3.1.3",
                 "text-hex": "1.0.x"
             }
         },
-        "combined-stream": {
+        "node_modules/combined-stream": {
             "version": "1.0.8",
             "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
             "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-            "requires": {
+            "dependencies": {
                 "delayed-stream": "~1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "comma-separated-tokens": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
-            "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
+        "node_modules/command-exists": {
+            "version": "1.2.9",
+            "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+            "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+            "peer": true
         },
-        "commander": {
+        "node_modules/commander": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-            "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
-        },
-        "common-tags": {
-            "version": "1.8.2",
-            "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
-            "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
-            "dev": true
+            "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+            "engines": {
+                "node": ">= 6"
+            }
         },
-        "commondir": {
+        "node_modules/commondir": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-            "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-        },
-        "component-bind": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-            "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
-            "dev": true
+            "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
         },
-        "component-emitter": {
+        "node_modules/component-emitter": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
             "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
         },
-        "component-inherit": {
-            "version": "0.0.3",
-            "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-            "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
-            "dev": true
-        },
-        "component-props": {
+        "node_modules/component-props": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz",
-            "integrity": "sha1-+bffm5kntubZfJvScqqGdnDzSUQ="
+            "integrity": "sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q=="
         },
-        "component-xor": {
+        "node_modules/component-xor": {
             "version": "0.0.4",
             "resolved": "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz",
-            "integrity": "sha1-xV2DzMG5TNUImk6T+niRxyY+Wao="
+            "integrity": "sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA=="
         },
-        "compress-commons": {
+        "node_modules/compress-commons": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
             "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "buffer-crc32": "^0.2.13",
                 "crc32-stream": "^3.0.1",
                 "normalize-path": "^3.0.0",
                 "readable-stream": "^2.3.6"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "compression-webpack-plugin": {
-            "version": "6.1.1",
-            "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-6.1.1.tgz",
-            "integrity": "sha512-BEHft9M6lwOqVIQFMS/YJGmeCYXVOakC5KzQk05TFpMBlODByh1qNsZCWjUBxCQhUP9x0WfGidxTbGkjbWO/TQ==",
-            "dev": true,
-            "requires": {
-                "cacache": "^15.0.5",
-                "find-cache-dir": "^3.3.1",
-                "schema-utils": "^3.0.0",
-                "serialize-javascript": "^5.0.1",
-                "webpack-sources": "^1.4.3"
-            },
-            "dependencies": {
-                "find-cache-dir": {
-                    "version": "3.3.2",
-                    "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-                    "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-                    "dev": true,
-                    "requires": {
-                        "commondir": "^1.0.1",
-                        "make-dir": "^3.0.2",
-                        "pkg-dir": "^4.1.0"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "make-dir": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-                    "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-                    "dev": true,
-                    "requires": {
-                        "semver": "^6.0.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "pkg-dir": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-                    "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.0.0"
-                    }
-                },
-                "schema-utils": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-                    "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-                    "dev": true,
-                    "requires": {
-                        "@types/json-schema": "^7.0.8",
-                        "ajv": "^6.12.5",
-                        "ajv-keywords": "^3.5.2"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "serialize-javascript": {
-                    "version": "5.0.1",
-                    "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
-                    "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
-                    "dev": true,
-                    "requires": {
-                        "randombytes": "^2.1.0"
-                    }
-                }
+        "node_modules/compress-commons/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/compress-commons/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/compress-commons/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/compress-commons/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/compressible": {
+            "version": "2.0.18",
+            "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+            "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+            "peer": true,
+            "dependencies": {
+                "mime-db": ">= 1.43.0 < 2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/compression": {
+            "version": "1.7.4",
+            "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+            "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+            "peer": true,
+            "dependencies": {
+                "accepts": "~1.3.5",
+                "bytes": "3.0.0",
+                "compressible": "~2.0.16",
+                "debug": "2.6.9",
+                "on-headers": "~1.0.2",
+                "safe-buffer": "5.1.2",
+                "vary": "~1.1.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/compression-webpack-plugin": {
+            "version": "10.0.0",
+            "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz",
+            "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==",
+            "dev": true,
+            "dependencies": {
+                "schema-utils": "^4.0.0",
+                "serialize-javascript": "^6.0.0"
+            },
+            "engines": {
+                "node": ">= 14.15.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            },
+            "peerDependencies": {
+                "webpack": "^5.1.0"
+            }
+        },
+        "node_modules/compression/node_modules/bytes": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+            "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+            "peer": true,
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/compression/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "peer": true,
+            "dependencies": {
+                "ms": "2.0.0"
             }
         },
-        "compute-scroll-into-view": {
-            "version": "1.0.17",
-            "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
-            "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg=="
+        "node_modules/compression/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "peer": true
+        },
+        "node_modules/compression/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "peer": true
         },
-        "concat-map": {
+        "node_modules/concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+            "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
         },
-        "concat-stream": {
+        "node_modules/concat-stream": {
             "version": "1.6.2",
             "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
             "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
             "dev": true,
-            "requires": {
+            "engines": [
+                "node >= 0.8"
+            ],
+            "dependencies": {
                 "buffer-from": "^1.0.0",
                 "inherits": "^2.0.3",
                 "readable-stream": "^2.2.2",
                 "typedarray": "^0.0.6"
             }
         },
-        "concat-with-sourcemaps": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz",
-            "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==",
+        "node_modules/concat-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/concat-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
             "dev": true,
-            "requires": {
-                "source-map": "^0.6.1"
-            },
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "configstore": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-            "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+        "node_modules/concat-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/concat-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "dot-prop": "^5.2.0",
-                "graceful-fs": "^4.1.2",
-                "make-dir": "^3.0.0",
-                "unique-string": "^2.0.0",
-                "write-file-atomic": "^3.0.0",
-                "xdg-basedir": "^4.0.0"
-            },
-            "dependencies": {
-                "make-dir": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-                    "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-                    "dev": true,
-                    "requires": {
-                        "semver": "^6.0.0"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "connect": {
-            "version": "3.6.6",
-            "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
-            "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+        "node_modules/concat-with-sourcemaps": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz",
+            "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==",
             "dev": true,
-            "requires": {
-                "debug": "2.6.9",
+            "dependencies": {
+                "source-map": "^0.6.1"
+            }
+        },
+        "node_modules/connect": {
+            "version": "3.6.6",
+            "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+            "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==",
+            "dependencies": {
+                "debug": "2.6.9",
                 "finalhandler": "1.1.0",
                 "parseurl": "~1.3.2",
                 "utils-merge": "1.0.1"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "finalhandler": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
-                    "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
-                    "dev": true,
-                    "requires": {
-                        "debug": "2.6.9",
-                        "encodeurl": "~1.0.1",
-                        "escape-html": "~1.0.3",
-                        "on-finished": "~2.3.0",
-                        "parseurl": "~1.3.2",
-                        "statuses": "~1.3.1",
-                        "unpipe": "~1.0.0"
-                    }
-                },
-                "statuses": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-                    "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "connect-history-api-fallback": {
+        "node_modules/connect-history-api-fallback": {
             "version": "1.6.0",
             "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
             "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=0.8"
+            }
         },
-        "console-browserify": {
+        "node_modules/connect/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/connect/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/console-browserify": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
             "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
             "dev": true
         },
-        "console-control-strings": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-            "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-            "dev": true
-        },
-        "constants-browserify": {
+        "node_modules/constants-browserify": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-            "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+            "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
             "dev": true
         },
-        "content-disposition": {
+        "node_modules/content-disposition": {
             "version": "0.5.4",
             "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
             "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-            "requires": {
+            "dependencies": {
                 "safe-buffer": "5.2.1"
             },
-            "dependencies": {
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
-                }
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "content-type": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-            "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-        },
-        "continuation-local-storage": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
-            "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
-            "dev": true,
-            "requires": {
-                "async-listener": "^0.6.0",
-                "emitter-listener": "^1.1.1"
+        "node_modules/content-type": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+            "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "convert-source-map": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
-            "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
-            "requires": {
-                "safe-buffer": "~5.1.1"
-            }
+        "node_modules/convert-source-map": {
+            "version": "1.9.0",
+            "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+            "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
         },
-        "cookie": {
+        "node_modules/cookie": {
             "version": "0.4.1",
             "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
-            "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
+            "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+            "engines": {
+                "node": ">= 0.6"
+            }
         },
-        "cookie-parser": {
+        "node_modules/cookie-parser": {
             "version": "1.4.6",
             "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
             "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
-            "requires": {
+            "dependencies": {
                 "cookie": "0.4.1",
                 "cookie-signature": "1.0.6"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
             }
         },
-        "cookie-session": {
+        "node_modules/cookie-session": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0.tgz",
             "integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==",
-            "requires": {
+            "dependencies": {
                 "cookies": "0.8.0",
                 "debug": "3.2.7",
                 "on-headers": "~1.0.2",
                 "safe-buffer": "5.2.1"
             },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/cookie-session/node_modules/debug": {
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+            "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
             "dependencies": {
-                "debug": {
-                    "version": "3.2.7",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-                    "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-                },
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
-                }
+                "ms": "^2.1.1"
             }
         },
-        "cookie-signature": {
+        "node_modules/cookie-signature": {
             "version": "1.0.6",
             "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-            "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+            "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
         },
-        "cookies": {
+        "node_modules/cookies": {
             "version": "0.8.0",
             "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
             "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
-            "requires": {
+            "dependencies": {
                 "depd": "~2.0.0",
                 "keygrip": "~1.1.0"
             },
-            "dependencies": {
-                "depd": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-                    "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
-                }
-            }
-        },
-        "copy-anything": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
-            "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
-            "dev": true,
-            "requires": {
-                "is-what": "^3.14.1"
-            }
-        },
-        "copy-concurrently": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-            "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-            "dev": true,
-            "requires": {
-                "aproba": "^1.1.1",
-                "fs-write-stream-atomic": "^1.0.8",
-                "iferr": "^0.1.5",
-                "mkdirp": "^0.5.1",
-                "rimraf": "^2.5.4",
-                "run-queue": "^1.0.0"
-            },
-            "dependencies": {
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                }
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "copy-descriptor": {
+        "node_modules/copy-descriptor": {
             "version": "0.1.1",
             "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-            "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-            "dev": true
+            "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "copy-props": {
+        "node_modules/copy-props": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
             "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "each-props": "^1.3.2",
                 "is-plain-object": "^5.0.0"
-            },
-            "dependencies": {
-                "is-plain-object": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
-                    "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
-                    "dev": true
-                }
             }
         },
-        "copy-to-clipboard": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz",
-            "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==",
-            "requires": {
+        "node_modules/copy-props/node_modules/is-plain-object": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+            "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/copy-to-clipboard": {
+            "version": "3.3.3",
+            "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+            "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+            "dependencies": {
                 "toggle-selection": "^1.0.6"
             }
         },
-        "core-js": {
-            "version": "3.21.1",
-            "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz",
-            "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig=="
+        "node_modules/core-js": {
+            "version": "3.30.1",
+            "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz",
+            "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==",
+            "hasInstallScript": true,
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
+            }
         },
-        "core-js-compat": {
-            "version": "3.21.1",
-            "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz",
-            "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==",
-            "dev": true,
-            "requires": {
-                "browserslist": "^4.19.1",
-                "semver": "7.0.0"
-            },
+        "node_modules/core-js-compat": {
+            "version": "3.30.1",
+            "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz",
+            "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==",
             "dependencies": {
-                "semver": {
-                    "version": "7.0.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-                    "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
-                    "dev": true
-                }
+                "browserslist": "^4.21.5"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
             }
         },
-        "core-js-pure": {
-            "version": "3.21.1",
-            "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz",
-            "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ=="
+        "node_modules/core-js-pure": {
+            "version": "3.30.1",
+            "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz",
+            "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==",
+            "hasInstallScript": true,
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
+            }
         },
-        "core-util-is": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-            "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-            "dev": true
+        "node_modules/core-util-is": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+            "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
         },
-        "cors": {
+        "node_modules/cors": {
             "version": "2.8.5",
             "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
             "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
-            "requires": {
+            "dependencies": {
                 "object-assign": "^4",
                 "vary": "^1"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "cosmiconfig": {
+        "node_modules/cosmiconfig": {
             "version": "5.2.1",
             "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
             "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "import-fresh": "^2.0.0",
                 "is-directory": "^0.3.1",
                 "js-yaml": "^3.13.1",
                 "parse-json": "^4.0.0"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/cosmiconfig/node_modules/import-fresh": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+            "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
             "dependencies": {
-                "import-fresh": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-                    "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
-                    "dev": true,
-                    "requires": {
-                        "caller-path": "^2.0.0",
-                        "resolve-from": "^3.0.0"
-                    }
-                },
-                "resolve-from": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-                    "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
-                    "dev": true
-                }
+                "caller-path": "^2.0.0",
+                "resolve-from": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/cosmiconfig/node_modules/resolve-from": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+            "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "crc": {
+        "node_modules/crc": {
             "version": "3.8.0",
             "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
             "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "buffer": "^5.1.0"
             }
         },
-        "crc32-stream": {
+        "node_modules/crc/node_modules/buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
+        },
+        "node_modules/crc32-stream": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
             "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "crc": "^3.4.4",
                 "readable-stream": "^3.4.0"
             },
-            "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                }
+            "engines": {
+                "node": ">= 6.9.0"
             }
         },
-        "create-ecdh": {
+        "node_modules/create-ecdh": {
             "version": "4.0.4",
             "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
             "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^4.1.0",
                 "elliptic": "^6.5.3"
-            },
-            "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
             }
         },
-        "create-hash": {
+        "node_modules/create-ecdh/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+            "dev": true
+        },
+        "node_modules/create-hash": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
             "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "cipher-base": "^1.0.1",
                 "inherits": "^2.0.1",
                 "md5.js": "^1.3.4",
@@ -7406,12 +8132,12 @@
                 "sha.js": "^2.4.0"
             }
         },
-        "create-hmac": {
+        "node_modules/create-hmac": {
             "version": "1.1.7",
             "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
             "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "cipher-base": "^1.0.3",
                 "create-hash": "^1.1.0",
                 "inherits": "^2.0.1",
@@ -7420,42 +8146,49 @@
                 "sha.js": "^2.4.8"
             }
         },
-        "croner": {
-            "version": "4.1.97",
-            "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz",
-            "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==",
-            "dev": true
-        },
-        "cross-env": {
+        "node_modules/cross-env": {
             "version": "7.0.3",
             "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
             "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
-            "requires": {
+            "dependencies": {
                 "cross-spawn": "^7.0.1"
+            },
+            "bin": {
+                "cross-env": "src/bin/cross-env.js",
+                "cross-env-shell": "src/bin/cross-env-shell.js"
+            },
+            "engines": {
+                "node": ">=10.14",
+                "npm": ">=6",
+                "yarn": ">=1"
             }
         },
-        "cross-spawn": {
+        "node_modules/cross-spawn": {
             "version": "7.0.3",
             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-            "requires": {
+            "dependencies": {
                 "path-key": "^3.1.0",
                 "shebang-command": "^2.0.0",
                 "which": "^2.0.1"
+            },
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "crypto": {
+        "node_modules/crypto": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
             "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
+            "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.",
             "dev": true
         },
-        "crypto-browserify": {
+        "node_modules/crypto-browserify": {
             "version": "3.12.0",
             "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
             "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "browserify-cipher": "^1.0.0",
                 "browserify-sign": "^4.0.0",
                 "create-ecdh": "^4.0.0",
@@ -7467,226 +8200,247 @@
                 "public-encrypt": "^4.0.0",
                 "randombytes": "^2.0.0",
                 "randomfill": "^1.0.3"
+            },
+            "engines": {
+                "node": "*"
             }
         },
-        "crypto-js": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz",
-            "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==",
+        "node_modules/crypto-js": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+            "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
             "optional": true
         },
-        "crypto-random-string": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-            "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-            "dev": true
-        },
-        "css": {
+        "node_modules/css": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
             "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "inherits": "^2.0.4",
                 "source-map": "^0.6.1",
                 "source-map-resolve": "^0.6.0"
-            },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                },
-                "source-map-resolve": {
-                    "version": "0.6.0",
-                    "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
-                    "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
-                    "dev": true,
-                    "requires": {
-                        "atob": "^2.1.2",
-                        "decode-uri-component": "^0.2.0"
-                    }
-                }
             }
         },
-        "css-angle-units": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/css-angle-units/-/css-angle-units-1.0.1.tgz",
-            "integrity": "sha1-MobuZr323LBHAPaNrDzZZDJftjU=",
-            "dev": true
-        },
-        "css-box-model": {
+        "node_modules/css-box-model": {
             "version": "1.2.1",
             "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz",
             "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
-            "requires": {
+            "dependencies": {
                 "tiny-invariant": "^1.0.6"
             }
         },
-        "css-frequency-units": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/css-frequency-units/-/css-frequency-units-1.0.1.tgz",
-            "integrity": "sha1-BXrFN/zR9I2/Kzn82i/5lURK9Ek=",
-            "dev": true
-        },
-        "css-length-units": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/css-length-units/-/css-length-units-1.0.0.tgz",
-            "integrity": "sha1-R3Pdx5LEACDzzIYl/j2GkMS8M6c=",
-            "dev": true
-        },
-        "css-resolution-units": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/css-resolution-units/-/css-resolution-units-1.0.1.tgz",
-            "integrity": "sha1-xa/X0U4pyr070bOTftN1hIq3i3E=",
-            "dev": true
-        },
-        "css-select": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz",
-            "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==",
-            "requires": {
+        "node_modules/css-select": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+            "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+            "dependencies": {
                 "boolbase": "^1.0.0",
-                "css-what": "^5.1.0",
-                "domhandler": "^4.3.0",
+                "css-what": "^6.0.1",
+                "domhandler": "^4.3.1",
                 "domutils": "^2.8.0",
                 "nth-check": "^2.0.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/fb55"
+            }
+        },
+        "node_modules/css-select/node_modules/dom-serializer": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+            "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+            "dependencies": {
+                "domelementtype": "^2.0.1",
+                "domhandler": "^4.2.0",
+                "entities": "^2.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+            }
+        },
+        "node_modules/css-select/node_modules/domelementtype": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+            "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/fb55"
+                }
+            ]
+        },
+        "node_modules/css-select/node_modules/domhandler": {
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+            "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+            "dependencies": {
+                "domelementtype": "^2.2.0"
+            },
+            "engines": {
+                "node": ">= 4"
+            },
+            "funding": {
+                "url": "https://github.com/fb55/domhandler?sponsor=1"
+            }
+        },
+        "node_modules/css-select/node_modules/domutils": {
+            "version": "2.8.0",
+            "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+            "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+            "dependencies": {
+                "dom-serializer": "^1.0.1",
+                "domelementtype": "^2.2.0",
+                "domhandler": "^4.2.0"
+            },
+            "funding": {
+                "url": "https://github.com/fb55/domutils?sponsor=1"
             }
         },
-        "css-selector-parser": {
+        "node_modules/css-selector-parser": {
             "version": "1.4.1",
             "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
             "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
             "dev": true
         },
-        "css-time-units": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/css-time-units/-/css-time-units-1.0.1.tgz",
-            "integrity": "sha1-w4KoKSnvhkWgg8SJ5dZ7+GbecUc=",
-            "dev": true
+        "node_modules/css-tree": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+            "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+            "dependencies": {
+                "mdn-data": "2.0.14",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
         },
-        "css-what": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
-            "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw=="
+        "node_modules/css-what": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+            "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+            "engines": {
+                "node": ">= 6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/fb55"
+            }
         },
-        "cssesc": {
+        "node_modules/cssesc": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
             "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-            "dev": true
+            "dev": true,
+            "bin": {
+                "cssesc": "bin/cssesc"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "cssfilter": {
+        "node_modules/cssfilter": {
             "version": "0.0.10",
             "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
-            "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4="
+            "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
+        },
+        "node_modules/csso": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+            "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+            "dependencies": {
+                "css-tree": "^1.1.2"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
         },
-        "cssom": {
+        "node_modules/cssom": {
             "version": "0.4.4",
             "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
             "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
         },
-        "cssstyle": {
+        "node_modules/cssstyle": {
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
             "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
-            "requires": {
+            "dependencies": {
                 "cssom": "~0.3.6"
             },
-            "dependencies": {
-                "cssom": {
-                    "version": "0.3.8",
-                    "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
-                    "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
-                }
+            "engines": {
+                "node": ">=8"
             }
         },
-        "csstype": {
-            "version": "3.0.10",
-            "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
-            "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA=="
+        "node_modules/cssstyle/node_modules/cssom": {
+            "version": "0.3.8",
+            "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+            "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
         },
-        "culvert": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz",
-            "integrity": "sha1-lQL18BVKLVoioCPnn3HMk2+m728=",
-            "dev": true
-        },
-        "currently-unhandled": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-            "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-            "dev": true,
-            "requires": {
-                "array-find-index": "^1.0.1"
-            }
+        "node_modules/csstype": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+            "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
         },
-        "cycle": {
+        "node_modules/cycle": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
-            "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
-            "dev": true
-        },
-        "cyclist": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-            "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
-            "dev": true
+            "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.0"
+            }
         },
-        "d": {
+        "node_modules/d": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
             "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "es5-ext": "^0.10.50",
                 "type": "^1.0.1"
             }
         },
-        "d3-array": {
+        "node_modules/d3-array": {
             "version": "1.2.4",
             "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
             "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
         },
-        "d3-collection": {
+        "node_modules/d3-collection": {
             "version": "1.0.7",
             "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
             "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
         },
-        "d3-color": {
+        "node_modules/d3-color": {
             "version": "1.4.1",
             "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
             "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
         },
-        "d3-ease": {
+        "node_modules/d3-ease": {
             "version": "1.0.7",
             "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
             "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
         },
-        "d3-format": {
+        "node_modules/d3-format": {
             "version": "1.4.5",
             "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz",
             "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ=="
         },
-        "d3-interpolate": {
+        "node_modules/d3-interpolate": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
             "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
-            "requires": {
+            "dependencies": {
                 "d3-color": "1"
             }
         },
-        "d3-path": {
+        "node_modules/d3-path": {
             "version": "1.0.9",
             "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
             "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
         },
-        "d3-scale": {
+        "node_modules/d3-scale": {
             "version": "1.0.7",
             "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz",
             "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==",
-            "requires": {
+            "dependencies": {
                 "d3-array": "^1.2.0",
                 "d3-collection": "1",
                 "d3-color": "1",
@@ -7696,386 +8450,382 @@
                 "d3-time-format": "2"
             }
         },
-        "d3-shape": {
+        "node_modules/d3-shape": {
             "version": "1.3.7",
             "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
             "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
-            "requires": {
+            "dependencies": {
                 "d3-path": "1"
             }
         },
-        "d3-time": {
+        "node_modules/d3-time": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
             "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
         },
-        "d3-time-format": {
+        "node_modules/d3-time-format": {
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
             "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
-            "requires": {
+            "dependencies": {
                 "d3-time": "1"
             }
         },
-        "d3-timer": {
+        "node_modules/d3-timer": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
             "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
         },
-        "d3-voronoi": {
+        "node_modules/d3-voronoi": {
             "version": "1.1.4",
             "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz",
             "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg=="
         },
-        "dashdash": {
+        "node_modules/dashdash": {
             "version": "1.14.1",
             "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-            "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+            "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "assert-plus": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10"
             }
         },
-        "data-uri-to-buffer": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
-            "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
-            "dev": true
-        },
-        "data-urls": {
+        "node_modules/data-urls": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
             "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
-            "requires": {
+            "dependencies": {
                 "abab": "^2.0.3",
                 "whatwg-mimetype": "^2.3.0",
                 "whatwg-url": "^8.0.0"
+            },
+            "engines": {
+                "node": ">=10"
             }
         },
-        "date-fns": {
+        "node_modules/date-fns": {
             "version": "1.30.1",
             "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
             "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
             "dev": true
         },
-        "dateformat": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
-            "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
-            "dev": true
+        "node_modules/dayjs": {
+            "version": "1.11.7",
+            "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
+            "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
         },
-        "dayjs": {
-            "version": "1.10.8",
-            "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.8.tgz",
-            "integrity": "sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow=="
+        "node_modules/debounce": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+            "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
+            "peer": true
         },
-        "debug": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-            "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-            "requires": {
-                "ms": "2.0.0"
+        "node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
             }
         },
-        "debug-fabulous": {
+        "node_modules/debug-fabulous": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz",
             "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "debug": "3.X",
                 "memoizee": "0.4.X",
                 "object-assign": "4.X"
             }
         },
-        "decamelize": {
+        "node_modules/debug-fabulous/node_modules/debug": {
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+            "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "^2.1.1"
+            }
+        },
+        "node_modules/decamelize": {
             "version": "3.2.0",
             "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz",
             "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "xregexp": "^4.2.4"
             },
-            "dependencies": {
-                "xregexp": {
-                    "version": "4.4.1",
-                    "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.1.tgz",
-                    "integrity": "sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/runtime-corejs3": "^7.12.1"
-                    }
-                }
+            "engines": {
+                "node": ">=6"
             }
         },
-        "decamelize-keys": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
-            "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+        "node_modules/decamelize-keys": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+            "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "decamelize": "^1.1.0",
                 "map-obj": "^1.0.0"
             },
-            "dependencies": {
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "decimal.js": {
-            "version": "10.3.1",
-            "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
-            "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ=="
-        },
-        "decode-uri-component": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-            "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
-            "dev": true
+        "node_modules/decamelize-keys/node_modules/decamelize": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+            "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "decompress-response": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
-            "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+        "node_modules/decamelize-keys/node_modules/map-obj": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+            "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
             "dev": true,
-            "requires": {
-                "mimic-response": "^1.0.0"
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/decimal.js": {
+            "version": "10.4.3",
+            "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+            "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
+        },
+        "node_modules/decode-uri-component": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+            "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+            "engines": {
+                "node": ">=0.10"
             }
         },
-        "decompress-tar": {
+        "node_modules/decompress-tar": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
             "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "file-type": "^5.2.0",
                 "is-stream": "^1.1.0",
                 "tar-stream": "^1.5.2"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "decompress-tarbz2": {
+        "node_modules/decompress-tarbz2": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
             "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "decompress-tar": "^4.1.0",
                 "file-type": "^6.1.0",
                 "is-stream": "^1.1.0",
                 "seek-bzip": "^1.0.5",
                 "unbzip2-stream": "^1.0.9"
             },
-            "dependencies": {
-                "file-type": {
-                    "version": "6.2.0",
-                    "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
-                    "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=4"
             }
         },
-        "decompress-targz": {
+        "node_modules/decompress-tarbz2/node_modules/file-type": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+            "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/decompress-targz": {
             "version": "4.1.1",
             "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
             "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "decompress-tar": "^4.1.1",
                 "file-type": "^5.2.0",
                 "is-stream": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "decompress-unzip": {
+        "node_modules/decompress-unzip": {
             "version": "4.0.1",
             "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
-            "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+            "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "file-type": "^3.8.0",
                 "get-stream": "^2.2.0",
                 "pify": "^2.3.0",
                 "yauzl": "^2.4.2"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/decompress-unzip/node_modules/file-type": {
+            "version": "3.9.0",
+            "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+            "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/decompress-unzip/node_modules/get-stream": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+            "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
+            "dev": true,
             "dependencies": {
-                "file-type": {
-                    "version": "3.9.0",
-                    "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
-                    "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
-                    "dev": true
-                },
-                "pify": {
-                    "version": "2.3.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-                    "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-                    "dev": true
-                }
+                "object-assign": "^4.0.1",
+                "pinkie-promise": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/decompress-unzip/node_modules/pify": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "dedent": {
+        "node_modules/dedent": {
             "version": "0.7.0",
             "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
-            "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
-            "dev": true
-        },
-        "deep-extend": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-            "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+            "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
             "dev": true
         },
-        "deep-is": {
+        "node_modules/deep-is": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
             "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
         },
-        "deepmerge": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-            "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
+        "node_modules/deepmerge": {
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+            "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "default-compare": {
+        "node_modules/default-compare": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
             "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "kind-of": "^5.0.2"
             },
-            "dependencies": {
-                "kind-of": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                    "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/default-compare/node_modules/kind-of": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+            "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "default-resolution": {
+        "node_modules/default-resolution": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
-            "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
-            "dev": true
-        },
-        "defaults": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-            "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+            "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",
             "dev": true,
-            "requires": {
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/defaults": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+            "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+            "dependencies": {
                 "clone": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "defer-to-connect": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
-            "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-            "dev": true
+        "node_modules/defaults/node_modules/clone": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+            "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+            "engines": {
+                "node": ">=0.8"
+            }
         },
-        "define-lazy-prop": {
+        "node_modules/define-lazy-prop": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
             "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
-            "dev": true
-        },
-        "define-properties": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-            "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-            "requires": {
-                "object-keys": "^1.0.12"
+            "dev": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "define-property": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-            "dev": true,
-            "requires": {
-                "is-descriptor": "^1.0.2",
-                "isobject": "^3.0.1"
-            },
+        "node_modules/define-properties": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+            "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
             "dependencies": {
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "dev": true,
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                }
+                "has-property-descriptors": "^1.0.0",
+                "object-keys": "^1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "degenerator": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz",
-            "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
-            "dev": true,
-            "requires": {
-                "ast-types": "^0.13.2",
-                "escodegen": "^1.8.1",
-                "esprima": "^4.0.0",
-                "vm2": "^3.9.8"
-            },
-            "dependencies": {
-                "escodegen": {
-                    "version": "1.14.3",
-                    "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
-                    "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
-                    "dev": true,
-                    "requires": {
-                        "esprima": "^4.0.1",
-                        "estraverse": "^4.2.0",
-                        "esutils": "^2.0.2",
-                        "optionator": "^0.8.1",
-                        "source-map": "~0.6.1"
-                    }
-                },
-                "estraverse": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-                    "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true,
-                    "optional": true
-                }
+        "node_modules/define-property": {
+            "version": "0.2.5",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+            "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "del": {
+        "node_modules/del": {
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz",
             "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "globby": "^10.0.1",
                 "graceful-fs": "^4.2.2",
                 "is-glob": "^4.0.1",
@@ -8085,407 +8835,422 @@
                 "rimraf": "^3.0.0",
                 "slash": "^3.0.0"
             },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/del/node_modules/globby": {
+            "version": "10.0.2",
+            "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
+            "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+            "dev": true,
             "dependencies": {
-                "globby": {
-                    "version": "10.0.2",
-                    "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
-                    "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
-                    "dev": true,
-                    "requires": {
-                        "@types/glob": "^7.1.1",
-                        "array-union": "^2.1.0",
-                        "dir-glob": "^3.0.1",
-                        "fast-glob": "^3.0.3",
-                        "glob": "^7.1.3",
-                        "ignore": "^5.1.1",
-                        "merge2": "^1.2.3",
-                        "slash": "^3.0.0"
-                    }
-                },
-                "p-map": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
-                    "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
-                    "dev": true,
-                    "requires": {
-                        "aggregate-error": "^3.0.0"
-                    }
-                },
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                }
+                "@types/glob": "^7.1.1",
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.0.3",
+                "glob": "^7.1.3",
+                "ignore": "^5.1.1",
+                "merge2": "^1.2.3",
+                "slash": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/del/node_modules/ignore": {
+            "version": "5.2.4",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+            "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/del/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "delaunator": {
+        "node_modules/delaunator": {
             "version": "4.0.1",
             "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
             "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
         },
-        "delaunay-find": {
+        "node_modules/delaunay-find": {
             "version": "0.0.3",
             "resolved": "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.3.tgz",
             "integrity": "sha512-Ex8DtJudrPsB0IhmJxFjHqzZnzbCOoFgw8kTGAnTlc6uU/v25nd7o2HeWhyZSaPhholsfL33PmLSEdaBi0qfug==",
-            "requires": {
+            "dependencies": {
                 "delaunator": "^4.0.0"
             }
         },
-        "delayed-stream": {
+        "node_modules/delayed-stream": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-            "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
-        },
-        "delegate": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
-            "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
-            "optional": true
-        },
-        "delegates": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-            "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-            "dev": true
+            "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+            "engines": {
+                "node": ">=0.4.0"
+            }
         },
-        "delete-empty": {
+        "node_modules/delete-empty": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz",
             "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "ansi-colors": "^4.1.0",
                 "minimist": "^1.2.0",
                 "path-starts-with": "^2.0.0",
                 "rimraf": "^2.6.2"
+            },
+            "bin": {
+                "delete-empty": "bin/cli.js"
+            },
+            "engines": {
+                "node": ">=10"
             }
         },
-        "depd": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-            "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+        "node_modules/delete-empty/node_modules/rimraf": {
+            "version": "2.7.1",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+            "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+            "dev": true,
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
+            }
+        },
+        "node_modules/denodeify": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+            "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==",
+            "peer": true
+        },
+        "node_modules/depd": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+            "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/deprecated-react-native-prop-types": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-3.0.1.tgz",
+            "integrity": "sha512-J0jCJcsk4hMlIb7xwOZKLfMpuJn6l8UtrPEzzQV5ewz5gvKNYakhBuq9h2rWX7YwHHJZFhU5W8ye7dB9oN8VcQ==",
+            "peer": true,
+            "dependencies": {
+                "@react-native/normalize-color": "*",
+                "invariant": "*",
+                "prop-types": "*"
+            }
         },
-        "des.js": {
+        "node_modules/des.js": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
             "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "inherits": "^2.0.1",
                 "minimalistic-assert": "^1.0.0"
             }
         },
-        "destroy": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-            "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+        "node_modules/destroy": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+            "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
+            }
         },
-        "detect-file": {
+        "node_modules/detect-file": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
-            "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
-            "dev": true
-        },
-        "detect-libc": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
-            "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
-            "dev": true
+            "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "detect-newline": {
+        "node_modules/detect-newline": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
-            "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
-            "dev": true
+            "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/detect-node": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+            "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
         },
-        "dev-ip": {
+        "node_modules/dev-ip": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
-            "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=",
-            "dev": true
-        },
-        "diff-sequences": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
-            "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
-            "dev": true
+            "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==",
+            "dev": true,
+            "bin": {
+                "dev-ip": "lib/dev-ip.js"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
         },
-        "diffie-hellman": {
+        "node_modules/diffie-hellman": {
             "version": "5.0.3",
             "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
             "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^4.1.0",
                 "miller-rabin": "^4.0.0",
                 "randombytes": "^2.0.0"
-            },
-            "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
             }
         },
-        "dir-glob": {
+        "node_modules/diffie-hellman/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+            "dev": true
+        },
+        "node_modules/dir-glob": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
             "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-            "requires": {
+            "dependencies": {
                 "path-type": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "direction": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
-            "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ=="
-        },
-        "directory-tree": {
+        "node_modules/directory-tree": {
             "version": "2.3.1",
             "resolved": "https://registry.npmjs.org/directory-tree/-/directory-tree-2.3.1.tgz",
-            "integrity": "sha512-hxolIHCtQ/a56CUywaLzGD/V78zPwFihI+UK/4ZjOp7GoV4Mptmtv95yavOn/RlnTi7cCMjszvfcNrwCoWLH+Q=="
-        },
-        "discontinuous-range": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
-            "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo="
-        },
-        "dlv": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
-            "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
-            "dev": true
+            "integrity": "sha512-hxolIHCtQ/a56CUywaLzGD/V78zPwFihI+UK/4ZjOp7GoV4Mptmtv95yavOn/RlnTi7cCMjszvfcNrwCoWLH+Q==",
+            "engines": {
+                "node": ">=10.0"
+            }
         },
-        "doctrine": {
+        "node_modules/doctrine": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
             "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "esutils": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "dom-css": {
+        "node_modules/dom-css": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/dom-css/-/dom-css-2.1.0.tgz",
-            "integrity": "sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=",
-            "requires": {
+            "integrity": "sha512-w9kU7FAbaSh3QKijL6n59ofAhkkmMJ31GclJIz/vyQdjogfyxcB6Zf8CZyibOERI5o0Hxz30VmJS7+7r5fEj2Q==",
+            "dependencies": {
                 "add-px-to-style": "1.0.0",
                 "prefix-style": "2.0.1",
                 "to-camel-case": "1.0.0"
             }
         },
-        "dom-helpers": {
+        "node_modules/dom-helpers": {
             "version": "5.2.1",
             "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
             "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
-            "requires": {
+            "dependencies": {
                 "@babel/runtime": "^7.8.7",
                 "csstype": "^3.0.2"
             }
         },
-        "dom-iterator": {
+        "node_modules/dom-iterator": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/dom-iterator/-/dom-iterator-1.0.0.tgz",
             "integrity": "sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig==",
-            "requires": {
+            "dependencies": {
                 "component-props": "1.1.1",
                 "component-xor": "0.0.4"
             }
         },
-        "dom-serializer": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
-            "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
-            "requires": {
+        "node_modules/dom-serializer": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+            "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+            "dev": true,
+            "dependencies": {
                 "domelementtype": "^2.0.1",
-                "domhandler": "^4.2.0",
                 "entities": "^2.0.0"
             }
         },
-        "domain-browser": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-            "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-            "dev": true
+        "node_modules/dom-serializer/node_modules/domelementtype": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+            "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/fb55"
+                }
+            ]
         },
-        "domelementtype": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-            "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
+        "node_modules/domain-browser": {
+            "version": "4.22.0",
+            "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz",
+            "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://bevry.me/fund"
+            }
+        },
+        "node_modules/domelementtype": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+            "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+            "dev": true
         },
-        "domexception": {
+        "node_modules/domexception": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
             "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
-            "requires": {
+            "dependencies": {
                 "webidl-conversions": "^5.0.0"
             },
-            "dependencies": {
-                "webidl-conversions": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
-                    "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
-                }
+            "engines": {
+                "node": ">=8"
             }
         },
-        "domhandler": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
-            "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
-            "requires": {
-                "domelementtype": "^2.2.0"
+        "node_modules/domexception/node_modules/webidl-conversions": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+            "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+            "engines": {
+                "node": ">=8"
             }
         },
-        "domutils": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-            "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-            "requires": {
-                "dom-serializer": "^1.0.1",
-                "domelementtype": "^2.2.0",
-                "domhandler": "^4.2.0"
+        "node_modules/domhandler": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+            "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+            "dev": true,
+            "dependencies": {
+                "domelementtype": "1"
             }
         },
-        "dot-prop": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
-            "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+        "node_modules/domutils": {
+            "version": "1.7.0",
+            "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+            "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
             "dev": true,
-            "requires": {
-                "is-obj": "^2.0.0"
+            "dependencies": {
+                "dom-serializer": "0",
+                "domelementtype": "1"
             }
         },
-        "dropzone": {
+        "node_modules/drag-and-drop-files": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/drag-and-drop-files/-/drag-and-drop-files-0.0.1.tgz",
+            "integrity": "sha512-Tx3sLLMM93vXs70BkXY4W9FPK85td2TFM/7Vc5zzAOWM07MsmbyIijfTuol60g7W5lAXqE2aGH1DG6QRBgp+5w=="
+        },
+        "node_modules/dropzone": {
             "version": "5.9.3",
             "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz",
             "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA=="
         },
-        "duplexer2": {
-            "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
-            "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
-            "dev": true,
-            "requires": {
-                "readable-stream": "~1.1.9"
-            },
-            "dependencies": {
-                "readable-stream": {
-                    "version": "1.1.14",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-                    "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-                    "dev": true,
-                    "requires": {
-                        "core-util-is": "~1.0.0",
-                        "inherits": "~2.0.1",
-                        "isarray": "0.0.1",
-                        "string_decoder": "~0.10.x"
-                    }
-                },
-                "string_decoder": {
-                    "version": "0.10.31",
-                    "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-                    "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-                    "dev": true
-                }
-            }
-        },
-        "duplexer3": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
-            "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
-            "dev": true
-        },
-        "duplexify": {
-            "version": "3.7.1",
-            "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-            "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+        "node_modules/duplexify": {
+            "version": "4.1.2",
+            "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
+            "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
             "dev": true,
-            "requires": {
-                "end-of-stream": "^1.0.0",
-                "inherits": "^2.0.1",
-                "readable-stream": "^2.0.0",
+            "dependencies": {
+                "end-of-stream": "^1.4.1",
+                "inherits": "^2.0.3",
+                "readable-stream": "^3.1.1",
                 "stream-shift": "^1.0.0"
             }
         },
-        "each-props": {
+        "node_modules/each-props": {
             "version": "1.3.2",
             "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
             "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "is-plain-object": "^2.0.1",
                 "object.defaults": "^1.1.0"
             }
         },
-        "easy-extender": {
+        "node_modules/easy-extender": {
             "version": "2.3.4",
             "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz",
             "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "lodash": "^4.17.10"
+            },
+            "engines": {
+                "node": ">= 4.0.0"
             }
         },
-        "eazy-logger": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz",
-            "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==",
+        "node_modules/eazy-logger": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz",
+            "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==",
             "dev": true,
-            "requires": {
-                "tfunk": "^4.0.0"
+            "dependencies": {
+                "chalk": "4.1.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
             }
         },
-        "ecc-jsbn": {
+        "node_modules/ecc-jsbn": {
             "version": "0.1.2",
             "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-            "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+            "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "jsbn": "~0.1.0",
                 "safer-buffer": "^2.1.0"
             }
         },
-        "ee-first": {
+        "node_modules/ee-first": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-            "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+            "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
         },
-        "ejs": {
-            "version": "2.7.4",
-            "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
-            "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
-            "dev": true
-        },
-        "electron-to-chromium": {
-            "version": "1.4.74",
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.74.tgz",
-            "integrity": "sha512-DvQ20M0I4dIH8KcAo7n7E4OEeNafZ1N8z6g6ck+ALCM0ZoV6mpjaX6ekjs31zKlqPzacU3lmjG9PZEa1mQhEpQ=="
+        "node_modules/electron-to-chromium": {
+            "version": "1.4.374",
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.374.tgz",
+            "integrity": "sha512-dNP9tQNTrjgVlSXMqGaj0BdrCS+9pcUvy5/emB6x8kh0YwCoDZ0Z4ce1+7aod+KhybHUd5o5LgKrc5al4kVmzQ=="
         },
-        "elegant-spinner": {
+        "node_modules/elegant-spinner": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
-            "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
-            "dev": true
+            "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "elliptic": {
+        "node_modules/elliptic": {
             "version": "6.5.4",
             "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
             "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "bn.js": "^4.11.9",
                 "brorand": "^1.1.0",
                 "hash.js": "^1.0.0",
@@ -8493,461 +9258,390 @@
                 "inherits": "^2.0.4",
                 "minimalistic-assert": "^1.0.1",
                 "minimalistic-crypto-utils": "^1.0.1"
-            },
-            "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
             }
         },
-        "emitter-listener": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
-            "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
-            "dev": true,
-            "requires": {
-                "shimmer": "^1.2.0"
-            }
-        },
-        "emittery": {
-            "version": "0.7.2",
-            "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz",
-            "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==",
+        "node_modules/elliptic/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
             "dev": true
         },
-        "emoji-regex": {
+        "node_modules/emoji-regex": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-            "dev": true
-        },
-        "emojis-list": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-            "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-            "dev": true
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
         },
-        "enabled": {
+        "node_modules/enabled": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
             "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
             "dev": true
         },
-        "encodeurl": {
+        "node_modules/encodeurl": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-            "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+            "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+            "engines": {
+                "node": ">= 0.8"
+            }
         },
-        "encoding": {
+        "node_modules/encoding": {
             "version": "0.1.13",
             "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
             "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-            "dev": true,
-            "requires": {
-                "iconv-lite": "^0.6.2"
-            },
+            "devOptional": true,
             "dependencies": {
-                "iconv-lite": {
-                    "version": "0.6.3",
-                    "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-                    "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-                    "dev": true,
-                    "requires": {
-                        "safer-buffer": ">= 2.1.2 < 3.0.0"
-                    }
-                }
+                "iconv-lite": "^0.6.2"
             }
         },
-        "end-of-stream": {
+        "node_modules/end-of-stream": {
             "version": "1.4.4",
             "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
             "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "once": "^1.4.0"
             }
         },
-        "engine.io": {
-            "version": "3.5.0",
-            "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz",
-            "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==",
+        "node_modules/engine.io": {
+            "version": "6.4.1",
+            "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz",
+            "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
+                "@types/cookie": "^0.4.1",
+                "@types/cors": "^2.8.12",
+                "@types/node": ">=10.0.0",
                 "accepts": "~1.3.4",
                 "base64id": "2.0.0",
                 "cookie": "~0.4.1",
-                "debug": "~4.1.0",
-                "engine.io-parser": "~2.2.0",
-                "ws": "~7.4.2"
+                "cors": "~2.8.5",
+                "debug": "~4.3.1",
+                "engine.io-parser": "~5.0.3",
+                "ws": "~8.11.0"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "engine.io-parser": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
-                    "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
-                    "dev": true,
-                    "requires": {
-                        "after": "0.8.2",
-                        "arraybuffer.slice": "~0.0.7",
-                        "base64-arraybuffer": "0.1.4",
-                        "blob": "0.0.5",
-                        "has-binary2": "~1.0.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                    "dev": true
-                },
-                "ws": {
-                    "version": "7.4.6",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-                    "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=10.0.0"
             }
         },
-        "engine.io-client": {
-            "version": "4.1.4",
-            "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.4.tgz",
-            "integrity": "sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==",
-            "requires": {
-                "base64-arraybuffer": "0.1.4",
-                "component-emitter": "~1.3.0",
+        "node_modules/engine.io-client": {
+            "version": "6.4.0",
+            "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz",
+            "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==",
+            "dependencies": {
+                "@socket.io/component-emitter": "~3.1.0",
                 "debug": "~4.3.1",
-                "engine.io-parser": "~4.0.1",
-                "has-cors": "1.1.0",
-                "parseqs": "0.0.6",
-                "parseuri": "0.0.6",
-                "ws": "~7.4.2",
-                "xmlhttprequest-ssl": "~1.6.2",
-                "yeast": "0.1.2"
+                "engine.io-parser": "~5.0.3",
+                "ws": "~8.11.0",
+                "xmlhttprequest-ssl": "~2.0.0"
+            }
+        },
+        "node_modules/engine.io-client/node_modules/ws": {
+            "version": "8.11.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+            "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+            "engines": {
+                "node": ">=10.0.0"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            "peerDependencies": {
+                "bufferutil": "^4.0.1",
+                "utf-8-validate": "^5.0.2"
+            },
+            "peerDependenciesMeta": {
+                "bufferutil": {
+                    "optional": true
                 },
-                "ws": {
-                    "version": "7.4.6",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-                    "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
+                "utf-8-validate": {
+                    "optional": true
                 }
             }
         },
-        "engine.io-parser": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz",
-            "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==",
-            "requires": {
-                "base64-arraybuffer": "0.1.4"
+        "node_modules/engine.io-parser": {
+            "version": "5.0.6",
+            "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
+            "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
+            "engines": {
+                "node": ">=10.0.0"
             }
         },
-        "enhanced-resolve": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
-            "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+        "node_modules/engine.io/node_modules/ws": {
+            "version": "8.11.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+            "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
             "dev": true,
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "memory-fs": "^0.5.0",
-                "tapable": "^1.0.0"
-            },
-            "dependencies": {
-                "memory-fs": {
-                    "version": "0.5.0",
-                    "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-                    "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-                    "dev": true,
-                    "requires": {
-                        "errno": "^0.1.3",
-                        "readable-stream": "^2.0.1"
-                    }
+            "engines": {
+                "node": ">=10.0.0"
+            },
+            "peerDependencies": {
+                "bufferutil": "^4.0.1",
+                "utf-8-validate": "^5.0.2"
+            },
+            "peerDependenciesMeta": {
+                "bufferutil": {
+                    "optional": true
+                },
+                "utf-8-validate": {
+                    "optional": true
                 }
             }
         },
-        "enquirer": {
-            "version": "2.3.6",
-            "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
-            "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+        "node_modules/enhanced-resolve": {
+            "version": "5.13.0",
+            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz",
+            "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==",
             "dev": true,
-            "requires": {
-                "ansi-colors": "^4.1.1"
-            }
-        },
-        "entities": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-            "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
-        },
-        "env-paths": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
-            "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
-            "dev": true
-        },
-        "enzyme": {
-            "version": "3.11.0",
-            "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz",
-            "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==",
-            "requires": {
-                "array.prototype.flat": "^1.2.3",
-                "cheerio": "^1.0.0-rc.3",
-                "enzyme-shallow-equal": "^1.0.1",
-                "function.prototype.name": "^1.1.2",
-                "has": "^1.0.3",
-                "html-element-map": "^1.2.0",
-                "is-boolean-object": "^1.0.1",
-                "is-callable": "^1.1.5",
-                "is-number-object": "^1.0.4",
-                "is-regex": "^1.0.5",
-                "is-string": "^1.0.5",
-                "is-subset": "^0.1.1",
-                "lodash.escape": "^4.0.1",
-                "lodash.isequal": "^4.5.0",
-                "object-inspect": "^1.7.0",
-                "object-is": "^1.0.2",
-                "object.assign": "^4.1.0",
-                "object.entries": "^1.1.1",
-                "object.values": "^1.1.1",
-                "raf": "^3.4.1",
-                "rst-selector-parser": "^2.2.3",
-                "string.prototype.trim": "^1.2.1"
-            }
-        },
-        "enzyme-adapter-react-16": {
-            "version": "1.15.6",
-            "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz",
-            "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==",
-            "requires": {
-                "enzyme-adapter-utils": "^1.14.0",
-                "enzyme-shallow-equal": "^1.0.4",
-                "has": "^1.0.3",
-                "object.assign": "^4.1.2",
-                "object.values": "^1.1.2",
-                "prop-types": "^15.7.2",
-                "react-is": "^16.13.1",
-                "react-test-renderer": "^16.0.0-0",
-                "semver": "^5.7.0"
-            },
             "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                }
-            }
-        },
-        "enzyme-adapter-utils": {
-            "version": "1.14.0",
-            "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz",
-            "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==",
-            "requires": {
-                "airbnb-prop-types": "^2.16.0",
-                "function.prototype.name": "^1.1.3",
-                "has": "^1.0.3",
-                "object.assign": "^4.1.2",
-                "object.fromentries": "^2.0.3",
-                "prop-types": "^15.7.2",
-                "semver": "^5.7.1"
+                "graceful-fs": "^4.2.4",
+                "tapable": "^2.2.0"
             },
-            "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                }
+            "engines": {
+                "node": ">=10.13.0"
             }
         },
-        "enzyme-shallow-equal": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz",
-            "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==",
-            "requires": {
-                "has": "^1.0.3",
-                "object-is": "^1.1.2"
-            }
+        "node_modules/entities": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+            "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
         },
-        "errno": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-            "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-            "dev": true,
-            "requires": {
-                "prr": "~1.0.1"
+        "node_modules/envinfo": {
+            "version": "7.8.1",
+            "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+            "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
+            "peer": true,
+            "bin": {
+                "envinfo": "dist/cli.js"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "error-ex": {
+        "node_modules/error-ex": {
             "version": "1.3.2",
             "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
             "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-            "requires": {
+            "dependencies": {
                 "is-arrayish": "^0.2.1"
             }
         },
-        "error-stack-parser": {
-            "version": "1.3.6",
-            "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
-            "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
-            "requires": {
-                "stackframe": "^0.3.1"
+        "node_modules/error-stack-parser": {
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+            "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+            "peer": true,
+            "dependencies": {
+                "stackframe": "^1.3.4"
             }
         },
-        "es-abstract": {
-            "version": "1.19.1",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
-            "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
-            "requires": {
+        "node_modules/errorhandler": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
+            "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
+            "peer": true,
+            "dependencies": {
+                "accepts": "~1.3.7",
+                "escape-html": "~1.0.3"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/es-abstract": {
+            "version": "1.21.2",
+            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
+            "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
+            "dependencies": {
+                "array-buffer-byte-length": "^1.0.0",
+                "available-typed-arrays": "^1.0.5",
                 "call-bind": "^1.0.2",
+                "es-set-tostringtag": "^2.0.1",
                 "es-to-primitive": "^1.2.1",
-                "function-bind": "^1.1.1",
-                "get-intrinsic": "^1.1.1",
+                "function.prototype.name": "^1.1.5",
+                "get-intrinsic": "^1.2.0",
                 "get-symbol-description": "^1.0.0",
+                "globalthis": "^1.0.3",
+                "gopd": "^1.0.1",
                 "has": "^1.0.3",
-                "has-symbols": "^1.0.2",
-                "internal-slot": "^1.0.3",
-                "is-callable": "^1.2.4",
-                "is-negative-zero": "^2.0.1",
+                "has-property-descriptors": "^1.0.0",
+                "has-proto": "^1.0.1",
+                "has-symbols": "^1.0.3",
+                "internal-slot": "^1.0.5",
+                "is-array-buffer": "^3.0.2",
+                "is-callable": "^1.2.7",
+                "is-negative-zero": "^2.0.2",
                 "is-regex": "^1.1.4",
-                "is-shared-array-buffer": "^1.0.1",
+                "is-shared-array-buffer": "^1.0.2",
                 "is-string": "^1.0.7",
-                "is-weakref": "^1.0.1",
-                "object-inspect": "^1.11.0",
+                "is-typed-array": "^1.1.10",
+                "is-weakref": "^1.0.2",
+                "object-inspect": "^1.12.3",
                 "object-keys": "^1.1.1",
-                "object.assign": "^4.1.2",
-                "string.prototype.trimend": "^1.0.4",
-                "string.prototype.trimstart": "^1.0.4",
-                "unbox-primitive": "^1.0.1"
+                "object.assign": "^4.1.4",
+                "regexp.prototype.flags": "^1.4.3",
+                "safe-regex-test": "^1.0.0",
+                "string.prototype.trim": "^1.2.7",
+                "string.prototype.trimend": "^1.0.6",
+                "string.prototype.trimstart": "^1.0.6",
+                "typed-array-length": "^1.0.4",
+                "unbox-primitive": "^1.0.2",
+                "which-typed-array": "^1.1.9"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "es-array-method-boxes-properly": {
+        "node_modules/es-array-method-boxes-properly": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
             "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
         },
-        "es-to-primitive": {
+        "node_modules/es-module-lexer": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
+            "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
+            "dev": true
+        },
+        "node_modules/es-set-tostringtag": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+            "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+            "dependencies": {
+                "get-intrinsic": "^1.1.3",
+                "has": "^1.0.3",
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/es-shim-unscopables": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+            "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+            "dev": true,
+            "dependencies": {
+                "has": "^1.0.3"
+            }
+        },
+        "node_modules/es-to-primitive": {
             "version": "1.2.1",
             "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
             "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-            "requires": {
+            "dependencies": {
                 "is-callable": "^1.1.4",
                 "is-date-object": "^1.0.1",
                 "is-symbol": "^1.0.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "es5-ext": {
-            "version": "0.10.53",
-            "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
-            "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+        "node_modules/es5-ext": {
+            "version": "0.10.62",
+            "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
+            "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
             "dev": true,
-            "requires": {
-                "es6-iterator": "~2.0.3",
-                "es6-symbol": "~3.1.3",
-                "next-tick": "~1.0.0"
+            "hasInstallScript": true,
+            "dependencies": {
+                "es6-iterator": "^2.0.3",
+                "es6-symbol": "^3.1.3",
+                "next-tick": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10"
             }
         },
-        "es6-iterator": {
+        "node_modules/es6-iterator": {
             "version": "2.0.3",
             "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-            "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+            "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "d": "1",
                 "es5-ext": "^0.10.35",
                 "es6-symbol": "^3.1.1"
             }
         },
-        "es6-symbol": {
+        "node_modules/es6-object-assign": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+            "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==",
+            "dev": true
+        },
+        "node_modules/es6-symbol": {
             "version": "3.1.3",
             "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
             "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "d": "^1.0.1",
                 "ext": "^1.1.2"
             }
         },
-        "es6-weak-map": {
+        "node_modules/es6-weak-map": {
             "version": "2.0.3",
             "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
             "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "d": "1",
                 "es5-ext": "^0.10.46",
                 "es6-iterator": "^2.0.3",
                 "es6-symbol": "^3.1.1"
             }
         },
-        "escalade": {
+        "node_modules/escalade": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
-        },
-        "escape-goat": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
-            "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
-            "dev": true
+            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "escape-html": {
+        "node_modules/escape-html": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-            "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+            "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
         },
-        "escape-string-regexp": {
+        "node_modules/escape-string-regexp": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-            "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+            "engines": {
+                "node": ">=0.8.0"
+            }
         },
-        "escodegen": {
+        "node_modules/escodegen": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
             "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
-            "requires": {
+            "dependencies": {
                 "esprima": "^4.0.1",
                 "estraverse": "^5.2.0",
                 "esutils": "^2.0.2",
-                "optionator": "^0.8.1",
-                "source-map": "~0.6.1"
+                "optionator": "^0.8.1"
             },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "optional": true
-                }
+            "bin": {
+                "escodegen": "bin/escodegen.js",
+                "esgenerate": "bin/esgenerate.js"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "optionalDependencies": {
+                "source-map": "~0.6.1"
             }
         },
-        "eslint": {
+        "node_modules/eslint": {
             "version": "5.16.0",
             "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
             "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "@babel/code-frame": "^7.0.0",
                 "ajv": "^6.9.1",
                 "chalk": "^2.1.0",
@@ -8985,434 +9679,425 @@
                 "table": "^5.2.3",
                 "text-table": "^0.2.0"
             },
-            "dependencies": {
-                "ansi-escapes": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-                    "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-                    "dev": true
-                },
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "cli-cursor": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-                    "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-                    "dev": true,
-                    "requires": {
-                        "restore-cursor": "^2.0.0"
-                    }
-                },
-                "cli-width": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
-                    "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
-                    "dev": true
-                },
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "dev": true,
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "figures": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-                    "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5"
-                    }
-                },
-                "ignore": {
-                    "version": "4.0.6",
-                    "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-                    "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-                    "dev": true
-                },
-                "inquirer": {
-                    "version": "6.5.2",
-                    "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
-                    "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-escapes": "^3.2.0",
-                        "chalk": "^2.4.2",
-                        "cli-cursor": "^2.1.0",
-                        "cli-width": "^2.0.0",
-                        "external-editor": "^3.0.3",
-                        "figures": "^2.0.0",
-                        "lodash": "^4.17.12",
-                        "mute-stream": "0.0.7",
-                        "run-async": "^2.2.0",
-                        "rxjs": "^6.4.0",
-                        "string-width": "^2.1.0",
-                        "strip-ansi": "^5.1.0",
-                        "through": "^2.3.6"
-                    },
-                    "dependencies": {
-                        "ansi-regex": {
-                            "version": "4.1.0",
-                            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                            "dev": true
-                        },
-                        "strip-ansi": {
-                            "version": "5.2.0",
-                            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                            "dev": true,
-                            "requires": {
-                                "ansi-regex": "^4.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "mimic-fn": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-                    "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-                    "dev": true
-                },
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "mute-stream": {
-                    "version": "0.0.7",
-                    "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-                    "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-                    "dev": true
-                },
-                "onetime": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-                    "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-                    "dev": true,
-                    "requires": {
-                        "mimic-fn": "^1.0.0"
-                    }
-                },
-                "path-key": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-                    "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-                    "dev": true
-                },
-                "restore-cursor": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-                    "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-                    "dev": true,
-                    "requires": {
-                        "onetime": "^2.0.0",
-                        "signal-exit": "^3.0.2"
-                    }
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                },
-                "shebang-command": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-                    "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-                    "dev": true,
-                    "requires": {
-                        "shebang-regex": "^1.0.0"
-                    }
-                },
-                "shebang-regex": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-                    "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-                    "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-                    "dev": true,
-                    "requires": {
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^4.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                },
-                "which": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^2.0.0"
-                    }
-                }
+            "bin": {
+                "eslint": "bin/eslint.js"
+            },
+            "engines": {
+                "node": "^6.14.0 || ^8.10.0 || >=9.10.0"
             }
         },
-        "eslint-plugin-react": {
-            "version": "7.29.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.2.tgz",
-            "integrity": "sha512-ypEBTKOy5liFQXZWMchJ3LN0JX1uPI6n7MN7OPHKacqXAxq5gYC30TdO7wqGYQyxD1OrzpobdHC3hDmlRWDg9w==",
+        "node_modules/eslint-plugin-react": {
+            "version": "7.32.2",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
+            "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
             "dev": true,
-            "requires": {
-                "array-includes": "^3.1.4",
-                "array.prototype.flatmap": "^1.2.5",
+            "dependencies": {
+                "array-includes": "^3.1.6",
+                "array.prototype.flatmap": "^1.3.1",
+                "array.prototype.tosorted": "^1.1.1",
                 "doctrine": "^2.1.0",
                 "estraverse": "^5.3.0",
                 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
                 "minimatch": "^3.1.2",
-                "object.entries": "^1.1.5",
-                "object.fromentries": "^2.0.5",
-                "object.hasown": "^1.1.0",
-                "object.values": "^1.1.5",
+                "object.entries": "^1.1.6",
+                "object.fromentries": "^2.0.6",
+                "object.hasown": "^1.1.2",
+                "object.values": "^1.1.6",
                 "prop-types": "^15.8.1",
-                "resolve": "^2.0.0-next.3",
+                "resolve": "^2.0.0-next.4",
                 "semver": "^6.3.0",
-                "string.prototype.matchall": "^4.0.6"
+                "string.prototype.matchall": "^4.0.8"
             },
-            "dependencies": {
-                "doctrine": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-                    "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-                    "dev": true,
-                    "requires": {
-                        "esutils": "^2.0.2"
-                    }
-                },
-                "resolve": {
-                    "version": "2.0.0-next.3",
-                    "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
-                    "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
-                    "dev": true,
-                    "requires": {
-                        "is-core-module": "^2.2.0",
-                        "path-parse": "^1.0.6"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=4"
+            },
+            "peerDependencies": {
+                "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
             }
         },
-        "eslint-plugin-react-hooks": {
+        "node_modules/eslint-plugin-react-hooks": {
             "version": "2.5.1",
             "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz",
             "integrity": "sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=7"
+            },
+            "peerDependencies": {
+                "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+            }
+        },
+        "node_modules/eslint-plugin-react/node_modules/doctrine": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+            "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+            "dev": true,
+            "dependencies": {
+                "esutils": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/eslint-plugin-react/node_modules/resolve": {
+            "version": "2.0.0-next.4",
+            "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
+            "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
+            "dev": true,
+            "dependencies": {
+                "is-core-module": "^2.9.0",
+                "path-parse": "^1.0.7",
+                "supports-preserve-symlinks-flag": "^1.0.0"
+            },
+            "bin": {
+                "resolve": "bin/resolve"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "eslint-scope": {
+        "node_modules/eslint-plugin-react/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/eslint-scope": {
             "version": "4.0.3",
             "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
             "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "esrecurse": "^4.1.0",
                 "estraverse": "^4.1.1"
             },
-            "dependencies": {
-                "estraverse": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-                    "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/eslint-scope/node_modules/estraverse": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4.0"
             }
         },
-        "eslint-utils": {
+        "node_modules/eslint-utils": {
             "version": "1.4.3",
             "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
             "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "eslint-visitor-keys": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "eslint-visitor-keys": {
+        "node_modules/eslint-visitor-keys": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
             "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "espree": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
-            "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+        "node_modules/eslint/node_modules/ajv": {
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
             "dev": true,
-            "requires": {
-                "acorn": "^6.0.7",
-                "acorn-jsx": "^5.0.0",
-                "eslint-visitor-keys": "^1.0.0"
-            },
             "dependencies": {
-                "acorn": {
-                    "version": "6.4.2",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-                    "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-                    "dev": true
-                }
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
             }
         },
-        "esprima": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
-        },
-        "esquery": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-            "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+        "node_modules/eslint/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
             "dev": true,
-            "requires": {
-                "estraverse": "^5.1.0"
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "esrecurse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-            "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+        "node_modules/eslint/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
             "dev": true,
-            "requires": {
-                "estraverse": "^5.2.0"
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "esrever": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/esrever/-/esrever-0.2.0.tgz",
-            "integrity": "sha1-lunSj08bGnZ4TNXUkOquAQ50B7g="
-        },
-        "estraverse": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-            "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+        "node_modules/eslint/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
         },
-        "estree-walker": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-            "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+        "node_modules/eslint/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
             "dev": true
         },
-        "esutils": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-            "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
-        },
-        "etag": {
-            "version": "1.8.1",
-            "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-            "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-        },
-        "event-emitter": {
-            "version": "0.3.5",
-            "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
-            "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+        "node_modules/eslint/node_modules/cross-spawn": {
+            "version": "6.0.5",
+            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+            "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
             "dev": true,
-            "requires": {
-                "d": "1",
-                "es5-ext": "~0.10.14"
+            "dependencies": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+            },
+            "engines": {
+                "node": ">=4.8"
             }
         },
-        "eventemitter2": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
-            "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=",
-            "dev": true
+        "node_modules/eslint/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/eslint/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+            "dev": true
+        },
+        "node_modules/eslint/node_modules/path-key": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+            "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/eslint/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver"
+            }
+        },
+        "node_modules/eslint/node_modules/shebang-command": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+            "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+            "dev": true,
+            "dependencies": {
+                "shebang-regex": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/eslint/node_modules/shebang-regex": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+            "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/eslint/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/eslint/node_modules/which": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+            "dev": true,
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
+            }
+        },
+        "node_modules/espree": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+            "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+            "dev": true,
+            "dependencies": {
+                "acorn": "^6.0.7",
+                "acorn-jsx": "^5.0.0",
+                "eslint-visitor-keys": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/espree/node_modules/acorn": {
+            "version": "6.4.2",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+            "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+            "dev": true,
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/esprima": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+            "bin": {
+                "esparse": "bin/esparse.js",
+                "esvalidate": "bin/esvalidate.js"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/esquery": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+            "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+            "dev": true,
+            "dependencies": {
+                "estraverse": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/esrecurse": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+            "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+            "dev": true,
+            "dependencies": {
+                "estraverse": "^5.2.0"
+            },
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
+        "node_modules/estraverse": {
+            "version": "5.3.0",
+            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+            "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
+        "node_modules/esutils": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+            "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/etag": {
+            "version": "1.8.1",
+            "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+            "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/event-emitter": {
+            "version": "0.3.5",
+            "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+            "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+            "dev": true,
+            "dependencies": {
+                "d": "1",
+                "es5-ext": "~0.10.14"
+            }
+        },
+        "node_modules/event-target-shim": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+            "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "eventemitter3": {
+        "node_modules/eventemitter3": {
             "version": "4.0.7",
             "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
             "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
         },
-        "events": {
+        "node_modules/events": {
             "version": "3.3.0",
             "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
             "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.x"
+            }
         },
-        "evp_bytestokey": {
+        "node_modules/evp_bytestokey": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
             "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "md5.js": "^1.3.4",
                 "safe-buffer": "^5.1.1"
             }
         },
-        "exec-sh": {
+        "node_modules/exec-sh": {
             "version": "0.3.6",
             "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz",
             "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==",
             "dev": true
         },
-        "execa": {
+        "node_modules/execa": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
             "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-            "dev": true,
-            "requires": {
+            "dependencies": {
                 "cross-spawn": "^6.0.0",
                 "get-stream": "^4.0.0",
                 "is-stream": "^1.1.0",
@@ -9421,88 +10106,88 @@
                 "signal-exit": "^3.0.0",
                 "strip-eof": "^1.0.0"
             },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/execa/node_modules/cross-spawn": {
+            "version": "6.0.5",
+            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+            "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
             "dependencies": {
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "dev": true,
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "dev": true,
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "path-key": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-                    "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                },
-                "shebang-command": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-                    "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-                    "dev": true,
-                    "requires": {
-                        "shebang-regex": "^1.0.0"
-                    }
-                },
-                "shebang-regex": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-                    "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-                    "dev": true
-                },
-                "which": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^2.0.0"
-                    }
-                }
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+            },
+            "engines": {
+                "node": ">=4.8"
+            }
+        },
+        "node_modules/execa/node_modules/path-key": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+            "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/execa/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "bin": {
+                "semver": "bin/semver"
+            }
+        },
+        "node_modules/execa/node_modules/shebang-command": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+            "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+            "dependencies": {
+                "shebang-regex": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/execa/node_modules/shebang-regex": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+            "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/execa/node_modules/which": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
             }
         },
-        "execall": {
+        "node_modules/execall": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz",
             "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "clone-regexp": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "exit": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-            "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
-            "dev": true
-        },
-        "expand-brackets": {
+        "node_modules/expand-brackets": {
             "version": "2.1.4",
             "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-            "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-            "dev": true,
-            "requires": {
+            "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+            "dependencies": {
                 "debug": "^2.3.3",
                 "define-property": "^0.2.5",
                 "extend-shallow": "^2.0.1",
@@ -9511,1362 +10196,1701 @@
                 "snapdragon": "^0.8.1",
                 "to-regex": "^3.0.1"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/expand-brackets/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
+                "ms": "2.0.0"
             }
         },
-        "expand-tilde": {
+        "node_modules/expand-brackets/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/expand-tilde": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-            "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+            "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "homedir-polyfill": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "expect": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-            "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
-            "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "ansi-styles": "^4.0.0",
-                "jest-get-type": "^26.3.0",
-                "jest-matcher-utils": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-regex-util": "^26.0.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                }
-            }
-        },
-        "express": {
-            "version": "4.17.3",
-            "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
-            "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
-            "requires": {
+        "node_modules/express": {
+            "version": "4.18.2",
+            "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+            "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+            "dependencies": {
                 "accepts": "~1.3.8",
                 "array-flatten": "1.1.1",
-                "body-parser": "1.19.2",
+                "body-parser": "1.20.1",
                 "content-disposition": "0.5.4",
                 "content-type": "~1.0.4",
-                "cookie": "0.4.2",
+                "cookie": "0.5.0",
                 "cookie-signature": "1.0.6",
                 "debug": "2.6.9",
-                "depd": "~1.1.2",
+                "depd": "2.0.0",
                 "encodeurl": "~1.0.2",
                 "escape-html": "~1.0.3",
                 "etag": "~1.8.1",
-                "finalhandler": "~1.1.2",
+                "finalhandler": "1.2.0",
                 "fresh": "0.5.2",
+                "http-errors": "2.0.0",
                 "merge-descriptors": "1.0.1",
                 "methods": "~1.1.2",
-                "on-finished": "~2.3.0",
+                "on-finished": "2.4.1",
                 "parseurl": "~1.3.3",
                 "path-to-regexp": "0.1.7",
                 "proxy-addr": "~2.0.7",
-                "qs": "6.9.7",
+                "qs": "6.11.0",
                 "range-parser": "~1.2.1",
                 "safe-buffer": "5.2.1",
-                "send": "0.17.2",
-                "serve-static": "1.14.2",
+                "send": "0.18.0",
+                "serve-static": "1.15.0",
                 "setprototypeof": "1.2.0",
-                "statuses": "~1.5.0",
+                "statuses": "2.0.1",
                 "type-is": "~1.6.18",
                 "utils-merge": "1.0.1",
                 "vary": "~1.1.2"
             },
-            "dependencies": {
-                "cookie": {
-                    "version": "0.4.2",
-                    "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
-                    "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
-                },
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
-                }
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "express-static-gzip": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.5.tgz",
-            "integrity": "sha512-bgiQ1fY7ltuUrSzg0WoN7ycoAd7r2VEw7durn/3k0jCMUC5wydF0K36ouIuJPE+MNDwK5uoSaVgIBVNemwxWgw==",
-            "requires": {
+        "node_modules/express-static-gzip": {
+            "version": "2.1.7",
+            "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.7.tgz",
+            "integrity": "sha512-QOCZUC+lhPPCjIJKpQGu1Oa61Axg9Mq09Qvit8Of7kzpMuwDeMSqjjQteQS3OVw/GkENBoSBheuQDWPlngImvw==",
+            "dependencies": {
                 "serve-static": "^1.14.1"
             }
         },
-        "ext": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
-            "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
-            "dev": true,
-            "requires": {
-                "type": "^2.5.0"
-            },
+        "node_modules/express-static-gzip/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
             "dependencies": {
-                "type": {
-                    "version": "2.6.0",
-                    "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz",
-                    "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==",
-                    "dev": true
-                }
+                "ms": "2.0.0"
             }
         },
-        "extend": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-            "dev": true
+        "node_modules/express-static-gzip/node_modules/debug/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
         },
-        "extend-shallow": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-            "requires": {
-                "is-extendable": "^0.1.0"
+        "node_modules/express-static-gzip/node_modules/mime": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "external-editor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
-            "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
-            "dev": true,
-            "requires": {
-                "chardet": "^0.7.0",
-                "iconv-lite": "^0.4.24",
-                "tmp": "^0.0.33"
+        "node_modules/express-static-gzip/node_modules/ms": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        },
+        "node_modules/express-static-gzip/node_modules/send": {
+            "version": "0.18.0",
+            "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+            "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "etag": "~1.8.1",
+                "fresh": "0.5.2",
+                "http-errors": "2.0.0",
+                "mime": "1.6.0",
+                "ms": "2.1.3",
+                "on-finished": "2.4.1",
+                "range-parser": "~1.2.1",
+                "statuses": "2.0.1"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
             }
         },
-        "extglob": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-            "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-            "dev": true,
-            "requires": {
-                "array-unique": "^0.3.2",
-                "define-property": "^1.0.0",
-                "expand-brackets": "^2.1.4",
-                "extend-shallow": "^2.0.1",
-                "fragment-cache": "^0.2.1",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.1"
+        "node_modules/express-static-gzip/node_modules/serve-static": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+            "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+            "dependencies": {
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "parseurl": "~1.3.3",
+                "send": "0.18.0"
             },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/express/node_modules/body-parser": {
+            "version": "1.20.1",
+            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+            "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
             "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "dev": true,
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                }
+                "bytes": "3.1.2",
+                "content-type": "~1.0.4",
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "on-finished": "2.4.1",
+                "qs": "6.11.0",
+                "raw-body": "2.5.1",
+                "type-is": "~1.6.18",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8",
+                "npm": "1.2.8000 || >= 1.4.16"
             }
         },
-        "extsprintf": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-            "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-            "dev": true
+        "node_modules/express/node_modules/cookie": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+            "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+            "engines": {
+                "node": ">= 0.6"
+            }
         },
-        "eyes": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
-            "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
-            "dev": true
+        "node_modules/express/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
         },
-        "fancy-log": {
-            "version": "1.3.3",
-            "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
-            "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+        "node_modules/express/node_modules/finalhandler": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+            "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "on-finished": "2.4.1",
+                "parseurl": "~1.3.3",
+                "statuses": "2.0.1",
+                "unpipe": "~1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/express/node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/express/node_modules/mime": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/express/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/express/node_modules/raw-body": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+            "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/express/node_modules/send": {
+            "version": "0.18.0",
+            "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+            "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "depd": "2.0.0",
+                "destroy": "1.2.0",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "etag": "~1.8.1",
+                "fresh": "0.5.2",
+                "http-errors": "2.0.0",
+                "mime": "1.6.0",
+                "ms": "2.1.3",
+                "on-finished": "2.4.1",
+                "range-parser": "~1.2.1",
+                "statuses": "2.0.1"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/express/node_modules/send/node_modules/ms": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+        },
+        "node_modules/express/node_modules/serve-static": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+            "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+            "dependencies": {
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "parseurl": "~1.3.3",
+                "send": "0.18.0"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/ext": {
+            "version": "1.7.0",
+            "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+            "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+            "dev": true,
+            "dependencies": {
+                "type": "^2.7.2"
+            }
+        },
+        "node_modules/ext/node_modules/type": {
+            "version": "2.7.2",
+            "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+            "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+            "dev": true
+        },
+        "node_modules/extend": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+            "dev": true
+        },
+        "node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+            "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/external-editor": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+            "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+            "dev": true,
+            "dependencies": {
+                "chardet": "^0.7.0",
+                "iconv-lite": "^0.4.24",
+                "tmp": "^0.0.33"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/external-editor/node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+            "dev": true,
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+            "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+            "dependencies": {
+                "array-unique": "^0.3.2",
+                "define-property": "^1.0.0",
+                "expand-brackets": "^2.1.4",
+                "extend-shallow": "^2.0.1",
+                "fragment-cache": "^0.2.1",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/define-property": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+            "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+            "dependencies": {
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extsprintf": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+            "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+            "dev": true,
+            "engines": [
+                "node >=0.6.0"
+            ]
+        },
+        "node_modules/eyes": {
+            "version": "0.1.8",
+            "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+            "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==",
             "dev": true,
-            "requires": {
+            "engines": {
+                "node": "> 0.1.90"
+            }
+        },
+        "node_modules/fancy-log": {
+            "version": "1.3.3",
+            "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+            "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+            "dev": true,
+            "dependencies": {
                 "ansi-gray": "^0.1.1",
                 "color-support": "^1.1.3",
                 "parse-node-version": "^1.0.0",
                 "time-stamp": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "fast-deep-equal": {
+        "node_modules/fast-deep-equal": {
             "version": "3.1.3",
             "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
             "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
             "dev": true
         },
-        "fast-diff": {
+        "node_modules/fast-diff": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
             "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
             "dev": true
         },
-        "fast-glob": {
-            "version": "3.2.11",
-            "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
-            "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
-            "requires": {
+        "node_modules/fast-glob": {
+            "version": "3.2.12",
+            "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+            "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+            "dependencies": {
                 "@nodelib/fs.stat": "^2.0.2",
                 "@nodelib/fs.walk": "^1.2.3",
                 "glob-parent": "^5.1.2",
                 "merge2": "^1.3.0",
                 "micromatch": "^4.0.4"
+            },
+            "engines": {
+                "node": ">=8.6.0"
             }
         },
-        "fast-json-patch": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz",
-            "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==",
-            "dev": true
-        },
-        "fast-json-stable-stringify": {
+        "node_modules/fast-json-stable-stringify": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
             "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
             "dev": true
         },
-        "fast-levenshtein": {
+        "node_modules/fast-levenshtein": {
             "version": "2.0.6",
             "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-            "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+            "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
         },
-        "fastest-levenshtein": {
-            "version": "1.0.12",
-            "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
-            "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
-            "dev": true
+        "node_modules/fast-xml-parser": {
+            "version": "4.2.2",
+            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.2.tgz",
+            "integrity": "sha512-DLzIPtQqmvmdq3VUKR7T6omPK/VCRNqgFlGtbESfyhcH2R4I8EzK1/K6E8PkRCK2EabWrUHK32NjYRbEFnnz0Q==",
+            "funding": [
+                {
+                    "type": "paypal",
+                    "url": "https://paypal.me/naturalintelligence"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/NaturalIntelligence"
+                }
+            ],
+            "peer": true,
+            "dependencies": {
+                "strnum": "^1.0.5"
+            },
+            "bin": {
+                "fxparser": "src/cli/cli.js"
+            }
         },
-        "fastq": {
-            "version": "1.13.0",
-            "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
-            "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
-            "requires": {
-                "reusify": "^1.0.4"
+        "node_modules/fastest-levenshtein": {
+            "version": "1.0.16",
+            "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+            "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4.9.1"
             }
         },
-        "fault": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
-            "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
-            "requires": {
-                "format": "^0.2.0"
+        "node_modules/fastq": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+            "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+            "dependencies": {
+                "reusify": "^1.0.4"
             }
         },
-        "fb-watchman": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
-            "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
-            "dev": true,
-            "requires": {
+        "node_modules/fb-watchman": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+            "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+            "dependencies": {
                 "bser": "2.1.1"
             }
         },
-        "fclone": {
-            "version": "1.0.11",
-            "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz",
-            "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=",
-            "dev": true
-        },
-        "fd-slicer": {
+        "node_modules/fd-slicer": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-            "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+            "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "pend": "~1.2.0"
             }
         },
-        "fecha": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
-            "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==",
+        "node_modules/fecha": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+            "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
             "dev": true
         },
-        "fibers": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/fibers/-/fibers-5.0.1.tgz",
-            "integrity": "sha512-VMC7Frt87Oo0AOJ6EcPFbi+tZmkQ4tD85aatwyWL6I9cYMJmm2e+pXUJsfGZ36U7MffXtjou2XIiWJMtHriErw==",
+        "node_modules/figures": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+            "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
             "dev": true,
-            "requires": {
-                "detect-libc": "^1.0.3"
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "figgy-pudding": {
-            "version": "3.5.2",
-            "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-            "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-            "dev": true
-        },
-        "figures": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-            "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+        "node_modules/File": {
+            "version": "0.10.2",
+            "resolved": "https://registry.npmjs.org/File/-/File-0.10.2.tgz",
+            "integrity": "sha512-gomQVTq/10wIR399uhGTWtYcYneTXbfe3p2RO/NR0MPrLkIyOaE9DCEPXihAm+72epLtXaplitwfJ/wkmj88dg==",
             "dev": true,
-            "requires": {
-                "escape-string-regexp": "^1.0.5"
+            "dependencies": {
+                "mime": ">= 0.0.0"
             }
         },
-        "file-api": {
+        "node_modules/file-api": {
             "version": "0.10.4",
             "resolved": "https://registry.npmjs.org/file-api/-/file-api-0.10.4.tgz",
-            "integrity": "sha1-LxASJttyfMAXKg3WiPL2iD1SiD0=",
+            "integrity": "sha512-RVBXJGmsnQxokdpy264pmsdBjbUuxE6QT2xxhOrO2pzwTetbTNoWVFgkONFWmopm5mellsXrQIQhMY9fjufi9g==",
             "dev": true,
-            "requires": {
-                "File": ">= 0.10.0",
-                "FileList": ">= 0.10.0",
+            "dependencies": {
                 "bufferjs": "> 0.2.0",
+                "File": ">= 0.10.0",
                 "file-error": ">= 0.10.0",
+                "FileList": ">= 0.10.0",
                 "filereader": ">= 0.10.3",
                 "formdata": ">= 0.10.0",
                 "mime": ">= 1.2.11",
                 "remedial": ">= 1.0.7"
             }
         },
-        "file-entry-cache": {
+        "node_modules/file-entry-cache": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
             "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "flat-cache": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "file-error": {
+        "node_modules/file-error": {
             "version": "0.10.2",
             "resolved": "https://registry.npmjs.org/file-error/-/file-error-0.10.2.tgz",
-            "integrity": "sha1-ljtIuSc7PUuEtADuVxvHixc5cko=",
+            "integrity": "sha512-hJsQ7sEz6dM4vuRS7cipKiixV6EymEXHe+TCf2XVWsGTOehzrmcqqKMgeYTmV24XhjWSj+pQj1e5yjPJ7DtQvw==",
             "dev": true
         },
-        "file-type": {
+        "node_modules/file-type": {
             "version": "5.2.0",
             "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-            "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
-            "dev": true
+            "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "file-uri-to-path": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
-            "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==",
+        "node_modules/file-uri-to-path": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+            "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+            "dev": true,
+            "optional": true
+        },
+        "node_modules/FileList": {
+            "version": "0.10.2",
+            "resolved": "https://registry.npmjs.org/FileList/-/FileList-0.10.2.tgz",
+            "integrity": "sha512-HCe9WvojxLiMEfa3l6jFkQJLzhzDXgQmfnKFoRvhEnsyVoIc5piAQNLyhOwsZsmf8IwDBfr5H71nB8Wi5w0XwA==",
             "dev": true
         },
-        "filereader": {
+        "node_modules/filereader": {
             "version": "0.10.3",
             "resolved": "https://registry.npmjs.org/filereader/-/filereader-0.10.3.tgz",
-            "integrity": "sha1-x0fUos2PYeVBinwH/hJXpD8KzbE=",
+            "integrity": "sha512-7F8w6GSXuHLN80ukaVOcHgBaiTRHUZr8GeEhNdqfAECcnBoROg4i8hTl+KqtF4yUPffOJVHEFg4iDJb7xIYFng==",
             "dev": true
         },
-        "fill-range": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-            "requires": {
-                "to-regex-range": "^5.0.1"
+        "node_modules/fill-range": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+            "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+            "dependencies": {
+                "extend-shallow": "^2.0.1",
+                "is-number": "^3.0.0",
+                "repeat-string": "^1.6.1",
+                "to-regex-range": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "finalhandler": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-            "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-            "requires": {
+        "node_modules/filter-obj": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
+            "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/finalhandler": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+            "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==",
+            "dependencies": {
                 "debug": "2.6.9",
-                "encodeurl": "~1.0.2",
+                "encodeurl": "~1.0.1",
                 "escape-html": "~1.0.3",
                 "on-finished": "~2.3.0",
-                "parseurl": "~1.3.3",
-                "statuses": "~1.5.0",
+                "parseurl": "~1.3.2",
+                "statuses": "~1.3.1",
                 "unpipe": "~1.0.0"
             },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/finalhandler/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                }
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/finalhandler/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/finalhandler/node_modules/on-finished": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+            "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+            "dependencies": {
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/finalhandler/node_modules/statuses": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+            "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "find-babel-config": {
+        "node_modules/find-babel-config": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
             "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "json5": "^0.5.1",
                 "path-exists": "^3.0.0"
             },
-            "dependencies": {
-                "json5": {
-                    "version": "0.5.1",
-                    "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-                    "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/find-babel-config/node_modules/json5": {
+            "version": "0.5.1",
+            "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+            "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+            "dev": true,
+            "bin": {
+                "json5": "lib/cli.js"
             }
         },
-        "find-cache-dir": {
+        "node_modules/find-cache-dir": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
             "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-            "requires": {
+            "dependencies": {
                 "commondir": "^1.0.1",
                 "make-dir": "^2.0.0",
                 "pkg-dir": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "find-parent-dir": {
+        "node_modules/find-parent-dir": {
             "version": "0.3.1",
             "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
             "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
             "dev": true
         },
-        "find-up": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-            "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-            "requires": {
-                "locate-path": "^3.0.0"
-            }
+        "node_modules/find-up": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+            "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+            "dependencies": {
+                "locate-path": "^5.0.0",
+                "path-exists": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "findup-sync": {
+        "node_modules/find-up/node_modules/path-exists": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+            "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/findup-sync": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
             "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "detect-file": "^1.0.0",
                 "is-glob": "^4.0.0",
                 "micromatch": "^3.0.4",
                 "resolve-dir": "^1.0.1"
             },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/findup-sync/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dev": true,
             "dependencies": {
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dev": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/findup-sync/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "fined": {
+        "node_modules/fined": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
             "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "expand-tilde": "^2.0.2",
                 "is-plain-object": "^2.0.3",
                 "object.defaults": "^1.1.0",
                 "object.pick": "^1.2.0",
                 "parse-filepath": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "first-chunk-stream": {
+        "node_modules/first-chunk-stream": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz",
-            "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=",
+            "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "readable-stream": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/first-chunk-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/first-chunk-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/first-chunk-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/first-chunk-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "flagged-respawn": {
+        "node_modules/flagged-respawn": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
             "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
         },
-        "flat-cache": {
+        "node_modules/flat-cache": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
             "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "flatted": "^2.0.0",
                 "rimraf": "2.6.3",
                 "write": "1.0.3"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/flat-cache/node_modules/rimraf": {
+            "version": "2.6.3",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+            "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+            "dev": true,
             "dependencies": {
-                "rimraf": {
-                    "version": "2.6.3",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-                    "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
             }
         },
-        "flatted": {
+        "node_modules/flatted": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
             "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
             "dev": true
         },
-        "flow-bin": {
-            "version": "0.136.0",
-            "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.136.0.tgz",
-            "integrity": "sha512-Z0sycQDyWXiNsGAhOBUrvHPzz7Q4g38BT57+YzZGffbaBmWRNC6MGZb+R6XTzeWb30bZin5V21nPQZezJzm9cQ==",
-            "dev": true
+        "node_modules/flow-parser": {
+            "version": "0.185.2",
+            "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.185.2.tgz",
+            "integrity": "sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.4.0"
+            }
         },
-        "flush-write-stream": {
+        "node_modules/flush-write-stream": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
             "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "inherits": "^2.0.3",
                 "readable-stream": "^2.3.6"
             }
         },
-        "fn.name": {
+        "node_modules/flush-write-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/flush-write-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/flush-write-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/flush-write-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/fn.name": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
             "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
             "dev": true
         },
-        "folder-zipper": {
+        "node_modules/folder-zipper": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/folder-zipper/-/folder-zipper-1.0.0.tgz",
             "integrity": "sha512-Zwf4UfKy6fnV452UNglw3yQE1ny6/ULDcnG0E96Q71ZicCFDv7cFZumZxF7SEvOZPG5BnB/3WDQ9E0WjETtLmA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "archiver": "^3.0.0",
                 "fs-extra": "^7.0.0"
-            },
+            }
+        },
+        "node_modules/folder-zipper/node_modules/fs-extra": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+            "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+            "dev": true,
             "dependencies": {
-                "fs-extra": {
-                    "version": "7.0.1",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-                    "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "jsonfile": "^4.0.0",
-                        "universalify": "^0.1.0"
-                    }
+                "graceful-fs": "^4.1.2",
+                "jsonfile": "^4.0.0",
+                "universalify": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=6 <7 || >=8"
+            }
+        },
+        "node_modules/folder-zipper/node_modules/jsonfile": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+            "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+            "dev": true,
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
+            }
+        },
+        "node_modules/folder-zipper/node_modules/universalify": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4.0.0"
+            }
+        },
+        "node_modules/follow-redirects": {
+            "version": "1.15.2",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+            "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://github.com/sponsors/RubenVerborgh"
+                }
+            ],
+            "engines": {
+                "node": ">=4.0"
+            },
+            "peerDependenciesMeta": {
+                "debug": {
+                    "optional": true
                 }
             }
         },
-        "follow-redirects": {
-            "version": "1.5.10",
-            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
-            "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
-            "requires": {
-                "debug": "=3.1.0"
+        "node_modules/for-each": {
+            "version": "0.3.3",
+            "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+            "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+            "dependencies": {
+                "is-callable": "^1.1.3"
             }
         },
-        "for-in": {
+        "node_modules/for-in": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-            "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-            "dev": true
+            "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "for-own": {
+        "node_modules/for-own": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-            "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+            "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "for-in": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "foreachasync": {
+        "node_modules/foreachasync": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
-            "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=",
+            "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==",
             "dev": true
         },
-        "forever-agent": {
+        "node_modules/forever-agent": {
             "version": "0.6.1",
             "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-            "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-            "dev": true
+            "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
         },
-        "fork-stream": {
+        "node_modules/fork-stream": {
             "version": "0.0.4",
             "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz",
-            "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=",
+            "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==",
             "dev": true
         },
-        "form-data": {
+        "node_modules/form-data": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
             "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
-            "requires": {
+            "dependencies": {
                 "asynckit": "^0.4.0",
                 "combined-stream": "^1.0.8",
                 "mime-types": "^2.1.12"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "format": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
-            "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
-        },
-        "formdata": {
+        "node_modules/formdata": {
             "version": "0.10.4",
             "resolved": "https://registry.npmjs.org/formdata/-/formdata-0.10.4.tgz",
-            "integrity": "sha1-liH9wMw2H0oBEd5dJbNfanjcVaA=",
+            "integrity": "sha512-IsHa+GYLLXHx0RmpUmzQTdwxDjNinxD+1zKOYPLaRwiqTfex5caQhOzgPIjFgJkL0O884Ers76BSHzXJxHvPLw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
+                "bufferjs": "^2.0.0",
                 "File": "^0.10.2",
                 "FileList": "^0.10.2",
-                "bufferjs": "^2.0.0",
                 "filereader": "^0.10.3",
                 "foreachasync": "^3.0.0",
                 "remedial": "^1.0.7"
-            },
-            "dependencies": {
-                "bufferjs": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-2.0.0.tgz",
-                    "integrity": "sha1-aF5x7VwGAOPXA/+b0BK7MnCjnig=",
-                    "dev": true
-                }
             }
         },
-        "forwarded": {
+        "node_modules/formdata/node_modules/bufferjs": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-2.0.0.tgz",
+            "integrity": "sha512-VnTCQKC+AJ61OFGe/hn3jRXoIt/B95NUcuxzAwiVT0PFB0KRZImkoDPYdFqDIs7xAs1eJ3yiKcHnuUiiYe7ucQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.2.0"
+            }
+        },
+        "node_modules/forwarded": {
             "version": "0.2.0",
             "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-            "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+            "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+            "engines": {
+                "node": ">= 0.6"
+            }
         },
-        "fraction.js": {
-            "version": "4.1.3",
-            "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz",
-            "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==",
-            "dev": true
+        "node_modules/fraction.js": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+            "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            },
+            "funding": {
+                "type": "patreon",
+                "url": "https://www.patreon.com/infusion"
+            }
         },
-        "fragment-cache": {
+        "node_modules/fragment-cache": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-            "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-            "dev": true,
-            "requires": {
+            "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+            "dependencies": {
                 "map-cache": "^0.2.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "fresh": {
+        "node_modules/fresh": {
             "version": "0.5.2",
             "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-            "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-        },
-        "from2": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-            "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
-            "dev": true,
-            "requires": {
-                "inherits": "^2.0.1",
-                "readable-stream": "^2.0.0"
+            "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "fs-constants": {
+        "node_modules/fs-constants": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
             "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
             "dev": true
         },
-        "fs-extra": {
-            "version": "10.0.1",
-            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
-            "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
-            "requires": {
+        "node_modules/fs-extra": {
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+            "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+            "dependencies": {
                 "graceful-fs": "^4.2.0",
                 "jsonfile": "^6.0.1",
                 "universalify": "^2.0.0"
             },
-            "dependencies": {
-                "jsonfile": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-                    "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-                    "requires": {
-                        "graceful-fs": "^4.1.6",
-                        "universalify": "^2.0.0"
-                    }
-                },
-                "universalify": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-                    "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
-                }
+            "engines": {
+                "node": ">=12"
             }
         },
-        "fs-minipass": {
+        "node_modules/fs-minipass": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
             "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "minipass": "^3.0.0"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/fs-minipass/node_modules/minipass": {
+            "version": "3.3.6",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+            "dev": true,
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "fs-mkdirp-stream": {
+        "node_modules/fs-minipass/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+            "dev": true
+        },
+        "node_modules/fs-mkdirp-stream": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
-            "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+            "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "graceful-fs": "^4.1.11",
                 "through2": "^2.0.3"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "fs-readdir-recursive": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
-            "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+        "node_modules/fs-mkdirp-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
         },
-        "fs-write-stream-atomic": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-            "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+        "node_modules/fs-mkdirp-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
             "dev": true,
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "iferr": "^0.1.5",
-                "imurmurhash": "^0.1.4",
-                "readable-stream": "1 || 2"
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "fs.realpath": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-            "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+        "node_modules/fs-mkdirp-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
         },
-        "fsevents": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-            "optional": true
+        "node_modules/fs-mkdirp-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
         },
-        "ftp": {
-            "version": "0.3.10",
-            "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
-            "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=",
-            "dev": true,
-            "requires": {
-                "readable-stream": "1.1.x",
-                "xregexp": "2.0.0"
-            },
-            "dependencies": {
-                "readable-stream": {
-                    "version": "1.1.14",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-                    "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-                    "dev": true,
-                    "requires": {
-                        "core-util-is": "~1.0.0",
-                        "inherits": "~2.0.1",
-                        "isarray": "0.0.1",
-                        "string_decoder": "~0.10.x"
-                    }
-                },
-                "string_decoder": {
-                    "version": "0.10.31",
-                    "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-                    "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-                    "dev": true
-                }
+        "node_modules/fs-mkdirp-stream/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/fs-monkey": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+            "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
+            "dev": true
+        },
+        "node_modules/fs-readdir-recursive": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+            "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+        },
+        "node_modules/fs.realpath": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+            "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+        },
+        "node_modules/fsevents": {
+            "version": "1.2.13",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+            "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+            "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
+            "dev": true,
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "dependencies": {
+                "bindings": "^1.5.0",
+                "nan": "^2.12.1"
+            },
+            "engines": {
+                "node": ">= 4.0"
             }
         },
-        "fullscrn": {
+        "node_modules/fullscrn": {
             "version": "1.3.7",
             "resolved": "https://registry.npmjs.org/fullscrn/-/fullscrn-1.3.7.tgz",
             "integrity": "sha512-yqsipKn3fDzqUeobrTCAi74i26/H75WUtq77ncOPnm4Q4L6yMDUirw5Y0zvb1SnvFNIRWLIVYeNWBt0JWLOmQQ==",
-            "requires": {
-                "debug": "^4.1.1"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
+                "debug": "^4.1.1"
             }
         },
-        "function-bind": {
+        "node_modules/function-bind": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
             "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
         },
-        "function.prototype.name": {
+        "node_modules/function.prototype.name": {
             "version": "1.1.5",
             "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
             "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-            "requires": {
+            "dependencies": {
                 "call-bind": "^1.0.2",
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.19.0",
                 "functions-have-names": "^1.2.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "functional-red-black-tree": {
+        "node_modules/functional-red-black-tree": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-            "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+            "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
             "dev": true
         },
-        "functions-have-names": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz",
-            "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA=="
+        "node_modules/functions-have-names": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+            "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "fuzzy": {
+        "node_modules/fuzzy": {
             "version": "0.1.3",
             "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
-            "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=",
-            "dev": true
-        },
-        "gauge": {
-            "version": "2.7.4",
-            "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-            "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-            "dev": true,
-            "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-                    "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-                    "dev": true,
-                    "requires": {
-                        "number-is-nan": "^1.0.0"
-                    }
-                },
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "dev": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                }
-            }
-        },
-        "gaze": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
-            "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+            "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==",
             "dev": true,
-            "requires": {
-                "globule": "^1.0.0"
+            "engines": {
+                "node": ">= 0.6.0"
             }
         },
-        "gensync": {
+        "node_modules/gensync": {
             "version": "1.0.0-beta.2",
             "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
             "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-            "dev": true
+            "engines": {
+                "node": ">=6.9.0"
+            }
         },
-        "get-caller-file": {
+        "node_modules/get-caller-file": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
             "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-            "dev": true
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
+            }
         },
-        "get-intrinsic": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
-            "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
-            "requires": {
+        "node_modules/get-intrinsic": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
+            "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+            "dependencies": {
                 "function-bind": "^1.1.1",
                 "has": "^1.0.3",
-                "has-symbols": "^1.0.1"
+                "has-symbols": "^1.0.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "get-own-enumerable-property-symbols": {
+        "node_modules/get-own-enumerable-property-symbols": {
             "version": "3.0.2",
             "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
             "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
             "dev": true
         },
-        "get-package-type": {
+        "node_modules/get-package-type": {
             "version": "0.1.0",
             "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
             "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
-            "dev": true
+            "dev": true,
+            "engines": {
+                "node": ">=8.0.0"
+            }
         },
-        "get-stdin": {
+        "node_modules/get-stdin": {
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
             "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
-            "dev": true
-        },
-        "get-stream": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
-            "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
             "dev": true,
-            "requires": {
-                "object-assign": "^4.0.1",
-                "pinkie-promise": "^2.0.0"
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/get-stream": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+            "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+            "dependencies": {
+                "pump": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "get-symbol-description": {
+        "node_modules/get-symbol-description": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
             "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-            "requires": {
+            "dependencies": {
                 "call-bind": "^1.0.2",
                 "get-intrinsic": "^1.1.1"
-            }
-        },
-        "get-uri": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz",
-            "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
-            "dev": true,
-            "requires": {
-                "@tootallnate/once": "1",
-                "data-uri-to-buffer": "3",
-                "debug": "4",
-                "file-uri-to-path": "2",
-                "fs-extra": "^8.1.0",
-                "ftp": "^0.3.10"
             },
-            "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "fs-extra": {
-                    "version": "8.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-                    "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^4.0.0",
-                        "universalify": "^0.1.0"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "get-value": {
+        "node_modules/get-value": {
             "version": "2.0.6",
             "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-            "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-            "dev": true
+            "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "getpass": {
+        "node_modules/getpass": {
             "version": "0.1.7",
             "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-            "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+            "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "assert-plus": "^1.0.0"
             }
         },
-        "gettext-extract": {
+        "node_modules/gettext-extract": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/gettext-extract/-/gettext-extract-2.0.1.tgz",
             "integrity": "sha512-k51R90txkCZeXQEDjK0e7gNHfBHJVCu8IQ3AbSVZoOL5nR3yl+C+7qpzp6hoZwOtiniaY+CKeLyvNulsEUM6MA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "chalk": "^2.3.0",
                 "find-up": "^4.1.0",
                 "fs-extra": "^8.0.1",
                 "gettext-extractor": "^3.1.0",
                 "minimist": "^1.2.0"
             },
+            "bin": {
+                "gettext-extract": "bin/gettext-extract"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
+        },
+        "node_modules/gettext-extract/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "fs-extra": {
-                    "version": "8.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-                    "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^4.0.0",
-                        "universalify": "^0.1.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                }
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "gettext-extractor": {
-            "version": "3.5.4",
-            "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.5.4.tgz",
-            "integrity": "sha512-iK4tSnteSw+pFMts43OP8hUnsOklbkxz3ytWqru7dPf8Ec3uzTYv1aw70ojAvKItmofpj1ibfY7sZWsdSN6zIw==",
+        "node_modules/gettext-extract/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
             "dev": true,
-            "requires": {
-                "@types/glob": "5 - 7",
-                "@types/parse5": "^5",
-                "css-selector-parser": "^1.3",
-                "glob": "5 - 7",
-                "parse5": "5 - 6",
-                "pofile": "1.0.x",
-                "typescript": "2 - 4"
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/gettext-extract/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
             "dependencies": {
-                "@types/parse5": {
-                    "version": "5.0.3",
-                    "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
-                    "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==",
-                    "dev": true
-                }
+                "color-name": "1.1.3"
             }
         },
-        "gettext-parser": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz",
-            "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==",
+        "node_modules/gettext-extract/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/gettext-extract/node_modules/fs-extra": {
+            "version": "8.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+            "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
             "dev": true,
-            "requires": {
-                "encoding": "^0.1.12",
-                "safe-buffer": "^5.1.2"
+            "dependencies": {
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^4.0.0",
+                "universalify": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=6 <7 || >=8"
             }
         },
-        "gettext-to-messageformat": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz",
-            "integrity": "sha512-UyqIL3Ul4NryU95Wome/qtlcuVIqgEWVIFw0zi7Lv14ACLXfaVDCbrjZ7o+3BZ7u+4NS1mP/2O1eXZoHCoas8g==",
-            "dev": true,
-            "requires": {
-                "gettext-parser": "^1.4.0"
-            },
-            "dependencies": {
-                "gettext-parser": {
-                    "version": "1.4.0",
-                    "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz",
-                    "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==",
-                    "dev": true,
-                    "requires": {
-                        "encoding": "^0.1.12",
-                        "safe-buffer": "^5.1.1"
-                    }
-                }
+        "node_modules/gettext-extract/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
             }
         },
-        "git-node-fs": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz",
-            "integrity": "sha1-SbIV4kLr5Dqkx1Ybu6SZUhdSCA8=",
-            "dev": true
+        "node_modules/gettext-extract/node_modules/jsonfile": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+            "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+            "dev": true,
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
+            }
         },
-        "git-sha1": {
+        "node_modules/gettext-extract/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/gettext-extract/node_modules/universalify": {
             "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz",
-            "integrity": "sha1-WZrBkrcYdYJeE6RF86bgURjC90U=",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4.0.0"
+            }
+        },
+        "node_modules/gettext-extractor": {
+            "version": "3.7.2",
+            "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.7.2.tgz",
+            "integrity": "sha512-nXZDMevReplyum9HsHkU+Y9DemC2kKUkzLL0bu27tSola9TCpUfVkyMpnhvKv1sLj3CcgtMvw3x2FxC4GpsW7A==",
+            "dev": true,
+            "dependencies": {
+                "@types/glob": "5 - 7",
+                "@types/parse5": "^5",
+                "css-selector-parser": "^1.3",
+                "glob": "5 - 7",
+                "parse5": "5 - 6",
+                "pofile": "1.0.x",
+                "typescript": "4 - 5"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/gettext-extractor/node_modules/@types/parse5": {
+            "version": "5.0.3",
+            "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
+            "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==",
             "dev": true
         },
-        "glob": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-            "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
-            "requires": {
+        "node_modules/gettext-parser": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.0.tgz",
+            "integrity": "sha512-zL3eayB0jF+cr6vogH/VJKoKcj7uQj2TPByaaj6a4k/3elk9iq7fiwCM2FqdzS/umo021RetSanVisarzeb9Wg==",
+            "dev": true,
+            "dependencies": {
+                "encoding": "^0.1.11"
+            }
+        },
+        "node_modules/glob": {
+            "version": "7.2.3",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+            "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+            "dependencies": {
                 "fs.realpath": "^1.0.0",
                 "inflight": "^1.0.4",
                 "inherits": "2",
-                "minimatch": "^3.0.4",
+                "minimatch": "^3.1.1",
                 "once": "^1.3.0",
                 "path-is-absolute": "^1.0.0"
+            },
+            "engines": {
+                "node": "*"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "glob-parent": {
+        "node_modules/glob-parent": {
             "version": "5.1.2",
             "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
             "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-            "requires": {
+            "dependencies": {
                 "is-glob": "^4.0.1"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "glob-stream": {
+        "node_modules/glob-stream": {
             "version": "6.1.0",
             "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
-            "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+            "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "extend": "^3.0.0",
                 "glob": "^7.1.1",
                 "glob-parent": "^3.1.0",
@@ -10878,34 +11902,80 @@
                 "to-absolute-glob": "^2.0.0",
                 "unique-stream": "^2.0.2"
             },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/glob-stream/node_modules/glob-parent": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+            "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+            "dev": true,
             "dependencies": {
-                "glob-parent": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-                    "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-                    "dev": true,
-                    "requires": {
-                        "is-glob": "^3.1.0",
-                        "path-dirname": "^1.0.0"
-                    }
-                },
-                "is-glob": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                    "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                    "dev": true,
-                    "requires": {
-                        "is-extglob": "^2.1.0"
-                    }
-                }
+                "is-glob": "^3.1.0",
+                "path-dirname": "^1.0.0"
+            }
+        },
+        "node_modules/glob-stream/node_modules/is-glob": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+            "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+            "dev": true,
+            "dependencies": {
+                "is-extglob": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/glob-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/glob-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/glob-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "glob-watcher": {
+        "node_modules/glob-to-regexp": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+            "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+            "dev": true
+        },
+        "node_modules/glob-watcher": {
             "version": "5.0.5",
             "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
             "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "anymatch": "^2.0.0",
                 "async-done": "^1.2.0",
                 "chokidar": "^2.0.0",
@@ -10914,295 +11984,209 @@
                 "normalize-path": "^3.0.0",
                 "object.defaults": "^1.1.0"
             },
-            "dependencies": {
-                "anymatch": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-                    "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-                    "dev": true,
-                    "requires": {
-                        "micromatch": "^3.1.4",
-                        "normalize-path": "^2.1.1"
-                    },
-                    "dependencies": {
-                        "normalize-path": {
-                            "version": "2.1.1",
-                            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                            "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                            "dev": true,
-                            "requires": {
-                                "remove-trailing-separator": "^1.0.1"
-                            }
-                        }
-                    }
-                },
-                "binary-extensions": {
-                    "version": "1.13.1",
-                    "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-                    "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-                    "dev": true
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "chokidar": {
-                    "version": "2.1.8",
-                    "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-                    "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-                    "dev": true,
-                    "requires": {
-                        "anymatch": "^2.0.0",
-                        "async-each": "^1.0.1",
-                        "braces": "^2.3.2",
-                        "fsevents": "^1.2.7",
-                        "glob-parent": "^3.1.0",
-                        "inherits": "^2.0.3",
-                        "is-binary-path": "^1.0.0",
-                        "is-glob": "^4.0.0",
-                        "normalize-path": "^3.0.0",
-                        "path-is-absolute": "^1.0.0",
-                        "readdirp": "^2.2.1",
-                        "upath": "^1.1.1"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "fsevents": {
-                    "version": "1.2.13",
-                    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-                    "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "bindings": "^1.5.0",
-                        "nan": "^2.12.1"
-                    }
-                },
-                "glob-parent": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-                    "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-                    "dev": true,
-                    "requires": {
-                        "is-glob": "^3.1.0",
-                        "path-dirname": "^1.0.0"
-                    },
-                    "dependencies": {
-                        "is-glob": {
-                            "version": "3.1.0",
-                            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                            "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                            "dev": true,
-                            "requires": {
-                                "is-extglob": "^2.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-binary-path": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-                    "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-                    "dev": true,
-                    "requires": {
-                        "binary-extensions": "^1.0.0"
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "readdirp": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-                    "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.11",
-                        "micromatch": "^3.1.10",
-                        "readable-stream": "^2.0.2"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "global-dirs": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
-            "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
+        "node_modules/glob-watcher/node_modules/anymatch": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+            "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
             "dev": true,
-            "requires": {
-                "ini": "2.0.0"
-            },
             "dependencies": {
-                "ini": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
-                    "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
-                    "dev": true
-                }
+                "micromatch": "^3.1.4",
+                "normalize-path": "^2.1.1"
             }
         },
-        "global-modules": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
-            "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+        "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+            "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
             "dev": true,
-            "requires": {
-                "global-prefix": "^1.0.1",
-                "is-windows": "^1.0.1",
-                "resolve-dir": "^1.0.0"
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "global-prefix": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
-            "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+        "node_modules/glob-watcher/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dev": true,
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dev": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob-watcher/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob/node_modules/path-is-absolute": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+            "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/global-modules": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+            "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+            "dev": true,
+            "dependencies": {
+                "global-prefix": "^1.0.1",
+                "is-windows": "^1.0.1",
+                "resolve-dir": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/global-prefix": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+            "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "expand-tilde": "^2.0.2",
                 "homedir-polyfill": "^1.0.1",
                 "ini": "^1.3.4",
                 "is-windows": "^1.0.1",
                 "which": "^1.2.14"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/global-prefix/node_modules/which": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+            "dev": true,
             "dependencies": {
-                "which": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^2.0.0"
-                    }
-                }
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
             }
         },
-        "globals": {
+        "node_modules/globals": {
             "version": "11.12.0",
             "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
             "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-            "dev": true
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/globalthis": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+            "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+            "dependencies": {
+                "define-properties": "^1.1.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "globby": {
+        "node_modules/globby": {
             "version": "11.1.0",
             "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
             "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-            "requires": {
+            "dependencies": {
                 "array-union": "^2.1.0",
                 "dir-glob": "^3.0.1",
                 "fast-glob": "^3.2.9",
@@ -11210,308 +12194,107 @@
                 "merge2": "^1.4.1",
                 "slash": "^3.0.0"
             },
-            "dependencies": {
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-                }
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/globby/node_modules/ignore": {
+            "version": "5.2.4",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+            "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+            "engines": {
+                "node": ">= 4"
             }
         },
-        "globjoin": {
+        "node_modules/globby/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/globjoin": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
-            "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=",
+            "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
             "dev": true
         },
-        "globule": {
-            "version": "1.3.3",
-            "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz",
-            "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==",
-            "dev": true,
-            "requires": {
-                "glob": "~7.1.1",
-                "lodash": "~4.17.10",
-                "minimatch": "~3.0.2"
-            },
-            "dependencies": {
-                "glob": {
-                    "version": "7.1.7",
-                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-                    "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-                    "dev": true,
-                    "requires": {
-                        "fs.realpath": "^1.0.0",
-                        "inflight": "^1.0.4",
-                        "inherits": "2",
-                        "minimatch": "^3.0.4",
-                        "once": "^1.3.0",
-                        "path-is-absolute": "^1.0.0"
-                    }
-                },
-                "minimatch": {
-                    "version": "3.0.8",
-                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
-                    "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
-                    "dev": true,
-                    "requires": {
-                        "brace-expansion": "^1.1.7"
-                    }
-                }
-            }
-        },
-        "glogg": {
+        "node_modules/glogg": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
             "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "sparkles": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "gonzales-pe": {
+        "node_modules/gonzales-pe": {
             "version": "4.3.0",
             "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
             "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "minimist": "^1.2.5"
+            },
+            "bin": {
+                "gonzales": "bin/gonzales.js"
+            },
+            "engines": {
+                "node": ">=0.6.0"
             }
         },
-        "good-listener": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
-            "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
-            "optional": true,
-            "requires": {
-                "delegate": "^3.1.2"
-            }
-        },
-        "got": {
-            "version": "9.6.0",
-            "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-            "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
-            "dev": true,
-            "requires": {
-                "@sindresorhus/is": "^0.14.0",
-                "@szmarczak/http-timer": "^1.1.2",
-                "cacheable-request": "^6.0.0",
-                "decompress-response": "^3.3.0",
-                "duplexer3": "^0.1.4",
-                "get-stream": "^4.1.0",
-                "lowercase-keys": "^1.0.1",
-                "mimic-response": "^1.0.1",
-                "p-cancelable": "^1.0.0",
-                "to-readable-stream": "^1.0.0",
-                "url-parse-lax": "^3.0.0"
-            },
-            "dependencies": {
-                "get-stream": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                    "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                    "dev": true,
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                }
+        "node_modules/gopd": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+            "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+            "dependencies": {
+                "get-intrinsic": "^1.1.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "graceful-fs": {
-            "version": "4.2.9",
-            "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
-            "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
-        },
-        "growly": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
-            "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
-            "dev": true,
-            "optional": true
+        "node_modules/graceful-fs": {
+            "version": "4.2.11",
+            "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+            "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
         },
-        "gsap": {
+        "node_modules/gsap": {
             "version": "2.1.3",
             "resolved": "https://registry.npmjs.org/gsap/-/gsap-2.1.3.tgz",
             "integrity": "sha512-8RFASCqi2FOCBuv7X4o7M6bLdy+1hbR0azg+MG7zz+EVsI+OmJblYsTk0GEepQd2Jg/ItMPiVTibF7r3EVxjZQ=="
         },
-        "gulp": {
+        "node_modules/gulp": {
             "version": "4.0.2",
             "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
             "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "glob-watcher": "^5.0.3",
                 "gulp-cli": "^2.2.0",
                 "undertaker": "^1.2.1",
                 "vinyl-fs": "^3.0.0"
             },
-            "dependencies": {
-                "ansi-colors": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
-                    "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-wrap": "^0.1.0"
-                    }
-                },
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "camelcase": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-                    "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-                    "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^1.0.1",
-                        "strip-ansi": "^3.0.1",
-                        "wrap-ansi": "^2.0.0"
-                    }
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "get-caller-file": {
-                    "version": "1.0.3",
-                    "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-                    "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-                    "dev": true
-                },
-                "gulp-cli": {
-                    "version": "2.3.0",
-                    "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
-                    "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-colors": "^1.0.1",
-                        "archy": "^1.0.0",
-                        "array-sort": "^1.0.0",
-                        "color-support": "^1.1.3",
-                        "concat-stream": "^1.6.0",
-                        "copy-props": "^2.0.1",
-                        "fancy-log": "^1.3.2",
-                        "gulplog": "^1.0.0",
-                        "interpret": "^1.4.0",
-                        "isobject": "^3.0.1",
-                        "liftoff": "^3.1.0",
-                        "matchdep": "^2.0.0",
-                        "mute-stdout": "^1.0.0",
-                        "pretty-hrtime": "^1.0.0",
-                        "replace-homedir": "^1.0.0",
-                        "semver-greatest-satisfied-range": "^1.1.0",
-                        "v8flags": "^3.2.0",
-                        "yargs": "^7.1.0"
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-                    "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-                    "dev": true,
-                    "requires": {
-                        "number-is-nan": "^1.0.0"
-                    }
-                },
-                "require-main-filename": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-                    "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-                    "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-                    "dev": true,
-                    "requires": {
-                        "code-point-at": "^1.0.0",
-                        "is-fullwidth-code-point": "^1.0.0",
-                        "strip-ansi": "^3.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                },
-                "which-module": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-                    "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-                    "dev": true
-                },
-                "wrap-ansi": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-                    "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^1.0.1",
-                        "strip-ansi": "^3.0.1"
-                    }
-                },
-                "y18n": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
-                    "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "7.1.2",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
-                    "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^3.0.0",
-                        "cliui": "^3.2.0",
-                        "decamelize": "^1.1.1",
-                        "get-caller-file": "^1.0.1",
-                        "os-locale": "^1.4.0",
-                        "read-pkg-up": "^1.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^1.0.1",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^1.0.2",
-                        "which-module": "^1.0.0",
-                        "y18n": "^3.2.1",
-                        "yargs-parser": "^5.0.1"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "5.0.1",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
-                    "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^3.0.0",
-                        "object.assign": "^4.1.0"
-                    }
-                }
+            "bin": {
+                "gulp": "bin/gulp.js"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "gulp-autoprefixer": {
+        "node_modules/gulp-autoprefixer": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-8.0.0.tgz",
             "integrity": "sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "autoprefixer": "^10.2.6",
                 "fancy-log": "^1.3.3",
                 "plugin-error": "^1.0.1",
@@ -11519,7943 +12302,5363 @@
                 "through2": "^4.0.2",
                 "vinyl-sourcemaps-apply": "^0.2.1"
             },
-            "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "through2": {
-                    "version": "4.0.2",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
-                    "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
-                    "dev": true,
-                    "requires": {
-                        "readable-stream": "3"
-                    }
+            "engines": {
+                "node": ">=12"
+            },
+            "peerDependencies": {
+                "gulp": ">=4"
+            },
+            "peerDependenciesMeta": {
+                "gulp": {
+                    "optional": true
                 }
             }
         },
-        "gulp-clean-css": {
+        "node_modules/gulp-clean-css": {
             "version": "4.3.0",
             "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz",
             "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "clean-css": "4.2.3",
                 "plugin-error": "1.0.1",
                 "through2": "3.0.1",
                 "vinyl-sourcemaps-apply": "0.2.1"
-            },
-            "dependencies": {
-                "through2": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
-                    "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
-                    "dev": true,
-                    "requires": {
-                        "readable-stream": "2 || 3"
-                    }
-                }
-            }
-        },
-        "gulp-concat": {
-            "version": "2.6.1",
-            "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz",
-            "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=",
-            "dev": true,
-            "requires": {
-                "concat-with-sourcemaps": "^1.0.0",
-                "through2": "^2.0.0",
-                "vinyl": "^2.0.0"
             }
         },
-        "gulp-dart-sass": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/gulp-dart-sass/-/gulp-dart-sass-1.0.2.tgz",
-            "integrity": "sha512-8fLttA824mbuc0jRVlGs00zWYZXBckat6INawx5kp66Eqsz5srNWTA51t0mbfB4C8a/a/GZ9muYLwXGklgAHlw==",
+        "node_modules/gulp-clean-css/node_modules/through2": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
+            "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
             "dev": true,
-            "requires": {
-                "chalk": "^2.3.0",
-                "lodash.clonedeep": "^4.3.2",
-                "plugin-error": "^1.0.1",
-                "replace-ext": "^1.0.0",
-                "sass": "^1.26.3",
-                "strip-ansi": "^4.0.0",
-                "through2": "^2.0.0",
-                "vinyl-sourcemaps-apply": "^0.2.0"
-            },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                }
+                "readable-stream": "2 || 3"
             }
         },
-        "gulp-gzip": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmjs.org/gulp-gzip/-/gulp-gzip-1.4.2.tgz",
-            "integrity": "sha512-ZIxfkUwk2XmZPTT9pPHrHUQlZMyp9nPhg2sfoeN27mBGpi7OaHnOD+WCN41NXjfJQ69lV1nQ9LLm1hYxx4h3UQ==",
+        "node_modules/gulp-cli": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
+            "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "ansi-colors": "^1.0.1",
-                "bytes": "^3.0.0",
+                "archy": "^1.0.0",
+                "array-sort": "^1.0.0",
+                "color-support": "^1.1.3",
+                "concat-stream": "^1.6.0",
+                "copy-props": "^2.0.1",
                 "fancy-log": "^1.3.2",
-                "plugin-error": "^1.0.0",
-                "stream-to-array": "^2.3.0",
-                "through2": "^2.0.3"
+                "gulplog": "^1.0.0",
+                "interpret": "^1.4.0",
+                "isobject": "^3.0.1",
+                "liftoff": "^3.1.0",
+                "matchdep": "^2.0.0",
+                "mute-stdout": "^1.0.0",
+                "pretty-hrtime": "^1.0.0",
+                "replace-homedir": "^1.0.0",
+                "semver-greatest-satisfied-range": "^1.1.0",
+                "v8flags": "^3.2.0",
+                "yargs": "^7.1.0"
             },
+            "bin": {
+                "gulp": "bin/gulp.js"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/gulp-cli/node_modules/ansi-colors": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+            "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+            "dev": true,
             "dependencies": {
-                "ansi-colors": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
-                    "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-wrap": "^0.1.0"
-                    }
-                }
+                "ansi-wrap": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/gulp-cli/node_modules/ansi-regex": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+            "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-if": {
+        "node_modules/gulp-cli/node_modules/camelcase": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz",
-            "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+            "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/gulp-cli/node_modules/cliui": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+            "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
             "dev": true,
-            "requires": {
-                "gulp-match": "^1.1.0",
-                "ternary-stream": "^3.0.0",
-                "through2": "^3.0.1"
-            },
             "dependencies": {
-                "through2": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
-                    "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.4",
-                        "readable-stream": "2 || 3"
-                    }
-                }
+                "string-width": "^1.0.1",
+                "strip-ansi": "^3.0.1",
+                "wrap-ansi": "^2.0.0"
             }
         },
-        "gulp-less": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz",
-            "integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==",
+        "node_modules/gulp-cli/node_modules/decamelize": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+            "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
             "dev": true,
-            "requires": {
-                "accord": "^0.29.0",
-                "less": "2.6.x || ^3.7.1",
-                "object-assign": "^4.0.1",
-                "plugin-error": "^0.1.2",
-                "replace-ext": "^1.0.0",
-                "through2": "^2.0.0",
-                "vinyl-sourcemaps-apply": "^0.2.0"
-            },
-            "dependencies": {
-                "arr-diff": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
-                    "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.0.1",
-                        "array-slice": "^0.2.3"
-                    }
-                },
-                "arr-union": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
-                    "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
-                    "dev": true
-                },
-                "array-slice": {
-                    "version": "0.2.3",
-                    "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
-                    "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
-                    "dev": true
-                },
-                "extend-shallow": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
-                    "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^1.1.0"
-                    }
-                },
-                "kind-of": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
-                    "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
-                    "dev": true
-                },
-                "plugin-error": {
-                    "version": "0.1.2",
-                    "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
-                    "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-cyan": "^0.1.1",
-                        "ansi-red": "^0.1.1",
-                        "arr-diff": "^1.0.1",
-                        "arr-union": "^2.0.1",
-                        "extend-shallow": "^1.1.2"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-match": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz",
-            "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==",
+        "node_modules/gulp-cli/node_modules/find-up": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+            "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
             "dev": true,
-            "requires": {
-                "minimatch": "^3.0.3"
+            "dependencies": {
+                "path-exists": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-rename": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz",
-            "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==",
+        "node_modules/gulp-cli/node_modules/get-caller-file": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+            "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
             "dev": true
         },
-        "gulp-run": {
-            "version": "1.7.1",
-            "resolved": "https://registry.npmjs.org/gulp-run/-/gulp-run-1.7.1.tgz",
-            "integrity": "sha1-4XwKy3wwtuKu7iPAREKpbAys7/o=",
+        "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+            "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
             "dev": true,
-            "requires": {
-                "gulp-util": "^3.0.0",
-                "lodash.defaults": "^4.0.1",
-                "lodash.template": "^4.0.2",
-                "vinyl": "^0.4.6"
-            },
             "dependencies": {
-                "clone": {
-                    "version": "0.2.0",
-                    "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
-                    "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
-                    "dev": true
-                },
-                "clone-stats": {
-                    "version": "0.0.1",
-                    "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
-                    "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
-                    "dev": true
-                },
-                "vinyl": {
-                    "version": "0.4.6",
-                    "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
-                    "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
-                    "dev": true,
-                    "requires": {
-                        "clone": "^0.2.0",
-                        "clone-stats": "^0.0.1"
-                    }
-                }
+                "number-is-nan": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-sass": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz",
-            "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==",
+        "node_modules/gulp-cli/node_modules/path-exists": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+            "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
             "dev": true,
-            "requires": {
-                "lodash.clonedeep": "^4.5.0",
-                "picocolors": "^1.0.0",
-                "plugin-error": "^1.0.1",
-                "replace-ext": "^2.0.0",
-                "strip-ansi": "^6.0.1",
-                "vinyl-sourcemaps-apply": "^0.2.1"
-            },
             "dependencies": {
-                "replace-ext": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
-                    "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
-                    "dev": true
-                }
+                "pinkie-promise": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-sourcemaps": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz",
-            "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==",
+        "node_modules/gulp-cli/node_modules/path-type": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+            "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
             "dev": true,
-            "requires": {
-                "@gulp-sourcemaps/identity-map": "^2.0.1",
-                "@gulp-sourcemaps/map-sources": "^1.0.0",
-                "acorn": "^6.4.1",
-                "convert-source-map": "^1.0.0",
-                "css": "^3.0.0",
-                "debug-fabulous": "^1.0.0",
-                "detect-newline": "^2.0.0",
-                "graceful-fs": "^4.0.0",
-                "source-map": "^0.6.0",
-                "strip-bom-string": "^1.0.0",
-                "through2": "^2.0.0"
-            },
             "dependencies": {
-                "acorn": {
-                    "version": "6.4.2",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-                    "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "graceful-fs": "^4.1.2",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp-util": {
-            "version": "3.0.8",
-            "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
-            "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+        "node_modules/gulp-cli/node_modules/pify": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/gulp-cli/node_modules/read-pkg": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+            "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
             "dev": true,
-            "requires": {
-                "array-differ": "^1.0.0",
-                "array-uniq": "^1.0.2",
-                "beeper": "^1.0.0",
-                "chalk": "^1.0.0",
-                "dateformat": "^2.0.0",
-                "fancy-log": "^1.1.0",
-                "gulplog": "^1.0.0",
-                "has-gulplog": "^0.1.0",
-                "lodash._reescape": "^3.0.0",
-                "lodash._reevaluate": "^3.0.0",
-                "lodash._reinterpolate": "^3.0.0",
-                "lodash.template": "^3.0.0",
-                "minimist": "^1.1.0",
-                "multipipe": "^0.1.2",
-                "object-assign": "^3.0.0",
-                "replace-ext": "0.0.1",
-                "through2": "^2.0.0",
-                "vinyl": "^0.5.0"
-            },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-                    "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "clone-stats": {
-                    "version": "0.0.1",
-                    "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
-                    "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
-                    "dev": true
-                },
-                "lodash.escape": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
-                    "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
-                    "dev": true,
-                    "requires": {
-                        "lodash._root": "^3.0.0"
-                    }
-                },
-                "lodash.template": {
-                    "version": "3.6.2",
-                    "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
-                    "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
-                    "dev": true,
-                    "requires": {
-                        "lodash._basecopy": "^3.0.0",
-                        "lodash._basetostring": "^3.0.0",
-                        "lodash._basevalues": "^3.0.0",
-                        "lodash._isiterateecall": "^3.0.0",
-                        "lodash._reinterpolate": "^3.0.0",
-                        "lodash.escape": "^3.0.0",
-                        "lodash.keys": "^3.0.0",
-                        "lodash.restparam": "^3.0.0",
-                        "lodash.templatesettings": "^3.0.0"
-                    }
-                },
-                "object-assign": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
-                    "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
-                    "dev": true
-                },
-                "replace-ext": {
-                    "version": "0.0.1",
-                    "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
-                    "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
-                    "dev": true
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                },
-                "supports-color": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-                    "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-                    "dev": true
-                },
-                "vinyl": {
-                    "version": "0.5.3",
-                    "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
-                    "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
-                    "dev": true,
-                    "requires": {
-                        "clone": "^1.0.0",
-                        "clone-stats": "^0.0.1",
-                        "replace-ext": "0.0.1"
-                    }
-                }
+                "load-json-file": "^1.0.0",
+                "normalize-package-data": "^2.3.2",
+                "path-type": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "gulp4-run-sequence": {
+        "node_modules/gulp-cli/node_modules/read-pkg-up": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/gulp4-run-sequence/-/gulp4-run-sequence-1.0.1.tgz",
-            "integrity": "sha512-6w845e/gi5TOc9OHmHtpEfumIiwKg7dj9vvapOeN9bzN4jPpSYlHNQ3TZzT9jyeafHVM4ALHFizSxQyRiZDIjw==",
-            "dev": true
-        },
-        "gulplog": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
-            "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+            "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+            "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
             "dev": true,
-            "requires": {
-                "glogg": "^1.0.0"
+            "dependencies": {
+                "find-up": "^1.0.0",
+                "read-pkg": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "handlebars": {
-            "version": "4.7.7",
-            "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
-            "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
-            "requires": {
-                "minimist": "^1.2.5",
-                "neo-async": "^2.6.0",
-                "source-map": "^0.6.1",
-                "uglify-js": "^3.1.4",
-                "wordwrap": "^1.0.0"
-            },
+        "node_modules/gulp-cli/node_modules/string-width": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+            "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+            "dev": true,
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "har-schema": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-            "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-            "dev": true
-        },
-        "har-validator": {
-            "version": "5.1.5",
-            "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-            "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+        "node_modules/gulp-cli/node_modules/strip-ansi": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+            "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
             "dev": true,
-            "requires": {
-                "ajv": "^6.12.3",
-                "har-schema": "^2.0.0"
+            "dependencies": {
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "hard-rejection": {
+        "node_modules/gulp-cli/node_modules/wrap-ansi": {
             "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
-            "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+            "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
+            "dev": true,
+            "dependencies": {
+                "string-width": "^1.0.1",
+                "strip-ansi": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/gulp-cli/node_modules/y18n": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+            "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
             "dev": true
         },
-        "has": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-            "requires": {
-                "function-bind": "^1.1.1"
+        "node_modules/gulp-cli/node_modules/yargs": {
+            "version": "7.1.2",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
+            "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
+            "dev": true,
+            "dependencies": {
+                "camelcase": "^3.0.0",
+                "cliui": "^3.2.0",
+                "decamelize": "^1.1.1",
+                "get-caller-file": "^1.0.1",
+                "os-locale": "^1.4.0",
+                "read-pkg-up": "^1.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^1.0.1",
+                "set-blocking": "^2.0.0",
+                "string-width": "^1.0.2",
+                "which-module": "^1.0.0",
+                "y18n": "^3.2.1",
+                "yargs-parser": "^5.0.1"
             }
         },
-        "has-ansi": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-            "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+        "node_modules/gulp-cli/node_modules/yargs-parser": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
+            "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
             "dev": true,
-            "requires": {
-                "ansi-regex": "^2.0.0"
-            },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                }
+                "camelcase": "^3.0.0",
+                "object.assign": "^4.1.0"
             }
         },
-        "has-bigints": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
-            "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
-        },
-        "has-binary2": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
-            "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
+        "node_modules/gulp-concat": {
+            "version": "2.6.1",
+            "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz",
+            "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==",
             "dev": true,
-            "requires": {
-                "isarray": "2.0.1"
-            },
             "dependencies": {
-                "isarray": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-                    "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-                    "dev": true
-                }
+                "concat-with-sourcemaps": "^1.0.0",
+                "through2": "^2.0.0",
+                "vinyl": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "has-cors": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-            "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
-        },
-        "has-flag": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-            "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
-        },
-        "has-gulplog": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
-            "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+        "node_modules/gulp-concat/node_modules/clone": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+            "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
             "dev": true,
-            "requires": {
-                "sparkles": "^1.0.0"
+            "engines": {
+                "node": ">=0.8"
             }
         },
-        "has-symbols": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
-            "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
-        },
-        "has-tostringtag": {
+        "node_modules/gulp-concat/node_modules/clone-stats": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-            "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-            "requires": {
-                "has-symbols": "^1.0.2"
-            }
-        },
-        "has-unicode": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-            "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+            "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
             "dev": true
         },
-        "has-value": {
+        "node_modules/gulp-concat/node_modules/isarray": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-            "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/gulp-concat/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
             "dev": true,
-            "requires": {
-                "get-value": "^2.0.6",
-                "has-values": "^1.0.0",
-                "isobject": "^3.0.0"
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "has-values": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-            "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+        "node_modules/gulp-concat/node_modules/replace-ext": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
             "dev": true,
-            "requires": {
-                "is-number": "^3.0.0",
-                "kind-of": "^4.0.0"
-            },
-            "dependencies": {
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "kind-of": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-                    "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "has-yarn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
-            "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+        "node_modules/gulp-concat/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "hash-base": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
-            "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+        "node_modules/gulp-concat/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "inherits": "^2.0.4",
-                "readable-stream": "^3.6.0",
-                "safe-buffer": "^5.2.0"
-            },
             "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-                    "dev": true
-                }
+                "safe-buffer": "~5.1.0"
             }
         },
-        "hash.js": {
-            "version": "1.1.7",
-            "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-            "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+        "node_modules/gulp-concat/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
             "dev": true,
-            "requires": {
-                "inherits": "^2.0.3",
-                "minimalistic-assert": "^1.0.1"
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
             }
         },
-        "hast-util-parse-selector": {
-            "version": "2.2.5",
-            "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
-            "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="
-        },
-        "hastscript": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz",
-            "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==",
-            "requires": {
-                "comma-separated-tokens": "^1.0.0",
-                "hast-util-parse-selector": "^2.0.0",
-                "property-information": "^5.0.0",
-                "space-separated-tokens": "^1.0.0"
+        "node_modules/gulp-concat/node_modules/vinyl": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+            "dev": true,
+            "dependencies": {
+                "clone": "^2.1.1",
+                "clone-buffer": "^1.0.0",
+                "clone-stats": "^1.0.0",
+                "cloneable-readable": "^1.0.0",
+                "remove-trailing-separator": "^1.0.1",
+                "replace-ext": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "highlight.js": {
-            "version": "9.18.5",
-            "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz",
-            "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA=="
-        },
-        "history": {
-            "version": "4.10.1",
-            "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
-            "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
-            "requires": {
-                "@babel/runtime": "^7.1.2",
-                "loose-envify": "^1.2.0",
-                "resolve-pathname": "^3.0.0",
-                "tiny-invariant": "^1.0.2",
-                "tiny-warning": "^1.0.0",
-                "value-equal": "^1.0.1"
+        "node_modules/gulp-gzip": {
+            "version": "1.4.2",
+            "resolved": "https://registry.npmjs.org/gulp-gzip/-/gulp-gzip-1.4.2.tgz",
+            "integrity": "sha512-ZIxfkUwk2XmZPTT9pPHrHUQlZMyp9nPhg2sfoeN27mBGpi7OaHnOD+WCN41NXjfJQ69lV1nQ9LLm1hYxx4h3UQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-colors": "^1.0.1",
+                "bytes": "^3.0.0",
+                "fancy-log": "^1.3.2",
+                "plugin-error": "^1.0.0",
+                "stream-to-array": "^2.3.0",
+                "through2": "^2.0.3"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "hmac-drbg": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-            "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+        "node_modules/gulp-gzip/node_modules/ansi-colors": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+            "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
             "dev": true,
-            "requires": {
-                "hash.js": "^1.0.3",
-                "minimalistic-assert": "^1.0.0",
-                "minimalistic-crypto-utils": "^1.0.1"
+            "dependencies": {
+                "ansi-wrap": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "hoist-non-react-statics": {
-            "version": "3.3.2",
-            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-            "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-            "requires": {
-                "react-is": "^16.7.0"
-            }
+        "node_modules/gulp-gzip/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
         },
-        "homedir-polyfill": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
-            "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
-            "requires": {
-                "parse-passwd": "^1.0.0"
+        "node_modules/gulp-gzip/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "hosted-git-info": {
-            "version": "2.8.9",
-            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-            "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
-        },
-        "html-element-map": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz",
-            "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==",
-            "requires": {
-                "array.prototype.filter": "^1.0.0",
-                "call-bind": "^1.0.2"
-            }
+        "node_modules/gulp-gzip/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
         },
-        "html-encoding-sniffer": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
-            "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
-            "requires": {
-                "whatwg-encoding": "^1.0.5"
+        "node_modules/gulp-gzip/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "html-entities": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
-            "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==",
-            "dev": true
-        },
-        "html-escaper": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
-            "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
-            "dev": true
-        },
-        "html-tags": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz",
-            "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
-            "dev": true
-        },
-        "htmlparser2": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-            "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-            "requires": {
-                "domelementtype": "^2.0.1",
-                "domhandler": "^4.0.0",
-                "domutils": "^2.5.2",
-                "entities": "^2.0.0"
+        "node_modules/gulp-gzip/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
             }
         },
-        "http-auth": {
-            "version": "3.2.4",
-            "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.2.4.tgz",
-            "integrity": "sha512-jeWAPP0UbI3dM6knyYbYbMvBoxwXGQp0eu70GGV9Ezo/pHmpv1dFLwM0CtaG+GFqUBkGZM/V8Jp/0gXFYwIOUQ==",
-            "requires": {
-                "apache-crypt": "^1.1.2",
-                "apache-md5": "^1.0.6",
-                "bcryptjs": "^2.3.0",
-                "uuid": "^3.0.0"
+        "node_modules/gulp-if": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz",
+            "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==",
+            "dev": true,
+            "dependencies": {
+                "gulp-match": "^1.1.0",
+                "ternary-stream": "^3.0.0",
+                "through2": "^3.0.1"
             }
         },
-        "http-cache-semantics": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-            "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
-            "dev": true
+        "node_modules/gulp-if/node_modules/through2": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+            "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "^2.0.4",
+                "readable-stream": "2 || 3"
+            }
         },
-        "http-errors": {
-            "version": "1.8.1",
-            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
-            "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
-            "requires": {
-                "depd": "~1.1.2",
-                "inherits": "2.0.4",
-                "setprototypeof": "1.2.0",
-                "statuses": ">= 1.5.0 < 2",
-                "toidentifier": "1.0.1"
+        "node_modules/gulp-match": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz",
+            "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==",
+            "dev": true,
+            "dependencies": {
+                "minimatch": "^3.0.3"
             }
         },
-        "http-proxy": {
-            "version": "1.18.1",
-            "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
-            "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
-            "requires": {
-                "eventemitter3": "^4.0.0",
-                "follow-redirects": "^1.0.0",
-                "requires-port": "^1.0.0"
+        "node_modules/gulp-rename": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz",
+            "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
             }
         },
-        "http-proxy-agent": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
-            "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
-            "requires": {
-                "@tootallnate/once": "1",
-                "agent-base": "6",
-                "debug": "4"
+        "node_modules/gulp-sass": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz",
+            "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==",
+            "dev": true,
+            "dependencies": {
+                "lodash.clonedeep": "^4.5.0",
+                "picocolors": "^1.0.0",
+                "plugin-error": "^1.0.1",
+                "replace-ext": "^2.0.0",
+                "strip-ansi": "^6.0.1",
+                "vinyl-sourcemaps-apply": "^0.2.1"
             },
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/gulp-sass/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "http-proxy-middleware": {
-            "version": "0.20.0",
-            "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz",
-            "integrity": "sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw==",
-            "requires": {
-                "http-proxy": "^1.17.0",
-                "is-glob": "^4.0.1",
-                "lodash": "^4.17.14",
-                "micromatch": "^4.0.2"
+        "node_modules/gulp-sourcemaps": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz",
+            "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==",
+            "dev": true,
+            "dependencies": {
+                "@gulp-sourcemaps/identity-map": "^2.0.1",
+                "@gulp-sourcemaps/map-sources": "^1.0.0",
+                "acorn": "^6.4.1",
+                "convert-source-map": "^1.0.0",
+                "css": "^3.0.0",
+                "debug-fabulous": "^1.0.0",
+                "detect-newline": "^2.0.0",
+                "graceful-fs": "^4.0.0",
+                "source-map": "^0.6.0",
+                "strip-bom-string": "^1.0.0",
+                "through2": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "http-signature": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-            "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+        "node_modules/gulp-sourcemaps/node_modules/acorn": {
+            "version": "6.4.2",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+            "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
             "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0",
-                "jsprim": "^1.2.2",
-                "sshpk": "^1.7.0"
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
             }
         },
-        "https-browserify": {
+        "node_modules/gulp-sourcemaps/node_modules/isarray": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-            "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
             "dev": true
         },
-        "https-proxy-agent": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-            "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-            "requires": {
-                "agent-base": "6",
-                "debug": "4"
-            },
+        "node_modules/gulp-sourcemaps/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "human-signals": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
-            "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+        "node_modules/gulp-sourcemaps/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "husky": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz",
-            "integrity": "sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==",
+        "node_modules/gulp-sourcemaps/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "chalk": "^2.4.2",
-                "ci-info": "^2.0.0",
-                "cosmiconfig": "^5.2.1",
-                "execa": "^1.0.0",
-                "get-stdin": "^7.0.0",
-                "opencollective-postinstall": "^2.0.2",
-                "pkg-dir": "^4.2.0",
-                "please-upgrade-node": "^3.2.0",
-                "read-pkg": "^5.2.0",
-                "run-node": "^1.0.0",
-                "slash": "^3.0.0"
-            },
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "parse-json": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-                    "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "error-ex": "^1.3.1",
-                        "json-parse-even-better-errors": "^2.3.0",
-                        "lines-and-columns": "^1.1.6"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "pkg-dir": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-                    "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.0.0"
-                    }
-                },
-                "read-pkg": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-                    "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-                    "dev": true,
-                    "requires": {
-                        "@types/normalize-package-data": "^2.4.0",
-                        "normalize-package-data": "^2.5.0",
-                        "parse-json": "^5.0.0",
-                        "type-fest": "^0.6.0"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "type-fest": {
-                    "version": "0.6.0",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-                    "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
-                    "dev": true
-                }
-            }
-        },
-        "iconv-lite": {
-            "version": "0.4.24",
-            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-            "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
+                "safe-buffer": "~5.1.0"
             }
         },
-        "idb-keyval": {
-            "version": "6.0.3",
-            "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz",
-            "integrity": "sha512-yh8V7CnE6EQMu9YDwQXhRxwZh4nv+8xm/HV4ZqK4IiYFJBWYGjJuykADJbSP+F/GDXUBwCSSNn/14IpGL81TuA==",
+        "node_modules/gulp-sourcemaps/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
             "dev": true,
-            "requires": {
-                "safari-14-idb-fix": "^3.0.0"
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
             }
         },
-        "ieee754": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-            "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-            "dev": true
-        },
-        "iferr": {
-            "version": "0.1.5",
-            "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-            "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
-            "dev": true
-        },
-        "ignore": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
-            "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
-        },
-        "ignore-by-default": {
+        "node_modules/gulp4-run-sequence": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
-            "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
-            "dev": true
-        },
-        "ignore-loader": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/ignore-loader/-/ignore-loader-0.1.2.tgz",
-            "integrity": "sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM=",
+            "resolved": "https://registry.npmjs.org/gulp4-run-sequence/-/gulp4-run-sequence-1.0.1.tgz",
+            "integrity": "sha512-6w845e/gi5TOc9OHmHtpEfumIiwKg7dj9vvapOeN9bzN4jPpSYlHNQ3TZzT9jyeafHVM4ALHFizSxQyRiZDIjw==",
             "dev": true
         },
-        "image-size": {
-            "version": "0.5.5",
-            "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-            "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+        "node_modules/gulplog": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+            "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==",
             "dev": true,
-            "optional": true
-        },
-        "immer": {
-            "version": "5.3.6",
-            "resolved": "https://registry.npmjs.org/immer/-/immer-5.3.6.tgz",
-            "integrity": "sha512-pqWQ6ozVfNOUDjrLfm4Pt7q4Q12cGw2HUZgry4Q5+Myxu9nmHRkWBpI0J4+MK0AxbdFtdMTwEGVl7Vd+vEiK+A=="
+            "dependencies": {
+                "glogg": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
         },
-        "immutable": {
-            "version": "3.8.2",
-            "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
-            "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=",
-            "dev": true
+        "node_modules/handle-thing": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+            "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
         },
-        "import-fresh": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-            "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+        "node_modules/handlebars": {
+            "version": "4.7.7",
+            "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+            "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
             "dev": true,
-            "requires": {
-                "parent-module": "^1.0.0",
-                "resolve-from": "^4.0.0"
-            },
             "dependencies": {
-                "resolve-from": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-                    "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-                    "dev": true
-                }
+                "minimist": "^1.2.5",
+                "neo-async": "^2.6.0",
+                "source-map": "^0.6.1",
+                "wordwrap": "^1.0.0"
+            },
+            "bin": {
+                "handlebars": "bin/handlebars"
+            },
+            "engines": {
+                "node": ">=0.4.7"
+            },
+            "optionalDependencies": {
+                "uglify-js": "^3.1.4"
             }
         },
-        "import-lazy": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-            "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
-            "dev": true
-        },
-        "import-local": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
-            "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+        "node_modules/har-schema": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+            "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
             "dev": true,
-            "requires": {
-                "pkg-dir": "^4.2.0",
-                "resolve-cwd": "^3.0.0"
-            },
-            "dependencies": {
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "pkg-dir": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-                    "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">=4"
             }
         },
-        "imurmurhash": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-            "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-            "dev": true
-        },
-        "indent-string": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
-            "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-            "dev": true
-        },
-        "indexof": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-            "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
-            "dev": true
-        },
-        "indx": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz",
-            "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=",
-            "dev": true
-        },
-        "infer-owner": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-            "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
-            "dev": true
-        },
-        "inflight": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-            "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-            "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
+        "node_modules/har-validator": {
+            "version": "5.1.5",
+            "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+            "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+            "deprecated": "this library is no longer supported",
+            "dev": true,
+            "dependencies": {
+                "ajv": "^6.12.3",
+                "har-schema": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "inherits": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        "node_modules/har-validator/node_modules/ajv": {
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
         },
-        "ini": {
-            "version": "1.3.8",
-            "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
-            "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+        "node_modules/har-validator/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
             "dev": true
         },
-        "inquirer": {
-            "version": "7.3.3",
-            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
-            "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+        "node_modules/hard-rejection": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+            "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
             "dev": true,
-            "requires": {
-                "ansi-escapes": "^4.2.1",
-                "chalk": "^4.1.0",
-                "cli-cursor": "^3.1.0",
-                "cli-width": "^3.0.0",
-                "external-editor": "^3.0.3",
-                "figures": "^3.0.0",
-                "lodash": "^4.17.19",
-                "mute-stream": "0.0.8",
-                "run-async": "^2.4.0",
-                "rxjs": "^6.6.0",
-                "string-width": "^4.1.0",
-                "strip-ansi": "^6.0.0",
-                "through": "^2.3.6"
+            "engines": {
+                "node": ">=6"
             }
         },
-        "inquirer-autocomplete-prompt": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz",
-            "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==",
-            "dev": true,
-            "requires": {
-                "ansi-escapes": "^4.3.1",
-                "chalk": "^4.0.0",
-                "figures": "^3.2.0",
-                "run-async": "^2.4.0",
-                "rxjs": "^6.6.2"
+        "node_modules/has": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+            "dependencies": {
+                "function-bind": "^1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.4.0"
             }
         },
-        "inquirer-fuzzy-path": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/inquirer-fuzzy-path/-/inquirer-fuzzy-path-2.3.0.tgz",
-            "integrity": "sha512-zfHC/97GSkxKKM7IctZM22x1sVi+FYBh9oaHTmI7Er/GKFpNykUgtviTmqqpiFQs5yJoSowxbT0PHy6N+H+QRg==",
+        "node_modules/has-ansi": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+            "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
             "dev": true,
-            "requires": {
-                "ansi-styles": "^3.2.1",
-                "fuzzy": "^0.1.3",
-                "inquirer": "^6.0.0",
-                "inquirer-autocomplete-prompt": "^1.0.2",
-                "strip-ansi": "^4.0.0"
-            },
             "dependencies": {
-                "ansi-escapes": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-                    "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-                    "dev": true
-                },
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "cli-cursor": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-                    "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-                    "dev": true,
-                    "requires": {
-                        "restore-cursor": "^2.0.0"
-                    }
-                },
-                "cli-width": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
-                    "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
-                    "dev": true
-                },
-                "figures": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-                    "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5"
-                    }
-                },
-                "inquirer": {
-                    "version": "6.5.2",
-                    "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
-                    "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-escapes": "^3.2.0",
-                        "chalk": "^2.4.2",
-                        "cli-cursor": "^2.1.0",
-                        "cli-width": "^2.0.0",
-                        "external-editor": "^3.0.3",
-                        "figures": "^2.0.0",
-                        "lodash": "^4.17.12",
-                        "mute-stream": "0.0.7",
-                        "run-async": "^2.2.0",
-                        "rxjs": "^6.4.0",
-                        "string-width": "^2.1.0",
-                        "strip-ansi": "^5.1.0",
-                        "through": "^2.3.6"
-                    },
-                    "dependencies": {
-                        "ansi-regex": {
-                            "version": "4.1.0",
-                            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                            "dev": true
-                        },
-                        "strip-ansi": {
-                            "version": "5.2.0",
-                            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                            "dev": true,
-                            "requires": {
-                                "ansi-regex": "^4.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "mimic-fn": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-                    "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-                    "dev": true
-                },
-                "mute-stream": {
-                    "version": "0.0.7",
-                    "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-                    "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-                    "dev": true
-                },
-                "onetime": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-                    "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-                    "dev": true,
-                    "requires": {
-                        "mimic-fn": "^1.0.0"
-                    }
-                },
-                "restore-cursor": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-                    "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-                    "dev": true,
-                    "requires": {
-                        "onetime": "^2.0.0",
-                        "signal-exit": "^3.0.2"
-                    }
-                },
-                "string-width": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-                    "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-                    "dev": true,
-                    "requires": {
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^4.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                }
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "internal-slot": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
-            "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
-            "requires": {
-                "get-intrinsic": "^1.1.0",
-                "has": "^1.0.3",
-                "side-channel": "^1.0.4"
+        "node_modules/has-ansi/node_modules/ansi-regex": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+            "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "interpret": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
-            "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
-            "dev": true
-        },
-        "invert-kv": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-            "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-            "dev": true
+        "node_modules/has-bigints": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+            "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "ip": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-            "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
-            "dev": true
+        "node_modules/has-color": {
+            "version": "0.1.7",
+            "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+            "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "ipaddr.js": {
-            "version": "1.9.1",
-            "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-            "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+        "node_modules/has-flag": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "is-absolute": {
+        "node_modules/has-property-descriptors": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
-            "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
-            "dev": true,
-            "requires": {
-                "is-relative": "^1.0.0",
-                "is-windows": "^1.0.1"
+            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+            "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+            "dependencies": {
+                "get-intrinsic": "^1.1.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "is-accessor-descriptor": {
-            "version": "0.1.6",
-            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-            "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-            "dev": true,
-            "requires": {
-                "kind-of": "^3.0.2"
+        "node_modules/has-proto": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+            "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+            "engines": {
+                "node": ">= 0.4"
             },
-            "dependencies": {
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "is-alphabetical": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
-            "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
-        },
-        "is-alphanumerical": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
-            "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
-            "requires": {
-                "is-alphabetical": "^1.0.0",
-                "is-decimal": "^1.0.0"
+        "node_modules/has-symbols": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+            "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "is-arrayish": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-            "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
-        },
-        "is-bigint": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-            "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-            "requires": {
-                "has-bigints": "^1.0.1"
+        "node_modules/has-tostringtag": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+            "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+            "dependencies": {
+                "has-symbols": "^1.0.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "is-binary-path": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-            "requires": {
-                "binary-extensions": "^2.0.0"
+        "node_modules/has-value": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+            "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+            "dependencies": {
+                "get-value": "^2.0.6",
+                "has-values": "^1.0.0",
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "is-boolean-object": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-            "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "has-tostringtag": "^1.0.0"
+        "node_modules/has-values": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+            "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+            "dependencies": {
+                "is-number": "^3.0.0",
+                "kind-of": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "is-buffer": {
+        "node_modules/has-values/node_modules/is-buffer": {
             "version": "1.1.6",
             "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-            "dev": true
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
         },
-        "is-callable": {
-            "version": "1.2.4",
-            "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
-            "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
+        "node_modules/has-values/node_modules/kind-of": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+            "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "is-ci": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-            "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+        "node_modules/hash-base": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+            "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
             "dev": true,
-            "requires": {
-                "ci-info": "^2.0.0"
+            "dependencies": {
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.6.0",
+                "safe-buffer": "^5.2.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "is-core-module": {
-            "version": "2.8.1",
-            "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
-            "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
-            "requires": {
-                "has": "^1.0.3"
+        "node_modules/hash.js": {
+            "version": "1.1.7",
+            "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+            "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "minimalistic-assert": "^1.0.1"
             }
         },
-        "is-css-color-hex": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/is-css-color-hex/-/is-css-color-hex-0.2.0.tgz",
-            "integrity": "sha1-NQ2Wu87JbfxyG8S6yzDpVhZ99h0=",
-            "dev": true
+        "node_modules/hermes-estree": {
+            "version": "0.8.0",
+            "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz",
+            "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==",
+            "peer": true
         },
-        "is-data-descriptor": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-            "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-            "dev": true,
-            "requires": {
-                "kind-of": "^3.0.2"
-            },
+        "node_modules/hermes-parser": {
+            "version": "0.8.0",
+            "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz",
+            "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==",
+            "peer": true,
             "dependencies": {
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
+                "hermes-estree": "0.8.0"
             }
         },
-        "is-date-object": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-            "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-            "requires": {
-                "has-tostringtag": "^1.0.0"
+        "node_modules/hermes-profile-transformer": {
+            "version": "0.0.6",
+            "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
+            "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
+            "peer": true,
+            "dependencies": {
+                "source-map": "^0.7.3"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "is-decimal": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
-            "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
+        "node_modules/hermes-profile-transformer/node_modules/source-map": {
+            "version": "0.7.4",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+            "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+            "peer": true,
+            "engines": {
+                "node": ">= 8"
+            }
         },
-        "is-descriptor": {
-            "version": "0.1.6",
-            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-            "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-            "dev": true,
-            "requires": {
-                "is-accessor-descriptor": "^0.1.6",
-                "is-data-descriptor": "^0.1.4",
-                "kind-of": "^5.0.0"
-            },
+        "node_modules/history": {
+            "version": "4.10.1",
+            "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+            "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
             "dependencies": {
-                "kind-of": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                    "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-                    "dev": true
-                }
+                "@babel/runtime": "^7.1.2",
+                "loose-envify": "^1.2.0",
+                "resolve-pathname": "^3.0.0",
+                "tiny-invariant": "^1.0.2",
+                "tiny-warning": "^1.0.0",
+                "value-equal": "^1.0.1"
             }
         },
-        "is-directory": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-            "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
-            "dev": true
-        },
-        "is-docker": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-            "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-            "dev": true
+        "node_modules/hmac-drbg": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+            "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+            "dev": true,
+            "dependencies": {
+                "hash.js": "^1.0.3",
+                "minimalistic-assert": "^1.0.0",
+                "minimalistic-crypto-utils": "^1.0.1"
+            }
         },
-        "is-extendable": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-            "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+        "node_modules/hoist-non-react-statics": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+            "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+            "dependencies": {
+                "react-is": "^16.7.0"
+            }
         },
-        "is-extglob": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-            "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+        "node_modules/homedir-polyfill": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+            "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+            "dependencies": {
+                "parse-passwd": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "is-finite": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
-            "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
-            "dev": true
+        "node_modules/hosted-git-info": {
+            "version": "2.8.9",
+            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+            "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
         },
-        "is-fullwidth-code-point": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-            "dev": true
+        "node_modules/hpack.js": {
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+            "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "obuf": "^1.0.0",
+                "readable-stream": "^2.0.1",
+                "wbuf": "^1.1.0"
+            }
         },
-        "is-generator-fn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
-            "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
-            "dev": true
+        "node_modules/hpack.js/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
         },
-        "is-glob": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-            "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-            "requires": {
-                "is-extglob": "^2.1.1"
+        "node_modules/hpack.js/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "is-hexadecimal": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
-            "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
+        "node_modules/hpack.js/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
         },
-        "is-hotkey": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.8.tgz",
-            "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ=="
+        "node_modules/hpack.js/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
         },
-        "is-installed-globally": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
-            "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
-            "dev": true,
-            "requires": {
-                "global-dirs": "^3.0.0",
-                "is-path-inside": "^3.0.2"
+        "node_modules/html-encoding-sniffer": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+            "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+            "dependencies": {
+                "whatwg-encoding": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=10"
             }
         },
-        "is-interactive": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
-            "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+        "node_modules/html-entities": {
+            "version": "2.3.3",
+            "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
+            "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==",
             "dev": true
         },
-        "is-module": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-            "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
-            "dev": true
+        "node_modules/html-tags": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+            "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "is-natural-number": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
-            "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
-            "dev": true
+        "node_modules/htmlparser2": {
+            "version": "3.10.1",
+            "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+            "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+            "dev": true,
+            "dependencies": {
+                "domelementtype": "^1.3.1",
+                "domhandler": "^2.3.0",
+                "domutils": "^1.5.1",
+                "entities": "^1.1.1",
+                "inherits": "^2.0.1",
+                "readable-stream": "^3.1.1"
+            }
         },
-        "is-negated-glob": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
-            "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
+        "node_modules/htmlparser2/node_modules/entities": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+            "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
             "dev": true
         },
-        "is-negative-zero": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-            "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
+        "node_modules/http-auth": {
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.2.4.tgz",
+            "integrity": "sha512-jeWAPP0UbI3dM6knyYbYbMvBoxwXGQp0eu70GGV9Ezo/pHmpv1dFLwM0CtaG+GFqUBkGZM/V8Jp/0gXFYwIOUQ==",
+            "dependencies": {
+                "apache-crypt": "^1.1.2",
+                "apache-md5": "^1.0.6",
+                "bcryptjs": "^2.3.0",
+                "uuid": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4.6.1"
+            }
         },
-        "is-npm": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
-            "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
-            "dev": true
+        "node_modules/http-deceiver": {
+            "version": "1.2.7",
+            "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+            "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
         },
-        "is-number": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+        "node_modules/http-errors": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+            "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+            "dependencies": {
+                "depd": "2.0.0",
+                "inherits": "2.0.4",
+                "setprototypeof": "1.2.0",
+                "statuses": "2.0.1",
+                "toidentifier": "1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
         },
-        "is-number-like": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
-            "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
-            "dev": true,
-            "requires": {
-                "lodash.isfinite": "^3.3.2"
+        "node_modules/http-proxy": {
+            "version": "1.18.1",
+            "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+            "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+            "dependencies": {
+                "eventemitter3": "^4.0.0",
+                "follow-redirects": "^1.0.0",
+                "requires-port": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=8.0.0"
             }
         },
-        "is-number-object": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
-            "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
-            "requires": {
-                "has-tostringtag": "^1.0.0"
+        "node_modules/http-proxy-agent": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+            "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+            "dependencies": {
+                "@tootallnate/once": "1",
+                "agent-base": "6",
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "is-obj": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-            "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-            "dev": true
+        "node_modules/http-proxy-middleware": {
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz",
+            "integrity": "sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw==",
+            "dependencies": {
+                "http-proxy": "^1.17.0",
+                "is-glob": "^4.0.1",
+                "lodash": "^4.17.14",
+                "micromatch": "^4.0.2"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
         },
-        "is-observable": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
-            "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+        "node_modules/http-signature": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+            "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
             "dev": true,
-            "requires": {
-                "symbol-observable": "^1.1.0"
+            "dependencies": {
+                "assert-plus": "^1.0.0",
+                "jsprim": "^1.2.2",
+                "sshpk": "^1.7.0"
+            },
+            "engines": {
+                "node": ">=0.8",
+                "npm": ">=1.3.7"
             }
         },
-        "is-path-cwd": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-            "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-            "dev": true
-        },
-        "is-path-inside": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-            "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+        "node_modules/https-browserify": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+            "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
             "dev": true
         },
-        "is-plain-obj": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
-            "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
-            "dev": true
+        "node_modules/https-proxy-agent": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+            "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+            "dependencies": {
+                "agent-base": "6",
+                "debug": "4"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
         },
-        "is-plain-object": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-            "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-            "requires": {
-                "isobject": "^3.0.1"
+        "node_modules/husky": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz",
+            "integrity": "sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==",
+            "dev": true,
+            "hasInstallScript": true,
+            "dependencies": {
+                "chalk": "^2.4.2",
+                "ci-info": "^2.0.0",
+                "cosmiconfig": "^5.2.1",
+                "execa": "^1.0.0",
+                "get-stdin": "^7.0.0",
+                "opencollective-postinstall": "^2.0.2",
+                "pkg-dir": "^4.2.0",
+                "please-upgrade-node": "^3.2.0",
+                "read-pkg": "^5.2.0",
+                "run-node": "^1.0.0",
+                "slash": "^3.0.0"
+            },
+            "bin": {
+                "husky-run": "run.js",
+                "husky-upgrade": "lib/upgrader/bin.js"
+            },
+            "engines": {
+                "node": ">=8.6.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/husky"
             }
         },
-        "is-potential-custom-element-name": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
-            "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
+        "node_modules/husky/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "is-promise": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-            "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
-            "dev": true
+        "node_modules/husky/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "is-regex": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-            "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "has-tostringtag": "^1.0.0"
+        "node_modules/husky/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "is-regexp": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
-            "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+        "node_modules/husky/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
             "dev": true
         },
-        "is-relative": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
-            "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+        "node_modules/husky/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
             "dev": true,
-            "requires": {
-                "is-unc-path": "^1.0.0"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "is-retry-allowed": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
-            "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg=="
-        },
-        "is-shared-array-buffer": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
-            "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA=="
+        "node_modules/husky/node_modules/pkg-dir": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+            "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+            "dev": true,
+            "dependencies": {
+                "find-up": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "is-stream": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-            "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-            "dev": true
+        "node_modules/husky/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "is-string": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-            "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-            "requires": {
-                "has-tostringtag": "^1.0.0"
+        "node_modules/husky/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "is-subset": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
-            "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY="
+        "node_modules/iconv-lite": {
+            "version": "0.6.3",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+            "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+            "devOptional": true,
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "is-symbol": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-            "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-            "requires": {
-                "has-symbols": "^1.0.2"
+        "node_modules/idb-keyval": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz",
+            "integrity": "sha512-yh8V7CnE6EQMu9YDwQXhRxwZh4nv+8xm/HV4ZqK4IiYFJBWYGjJuykADJbSP+F/GDXUBwCSSNn/14IpGL81TuA==",
+            "dependencies": {
+                "safari-14-idb-fix": "^3.0.0"
             }
         },
-        "is-typedarray": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-            "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-            "dev": true
+        "node_modules/ieee754": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+            "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
         },
-        "is-unc-path": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
-            "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+        "node_modules/ignore": {
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+            "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
             "dev": true,
-            "requires": {
-                "unc-path-regex": "^0.1.2"
+            "engines": {
+                "node": ">= 4"
             }
         },
-        "is-unicode-supported": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
-            "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+        "node_modules/ignore-by-default": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+            "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
             "dev": true
         },
-        "is-utf8": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-            "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-            "dev": true
+        "node_modules/ignored": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/ignored/-/ignored-2.0.4.tgz",
+            "integrity": "sha512-YJH9bOTmskmKEcTDrbMeeogMcxf8gCkzhk7hQPtSJ5Zmr82vHInrDp9HOTigMO0XcW6EmFHb4sNdZQrhH/r6kA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10"
+            }
         },
-        "is-valid-glob": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
-            "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
-            "dev": true
+        "node_modules/image-size": {
+            "version": "0.6.3",
+            "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
+            "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==",
+            "peer": true,
+            "bin": {
+                "image-size": "bin/image-size.js"
+            },
+            "engines": {
+                "node": ">=4.0"
+            }
         },
-        "is-weakref": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-            "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-            "requires": {
-                "call-bind": "^1.0.2"
+        "node_modules/immutable": {
+            "version": "3.8.2",
+            "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
+            "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "is-what": {
-            "version": "3.14.1",
-            "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
-            "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
-            "dev": true
+        "node_modules/import-fresh": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+            "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+            "dependencies": {
+                "parent-module": "^1.0.0",
+                "resolve-from": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "is-windows": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-            "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-            "dev": true
+        "node_modules/import-fresh/node_modules/resolve-from": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+            "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "is-wsl": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-            "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-            "dev": true
+        "node_modules/import-lazy": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+            "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "is-yarn-global": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
-            "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
-            "dev": true
+        "node_modules/imurmurhash": {
+            "version": "0.1.4",
+            "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+            "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+            "engines": {
+                "node": ">=0.8.19"
+            }
         },
-        "isarray": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-            "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        "node_modules/indent-string": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+            "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "isexe": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+        "node_modules/inflight": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+            "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+            "dependencies": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+            }
         },
-        "isobject": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-            "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        "node_modules/inherits": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
         },
-        "isstream": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-            "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+        "node_modules/inherits-ex": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/inherits-ex/-/inherits-ex-1.6.0.tgz",
+            "integrity": "sha512-67sANrSoIvMmYDy0qyjmM/PvFdgBmWZVQoPBsRpDuP4tmlylEX1KdGN1bHvReG3eHBdaHY7WlZsrqys4y/cLVA==",
             "dev": true
         },
-        "istanbul-lib-coverage": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
-            "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+        "node_modules/ini": {
+            "version": "1.3.8",
+            "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+            "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
             "dev": true
         },
-        "istanbul-lib-instrument": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz",
-            "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==",
+        "node_modules/inquirer": {
+            "version": "6.5.2",
+            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+            "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
             "dev": true,
-            "requires": {
-                "@babel/core": "^7.12.3",
-                "@babel/parser": "^7.14.7",
-                "@istanbuljs/schema": "^0.1.2",
-                "istanbul-lib-coverage": "^3.2.0",
-                "semver": "^6.3.0"
-            },
             "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+                "ansi-escapes": "^3.2.0",
+                "chalk": "^2.4.2",
+                "cli-cursor": "^2.1.0",
+                "cli-width": "^2.0.0",
+                "external-editor": "^3.0.3",
+                "figures": "^2.0.0",
+                "lodash": "^4.17.12",
+                "mute-stream": "0.0.7",
+                "run-async": "^2.2.0",
+                "rxjs": "^6.4.0",
+                "string-width": "^2.1.0",
+                "strip-ansi": "^5.1.0",
+                "through": "^2.3.6"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "istanbul-lib-report": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
-            "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+        "node_modules/inquirer-autocomplete-prompt": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz",
+            "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==",
             "dev": true,
-            "requires": {
-                "istanbul-lib-coverage": "^3.0.0",
-                "make-dir": "^3.0.0",
-                "supports-color": "^7.1.0"
-            },
             "dependencies": {
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "make-dir": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-                    "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-                    "dev": true,
-                    "requires": {
-                        "semver": "^6.0.0"
-                    }
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+                "ansi-escapes": "^4.3.1",
+                "chalk": "^4.0.0",
+                "figures": "^3.2.0",
+                "run-async": "^2.4.0",
+                "rxjs": "^6.6.2"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "peerDependencies": {
+                "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
             }
         },
-        "istanbul-lib-source-maps": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
-            "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+        "node_modules/inquirer-autocomplete-prompt/node_modules/ansi-escapes": {
+            "version": "4.3.2",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+            "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
             "dev": true,
-            "requires": {
-                "debug": "^4.1.1",
-                "istanbul-lib-coverage": "^3.0.0",
-                "source-map": "^0.6.1"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "type-fest": "^0.21.3"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "istanbul-reports": {
-            "version": "3.1.4",
-            "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
-            "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+        "node_modules/inquirer-autocomplete-prompt/node_modules/figures": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+            "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
             "dev": true,
-            "requires": {
-                "html-escaper": "^2.0.0",
-                "istanbul-lib-report": "^3.0.0"
-            }
-        },
-        "jed": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
-            "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ="
-        },
-        "jest": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz",
-            "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==",
-            "dev": true,
-            "requires": {
-                "@jest/core": "^26.6.3",
-                "import-local": "^3.0.2",
-                "jest-cli": "^26.6.3"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "6.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-                    "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^4.2.0",
-                        "strip-ansi": "^6.0.0",
-                        "wrap-ansi": "^6.2.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "jest-cli": {
-                    "version": "26.6.3",
-                    "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz",
-                    "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==",
-                    "dev": true,
-                    "requires": {
-                        "@jest/core": "^26.6.3",
-                        "@jest/test-result": "^26.6.2",
-                        "@jest/types": "^26.6.2",
-                        "chalk": "^4.0.0",
-                        "exit": "^0.1.2",
-                        "graceful-fs": "^4.2.4",
-                        "import-local": "^3.0.2",
-                        "is-ci": "^2.0.0",
-                        "jest-config": "^26.6.3",
-                        "jest-util": "^26.6.2",
-                        "jest-validate": "^26.6.2",
-                        "prompts": "^2.0.1",
-                        "yargs": "^15.4.1"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "wrap-ansi": {
-                    "version": "6.2.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-                    "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.0.0",
-                        "string-width": "^4.1.0",
-                        "strip-ansi": "^6.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-                    "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "15.4.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-                    "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-                    "dev": true,
-                    "requires": {
-                        "cliui": "^6.0.0",
-                        "decamelize": "^1.2.0",
-                        "find-up": "^4.1.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^4.2.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^18.1.2"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "18.1.3",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-                    "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "jest-changed-files": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz",
-            "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==",
+        "node_modules/inquirer-autocomplete-prompt/node_modules/type-fest": {
+            "version": "0.21.3",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+            "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "execa": "^4.0.0",
-                "throat": "^5.0.0"
-            },
-            "dependencies": {
-                "execa": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
-                    "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
-                    "dev": true,
-                    "requires": {
-                        "cross-spawn": "^7.0.0",
-                        "get-stream": "^5.0.0",
-                        "human-signals": "^1.1.1",
-                        "is-stream": "^2.0.0",
-                        "merge-stream": "^2.0.0",
-                        "npm-run-path": "^4.0.0",
-                        "onetime": "^5.1.0",
-                        "signal-exit": "^3.0.2",
-                        "strip-final-newline": "^2.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-                    "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-                    "dev": true,
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "is-stream": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-                    "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-                    "dev": true
-                },
-                "npm-run-path": {
-                    "version": "4.0.1",
-                    "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-                    "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-                    "dev": true,
-                    "requires": {
-                        "path-key": "^3.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "jest-config": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz",
-            "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==",
+        "node_modules/inquirer-fuzzy-path": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/inquirer-fuzzy-path/-/inquirer-fuzzy-path-2.3.0.tgz",
+            "integrity": "sha512-zfHC/97GSkxKKM7IctZM22x1sVi+FYBh9oaHTmI7Er/GKFpNykUgtviTmqqpiFQs5yJoSowxbT0PHy6N+H+QRg==",
             "dev": true,
-            "requires": {
-                "@babel/core": "^7.1.0",
-                "@jest/test-sequencer": "^26.6.3",
-                "@jest/types": "^26.6.2",
-                "babel-jest": "^26.6.3",
-                "chalk": "^4.0.0",
-                "deepmerge": "^4.2.2",
-                "glob": "^7.1.1",
-                "graceful-fs": "^4.2.4",
-                "jest-environment-jsdom": "^26.6.2",
-                "jest-environment-node": "^26.6.2",
-                "jest-get-type": "^26.3.0",
-                "jest-jasmine2": "^26.6.3",
-                "jest-regex-util": "^26.0.0",
-                "jest-resolve": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jest-validate": "^26.6.2",
-                "micromatch": "^4.0.2",
-                "pretty-format": "^26.6.2"
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "fuzzy": "^0.1.3",
+                "inquirer": "^6.0.0",
+                "inquirer-autocomplete-prompt": "^1.0.2",
+                "strip-ansi": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
             }
         },
-        "jest-diff": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
-            "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+        "node_modules/inquirer-fuzzy-path/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
             "dev": true,
-            "requires": {
-                "chalk": "^4.0.0",
-                "diff-sequences": "^26.6.2",
-                "jest-get-type": "^26.3.0",
-                "pretty-format": "^26.6.2"
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "jest-docblock": {
-            "version": "26.0.0",
-            "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz",
-            "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==",
+        "node_modules/inquirer-fuzzy-path/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
             "dev": true,
-            "requires": {
-                "detect-newline": "^3.0.0"
-            },
             "dependencies": {
-                "detect-newline": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
-                    "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
-                    "dev": true
-                }
+                "color-name": "1.1.3"
             }
         },
-        "jest-each": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz",
-            "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==",
+        "node_modules/inquirer-fuzzy-path/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/inquirer/node_modules/ansi-regex": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "chalk": "^4.0.0",
-                "jest-get-type": "^26.3.0",
-                "jest-util": "^26.6.2",
-                "pretty-format": "^26.6.2"
+            "engines": {
+                "node": ">=6"
             }
         },
-        "jest-environment-jsdom": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz",
-            "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==",
+        "node_modules/inquirer/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
             "dev": true,
-            "requires": {
-                "@jest/environment": "^26.6.2",
-                "@jest/fake-timers": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "jest-mock": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jsdom": "^16.4.0"
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "jest-environment-node": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz",
-            "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==",
+        "node_modules/inquirer/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
             "dev": true,
-            "requires": {
-                "@jest/environment": "^26.6.2",
-                "@jest/fake-timers": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "jest-mock": "^26.6.2",
-                "jest-util": "^26.6.2"
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "jest-get-type": {
-            "version": "26.3.0",
-            "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
-            "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
-            "dev": true
-        },
-        "jest-haste-map": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
-            "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
+        "node_modules/inquirer/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "@types/graceful-fs": "^4.1.2",
-                "@types/node": "*",
-                "anymatch": "^3.0.3",
-                "fb-watchman": "^2.0.0",
-                "fsevents": "^2.1.2",
-                "graceful-fs": "^4.2.4",
-                "jest-regex-util": "^26.0.0",
-                "jest-serializer": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jest-worker": "^26.6.2",
-                "micromatch": "^4.0.2",
-                "sane": "^4.0.3",
-                "walker": "^1.0.7"
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "jest-jasmine2": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz",
-            "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==",
-            "dev": true,
-            "requires": {
-                "@babel/traverse": "^7.1.0",
-                "@jest/environment": "^26.6.2",
-                "@jest/source-map": "^26.6.2",
-                "@jest/test-result": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "chalk": "^4.0.0",
-                "co": "^4.6.0",
-                "expect": "^26.6.2",
-                "is-generator-fn": "^2.0.0",
-                "jest-each": "^26.6.2",
-                "jest-matcher-utils": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-runtime": "^26.6.3",
-                "jest-snapshot": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "pretty-format": "^26.6.2",
-                "throat": "^5.0.0"
-            }
+        "node_modules/inquirer/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
         },
-        "jest-leak-detector": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz",
-            "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==",
+        "node_modules/inquirer/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
             "dev": true,
-            "requires": {
-                "jest-get-type": "^26.3.0",
-                "pretty-format": "^26.6.2"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "jest-matcher-utils": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
-            "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+        "node_modules/inquirer/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
             "dev": true,
-            "requires": {
-                "chalk": "^4.0.0",
-                "jest-diff": "^26.6.2",
-                "jest-get-type": "^26.3.0",
-                "pretty-format": "^26.6.2"
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "jest-message-util": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
-            "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+        "node_modules/inquirer/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
             "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "@jest/types": "^26.6.2",
-                "@types/stack-utils": "^2.0.0",
-                "chalk": "^4.0.0",
-                "graceful-fs": "^4.2.4",
-                "micromatch": "^4.0.2",
-                "pretty-format": "^26.6.2",
-                "slash": "^3.0.0",
-                "stack-utils": "^2.0.2"
+            "dependencies": {
+                "has-flag": "^3.0.0"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/internal-slot": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+            "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
             "dependencies": {
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                }
+                "get-intrinsic": "^1.2.0",
+                "has": "^1.0.3",
+                "side-channel": "^1.0.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
             }
         },
-        "jest-mock": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz",
-            "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==",
+        "node_modules/interpret": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+            "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "@types/node": "*"
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "jest-pnp-resolver": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
-            "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
-            "dev": true
-        },
-        "jest-regex-util": {
-            "version": "26.0.0",
-            "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
-            "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
-            "dev": true
-        },
-        "jest-resolve": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz",
-            "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==",
-            "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "chalk": "^4.0.0",
-                "graceful-fs": "^4.2.4",
-                "jest-pnp-resolver": "^1.2.2",
-                "jest-util": "^26.6.2",
-                "read-pkg-up": "^7.0.1",
-                "resolve": "^1.18.1",
-                "slash": "^3.0.0"
-            },
+        "node_modules/invariant": {
+            "version": "2.2.4",
+            "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+            "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+            "peer": true,
             "dependencies": {
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "parse-json": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-                    "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "error-ex": "^1.3.1",
-                        "json-parse-even-better-errors": "^2.3.0",
-                        "lines-and-columns": "^1.1.6"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "read-pkg": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-                    "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-                    "dev": true,
-                    "requires": {
-                        "@types/normalize-package-data": "^2.4.0",
-                        "normalize-package-data": "^2.5.0",
-                        "parse-json": "^5.0.0",
-                        "type-fest": "^0.6.0"
-                    },
-                    "dependencies": {
-                        "type-fest": {
-                            "version": "0.6.0",
-                            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-                            "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
-                            "dev": true
-                        }
-                    }
-                },
-                "read-pkg-up": {
-                    "version": "7.0.1",
-                    "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
-                    "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.1.0",
-                        "read-pkg": "^5.2.0",
-                        "type-fest": "^0.8.1"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "type-fest": {
-                    "version": "0.8.1",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-                    "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-                    "dev": true
-                }
+                "loose-envify": "^1.0.0"
             }
         },
-        "jest-resolve-dependencies": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz",
-            "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==",
+        "node_modules/invert-kv": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+            "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "jest-regex-util": "^26.0.0",
-                "jest-snapshot": "^26.6.2"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jest-runner": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz",
-            "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==",
-            "dev": true,
-            "requires": {
-                "@jest/console": "^26.6.2",
-                "@jest/environment": "^26.6.2",
-                "@jest/test-result": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "chalk": "^4.0.0",
-                "emittery": "^0.7.1",
-                "exit": "^0.1.2",
-                "graceful-fs": "^4.2.4",
-                "jest-config": "^26.6.3",
-                "jest-docblock": "^26.0.0",
-                "jest-haste-map": "^26.6.2",
-                "jest-leak-detector": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-resolve": "^26.6.2",
-                "jest-runtime": "^26.6.3",
-                "jest-util": "^26.6.2",
-                "jest-worker": "^26.6.2",
-                "source-map-support": "^0.5.6",
-                "throat": "^5.0.0"
-            }
+        "node_modules/ip": {
+            "version": "1.1.8",
+            "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+            "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+            "peer": true
         },
-        "jest-runtime": {
-            "version": "26.6.3",
-            "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz",
-            "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==",
-            "dev": true,
-            "requires": {
-                "@jest/console": "^26.6.2",
-                "@jest/environment": "^26.6.2",
-                "@jest/fake-timers": "^26.6.2",
-                "@jest/globals": "^26.6.2",
-                "@jest/source-map": "^26.6.2",
-                "@jest/test-result": "^26.6.2",
-                "@jest/transform": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/yargs": "^15.0.0",
-                "chalk": "^4.0.0",
-                "cjs-module-lexer": "^0.6.0",
-                "collect-v8-coverage": "^1.0.0",
-                "exit": "^0.1.2",
-                "glob": "^7.1.3",
-                "graceful-fs": "^4.2.4",
-                "jest-config": "^26.6.3",
-                "jest-haste-map": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-mock": "^26.6.2",
-                "jest-regex-util": "^26.0.0",
-                "jest-resolve": "^26.6.2",
-                "jest-snapshot": "^26.6.2",
-                "jest-util": "^26.6.2",
-                "jest-validate": "^26.6.2",
-                "slash": "^3.0.0",
-                "strip-bom": "^4.0.0",
-                "yargs": "^15.4.1"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "6.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-                    "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^4.2.0",
-                        "strip-ansi": "^6.0.0",
-                        "wrap-ansi": "^6.2.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "strip-bom": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
-                    "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
-                    "dev": true
-                },
-                "wrap-ansi": {
-                    "version": "6.2.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-                    "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.0.0",
-                        "string-width": "^4.1.0",
-                        "strip-ansi": "^6.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-                    "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "15.4.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-                    "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-                    "dev": true,
-                    "requires": {
-                        "cliui": "^6.0.0",
-                        "decamelize": "^1.2.0",
-                        "find-up": "^4.1.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^4.2.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^18.1.2"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "18.1.3",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-                    "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
+        "node_modules/ipaddr.js": {
+            "version": "1.9.1",
+            "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+            "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "jest-serializer": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
-            "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
+        "node_modules/is-absolute": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+            "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
             "dev": true,
-            "requires": {
-                "@types/node": "*",
-                "graceful-fs": "^4.2.4"
+            "dependencies": {
+                "is-relative": "^1.0.0",
+                "is-windows": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jest-snapshot": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz",
-            "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==",
-            "dev": true,
-            "requires": {
-                "@babel/types": "^7.0.0",
-                "@jest/types": "^26.6.2",
-                "@types/babel__traverse": "^7.0.4",
-                "@types/prettier": "^2.0.0",
-                "chalk": "^4.0.0",
-                "expect": "^26.6.2",
-                "graceful-fs": "^4.2.4",
-                "jest-diff": "^26.6.2",
-                "jest-get-type": "^26.3.0",
-                "jest-haste-map": "^26.6.2",
-                "jest-matcher-utils": "^26.6.2",
-                "jest-message-util": "^26.6.2",
-                "jest-resolve": "^26.6.2",
-                "natural-compare": "^1.4.0",
-                "pretty-format": "^26.6.2",
-                "semver": "^7.3.2"
+        "node_modules/is-accessor-descriptor": {
+            "version": "0.1.6",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+            "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jest-util": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
-            "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
-            "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "chalk": "^4.0.0",
-                "graceful-fs": "^4.2.4",
-                "is-ci": "^2.0.0",
-                "micromatch": "^4.0.2"
+        "node_modules/is-accessor-descriptor/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jest-validate": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
-            "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+        "node_modules/is-alphabetical": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+            "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "camelcase": "^6.0.0",
-                "chalk": "^4.0.0",
-                "jest-get-type": "^26.3.0",
-                "leven": "^3.1.0",
-                "pretty-format": "^26.6.2"
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "jest-watcher": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz",
-            "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==",
+        "node_modules/is-alphanumerical": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+            "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
             "dev": true,
-            "requires": {
-                "@jest/test-result": "^26.6.2",
-                "@jest/types": "^26.6.2",
-                "@types/node": "*",
-                "ansi-escapes": "^4.2.1",
-                "chalk": "^4.0.0",
-                "jest-util": "^26.6.2",
-                "string-length": "^4.0.1"
+            "dependencies": {
+                "is-alphabetical": "^1.0.0",
+                "is-decimal": "^1.0.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "jest-worker": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
-            "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+        "node_modules/is-arguments": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+            "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
             "dev": true,
-            "requires": {
-                "@types/node": "*",
-                "merge-stream": "^2.0.0",
-                "supports-color": "^7.0.0"
-            },
             "dependencies": {
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+                "call-bind": "^1.0.2",
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "js-base64": {
-            "version": "2.6.4",
-            "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
-            "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
-            "dev": true
-        },
-        "js-git": {
-            "version": "0.7.8",
-            "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz",
-            "integrity": "sha1-UvplWrYYd9bxB578ZTS1VPMeVEQ=",
-            "dev": true,
-            "requires": {
-                "bodec": "^0.1.0",
-                "culvert": "^0.1.2",
-                "git-sha1": "^0.1.2",
-                "pako": "^0.2.5"
+        "node_modules/is-array-buffer": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+            "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "get-intrinsic": "^1.2.0",
+                "is-typed-array": "^1.1.10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "js-tokens": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-            "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+        "node_modules/is-arrayish": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+            "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
         },
-        "js-yaml": {
-            "version": "3.14.1",
-            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-            "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-            "dev": true,
-            "requires": {
-                "argparse": "^1.0.7",
-                "esprima": "^4.0.0"
+        "node_modules/is-bigint": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+            "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+            "dependencies": {
+                "has-bigints": "^1.0.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "jsbn": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-            "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-            "dev": true
-        },
-        "jsdom": {
-            "version": "16.7.0",
-            "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
-            "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
-            "requires": {
-                "abab": "^2.0.5",
-                "acorn": "^8.2.4",
-                "acorn-globals": "^6.0.0",
-                "cssom": "^0.4.4",
-                "cssstyle": "^2.3.0",
-                "data-urls": "^2.0.0",
-                "decimal.js": "^10.2.1",
-                "domexception": "^2.0.1",
-                "escodegen": "^2.0.0",
-                "form-data": "^3.0.0",
-                "html-encoding-sniffer": "^2.0.1",
-                "http-proxy-agent": "^4.0.1",
-                "https-proxy-agent": "^5.0.0",
-                "is-potential-custom-element-name": "^1.0.1",
-                "nwsapi": "^2.2.0",
-                "parse5": "6.0.1",
-                "saxes": "^5.0.1",
-                "symbol-tree": "^3.2.4",
-                "tough-cookie": "^4.0.0",
-                "w3c-hr-time": "^1.0.2",
-                "w3c-xmlserializer": "^2.0.0",
-                "webidl-conversions": "^6.1.0",
-                "whatwg-encoding": "^1.0.5",
-                "whatwg-mimetype": "^2.3.0",
-                "whatwg-url": "^8.5.0",
-                "ws": "^7.4.6",
-                "xml-name-validator": "^3.0.0"
-            },
+        "node_modules/is-binary-path": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+            "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+            "dev": true,
             "dependencies": {
-                "ws": {
-                    "version": "7.5.7",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
-                    "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A=="
-                }
+                "binary-extensions": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jsesc": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-            "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
-        },
-        "json-buffer": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
-            "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
-            "dev": true
+        "node_modules/is-boolean-object": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+            "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "json-parse-better-errors": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-            "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+        "node_modules/is-buffer": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+            "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "json-parse-even-better-errors": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-            "dev": true
+        "node_modules/is-callable": {
+            "version": "1.2.7",
+            "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+            "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "json-schema": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
-            "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
-            "dev": true
+        "node_modules/is-ci": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+            "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+            "dev": true,
+            "dependencies": {
+                "ci-info": "^2.0.0"
+            },
+            "bin": {
+                "is-ci": "bin.js"
+            }
         },
-        "json-schema-traverse": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-            "dev": true
+        "node_modules/is-core-module": {
+            "version": "2.12.0",
+            "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
+            "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
+            "dependencies": {
+                "has": "^1.0.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "json-stable-stringify-without-jsonify": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-            "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
-            "dev": true
+        "node_modules/is-data-descriptor": {
+            "version": "0.1.4",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+            "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "json-stringify-safe": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-            "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-            "dev": true
+        "node_modules/is-data-descriptor/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
         },
-        "json5": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
-            "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
-            "dev": true,
-            "requires": {
-                "minimist": "^1.2.5"
+        "node_modules/is-data-descriptor/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "jsonfile": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-            "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-            "requires": {
-                "graceful-fs": "^4.1.6"
+        "node_modules/is-date-object": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+            "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+            "dependencies": {
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "jsprim": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
-            "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+        "node_modules/is-decimal": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+            "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
             "dev": true,
-            "requires": {
-                "assert-plus": "1.0.0",
-                "extsprintf": "1.3.0",
-                "json-schema": "0.4.0",
-                "verror": "1.10.0"
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "jsx-ast-utils": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz",
-            "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==",
-            "dev": true,
-            "requires": {
-                "array-includes": "^3.1.3",
-                "object.assign": "^4.1.2"
+        "node_modules/is-descriptor": {
+            "version": "0.1.6",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+            "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "just-debounce": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
-            "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
-            "dev": true
-        },
-        "keygrip": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
-            "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
-            "requires": {
-                "tsscmp": "1.0.6"
+        "node_modules/is-descriptor/node_modules/kind-of": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+            "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "keyv": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
-            "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
-            "dev": true,
-            "requires": {
-                "json-buffer": "3.0.0"
+        "node_modules/is-directory": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+            "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "kind-of": {
-            "version": "6.0.3",
-            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-            "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
-        },
-        "klaw-sync": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
-            "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
+        "node_modules/is-docker": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+            "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
             "dev": true,
-            "requires": {
-                "graceful-fs": "^4.1.11"
+            "bin": {
+                "is-docker": "cli.js"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "kleur": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-            "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
-            "dev": true
+        "node_modules/is-extendable": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+            "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "known-css-properties": {
-            "version": "0.21.0",
-            "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz",
-            "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==",
-            "dev": true
+        "node_modules/is-extglob": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+            "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "kuler": {
+        "node_modules/is-fullwidth-code-point": {
             "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
-            "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
-            "dev": true
-        },
-        "last-run": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
-            "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
-            "dev": true,
-            "requires": {
-                "default-resolution": "^2.0.0",
-                "es6-weak-map": "^2.0.1"
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+            "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "latest-version": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
-            "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+        "node_modules/is-generator-function": {
+            "version": "1.0.10",
+            "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+            "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
             "dev": true,
-            "requires": {
-                "package-json": "^6.3.0"
+            "dependencies": {
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "lazy": {
-            "version": "1.0.11",
-            "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz",
-            "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=",
-            "dev": true
+        "node_modules/is-glob": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+            "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+            "dependencies": {
+                "is-extglob": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "lazy-cache": {
+        "node_modules/is-hexadecimal": {
             "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
-            "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
-            "dev": true
-        },
-        "lazystream": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
-            "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+            "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+            "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
             "dev": true,
-            "requires": {
-                "readable-stream": "^2.0.5"
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "lcid": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-            "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-            "dev": true,
-            "requires": {
-                "invert-kv": "^1.0.0"
-            }
+        "node_modules/is-hotkey": {
+            "version": "0.1.8",
+            "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.8.tgz",
+            "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ=="
         },
-        "lead": {
+        "node_modules/is-interactive": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
-            "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
-            "dev": true,
-            "requires": {
-                "flush-write-stream": "^1.0.2"
+            "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+            "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+            "engines": {
+                "node": ">=8"
             }
         },
-        "less": {
-            "version": "3.13.1",
-            "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
-            "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+        "node_modules/is-nan": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+            "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
             "dev": true,
-            "requires": {
-                "copy-anything": "^2.0.1",
-                "errno": "^0.1.1",
-                "graceful-fs": "^4.1.2",
-                "image-size": "~0.5.0",
-                "make-dir": "^2.1.0",
-                "mime": "^1.4.1",
-                "native-request": "^1.0.5",
-                "source-map": "~0.6.0",
-                "tslib": "^1.10.0"
-            },
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true,
-                    "optional": true
-                },
-                "tslib": {
-                    "version": "1.14.1",
-                    "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-                    "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-                    "dev": true
-                }
+                "call-bind": "^1.0.0",
+                "define-properties": "^1.1.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "leven": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-            "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+        "node_modules/is-natural-number": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+            "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
             "dev": true
         },
-        "levn": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-            "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-            "requires": {
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2"
-            }
-        },
-        "liftoff": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
-            "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+        "node_modules/is-negated-glob": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+            "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",
             "dev": true,
-            "requires": {
-                "extend": "^3.0.0",
-                "findup-sync": "^3.0.0",
-                "fined": "^1.0.1",
-                "flagged-respawn": "^1.0.0",
-                "is-plain-object": "^2.0.4",
-                "object.map": "^1.0.0",
-                "rechoir": "^0.6.2",
-                "resolve": "^1.1.7"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "limiter": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
-            "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==",
-            "dev": true
-        },
-        "lines-and-columns": {
-            "version": "1.2.4",
-            "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-            "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-            "dev": true
+        "node_modules/is-negative-zero": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+            "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "linkify-it": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
-            "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
-            "dev": true,
-            "requires": {
-                "uc.micro": "^1.0.1"
+        "node_modules/is-number": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+            "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "lint-staged": {
-            "version": "9.5.0",
-            "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.5.0.tgz",
-            "integrity": "sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA==",
+        "node_modules/is-number-like": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
+            "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
             "dev": true,
-            "requires": {
-                "chalk": "^2.4.2",
-                "commander": "^2.20.0",
-                "cosmiconfig": "^5.2.1",
-                "debug": "^4.1.1",
-                "dedent": "^0.7.0",
-                "del": "^5.0.0",
-                "execa": "^2.0.3",
-                "listr": "^0.14.3",
-                "log-symbols": "^3.0.0",
-                "micromatch": "^4.0.2",
-                "normalize-path": "^3.0.0",
-                "please-upgrade-node": "^3.1.1",
-                "string-argv": "^0.3.0",
-                "stringify-object": "^3.3.0"
-            },
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-                    "dev": true
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "execa": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
-                    "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
-                    "dev": true,
-                    "requires": {
-                        "cross-spawn": "^7.0.0",
-                        "get-stream": "^5.0.0",
-                        "is-stream": "^2.0.0",
-                        "merge-stream": "^2.0.0",
-                        "npm-run-path": "^3.0.0",
-                        "onetime": "^5.1.0",
-                        "p-finally": "^2.0.0",
-                        "signal-exit": "^3.0.2",
-                        "strip-final-newline": "^2.0.0"
-                    }
-                },
-                "get-stream": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-                    "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-                    "dev": true,
-                    "requires": {
-                        "pump": "^3.0.0"
-                    }
-                },
-                "is-stream": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-                    "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-                    "dev": true
-                },
-                "log-symbols": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
-                    "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
-                    "dev": true,
-                    "requires": {
-                        "chalk": "^2.4.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "npm-run-path": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
-                    "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
-                    "dev": true,
-                    "requires": {
-                        "path-key": "^3.0.0"
-                    }
-                },
-                "p-finally": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
-                    "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
-                    "dev": true
-                }
+                "lodash.isfinite": "^3.3.2"
             }
         },
-        "listr": {
-            "version": "0.14.3",
-            "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
-            "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
-            "dev": true,
-            "requires": {
-                "@samverschueren/stream-to-observable": "^0.3.0",
-                "is-observable": "^1.1.0",
-                "is-promise": "^2.1.0",
-                "is-stream": "^1.1.0",
-                "listr-silent-renderer": "^1.1.1",
-                "listr-update-renderer": "^0.5.0",
-                "listr-verbose-renderer": "^0.5.0",
-                "p-map": "^2.0.0",
-                "rxjs": "^6.3.3"
-            },
+        "node_modules/is-number-object": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+            "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
             "dependencies": {
-                "p-map": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-                    "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-                    "dev": true
-                }
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "listr-silent-renderer": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
-            "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
-            "dev": true
+        "node_modules/is-number/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
         },
-        "listr-update-renderer": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
-            "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
-            "dev": true,
-            "requires": {
-                "chalk": "^1.1.3",
-                "cli-truncate": "^0.2.1",
-                "elegant-spinner": "^1.0.1",
-                "figures": "^1.7.0",
-                "indent-string": "^3.0.0",
-                "log-symbols": "^1.0.2",
-                "log-update": "^2.3.0",
-                "strip-ansi": "^3.0.1"
-            },
+        "node_modules/is-number/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
             "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-                    "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "figures": {
-                    "version": "1.7.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-                    "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5",
-                        "object-assign": "^4.1.0"
-                    }
-                },
-                "indent-string": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
-                    "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
-                    "dev": true
-                },
-                "log-symbols": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
-                    "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
-                    "dev": true,
-                    "requires": {
-                        "chalk": "^1.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
-                },
-                "supports-color": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-                    "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-                    "dev": true
-                }
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "listr-verbose-renderer": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
-            "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
+        "node_modules/is-obj": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+            "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
             "dev": true,
-            "requires": {
-                "chalk": "^2.4.1",
-                "cli-cursor": "^2.1.0",
-                "date-fns": "^1.27.2",
-                "figures": "^2.0.0"
-            },
-            "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "cli-cursor": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-                    "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-                    "dev": true,
-                    "requires": {
-                        "restore-cursor": "^2.0.0"
-                    }
-                },
-                "figures": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-                    "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-                    "dev": true,
-                    "requires": {
-                        "escape-string-regexp": "^1.0.5"
-                    }
-                },
-                "mimic-fn": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-                    "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-                    "dev": true
-                },
-                "onetime": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-                    "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-                    "dev": true,
-                    "requires": {
-                        "mimic-fn": "^1.0.0"
-                    }
-                },
-                "restore-cursor": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-                    "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-                    "dev": true,
-                    "requires": {
-                        "onetime": "^2.0.0",
-                        "signal-exit": "^3.0.2"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "load-json-file": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
-            "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "parse-json": "^4.0.0",
-                "pify": "^3.0.0",
-                "strip-bom": "^3.0.0"
-            },
+        "node_modules/is-observable": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
+            "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+            "dev": true,
             "dependencies": {
-                "pify": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-                    "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
-                }
+                "symbol-observable": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "load-script": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
-            "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ="
-        },
-        "loader-runner": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-            "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
-            "dev": true
-        },
-        "loader-utils": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-            "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
-            "dev": true,
-            "requires": {
-                "big.js": "^5.2.2",
-                "emojis-list": "^3.0.0",
-                "json5": "^1.0.1"
-            },
-            "dependencies": {
-                "json5": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-                    "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.0"
-                    }
-                }
+        "node_modules/is-path-cwd": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+            "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "localtunnel": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz",
-            "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==",
+        "node_modules/is-path-inside": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+            "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
             "dev": true,
-            "requires": {
-                "axios": "0.21.4",
-                "debug": "4.3.2",
-                "openurl": "1.1.1",
-                "yargs": "17.1.1"
-            },
-            "dependencies": {
-                "axios": {
-                    "version": "0.21.4",
-                    "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
-                    "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
-                    "dev": true,
-                    "requires": {
-                        "follow-redirects": "^1.14.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.3.2",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-                    "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "follow-redirects": {
-                    "version": "1.14.9",
-                    "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
-                    "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "17.1.1",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz",
-                    "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==",
-                    "dev": true,
-                    "requires": {
-                        "cliui": "^7.0.2",
-                        "escalade": "^3.1.1",
-                        "get-caller-file": "^2.0.5",
-                        "require-directory": "^2.1.1",
-                        "string-width": "^4.2.0",
-                        "y18n": "^5.0.5",
-                        "yargs-parser": "^20.2.2"
-                    }
-                }
+            "engines": {
+                "node": ">=8"
             }
         },
-        "locate-path": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-            "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-            "requires": {
-                "p-locate": "^3.0.0",
-                "path-exists": "^3.0.0"
+        "node_modules/is-plain-obj": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+            "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "lodash": {
-            "version": "4.17.21",
-            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        "node_modules/is-plain-object": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+            "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+            "dependencies": {
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "lodash._basecopy": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
-            "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
-            "dev": true
+        "node_modules/is-potential-custom-element-name": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+            "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
         },
-        "lodash._basetostring": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
-            "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+        "node_modules/is-promise": {
+            "version": "2.2.2",
+            "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+            "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
             "dev": true
         },
-        "lodash._basevalues": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
-            "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
-            "dev": true
+        "node_modules/is-regex": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+            "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "lodash._getnative": {
-            "version": "3.9.1",
-            "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
-            "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
-            "dev": true
+        "node_modules/is-regexp": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+            "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "lodash._isiterateecall": {
-            "version": "3.0.9",
-            "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
-            "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
-            "dev": true
+        "node_modules/is-relative": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+            "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+            "dev": true,
+            "dependencies": {
+                "is-unc-path": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "lodash._reescape": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
-            "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
-            "dev": true
+        "node_modules/is-retry-allowed": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
+            "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "lodash._reevaluate": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
-            "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
-            "dev": true
+        "node_modules/is-shared-array-buffer": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+            "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+            "dependencies": {
+                "call-bind": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "lodash._reinterpolate": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
-            "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
-            "dev": true
+        "node_modules/is-stream": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+            "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "lodash._root": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
-            "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
-            "dev": true
-        },
-        "lodash.clone": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
-            "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
-            "dev": true
-        },
-        "lodash.clonedeep": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-            "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
-            "dev": true
-        },
-        "lodash.curry": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
-            "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA="
-        },
-        "lodash.debounce": {
-            "version": "4.0.8",
-            "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-            "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
-        },
-        "lodash.defaults": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-            "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
-            "dev": true
-        },
-        "lodash.difference": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
-            "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
-            "dev": true
-        },
-        "lodash.escape": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
-            "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg="
-        },
-        "lodash.fill": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.fill/-/lodash.fill-3.4.0.tgz",
-            "integrity": "sha1-o8dK5kDQU63w3CB5+HIHiOi/74U=",
-            "dev": true
-        },
-        "lodash.flatten": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-            "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
-            "dev": true
-        },
-        "lodash.flattendeep": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
-            "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI="
-        },
-        "lodash.flow": {
-            "version": "3.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
-            "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o="
-        },
-        "lodash.isarguments": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
-            "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
-            "dev": true
-        },
-        "lodash.isarray": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
-            "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
-            "dev": true
+        "node_modules/is-string": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+            "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+            "dependencies": {
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "lodash.isequal": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-            "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+        "node_modules/is-symbol": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+            "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+            "dependencies": {
+                "has-symbols": "^1.0.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "lodash.isfinite": {
-            "version": "3.3.2",
-            "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
-            "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
-            "dev": true
+        "node_modules/is-typed-array": {
+            "version": "1.1.10",
+            "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+            "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+            "dependencies": {
+                "available-typed-arrays": "^1.0.5",
+                "call-bind": "^1.0.2",
+                "for-each": "^0.3.3",
+                "gopd": "^1.0.1",
+                "has-tostringtag": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
         },
-        "lodash.isplainobject": {
-            "version": "4.0.6",
-            "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-            "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+        "node_modules/is-typedarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+            "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
             "dev": true
         },
-        "lodash.keys": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
-            "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+        "node_modules/is-unc-path": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+            "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
             "dev": true,
-            "requires": {
-                "lodash._getnative": "^3.0.0",
-                "lodash.isarguments": "^3.0.0",
-                "lodash.isarray": "^3.0.0"
+            "dependencies": {
+                "unc-path-regex": "^0.1.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "lodash.merge": {
-            "version": "4.6.2",
-            "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-            "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-            "dev": true
-        },
-        "lodash.partialright": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz",
-            "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=",
-            "dev": true
-        },
-        "lodash.pick": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
-            "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
-            "dev": true
-        },
-        "lodash.restparam": {
-            "version": "3.6.1",
-            "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
-            "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
-            "dev": true
+        "node_modules/is-unicode-supported": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+            "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "lodash.round": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/lodash.round/-/lodash.round-4.0.4.tgz",
-            "integrity": "sha1-EBtrpcbOzJmPKrvoC2Apr/0l0mI=",
+        "node_modules/is-utf8": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+            "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
             "dev": true
         },
-        "lodash.template": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
-            "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
+        "node_modules/is-valid-glob": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+            "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",
             "dev": true,
-            "requires": {
-                "lodash._reinterpolate": "^3.0.0",
-                "lodash.templatesettings": "^4.0.0"
-            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-weakref": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+            "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
             "dependencies": {
-                "lodash.templatesettings": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
-                    "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
-                    "dev": true,
-                    "requires": {
-                        "lodash._reinterpolate": "^3.0.0"
-                    }
-                }
+                "call-bind": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "lodash.templatesettings": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
-            "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+        "node_modules/is-windows": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+            "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-wsl": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+            "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
             "dev": true,
-            "requires": {
-                "lodash._reinterpolate": "^3.0.0",
-                "lodash.escape": "^3.0.0"
-            },
             "dependencies": {
-                "lodash.escape": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
-                    "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
-                    "dev": true,
-                    "requires": {
-                        "lodash._root": "^3.0.0"
-                    }
-                }
+                "is-docker": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "lodash.truncate": {
-            "version": "4.4.2",
-            "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
-            "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
-            "dev": true
-        },
-        "lodash.union": {
-            "version": "4.6.0",
-            "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
-            "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
-            "dev": true
+        "node_modules/isarray": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
         },
-        "lodash.uniq": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-            "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
-            "dev": true
+        "node_modules/isexe": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+            "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
         },
-        "lodash.zipobject": {
-            "version": "4.1.3",
-            "resolved": "https://registry.npmjs.org/lodash.zipobject/-/lodash.zipobject-4.1.3.tgz",
-            "integrity": "sha1-s5n1q6j/YqdG9peb8gshT5ZNvvg=",
-            "dev": true
+        "node_modules/isobject": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+            "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "log-driver": {
-            "version": "1.2.7",
-            "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
-            "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
+        "node_modules/isstream": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+            "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
             "dev": true
         },
-        "log-symbols": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
-            "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+        "node_modules/istanbul-lib-coverage": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+            "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
             "dev": true,
-            "requires": {
-                "chalk": "^4.1.0",
-                "is-unicode-supported": "^0.1.0"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "log-update": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
-            "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
+        "node_modules/istanbul-lib-instrument": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+            "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
             "dev": true,
-            "requires": {
-                "ansi-escapes": "^3.0.0",
-                "cli-cursor": "^2.0.0",
-                "wrap-ansi": "^3.0.1"
-            },
             "dependencies": {
-                "ansi-escapes": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-                    "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-                    "dev": true
-                },
-                "ansi-regex": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-                    "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-                    "dev": true
-                },
-                "cli-cursor": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-                    "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-                    "dev": true,
-                    "requires": {
-                        "restore-cursor": "^2.0.0"
-                    }
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "mimic-fn": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-                    "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-                    "dev": true
-                },
-                "onetime": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-                    "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-                    "dev": true,
-                    "requires": {
-                        "mimic-fn": "^1.0.0"
-                    }
-                },
-                "restore-cursor": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-                    "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-                    "dev": true,
-                    "requires": {
-                        "onetime": "^2.0.0",
-                        "signal-exit": "^3.0.2"
-                    }
-                },
-                "string-width": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-                    "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-                    "dev": true,
-                    "requires": {
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^4.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                    "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^3.0.0"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
-                    "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^2.1.1",
-                        "strip-ansi": "^4.0.0"
-                    }
-                }
+                "@babel/core": "^7.12.3",
+                "@babel/parser": "^7.14.7",
+                "@istanbuljs/schema": "^0.1.2",
+                "istanbul-lib-coverage": "^3.2.0",
+                "semver": "^6.3.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "logform": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz",
-            "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==",
+        "node_modules/istanbul-lib-instrument/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
             "dev": true,
-            "requires": {
-                "@colors/colors": "1.5.0",
-                "fecha": "^4.2.0",
-                "ms": "^2.1.1",
-                "safe-stable-stringify": "^2.3.1",
-                "triple-beam": "^1.3.0"
-            },
-            "dependencies": {
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                    "dev": true
-                }
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "longest": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-            "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-            "dev": true
-        },
-        "longest-streak": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
-            "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
-            "dev": true
-        },
-        "loose-envify": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-            "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-            "requires": {
-                "js-tokens": "^3.0.0 || ^4.0.0"
+        "node_modules/its-fine": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.1.tgz",
+            "integrity": "sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==",
+            "peer": true,
+            "dependencies": {
+                "@types/react-reconciler": "^0.28.0"
+            },
+            "peerDependencies": {
+                "react": ">=18.0"
             }
         },
-        "loud-rejection": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-            "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-            "dev": true,
-            "requires": {
-                "currently-unhandled": "^0.4.1",
-                "signal-exit": "^3.0.0"
+        "node_modules/its-fine/node_modules/@types/react-reconciler": {
+            "version": "0.28.2",
+            "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.2.tgz",
+            "integrity": "sha512-8tu6lHzEgYPlfDf/J6GOQdIc+gs+S2yAqlby3zTsB3SP2svlqTYe5fwZNtZyfactP74ShooP2vvi1BOp9ZemWw==",
+            "peer": true,
+            "dependencies": {
+                "@types/react": "*"
             }
         },
-        "lowercase-keys": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-            "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-            "dev": true
+        "node_modules/jed": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
+            "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA=="
         },
-        "lowlight": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.11.0.tgz",
-            "integrity": "sha512-xrGGN6XLL7MbTMdPD6NfWPwY43SNkjf/d0mecSx/CW36fUZTjRHEq0/Cdug3TWKtRXLWi7iMl1eP0olYxj/a4A==",
-            "requires": {
-                "fault": "^1.0.2",
-                "highlight.js": "~9.13.0"
-            },
+        "node_modules/jest-environment-node": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
+            "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+            "peer": true,
             "dependencies": {
-                "highlight.js": {
-                    "version": "9.13.1",
-                    "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz",
-                    "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A=="
-                }
-            }
-        },
-        "lru-cache": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-            "requires": {
-                "yallist": "^4.0.0"
+                "@jest/environment": "^29.5.0",
+                "@jest/fake-timers": "^29.5.0",
+                "@jest/types": "^29.5.0",
+                "@types/node": "*",
+                "jest-mock": "^29.5.0",
+                "jest-util": "^29.5.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "lru-queue": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
-            "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
-            "dev": true,
-            "requires": {
-                "es5-ext": "~0.10.2"
+        "node_modules/jest-environment-node/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
+            "dependencies": {
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "lunr": {
-            "version": "2.3.9",
-            "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
-            "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="
-        },
-        "magic-string": {
-            "version": "0.25.7",
-            "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-            "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-            "requires": {
-                "sourcemap-codec": "^1.4.4"
+        "node_modules/jest-environment-node/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
+            "dependencies": {
+                "@types/yargs-parser": "*"
             }
         },
-        "make-dir": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-            "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-            "requires": {
-                "pify": "^4.0.1",
-                "semver": "^5.6.0"
+        "node_modules/jest-environment-node/node_modules/ci-info": {
+            "version": "3.8.0",
+            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+            "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/sibiraj-s"
+                }
+            ],
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/jest-environment-node/node_modules/jest-util": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+            "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^29.5.0",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "graceful-fs": "^4.2.9",
+                "picomatch": "^2.2.3"
             },
-            "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                }
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "make-iterator": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
-            "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
-            "dev": true,
-            "requires": {
-                "kind-of": "^6.0.2"
+        "node_modules/jest-get-type": {
+            "version": "26.3.0",
+            "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
+            "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+            "peer": true,
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "makeerror": {
-            "version": "1.0.12",
-            "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
-            "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+        "node_modules/jest-haste-map": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz",
+            "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==",
             "dev": true,
-            "requires": {
-                "tmpl": "1.0.5"
-            }
-        },
-        "map-cache": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-            "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-            "dev": true
-        },
-        "map-obj": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-            "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-            "dev": true
+            "dependencies": {
+                "@jest/types": "^26.6.2",
+                "@types/graceful-fs": "^4.1.2",
+                "@types/node": "*",
+                "anymatch": "^3.0.3",
+                "fb-watchman": "^2.0.0",
+                "graceful-fs": "^4.2.4",
+                "jest-regex-util": "^26.0.0",
+                "jest-serializer": "^26.6.2",
+                "jest-util": "^26.6.2",
+                "jest-worker": "^26.6.2",
+                "micromatch": "^4.0.2",
+                "sane": "^4.0.3",
+                "walker": "^1.0.7"
+            },
+            "engines": {
+                "node": ">= 10.14.2"
+            },
+            "optionalDependencies": {
+                "fsevents": "^2.1.2"
+            }
         },
-        "map-visit": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-            "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+        "node_modules/jest-haste-map/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
             "dev": true,
-            "requires": {
-                "object-visit": "^1.0.0"
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
             }
         },
-        "markdown-it": {
-            "version": "11.0.1",
-            "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.1.tgz",
-            "integrity": "sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==",
-            "dev": true,
-            "requires": {
-                "argparse": "^1.0.7",
-                "entities": "~2.0.0",
-                "linkify-it": "^3.0.1",
-                "mdurl": "^1.0.1",
-                "uc.micro": "^1.0.5"
-            },
+        "node_modules/jest-message-util": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
+            "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+            "peer": true,
             "dependencies": {
-                "entities": {
-                    "version": "2.0.3",
-                    "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
-                    "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
-                    "dev": true
-                }
+                "@babel/code-frame": "^7.12.13",
+                "@jest/types": "^29.5.0",
+                "@types/stack-utils": "^2.0.0",
+                "chalk": "^4.0.0",
+                "graceful-fs": "^4.2.9",
+                "micromatch": "^4.0.4",
+                "pretty-format": "^29.5.0",
+                "slash": "^3.0.0",
+                "stack-utils": "^2.0.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "marked": {
-            "version": "0.8.2",
-            "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz",
-            "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw=="
-        },
-        "matchdep": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
-            "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
-            "dev": true,
-            "requires": {
-                "findup-sync": "^2.0.0",
-                "micromatch": "^3.0.4",
-                "resolve": "^1.4.0",
-                "stack-trace": "0.0.10"
-            },
+        "node_modules/jest-message-util/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
             "dependencies": {
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "findup-sync": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-                    "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
-                    "dev": true,
-                    "requires": {
-                        "detect-file": "^1.0.0",
-                        "is-glob": "^3.1.0",
-                        "micromatch": "^3.0.4",
-                        "resolve-dir": "^1.0.1"
-                    }
-                },
-                "is-glob": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                    "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                    "dev": true,
-                    "requires": {
-                        "is-extglob": "^2.1.0"
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "mathml-tag-names": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
-            "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
-            "dev": true
-        },
-        "md5.js": {
-            "version": "1.3.5",
-            "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-            "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-            "dev": true,
-            "requires": {
-                "hash-base": "^3.0.0",
-                "inherits": "^2.0.1",
-                "safe-buffer": "^5.1.2"
+        "node_modules/jest-message-util/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
+            "dependencies": {
+                "@types/yargs-parser": "*"
             }
         },
-        "mdast-util-from-markdown": {
-            "version": "0.8.5",
-            "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
-            "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
-            "dev": true,
-            "requires": {
-                "@types/mdast": "^3.0.0",
-                "mdast-util-to-string": "^2.0.0",
-                "micromark": "~2.11.0",
-                "parse-entities": "^2.0.0",
-                "unist-util-stringify-position": "^2.0.0"
+        "node_modules/jest-message-util/node_modules/ansi-styles": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+            "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+            "peer": true,
+            "engines": {
+                "node": ">=10"
             },
-            "dependencies": {
-                "parse-entities": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
-                    "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
-                    "dev": true,
-                    "requires": {
-                        "character-entities": "^1.0.0",
-                        "character-entities-legacy": "^1.0.0",
-                        "character-reference-invalid": "^1.0.0",
-                        "is-alphanumerical": "^1.0.0",
-                        "is-decimal": "^1.0.0",
-                        "is-hexadecimal": "^1.0.0"
-                    }
-                }
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
-        "mdast-util-to-markdown": {
-            "version": "0.6.5",
-            "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
-            "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
-            "dev": true,
-            "requires": {
-                "@types/unist": "^2.0.0",
-                "longest-streak": "^2.0.0",
-                "mdast-util-to-string": "^2.0.0",
-                "parse-entities": "^2.0.0",
-                "repeat-string": "^1.0.0",
-                "zwitch": "^1.0.0"
-            },
+        "node_modules/jest-message-util/node_modules/pretty-format": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+            "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+            "peer": true,
             "dependencies": {
-                "parse-entities": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
-                    "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
-                    "dev": true,
-                    "requires": {
-                        "character-entities": "^1.0.0",
-                        "character-entities-legacy": "^1.0.0",
-                        "character-reference-invalid": "^1.0.0",
-                        "is-alphanumerical": "^1.0.0",
-                        "is-decimal": "^1.0.0",
-                        "is-hexadecimal": "^1.0.0"
-                    }
-                }
+                "@jest/schemas": "^29.4.3",
+                "ansi-styles": "^5.0.0",
+                "react-is": "^18.0.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
-        "mdast-util-to-string": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
-            "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
-            "dev": true
-        },
-        "mdurl": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
-            "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
-            "dev": true
+        "node_modules/jest-message-util/node_modules/react-is": {
+            "version": "18.2.0",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+            "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+            "peer": true
         },
-        "media-typer": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-            "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+        "node_modules/jest-message-util/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "memoize-one": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
-            "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
+        "node_modules/jest-mock": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
+            "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^29.5.0",
+                "@types/node": "*",
+                "jest-util": "^29.5.0"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
         },
-        "memoizee": {
-            "version": "0.4.15",
-            "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
-            "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
-            "dev": true,
-            "requires": {
-                "d": "^1.0.1",
-                "es5-ext": "^0.10.53",
-                "es6-weak-map": "^2.0.3",
-                "event-emitter": "^0.3.5",
-                "is-promise": "^2.2.2",
-                "lru-queue": "^0.1.0",
-                "next-tick": "^1.1.0",
-                "timers-ext": "^0.1.7"
+        "node_modules/jest-mock/node_modules/@jest/types": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+            "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+            "peer": true,
+            "dependencies": {
+                "@jest/schemas": "^29.4.3",
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^17.0.8",
+                "chalk": "^4.0.0"
             },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
+        },
+        "node_modules/jest-mock/node_modules/@types/yargs": {
+            "version": "17.0.24",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+            "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+            "peer": true,
             "dependencies": {
-                "next-tick": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-                    "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-                    "dev": true
-                }
+                "@types/yargs-parser": "*"
             }
         },
-        "memory-cache": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
-            "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo="
+        "node_modules/jest-mock/node_modules/ci-info": {
+            "version": "3.8.0",
+            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+            "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/sibiraj-s"
+                }
+            ],
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/jest-mock/node_modules/jest-util": {
+            "version": "29.5.0",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+            "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^29.5.0",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "graceful-fs": "^4.2.9",
+                "picomatch": "^2.2.3"
+            },
+            "engines": {
+                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+            }
         },
-        "memory-fs": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-            "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+        "node_modules/jest-regex-util": {
+            "version": "26.0.0",
+            "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
+            "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
             "dev": true,
-            "requires": {
-                "errno": "^0.1.3",
-                "readable-stream": "^2.0.1"
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "memorystream": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
-            "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI="
-        },
-        "meow": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-            "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-            "dev": true,
-            "requires": {
-                "camelcase-keys": "^2.0.0",
-                "decamelize": "^1.1.2",
-                "loud-rejection": "^1.0.0",
-                "map-obj": "^1.0.1",
-                "minimist": "^1.1.3",
-                "normalize-package-data": "^2.3.4",
-                "object-assign": "^4.0.1",
-                "read-pkg-up": "^1.0.1",
-                "redent": "^1.0.0",
-                "trim-newlines": "^1.0.0"
-            },
+        "node_modules/jest-serializer": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz",
+            "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==",
+            "dev": true,
             "dependencies": {
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                }
+                "@types/node": "*",
+                "graceful-fs": "^4.2.4"
+            },
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "merge-descriptors": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-            "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
-        },
-        "merge-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-            "dev": true
-        },
-        "merge2": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-            "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
-        },
-        "methods": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-            "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
-        },
-        "micromark": {
-            "version": "2.11.4",
-            "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
-            "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
+        "node_modules/jest-util": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
+            "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
             "dev": true,
-            "requires": {
-                "debug": "^4.0.0",
-                "parse-entities": "^2.0.0"
+            "dependencies": {
+                "@jest/types": "^26.6.2",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "graceful-fs": "^4.2.4",
+                "is-ci": "^2.0.0",
+                "micromatch": "^4.0.2"
             },
+            "engines": {
+                "node": ">= 10.14.2"
+            }
+        },
+        "node_modules/jest-validate": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
+            "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+            "peer": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "parse-entities": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
-                    "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
-                    "dev": true,
-                    "requires": {
-                        "character-entities": "^1.0.0",
-                        "character-entities-legacy": "^1.0.0",
-                        "character-reference-invalid": "^1.0.0",
-                        "is-alphanumerical": "^1.0.0",
-                        "is-decimal": "^1.0.0",
-                        "is-hexadecimal": "^1.0.0"
-                    }
-                }
+                "@jest/types": "^26.6.2",
+                "camelcase": "^6.0.0",
+                "chalk": "^4.0.0",
+                "jest-get-type": "^26.3.0",
+                "leven": "^3.1.0",
+                "pretty-format": "^26.6.2"
+            },
+            "engines": {
+                "node": ">= 10.14.2"
             }
         },
-        "micromatch": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
-            "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
-            "requires": {
-                "braces": "^3.0.1",
-                "picomatch": "^2.2.3"
+        "node_modules/jest-validate/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+            "peer": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "miller-rabin": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-            "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+        "node_modules/jest-worker": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+            "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
             "dev": true,
-            "requires": {
-                "bn.js": "^4.0.0",
-                "brorand": "^1.0.1"
-            },
             "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
+                "@types/node": "*",
+                "merge-stream": "^2.0.0",
+                "supports-color": "^7.0.0"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
             }
         },
-        "mime": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+        "node_modules/joi": {
+            "version": "17.9.2",
+            "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz",
+            "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==",
+            "peer": true,
+            "dependencies": {
+                "@hapi/hoek": "^9.0.0",
+                "@hapi/topo": "^5.0.0",
+                "@sideway/address": "^4.1.3",
+                "@sideway/formula": "^3.0.1",
+                "@sideway/pinpoint": "^2.0.0"
+            }
         },
-        "mime-db": {
-            "version": "1.51.0",
-            "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
-            "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
+        "node_modules/js-tokens": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+            "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
         },
-        "mime-types": {
-            "version": "2.1.34",
-            "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
-            "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
-            "requires": {
-                "mime-db": "1.51.0"
+        "node_modules/js-yaml": {
+            "version": "3.14.1",
+            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+            "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+            "dependencies": {
+                "argparse": "^1.0.7",
+                "esprima": "^4.0.0"
+            },
+            "bin": {
+                "js-yaml": "bin/js-yaml.js"
             }
         },
-        "mimic-fn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-            "dev": true
-        },
-        "mimic-response": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-            "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
-            "dev": true
-        },
-        "min-indent": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
-            "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
-            "dev": true
-        },
-        "mini-create-react-context": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
-            "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
-            "requires": {
-                "@babel/runtime": "^7.12.1",
-                "tiny-warning": "^1.0.3"
+        "node_modules/jsbn": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+            "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+            "dev": true
+        },
+        "node_modules/jsc-android": {
+            "version": "250231.0.0",
+            "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz",
+            "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==",
+            "peer": true
+        },
+        "node_modules/jscodeshift": {
+            "version": "0.13.1",
+            "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz",
+            "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.13.16",
+                "@babel/parser": "^7.13.16",
+                "@babel/plugin-proposal-class-properties": "^7.13.0",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
+                "@babel/plugin-proposal-optional-chaining": "^7.13.12",
+                "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+                "@babel/preset-flow": "^7.13.13",
+                "@babel/preset-typescript": "^7.13.0",
+                "@babel/register": "^7.13.16",
+                "babel-core": "^7.0.0-bridge.0",
+                "chalk": "^4.1.2",
+                "flow-parser": "0.*",
+                "graceful-fs": "^4.2.4",
+                "micromatch": "^3.1.10",
+                "neo-async": "^2.5.0",
+                "node-dir": "^0.1.17",
+                "recast": "^0.20.4",
+                "temp": "^0.8.4",
+                "write-file-atomic": "^2.3.0"
+            },
+            "bin": {
+                "jscodeshift": "bin/jscodeshift.js"
+            },
+            "peerDependencies": {
+                "@babel/preset-env": "^7.1.6"
             }
         },
-        "minimalistic-assert": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-            "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-            "dev": true
-        },
-        "minimalistic-crypto-utils": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-            "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
-            "dev": true
-        },
-        "minimatch": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-            "requires": {
-                "brace-expansion": "^1.1.7"
+        "node_modules/jscodeshift/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "peer": true,
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minimist": {
-            "version": "1.2.5",
-            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-            "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        },
-        "minimist-options": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
-            "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
-            "dev": true,
-            "requires": {
-                "arrify": "^1.0.1",
-                "is-plain-obj": "^1.1.0",
-                "kind-of": "^6.0.3"
+        "node_modules/jscodeshift/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "peer": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/jscodeshift/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "peer": true,
             "dependencies": {
-                "is-plain-obj": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-                    "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
-                    "dev": true
-                }
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minipass": {
-            "version": "3.1.6",
-            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
-            "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
-            "dev": true,
-            "requires": {
-                "yallist": "^4.0.0"
+        "node_modules/jscodeshift/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "peer": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minipass-collect": {
+        "node_modules/jscodeshift/node_modules/is-descriptor": {
             "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
-            "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
-            "dev": true,
-            "requires": {
-                "minipass": "^3.0.0"
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "peer": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minipass-flush": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
-            "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
-            "dev": true,
-            "requires": {
-                "minipass": "^3.0.0"
+        "node_modules/jscodeshift/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "peer": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minipass-pipeline": {
-            "version": "1.2.4",
-            "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
-            "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
-            "dev": true,
-            "requires": {
-                "minipass": "^3.0.0"
+        "node_modules/jscodeshift/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "peer": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "minizlib": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-            "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-            "dev": true,
-            "requires": {
-                "minipass": "^3.0.0",
-                "yallist": "^4.0.0"
+        "node_modules/jscodeshift/node_modules/rimraf": {
+            "version": "2.6.3",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+            "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+            "peer": true,
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
             }
         },
-        "mississippi": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-            "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-            "dev": true,
-            "requires": {
-                "concat-stream": "^1.5.0",
-                "duplexify": "^3.4.2",
-                "end-of-stream": "^1.1.0",
-                "flush-write-stream": "^1.0.0",
-                "from2": "^2.1.0",
-                "parallel-transform": "^1.1.0",
-                "pump": "^3.0.0",
-                "pumpify": "^1.3.3",
-                "stream-each": "^1.1.0",
-                "through2": "^2.0.0"
+        "node_modules/jscodeshift/node_modules/temp": {
+            "version": "0.8.4",
+            "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
+            "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
+            "peer": true,
+            "dependencies": {
+                "rimraf": "~2.6.2"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "mitt": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz",
-            "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==",
-            "dev": true
-        },
-        "mixin-deep": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-            "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-            "dev": true,
-            "requires": {
-                "for-in": "^1.0.2",
-                "is-extendable": "^1.0.1"
-            },
+        "node_modules/jscodeshift/node_modules/write-file-atomic": {
+            "version": "2.4.3",
+            "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+            "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+            "peer": true,
             "dependencies": {
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+                "graceful-fs": "^4.1.11",
+                "imurmurhash": "^0.1.4",
+                "signal-exit": "^3.0.2"
             }
         },
-        "mkdirp": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-            "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-            "dev": true
-        },
-        "module-alias": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz",
-            "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==",
-            "dev": true
-        },
-        "module-details-from-path": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
-            "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=",
-            "dev": true
-        },
-        "moment": {
-            "version": "2.29.1",
-            "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
-            "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
-        },
-        "moo": {
-            "version": "0.5.1",
-            "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz",
-            "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w=="
-        },
-        "morgan": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
-            "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
-            "requires": {
-                "basic-auth": "~2.0.1",
-                "debug": "2.6.9",
-                "depd": "~2.0.0",
-                "on-finished": "~2.3.0",
-                "on-headers": "~1.0.2"
-            },
+        "node_modules/jsdom": {
+            "version": "16.7.0",
+            "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+            "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "depd": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-                    "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+                "abab": "^2.0.5",
+                "acorn": "^8.2.4",
+                "acorn-globals": "^6.0.0",
+                "cssom": "^0.4.4",
+                "cssstyle": "^2.3.0",
+                "data-urls": "^2.0.0",
+                "decimal.js": "^10.2.1",
+                "domexception": "^2.0.1",
+                "escodegen": "^2.0.0",
+                "form-data": "^3.0.0",
+                "html-encoding-sniffer": "^2.0.1",
+                "http-proxy-agent": "^4.0.1",
+                "https-proxy-agent": "^5.0.0",
+                "is-potential-custom-element-name": "^1.0.1",
+                "nwsapi": "^2.2.0",
+                "parse5": "6.0.1",
+                "saxes": "^5.0.1",
+                "symbol-tree": "^3.2.4",
+                "tough-cookie": "^4.0.0",
+                "w3c-hr-time": "^1.0.2",
+                "w3c-xmlserializer": "^2.0.0",
+                "webidl-conversions": "^6.1.0",
+                "whatwg-encoding": "^1.0.5",
+                "whatwg-mimetype": "^2.3.0",
+                "whatwg-url": "^8.5.0",
+                "ws": "^7.4.6",
+                "xml-name-validator": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "peerDependencies": {
+                "canvas": "^2.5.0"
+            },
+            "peerDependenciesMeta": {
+                "canvas": {
+                    "optional": true
                 }
             }
         },
-        "move-concurrently": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-            "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
-            "dev": true,
-            "requires": {
-                "aproba": "^1.1.1",
-                "copy-concurrently": "^1.0.0",
-                "fs-write-stream-atomic": "^1.0.8",
-                "mkdirp": "^0.5.1",
-                "rimraf": "^2.5.4",
-                "run-queue": "^1.0.3"
-            },
-            "dependencies": {
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                }
+        "node_modules/jsesc": {
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+            "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+            "bin": {
+                "jsesc": "bin/jsesc"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "ms": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        "node_modules/json-parse-better-errors": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+            "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
         },
-        "multipipe": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
-            "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
-            "dev": true,
-            "requires": {
-                "duplexer2": "0.0.2"
-            }
+        "node_modules/json-parse-even-better-errors": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
         },
-        "mute-stdout": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
-            "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
+        "node_modules/json-schema": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+            "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
             "dev": true
         },
-        "mute-stream": {
-            "version": "0.0.8",
-            "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
-            "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+        "node_modules/json-schema-traverse": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+            "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
             "dev": true
         },
-        "nan": {
-            "version": "2.15.0",
-            "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
-            "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
+        "node_modules/json-stable-stringify-without-jsonify": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+            "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
             "dev": true
         },
-        "nanoid": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
-            "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
+        "node_modules/json-stringify-safe": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+            "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
             "dev": true
         },
-        "nanomatch": {
-            "version": "1.2.13",
-            "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-            "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-            "dev": true,
-            "requires": {
-                "arr-diff": "^4.0.0",
-                "array-unique": "^0.3.2",
-                "define-property": "^2.0.2",
-                "extend-shallow": "^3.0.2",
-                "fragment-cache": "^0.2.1",
-                "is-windows": "^1.0.2",
-                "kind-of": "^6.0.2",
-                "object.pick": "^1.3.0",
-                "regex-not": "^1.0.0",
-                "snapdragon": "^0.8.1",
-                "to-regex": "^3.0.1"
+        "node_modules/json5": {
+            "version": "2.2.3",
+            "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+            "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+            "bin": {
+                "json5": "lib/cli.js"
             },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/jsonfile": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+            "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
             "dependencies": {
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    }
-                },
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+                "universalify": "^2.0.0"
+            },
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
             }
         },
-        "native-request": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
-            "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
+        "node_modules/jsprim": {
+            "version": "1.4.2",
+            "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+            "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
             "dev": true,
-            "optional": true
-        },
-        "natural-compare": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-            "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
-            "dev": true
-        },
-        "nearley": {
-            "version": "2.20.1",
-            "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
-            "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
-            "requires": {
-                "commander": "^2.19.0",
-                "moo": "^0.5.0",
-                "railroad-diagrams": "^1.0.0",
-                "randexp": "0.4.6"
-            },
-            "dependencies": {
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-                }
+            "dependencies": {
+                "assert-plus": "1.0.0",
+                "extsprintf": "1.3.0",
+                "json-schema": "0.4.0",
+                "verror": "1.10.0"
+            },
+            "engines": {
+                "node": ">=0.6.0"
             }
         },
-        "needle": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz",
-            "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==",
+        "node_modules/jsx-ast-utils": {
+            "version": "3.3.3",
+            "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
+            "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
             "dev": true,
-            "requires": {
-                "debug": "^3.2.6",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "3.2.7",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-                    "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                    "dev": true
-                }
+                "array-includes": "^3.1.5",
+                "object.assign": "^4.1.3"
+            },
+            "engines": {
+                "node": ">=4.0"
             }
         },
-        "negotiator": {
-            "version": "0.6.3",
-            "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-            "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
-        },
-        "neo-async": {
-            "version": "2.6.2",
-            "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-            "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
-        },
-        "netmask": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
-            "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
-            "dev": true
-        },
-        "next-tick": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-            "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+        "node_modules/just-debounce": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
+            "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
             "dev": true
         },
-        "nice-try": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-            "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
-        },
-        "node-environment-flags": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
-            "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==",
-            "requires": {
-                "object.getownpropertydescriptors": "^2.0.3",
-                "semver": "^5.7.0"
-            },
+        "node_modules/keygrip": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
+            "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
             "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                }
+                "tsscmp": "1.0.6"
+            },
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "node-gyp": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
-            "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
-            "dev": true,
-            "requires": {
-                "env-paths": "^2.2.0",
-                "glob": "^7.1.4",
-                "graceful-fs": "^4.2.3",
-                "nopt": "^5.0.0",
-                "npmlog": "^4.1.2",
-                "request": "^2.88.2",
-                "rimraf": "^3.0.2",
-                "semver": "^7.3.2",
-                "tar": "^6.0.2",
-                "which": "^2.0.2"
-            },
-            "dependencies": {
-                "nopt": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
-                    "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
-                    "dev": true,
-                    "requires": {
-                        "abbrev": "1"
-                    }
-                },
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
+        "node_modules/kind-of": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+            "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "node-int64": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
-            "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
-            "dev": true
-        },
-        "node-libs-browser": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-            "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+        "node_modules/klaw-sync": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
+            "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
             "dev": true,
-            "requires": {
-                "assert": "^1.1.1",
-                "browserify-zlib": "^0.2.0",
-                "buffer": "^4.3.0",
-                "console-browserify": "^1.1.0",
-                "constants-browserify": "^1.0.0",
-                "crypto-browserify": "^3.11.0",
-                "domain-browser": "^1.1.1",
-                "events": "^3.0.0",
-                "https-browserify": "^1.0.0",
-                "os-browserify": "^0.3.0",
-                "path-browserify": "0.0.1",
-                "process": "^0.11.10",
-                "punycode": "^1.2.4",
-                "querystring-es3": "^0.2.0",
-                "readable-stream": "^2.3.3",
-                "stream-browserify": "^2.0.1",
-                "stream-http": "^2.7.2",
-                "string_decoder": "^1.0.0",
-                "timers-browserify": "^2.0.4",
-                "tty-browserify": "0.0.0",
-                "url": "^0.11.0",
-                "util": "^0.11.0",
-                "vm-browserify": "^1.0.1"
-            },
-            "dependencies": {
-                "buffer": {
-                    "version": "4.9.2",
-                    "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-                    "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-                    "dev": true,
-                    "requires": {
-                        "base64-js": "^1.0.2",
-                        "ieee754": "^1.1.4",
-                        "isarray": "^1.0.0"
-                    }
-                },
-                "isarray": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-                    "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-                    "dev": true
-                },
-                "punycode": {
-                    "version": "1.4.1",
-                    "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-                    "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-                    "dev": true
-                }
+            "dependencies": {
+                "graceful-fs": "^4.1.11"
             }
         },
-        "node-notifier": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz",
-            "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==",
-            "dev": true,
-            "optional": true,
-            "requires": {
-                "growly": "^1.3.0",
-                "is-wsl": "^2.2.0",
-                "semver": "^7.3.2",
-                "shellwords": "^0.1.1",
-                "uuid": "^8.3.0",
-                "which": "^2.0.2"
-            },
-            "dependencies": {
-                "is-wsl": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-                    "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "is-docker": "^2.0.0"
-                    }
-                },
-                "uuid": {
-                    "version": "8.3.2",
-                    "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-                    "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-                    "dev": true,
-                    "optional": true
-                }
+        "node_modules/kleur": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+            "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+            "peer": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "node-releases": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
-            "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg=="
+        "node_modules/known-css-properties": {
+            "version": "0.21.0",
+            "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz",
+            "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==",
+            "dev": true
         },
-        "node-sass": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-5.0.0.tgz",
-            "integrity": "sha512-opNgmlu83ZCF792U281Ry7tak9IbVC+AKnXGovcQ8LG8wFaJv6cLnRlc6DIHlmNxWEexB5bZxi9SZ9JyUuOYjw==",
-            "dev": true,
-            "requires": {
-                "async-foreach": "^0.1.3",
-                "chalk": "^1.1.1",
-                "cross-spawn": "^7.0.3",
-                "gaze": "^1.0.0",
-                "get-stdin": "^4.0.1",
-                "glob": "^7.0.3",
-                "lodash": "^4.17.15",
-                "meow": "^3.7.0",
-                "mkdirp": "^0.5.1",
-                "nan": "^2.13.2",
-                "node-gyp": "^7.1.0",
-                "npmlog": "^4.0.0",
-                "request": "^2.88.0",
-                "sass-graph": "2.2.5",
-                "stdout-stream": "^1.4.0",
-                "true-case-path": "^1.0.2"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-                    "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "get-stdin": {
-                    "version": "4.0.1",
-                    "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-                    "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-                    "dev": true
-                },
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
+        "node_modules/konva": {
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/konva/-/konva-9.0.1.tgz",
+            "integrity": "sha512-wzpkprJ8idE42TDF9Lu9RNjVVYNXrj0apvTK3pujdHQhX1iNV+MUquSxYN8HqjYSG95QQ51jhFzRLWhnhf44Mw==",
+            "funding": [
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/lavrton"
                 },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/konva"
                 },
-                "supports-color": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-                    "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-                    "dev": true
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/lavrton"
                 }
-            }
-        },
-        "node-sass-functions-json": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/node-sass-functions-json/-/node-sass-functions-json-1.0.0.tgz",
-            "integrity": "sha1-AxL/uqbU8VybBdTI/w12m4VjXT4=",
-            "dev": true,
-            "requires": {
-                "lodash.round": "^4.0.4",
-                "parse-color": "^1.0.0",
-                "parse-css-dimension": "^1.1.0",
-                "rgb-hex": "^2.1.0",
-                "shorten-css-hex": "^1.1.0"
-            }
+            ],
+            "peer": true
         },
-        "node-sass-tilde-importer": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
-            "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
-            "dev": true,
-            "requires": {
-                "find-parent-dir": "^0.3.0"
-            }
+        "node_modules/kuler": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+            "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
+            "dev": true
         },
-        "nodemon": {
-            "version": "2.0.15",
-            "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz",
-            "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==",
+        "node_modules/last-run": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
+            "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",
             "dev": true,
-            "requires": {
-                "chokidar": "^3.5.2",
-                "debug": "^3.2.7",
-                "ignore-by-default": "^1.0.1",
-                "minimatch": "^3.0.4",
-                "pstree.remy": "^1.1.8",
-                "semver": "^5.7.1",
-                "supports-color": "^5.5.0",
-                "touch": "^3.1.0",
-                "undefsafe": "^2.0.5",
-                "update-notifier": "^5.1.0"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "3.2.7",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-                    "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                    "dev": true
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                    "dev": true
-                }
+                "default-resolution": "^2.0.0",
+                "es6-weak-map": "^2.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "nopt": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-            "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+        "node_modules/lazystream": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+            "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
             "dev": true,
-            "requires": {
-                "abbrev": "1"
-            }
-        },
-        "normalize-package-data": {
-            "version": "2.5.0",
-            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-            "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-            "requires": {
-                "hosted-git-info": "^2.1.4",
-                "resolve": "^1.10.0",
-                "semver": "2 || 3 || 4 || 5",
-                "validate-npm-package-license": "^3.0.1"
-            },
             "dependencies": {
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                }
+                "readable-stream": "^2.0.5"
+            },
+            "engines": {
+                "node": ">= 0.6.3"
             }
         },
-        "normalize-path": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
-        },
-        "normalize-range": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-            "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+        "node_modules/lazystream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
             "dev": true
         },
-        "normalize-selector": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
-            "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
-            "dev": true
+        "node_modules/lazystream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
         },
-        "normalize-url": {
-            "version": "4.5.1",
-            "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
-            "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+        "node_modules/lazystream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "now-and-later": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
-            "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+        "node_modules/lazystream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "once": "^1.3.2"
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "npm-run-all": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
-            "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
-            "requires": {
-                "ansi-styles": "^3.2.1",
-                "chalk": "^2.4.1",
-                "cross-spawn": "^6.0.5",
-                "memorystream": "^0.3.1",
-                "minimatch": "^3.0.4",
-                "pidtree": "^0.3.0",
-                "read-pkg": "^3.0.0",
-                "shell-quote": "^1.6.1",
-                "string.prototype.padend": "^3.0.0"
-            },
+        "node_modules/lcid": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+            "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
+            "dev": true,
             "dependencies": {
-                "chalk": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-                    "requires": {
-                        "ansi-styles": "^3.2.1",
-                        "escape-string-regexp": "^1.0.5",
-                        "supports-color": "^5.3.0"
-                    }
-                },
-                "cross-spawn": {
-                    "version": "6.0.5",
-                    "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                    "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-                    "requires": {
-                        "nice-try": "^1.0.4",
-                        "path-key": "^2.0.1",
-                        "semver": "^5.5.0",
-                        "shebang-command": "^1.2.0",
-                        "which": "^1.2.9"
-                    }
-                },
-                "path-key": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-                    "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
-                },
-                "semver": {
-                    "version": "5.7.1",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-                },
-                "shebang-command": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-                    "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-                    "requires": {
-                        "shebang-regex": "^1.0.0"
-                    }
-                },
-                "shebang-regex": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-                    "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
-                },
-                "which": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-                    "requires": {
-                        "isexe": "^2.0.0"
-                    }
-                }
+                "invert-kv": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "npm-run-path": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-            "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+        "node_modules/lead": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+            "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",
             "dev": true,
-            "requires": {
-                "path-key": "^2.0.0"
-            },
             "dependencies": {
-                "path-key": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-                    "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-                    "dev": true
-                }
+                "flush-write-stream": "^1.0.2"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "npmlog": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-            "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-            "dev": true,
-            "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
+        "node_modules/leven": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+            "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+            "peer": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "nssocket": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz",
-            "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=",
-            "dev": true,
-            "requires": {
-                "eventemitter2": "~0.4.14",
-                "lazy": "~1.0.11"
-            },
+        "node_modules/levn": {
+            "version": "0.3.0",
+            "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+            "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
             "dependencies": {
-                "eventemitter2": {
-                    "version": "0.4.14",
-                    "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
-                    "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
-                    "dev": true
-                }
+                "prelude-ls": "~1.1.2",
+                "type-check": "~0.3.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
             }
         },
-        "nth-check": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
-            "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
-            "requires": {
-                "boolbase": "^1.0.0"
+        "node_modules/liftoff": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
+            "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+            "dev": true,
+            "dependencies": {
+                "extend": "^3.0.0",
+                "findup-sync": "^3.0.0",
+                "fined": "^1.0.1",
+                "flagged-respawn": "^1.0.0",
+                "is-plain-object": "^2.0.4",
+                "object.map": "^1.0.0",
+                "rechoir": "^0.6.2",
+                "resolve": "^1.1.7"
+            },
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "num2fraction": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-            "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
-            "dev": true
-        },
-        "number-is-nan": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-            "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-            "dev": true
-        },
-        "nwsapi": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
-            "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
-        },
-        "oauth-sign": {
-            "version": "0.9.0",
-            "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-            "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+        "node_modules/limiter": {
+            "version": "1.1.5",
+            "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
+            "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==",
             "dev": true
         },
-        "object-assign": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-            "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+        "node_modules/lines-and-columns": {
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+            "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
         },
-        "object-copy": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-            "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+        "node_modules/linkify-it": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+            "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
             "dev": true,
-            "requires": {
-                "copy-descriptor": "^0.1.0",
-                "define-property": "^0.2.5",
-                "kind-of": "^3.0.3"
-            },
             "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                },
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
-            }
-        },
-        "object-inspect": {
-            "version": "1.12.0",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
-            "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
-        },
-        "object-is": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-            "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3"
+                "uc.micro": "^1.0.1"
             }
         },
-        "object-keys": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
-        },
-        "object-path": {
-            "version": "0.11.8",
-            "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz",
-            "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA=="
-        },
-        "object-visit": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-            "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+        "node_modules/lint-staged": {
+            "version": "9.5.0",
+            "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.5.0.tgz",
+            "integrity": "sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA==",
             "dev": true,
-            "requires": {
-                "isobject": "^3.0.0"
+            "dependencies": {
+                "chalk": "^2.4.2",
+                "commander": "^2.20.0",
+                "cosmiconfig": "^5.2.1",
+                "debug": "^4.1.1",
+                "dedent": "^0.7.0",
+                "del": "^5.0.0",
+                "execa": "^2.0.3",
+                "listr": "^0.14.3",
+                "log-symbols": "^3.0.0",
+                "micromatch": "^4.0.2",
+                "normalize-path": "^3.0.0",
+                "please-upgrade-node": "^3.1.1",
+                "string-argv": "^0.3.0",
+                "stringify-object": "^3.3.0"
+            },
+            "bin": {
+                "lint-staged": "bin/lint-staged"
             }
         },
-        "object.assign": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-            "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
-            "requires": {
-                "call-bind": "^1.0.0",
-                "define-properties": "^1.1.3",
-                "has-symbols": "^1.0.1",
-                "object-keys": "^1.1.1"
+        "node_modules/lint-staged/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "object.defaults": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
-            "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+        "node_modules/lint-staged/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
             "dev": true,
-            "requires": {
-                "array-each": "^1.0.1",
-                "array-slice": "^1.0.0",
-                "for-own": "^1.0.0",
-                "isobject": "^3.0.0"
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "object.entries": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
-            "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
+        "node_modules/lint-staged/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "object.fromentries": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
-            "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
-            }
+        "node_modules/lint-staged/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
         },
-        "object.getownpropertydescriptors": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz",
-            "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
-            }
+        "node_modules/lint-staged/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+            "dev": true
         },
-        "object.hasown": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
-            "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
+        "node_modules/lint-staged/node_modules/execa": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
+            "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
             "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
+            "dependencies": {
+                "cross-spawn": "^7.0.0",
+                "get-stream": "^5.0.0",
+                "is-stream": "^2.0.0",
+                "merge-stream": "^2.0.0",
+                "npm-run-path": "^3.0.0",
+                "onetime": "^5.1.0",
+                "p-finally": "^2.0.0",
+                "signal-exit": "^3.0.2",
+                "strip-final-newline": "^2.0.0"
+            },
+            "engines": {
+                "node": "^8.12.0 || >=9.7.0"
             }
         },
-        "object.map": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
-            "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+        "node_modules/lint-staged/node_modules/get-stream": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+            "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
             "dev": true,
-            "requires": {
-                "for-own": "^1.0.0",
-                "make-iterator": "^1.0.0"
+            "dependencies": {
+                "pump": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "object.pick": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-            "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+        "node_modules/lint-staged/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
             "dev": true,
-            "requires": {
-                "isobject": "^3.0.1"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "object.reduce": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
-            "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
+        "node_modules/lint-staged/node_modules/is-stream": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+            "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
             "dev": true,
-            "requires": {
-                "for-own": "^1.0.0",
-                "make-iterator": "^1.0.0"
-            }
-        },
-        "object.values": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
-            "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
-            }
-        },
-        "on-finished": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-            "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-            "requires": {
-                "ee-first": "1.1.1"
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "on-headers": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-            "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
-        },
-        "once": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-            "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-            "requires": {
-                "wrappy": "1"
+        "node_modules/lint-staged/node_modules/mimic-fn": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
             }
         },
-        "one-time": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
-            "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+        "node_modules/lint-staged/node_modules/npm-run-path": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
+            "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
             "dev": true,
-            "requires": {
-                "fn.name": "1.x.x"
+            "dependencies": {
+                "path-key": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "onetime": {
+        "node_modules/lint-staged/node_modules/onetime": {
             "version": "5.1.2",
             "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
             "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "mimic-fn": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/lint-staged/node_modules/p-finally": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
+            "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "open": {
-            "version": "8.4.0",
-            "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
-            "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+        "node_modules/lint-staged/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
             "dev": true,
-            "requires": {
-                "define-lazy-prop": "^2.0.0",
-                "is-docker": "^2.1.1",
-                "is-wsl": "^2.2.0"
-            },
             "dependencies": {
-                "is-wsl": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-                    "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-                    "dev": true,
-                    "requires": {
-                        "is-docker": "^2.0.0"
-                    }
-                }
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "opencollective-postinstall": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
-            "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
-            "dev": true
+        "node_modules/listr": {
+            "version": "0.14.3",
+            "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
+            "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
+            "dev": true,
+            "dependencies": {
+                "@samverschueren/stream-to-observable": "^0.3.0",
+                "is-observable": "^1.1.0",
+                "is-promise": "^2.1.0",
+                "is-stream": "^1.1.0",
+                "listr-silent-renderer": "^1.1.1",
+                "listr-update-renderer": "^0.5.0",
+                "listr-verbose-renderer": "^0.5.0",
+                "p-map": "^2.0.0",
+                "rxjs": "^6.3.3"
+            },
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "openurl": {
+        "node_modules/listr-silent-renderer": {
             "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz",
-            "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
+            "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "opn": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
-            "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+        "node_modules/listr-update-renderer": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
+            "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
             "dev": true,
-            "requires": {
-                "is-wsl": "^1.1.0"
+            "dependencies": {
+                "chalk": "^1.1.3",
+                "cli-truncate": "^0.2.1",
+                "elegant-spinner": "^1.0.1",
+                "figures": "^1.7.0",
+                "indent-string": "^3.0.0",
+                "log-symbols": "^1.0.2",
+                "log-update": "^2.3.0",
+                "strip-ansi": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependencies": {
+                "listr": "^0.14.2"
             }
         },
-        "optionator": {
-            "version": "0.8.3",
-            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-            "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-            "requires": {
-                "deep-is": "~0.1.3",
-                "fast-levenshtein": "~2.0.6",
-                "levn": "~0.3.0",
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2",
-                "word-wrap": "~1.2.3"
+        "node_modules/listr-update-renderer/node_modules/ansi-regex": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+            "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "ora": {
-            "version": "5.4.1",
-            "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
-            "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+        "node_modules/listr-update-renderer/node_modules/ansi-styles": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+            "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
             "dev": true,
-            "requires": {
-                "bl": "^4.1.0",
-                "chalk": "^4.1.0",
-                "cli-cursor": "^3.1.0",
-                "cli-spinners": "^2.5.0",
-                "is-interactive": "^1.0.0",
-                "is-unicode-supported": "^0.1.0",
-                "log-symbols": "^4.1.0",
-                "strip-ansi": "^6.0.0",
-                "wcwidth": "^1.0.1"
-            },
-            "dependencies": {
-                "bl": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-                    "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-                    "dev": true,
-                    "requires": {
-                        "buffer": "^5.5.0",
-                        "inherits": "^2.0.4",
-                        "readable-stream": "^3.4.0"
-                    }
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "ordered-read-streams": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
-            "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
+        "node_modules/listr-update-renderer/node_modules/chalk": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+            "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
             "dev": true,
-            "requires": {
-                "readable-stream": "^2.0.1"
+            "dependencies": {
+                "ansi-styles": "^2.2.1",
+                "escape-string-regexp": "^1.0.2",
+                "has-ansi": "^2.0.0",
+                "strip-ansi": "^3.0.0",
+                "supports-color": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "os-browserify": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-            "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
-            "dev": true
+        "node_modules/listr-update-renderer/node_modules/figures": {
+            "version": "1.7.0",
+            "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+            "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
+            "dev": true,
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5",
+                "object-assign": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "os-homedir": {
+        "node_modules/listr-update-renderer/node_modules/log-symbols": {
             "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-            "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+            "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "os-locale": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-            "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+        "node_modules/listr-update-renderer/node_modules/strip-ansi": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+            "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
             "dev": true,
-            "requires": {
-                "lcid": "^1.0.0"
+            "dependencies": {
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "os-tmpdir": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-            "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-            "dev": true
+        "node_modules/listr-update-renderer/node_modules/supports-color": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+            "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.0"
+            }
         },
-        "p-cancelable": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-            "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-            "dev": true
+        "node_modules/listr-verbose-renderer": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
+            "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^2.4.1",
+                "cli-cursor": "^2.1.0",
+                "date-fns": "^1.27.2",
+                "figures": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "p-each-series": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
-            "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==",
-            "dev": true
+        "node_modules/listr-verbose-renderer/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "p-finally": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-            "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-            "dev": true
+        "node_modules/listr-verbose-renderer/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "p-limit": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-            "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-            "requires": {
-                "p-try": "^2.0.0"
+        "node_modules/listr-verbose-renderer/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "p-locate": {
+        "node_modules/listr-verbose-renderer/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/listr-verbose-renderer/node_modules/has-flag": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-            "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-            "requires": {
-                "p-limit": "^2.0.0"
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
             }
         },
-        "p-map": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
-            "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+        "node_modules/listr-verbose-renderer/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
             "dev": true,
-            "requires": {
-                "aggregate-error": "^3.0.0"
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "p-try": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+        "node_modules/listr/node_modules/p-map": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+            "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "pac-proxy-agent": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
-            "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
+        "node_modules/load-json-file": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+            "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
             "dev": true,
-            "requires": {
-                "@tootallnate/once": "1",
-                "agent-base": "6",
-                "debug": "4",
-                "get-uri": "3",
-                "http-proxy-agent": "^4.0.1",
-                "https-proxy-agent": "5",
-                "pac-resolver": "^5.0.0",
-                "raw-body": "^2.2.0",
-                "socks-proxy-agent": "5"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "graceful-fs": "^4.1.2",
+                "parse-json": "^2.2.0",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0",
+                "strip-bom": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "pac-resolver": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz",
-            "integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==",
+        "node_modules/load-json-file/node_modules/parse-json": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+            "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
             "dev": true,
-            "requires": {
-                "degenerator": "^3.0.1",
-                "ip": "^1.1.5",
-                "netmask": "^2.0.1"
+            "dependencies": {
+                "error-ex": "^1.2.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "package-json": {
-            "version": "6.5.0",
-            "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
-            "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+        "node_modules/load-json-file/node_modules/pify": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
             "dev": true,
-            "requires": {
-                "got": "^9.6.0",
-                "registry-auth-token": "^4.0.0",
-                "registry-url": "^5.0.0",
-                "semver": "^6.2.0"
-            },
-            "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "pako": {
-            "version": "0.2.9",
-            "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
-            "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
-            "dev": true
+        "node_modules/load-script": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
+            "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA=="
         },
-        "parallel-transform": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-            "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+        "node_modules/loader-runner": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+            "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
             "dev": true,
-            "requires": {
-                "cyclist": "^1.0.1",
-                "inherits": "^2.0.3",
-                "readable-stream": "^2.1.5"
+            "engines": {
+                "node": ">=6.11.5"
             }
         },
-        "parent-module": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+        "node_modules/localtunnel": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz",
+            "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==",
             "dev": true,
-            "requires": {
-                "callsites": "^3.0.0"
+            "dependencies": {
+                "axios": "0.21.4",
+                "debug": "4.3.2",
+                "openurl": "1.1.1",
+                "yargs": "17.1.1"
+            },
+            "bin": {
+                "lt": "bin/lt.js"
+            },
+            "engines": {
+                "node": ">=8.3.0"
             }
         },
-        "parse": {
-            "version": "2.19.0",
-            "resolved": "https://registry.npmjs.org/parse/-/parse-2.19.0.tgz",
-            "integrity": "sha512-twxq/Kzyd0c9exxK0jMEPISwDpFzukmexSa+VAFL4a6K+lqGeJ9TuysYhfR9Bkcd0mHGcMFM5gn4uycu1xykvA==",
-            "requires": {
-                "@babel/runtime": "7.12.5",
-                "@babel/runtime-corejs3": "7.12.5",
-                "crypto-js": "4.0.0",
-                "react-native-crypto-js": "1.0.0",
-                "uuid": "3.4.0",
-                "ws": "7.4.0",
-                "xmlhttprequest": "1.8.0"
-            },
+        "node_modules/localtunnel/node_modules/axios": {
+            "version": "0.21.4",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+            "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+            "dev": true,
             "dependencies": {
-                "@babel/runtime": {
-                    "version": "7.12.5",
-                    "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
-                    "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
-                    "requires": {
-                        "regenerator-runtime": "^0.13.4"
-                    }
-                }
+                "follow-redirects": "^1.14.0"
             }
         },
-        "parse-asn1": {
-            "version": "5.1.6",
-            "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
-            "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+        "node_modules/localtunnel/node_modules/cliui": {
+            "version": "7.0.4",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+            "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
             "dev": true,
-            "requires": {
-                "asn1.js": "^5.2.0",
-                "browserify-aes": "^1.0.0",
-                "evp_bytestokey": "^1.0.0",
-                "pbkdf2": "^3.0.3",
-                "safe-buffer": "^5.1.1"
+            "dependencies": {
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.0",
+                "wrap-ansi": "^7.0.0"
             }
         },
-        "parse-color": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
-            "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
+        "node_modules/localtunnel/node_modules/debug": {
+            "version": "4.3.2",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+            "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
             "dev": true,
-            "requires": {
-                "color-convert": "~0.5.0"
-            },
             "dependencies": {
-                "color-convert": {
-                    "version": "0.5.3",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
-                    "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=",
-                    "dev": true
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
                 }
             }
         },
-        "parse-css-dimension": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/parse-css-dimension/-/parse-css-dimension-1.1.0.tgz",
-            "integrity": "sha1-jheiTkwtD+Q3RWpi8Mks+hW4o34=",
+        "node_modules/localtunnel/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
             "dev": true,
-            "requires": {
-                "css-angle-units": "^1.0.1",
-                "css-frequency-units": "^1.0.1",
-                "css-length-units": "^1.0.0",
-                "css-resolution-units": "^1.0.1",
-                "css-time-units": "^1.0.1",
-                "lodash.fill": "^3.4.0",
-                "lodash.merge": "^4.6.0",
-                "lodash.zipobject": "^4.1.3"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "parse-entities": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
-            "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
-            "requires": {
-                "character-entities": "^1.0.0",
-                "character-entities-legacy": "^1.0.0",
-                "character-reference-invalid": "^1.0.0",
-                "is-alphanumerical": "^1.0.0",
-                "is-decimal": "^1.0.0",
-                "is-hexadecimal": "^1.0.0"
+        "node_modules/localtunnel/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "parse-filepath": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
-            "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+        "node_modules/localtunnel/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
             "dev": true,
-            "requires": {
-                "is-absolute": "^1.0.0",
-                "map-cache": "^0.2.0",
-                "path-root": "^0.1.1"
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "parse-json": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-            "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-            "requires": {
-                "error-ex": "^1.3.1",
-                "json-parse-better-errors": "^1.0.1"
+        "node_modules/localtunnel/node_modules/wrap-ansi": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+            "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^4.0.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
             }
         },
-        "parse-key": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/parse-key/-/parse-key-0.2.1.tgz",
-            "integrity": "sha1-e892WVU242B1Zkvk1ofkvdkQII8="
-        },
-        "parse-node-version": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
-            "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
-            "dev": true
-        },
-        "parse-passwd": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-            "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
-        },
-        "parse5": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
-            "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
-        },
-        "parse5-htmlparser2-tree-adapter": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
-            "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
-            "requires": {
-                "parse5": "^6.0.1"
+        "node_modules/localtunnel/node_modules/yargs": {
+            "version": "17.1.1",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz",
+            "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==",
+            "dev": true,
+            "dependencies": {
+                "cliui": "^7.0.2",
+                "escalade": "^3.1.1",
+                "get-caller-file": "^2.0.5",
+                "require-directory": "^2.1.1",
+                "string-width": "^4.2.0",
+                "y18n": "^5.0.5",
+                "yargs-parser": "^20.2.2"
+            },
+            "engines": {
+                "node": ">=12"
             }
         },
-        "parseqs": {
-            "version": "0.0.6",
-            "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
-            "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
+        "node_modules/locate-path": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+            "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+            "dependencies": {
+                "p-locate": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "parseuri": {
-            "version": "0.0.6",
-            "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
-            "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
+        "node_modules/lodash": {
+            "version": "4.17.21",
+            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
         },
-        "parseurl": {
-            "version": "1.3.3",
-            "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-            "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        "node_modules/lodash-es": {
+            "version": "4.17.21",
+            "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+            "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+            "peer": true
         },
-        "pascalcase": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-            "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+        "node_modules/lodash._reinterpolate": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+            "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
             "dev": true
         },
-        "path-browserify": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-            "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+        "node_modules/lodash.clonedeep": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+            "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
             "dev": true
         },
-        "path-dirname": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-            "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+        "node_modules/lodash.debounce": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+            "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+        },
+        "node_modules/lodash.defaults": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+            "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
             "dev": true
         },
-        "path-exists": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-            "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+        "node_modules/lodash.difference": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+            "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
+            "dev": true
         },
-        "path-is-absolute": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-            "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+        "node_modules/lodash.flatten": {
+            "version": "4.4.0",
+            "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+            "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
+            "dev": true
         },
-        "path-is-inside": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-            "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+        "node_modules/lodash.isfinite": {
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
+            "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==",
             "dev": true
         },
-        "path-key": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+        "node_modules/lodash.isplainobject": {
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+            "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+            "dev": true
         },
-        "path-parse": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
-        },
-        "path-root": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
-            "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+        "node_modules/lodash.template": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
+            "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
             "dev": true,
-            "requires": {
-                "path-root-regex": "^0.1.0"
+            "dependencies": {
+                "lodash._reinterpolate": "^3.0.0",
+                "lodash.templatesettings": "^4.0.0"
             }
         },
-        "path-root-regex": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
-            "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
-            "dev": true
-        },
-        "path-starts-with": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.0.tgz",
-            "integrity": "sha512-3UHTHbJz5+NLkPafFR+2ycJOjoc4WV2e9qCZCnm71zHiWaFrm1XniLVTkZXvaRgxr1xFh9JsTdicpH2yM03nLA==",
-            "dev": true
-        },
-        "path-to-regexp": {
-            "version": "0.1.7",
-            "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-            "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
-        },
-        "path-type": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-            "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
-        },
-        "pbkdf2": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
-            "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+        "node_modules/lodash.templatesettings": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
+            "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
             "dev": true,
-            "requires": {
-                "create-hash": "^1.1.2",
-                "create-hmac": "^1.1.4",
-                "ripemd160": "^2.0.1",
-                "safe-buffer": "^5.0.1",
-                "sha.js": "^2.4.8"
+            "dependencies": {
+                "lodash._reinterpolate": "^3.0.0"
             }
         },
-        "pend": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-            "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
-            "dev": true
-        },
-        "performance-now": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-            "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
-        },
-        "picocolors": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+        "node_modules/lodash.throttle": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+            "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+            "peer": true
         },
-        "picomatch": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+        "node_modules/lodash.truncate": {
+            "version": "4.4.2",
+            "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+            "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+            "dev": true
         },
-        "pidtree": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
-            "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA=="
+        "node_modules/lodash.union": {
+            "version": "4.6.0",
+            "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+            "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
+            "dev": true
         },
-        "pidusage": {
+        "node_modules/log-symbols": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.0.tgz",
-            "integrity": "sha512-8VJLToXhj+RYZGNVw8oxc7dS54iCQXUJ+MDFHezQ/fwF5B8W4OWodAMboc1wb08S/4LiHwAmkT4ohf/d3YPPsw==",
+            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
+            "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
             "dev": true,
-            "requires": {
-                "safe-buffer": "^5.2.1"
-            },
             "dependencies": {
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-                    "dev": true
-                }
+                "chalk": "^2.4.2"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "pify": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-            "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+        "node_modules/log-symbols/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "pinkie": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-            "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-            "dev": true
+        "node_modules/log-symbols/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "pinkie-promise": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-            "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+        "node_modules/log-symbols/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
             "dev": true,
-            "requires": {
-                "pinkie": "^2.0.0"
+            "dependencies": {
+                "color-name": "1.1.3"
             }
         },
-        "pirates": {
-            "version": "4.0.5",
-            "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
-            "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ=="
+        "node_modules/log-symbols/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
         },
-        "pkg-dir": {
+        "node_modules/log-symbols/node_modules/has-flag": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-            "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-            "requires": {
-                "find-up": "^3.0.0"
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
             }
         },
-        "pkg-up": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
-            "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+        "node_modules/log-symbols/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
             "dev": true,
-            "requires": {
-                "find-up": "^3.0.0"
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "please-upgrade-node": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
-            "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+        "node_modules/log-update": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
+            "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==",
             "dev": true,
-            "requires": {
-                "semver-compare": "^1.0.0"
+            "dependencies": {
+                "ansi-escapes": "^3.0.0",
+                "cli-cursor": "^2.0.0",
+                "wrap-ansi": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "plugin-error": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
-            "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+        "node_modules/logform": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz",
+            "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==",
             "dev": true,
-            "requires": {
-                "ansi-colors": "^1.0.1",
-                "arr-diff": "^4.0.0",
-                "arr-union": "^3.1.0",
-                "extend-shallow": "^3.0.2"
+            "dependencies": {
+                "@colors/colors": "1.5.0",
+                "@types/triple-beam": "^1.3.2",
+                "fecha": "^4.2.0",
+                "ms": "^2.1.1",
+                "safe-stable-stringify": "^2.3.1",
+                "triple-beam": "^1.3.0"
+            }
+        },
+        "node_modules/logkitty": {
+            "version": "0.7.1",
+            "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
+            "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
+            "peer": true,
+            "dependencies": {
+                "ansi-fragments": "^0.2.1",
+                "dayjs": "^1.8.15",
+                "yargs": "^15.1.0"
             },
+            "bin": {
+                "logkitty": "bin/logkitty.js"
+            }
+        },
+        "node_modules/logkitty/node_modules/camelcase": {
+            "version": "5.3.1",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+            "peer": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/logkitty/node_modules/cliui": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+            "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+            "peer": true,
             "dependencies": {
-                "ansi-colors": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
-                    "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-wrap": "^0.1.0"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    }
-                },
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.0",
+                "wrap-ansi": "^6.2.0"
             }
         },
-        "pluralize": {
-            "version": "8.0.0",
-            "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
-            "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="
+        "node_modules/logkitty/node_modules/decamelize": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+            "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "pm2": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.0.tgz",
-            "integrity": "sha512-PO5hMVhQ85cTszFM++6v07Me9hPJMkFbHjkFigtMMk+La8ty2wCi2dlBTeZYJDhPUSjK8Ccltpq2buNRcyMOTw==",
-            "dev": true,
-            "requires": {
-                "@pm2/agent": "~2.0.0",
-                "@pm2/io": "~5.0.0",
-                "@pm2/js-api": "~0.6.7",
-                "@pm2/pm2-version-check": "^1.0.4",
-                "async": "~3.2.0",
-                "blessed": "0.1.81",
-                "chalk": "3.0.0",
-                "chokidar": "^3.5.1",
-                "cli-tableau": "^2.0.0",
-                "commander": "2.15.1",
-                "croner": "~4.1.92",
-                "dayjs": "~1.8.25",
-                "debug": "^4.3.1",
-                "enquirer": "2.3.6",
-                "eventemitter2": "5.0.1",
-                "fclone": "1.0.11",
-                "mkdirp": "1.0.4",
-                "needle": "2.4.0",
-                "pidusage": "~3.0",
-                "pm2-axon": "~4.0.1",
-                "pm2-axon-rpc": "~0.7.1",
-                "pm2-deploy": "~1.0.2",
-                "pm2-multimeter": "^0.1.2",
-                "pm2-sysmonit": "^1.2.8",
-                "promptly": "^2",
-                "semver": "^7.2",
-                "source-map-support": "0.5.19",
-                "sprintf-js": "1.1.2",
-                "vizion": "~2.2.1",
-                "yamljs": "0.3.0"
-            },
-            "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "async": {
-                    "version": "3.2.3",
-                    "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
-                    "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-                    "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.1.0",
-                        "supports-color": "^7.1.0"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "commander": {
-                    "version": "2.15.1",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
-                    "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
-                    "dev": true
-                },
-                "dayjs": {
-                    "version": "1.8.36",
-                    "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz",
-                    "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==",
-                    "dev": true
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                },
-                "source-map-support": {
-                    "version": "0.5.19",
-                    "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-                    "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
-                    "dev": true,
-                    "requires": {
-                        "buffer-from": "^1.0.0",
-                        "source-map": "^0.6.0"
-                    }
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+        "node_modules/logkitty/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "peer": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "pm2-axon": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz",
-            "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==",
-            "dev": true,
-            "requires": {
-                "amp": "~0.3.1",
-                "amp-message": "~0.1.1",
-                "debug": "^4.3.1",
-                "escape-string-regexp": "^4.0.0"
-            },
+        "node_modules/logkitty/node_modules/require-main-filename": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+            "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+            "peer": true
+        },
+        "node_modules/logkitty/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "peer": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "escape-string-regexp": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-                    "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "pm2-axon-rpc": {
-            "version": "0.7.1",
-            "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz",
-            "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==",
-            "dev": true,
-            "requires": {
-                "debug": "^4.3.1"
+        "node_modules/logkitty/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "peer": true,
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
             },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/logkitty/node_modules/which-module": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+            "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+            "peer": true
+        },
+        "node_modules/logkitty/node_modules/wrap-ansi": {
+            "version": "6.2.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+            "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+            "peer": true,
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "ansi-styles": "^4.0.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "pm2-deploy": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz",
-            "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==",
-            "dev": true,
-            "requires": {
-                "run-series": "^1.1.8",
-                "tv4": "^1.3.0"
+        "node_modules/logkitty/node_modules/y18n": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+            "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+            "peer": true
+        },
+        "node_modules/logkitty/node_modules/yargs": {
+            "version": "15.4.1",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+            "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+            "peer": true,
+            "dependencies": {
+                "cliui": "^6.0.0",
+                "decamelize": "^1.2.0",
+                "find-up": "^4.1.0",
+                "get-caller-file": "^2.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^2.0.0",
+                "set-blocking": "^2.0.0",
+                "string-width": "^4.2.0",
+                "which-module": "^2.0.0",
+                "y18n": "^4.0.0",
+                "yargs-parser": "^18.1.2"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "pm2-multimeter": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz",
-            "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=",
-            "dev": true,
-            "requires": {
-                "charm": "~0.1.1"
+        "node_modules/logkitty/node_modules/yargs-parser": {
+            "version": "18.1.3",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+            "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+            "peer": true,
+            "dependencies": {
+                "camelcase": "^5.0.0",
+                "decamelize": "^1.2.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "pm2-sysmonit": {
-            "version": "1.2.8",
-            "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz",
-            "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==",
+        "node_modules/longest-streak": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
+            "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
             "dev": true,
-            "optional": true,
-            "requires": {
-                "async": "^3.2.0",
-                "debug": "^4.3.1",
-                "pidusage": "^2.0.21",
-                "systeminformation": "^5.7",
-                "tx2": "~1.0.4"
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/loose-envify": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+            "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+            "dependencies": {
+                "js-tokens": "^3.0.0 || ^4.0.0"
             },
+            "bin": {
+                "loose-envify": "cli.js"
+            }
+        },
+        "node_modules/lru-cache": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+            "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
             "dependencies": {
-                "async": {
-                    "version": "3.2.3",
-                    "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
-                    "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
-                    "dev": true,
-                    "optional": true
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true,
-                    "optional": true
-                },
-                "pidusage": {
-                    "version": "2.0.21",
-                    "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz",
-                    "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "safe-buffer": "^5.2.1"
-                    }
-                },
-                "safe-buffer": {
-                    "version": "5.2.1",
-                    "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-                    "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-                    "dev": true,
-                    "optional": true
-                }
+                "yallist": "^3.0.2"
             }
         },
-        "po2json": {
-            "version": "1.0.0-beta-3",
-            "resolved": "https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz",
-            "integrity": "sha512-taS8y6ZEGzPAs0rygW9CuUPY8C3Zgx6cBy31QXxG2JlWS3fLxj/kuD3cbIfXBg30PuYN7J5oyBa/TIRjyqFFtg==",
+        "node_modules/lru-queue": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
+            "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
             "dev": true,
-            "requires": {
-                "commander": "^6.0.0",
-                "gettext-parser": "2.0.0",
-                "gettext-to-messageformat": "0.3.1"
-            },
             "dependencies": {
-                "commander": {
-                    "version": "6.2.1",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
-                    "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
-                    "dev": true
-                }
+                "es5-ext": "~0.10.2"
             }
         },
-        "pofile": {
-            "version": "1.0.11",
-            "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz",
-            "integrity": "sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==",
-            "dev": true
+        "node_modules/lunr": {
+            "version": "2.3.9",
+            "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
+            "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="
         },
-        "portscanner": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz",
-            "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==",
-            "dev": true,
-            "requires": {
-                "async": "^2.6.0",
-                "is-number-like": "^1.0.3"
+        "node_modules/magic-string": {
+            "version": "0.25.9",
+            "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+            "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+            "dependencies": {
+                "sourcemap-codec": "^1.4.8"
             }
         },
-        "posix-character-classes": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-            "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-            "dev": true
+        "node_modules/make-dir": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+            "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+            "dependencies": {
+                "pify": "^4.0.1",
+                "semver": "^5.6.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "postcss": {
-            "version": "8.4.7",
-            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz",
-            "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==",
-            "dev": true,
-            "requires": {
-                "nanoid": "^3.3.1",
-                "picocolors": "^1.0.0",
-                "source-map-js": "^1.0.2"
+        "node_modules/make-dir/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "bin": {
+                "semver": "bin/semver"
             }
         },
-        "postcss-html": {
-            "version": "0.36.0",
-            "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz",
-            "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==",
+        "node_modules/make-iterator": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+            "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
             "dev": true,
-            "requires": {
-                "htmlparser2": "^3.10.0"
-            },
             "dependencies": {
-                "dom-serializer": {
-                    "version": "0.2.2",
-                    "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-                    "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-                    "dev": true,
-                    "requires": {
-                        "domelementtype": "^2.0.1",
-                        "entities": "^2.0.0"
-                    },
-                    "dependencies": {
-                        "domelementtype": {
-                            "version": "2.2.0",
-                            "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
-                            "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
-                            "dev": true
-                        },
-                        "entities": {
-                            "version": "2.2.0",
-                            "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-                            "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-                            "dev": true
-                        }
-                    }
-                },
-                "domelementtype": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-                    "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
-                    "dev": true
-                },
-                "domhandler": {
-                    "version": "2.4.2",
-                    "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
-                    "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
-                    "dev": true,
-                    "requires": {
-                        "domelementtype": "1"
-                    }
-                },
-                "domutils": {
-                    "version": "1.7.0",
-                    "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-                    "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-                    "dev": true,
-                    "requires": {
-                        "dom-serializer": "0",
-                        "domelementtype": "1"
-                    }
-                },
-                "entities": {
-                    "version": "1.1.2",
-                    "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-                    "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-                    "dev": true
-                },
-                "htmlparser2": {
-                    "version": "3.10.1",
-                    "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
-                    "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
-                    "dev": true,
-                    "requires": {
-                        "domelementtype": "^1.3.1",
-                        "domhandler": "^2.3.0",
-                        "domutils": "^1.5.1",
-                        "entities": "^1.1.1",
-                        "inherits": "^2.0.1",
-                        "readable-stream": "^3.1.1"
-                    }
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                }
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "postcss-less": {
-            "version": "3.1.4",
-            "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz",
-            "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==",
-            "dev": true,
-            "requires": {
-                "postcss": "^7.0.14"
-            },
+        "node_modules/makeerror": {
+            "version": "1.0.12",
+            "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+            "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
             "dependencies": {
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "tmpl": "1.0.5"
             }
         },
-        "postcss-media-query-parser": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
-            "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
-            "dev": true
-        },
-        "postcss-resolve-nested-selector": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
-            "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
-            "dev": true
+        "node_modules/map-cache": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+            "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "postcss-safe-parser": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
-            "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
+        "node_modules/map-obj": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+            "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
             "dev": true,
-            "requires": {
-                "postcss": "^7.0.26"
+            "engines": {
+                "node": ">=8"
             },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/map-visit": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+            "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
             "dependencies": {
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "object-visit": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "postcss-sass": {
-            "version": "0.4.4",
-            "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz",
-            "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==",
+        "node_modules/markdown-it": {
+            "version": "11.0.1",
+            "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.1.tgz",
+            "integrity": "sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==",
             "dev": true,
-            "requires": {
-                "gonzales-pe": "^4.3.0",
-                "postcss": "^7.0.21"
-            },
             "dependencies": {
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "argparse": "^1.0.7",
+                "entities": "~2.0.0",
+                "linkify-it": "^3.0.1",
+                "mdurl": "^1.0.1",
+                "uc.micro": "^1.0.5"
+            },
+            "bin": {
+                "markdown-it": "bin/markdown-it.js"
             }
         },
-        "postcss-scss": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz",
-            "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==",
+        "node_modules/matchdep": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
+            "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",
             "dev": true,
-            "requires": {
-                "postcss": "^7.0.6"
-            },
             "dependencies": {
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "findup-sync": "^2.0.0",
+                "micromatch": "^3.0.4",
+                "resolve": "^1.4.0",
+                "stack-trace": "0.0.10"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "postcss-selector-parser": {
-            "version": "6.0.9",
-            "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz",
-            "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==",
+        "node_modules/matchdep/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
             "dev": true,
-            "requires": {
-                "cssesc": "^3.0.0",
-                "util-deprecate": "^1.0.2"
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "postcss-syntax": {
-            "version": "0.36.2",
-            "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz",
-            "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==",
-            "dev": true
-        },
-        "postcss-value-parser": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-            "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-            "dev": true
-        },
-        "prefix-style": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz",
-            "integrity": "sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY="
-        },
-        "prelude-ls": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-            "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+        "node_modules/matchdep/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "prepend-http": {
+        "node_modules/matchdep/node_modules/findup-sync": {
             "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-            "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
-            "dev": true
-        },
-        "prettier": {
-            "version": "1.19.1",
-            "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
-            "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew=="
-        },
-        "pretty-bytes": {
-            "version": "5.6.0",
-            "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
-            "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
-            "dev": true
-        },
-        "pretty-format": {
-            "version": "26.6.2",
-            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
-            "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+            "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+            "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==",
             "dev": true,
-            "requires": {
-                "@jest/types": "^26.6.2",
-                "ansi-regex": "^5.0.0",
-                "ansi-styles": "^4.0.0",
-                "react-is": "^17.0.1"
-            },
             "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "react-is": {
-                    "version": "17.0.2",
-                    "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-                    "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
-                    "dev": true
-                }
+                "detect-file": "^1.0.0",
+                "is-glob": "^3.1.0",
+                "micromatch": "^3.0.4",
+                "resolve-dir": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "pretty-hrtime": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
-            "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
-            "dev": true
-        },
-        "prism-react-renderer": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz",
-            "integrity": "sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ=="
-        },
-        "prismjs": {
-            "version": "1.27.0",
-            "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
-            "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA=="
-        },
-        "process": {
-            "version": "0.11.10",
-            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-            "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-            "dev": true
-        },
-        "process-nextick-args": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-            "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-            "dev": true
-        },
-        "progress": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-            "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-            "dev": true
-        },
-        "promise-inflight": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-            "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
-            "dev": true
-        },
-        "prompt": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.2.tgz",
-            "integrity": "sha512-XNXhNv3PUHJDcDkISpCwSJxtw9Bor4FZnlMUDW64N/KCPdxhfVlpD5+YUXI/Z8a9QWmOhs9KSiVtR8nzPS0BYA==",
+        "node_modules/matchdep/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
             "dev": true,
-            "requires": {
-                "@colors/colors": "1.5.0",
-                "async": "~0.9.0",
-                "read": "1.0.x",
-                "revalidator": "0.1.x",
-                "winston": "2.x"
-            },
             "dependencies": {
-                "async": {
-                    "version": "0.9.2",
-                    "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
-                    "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
-                    "dev": true
-                }
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "promptly": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz",
-            "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=",
+        "node_modules/matchdep/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
             "dev": true,
-            "requires": {
-                "read": "^1.0.4"
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "prompts": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
-            "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+        "node_modules/matchdep/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
             "dev": true,
-            "requires": {
-                "kleur": "^3.0.3",
-                "sisteransi": "^1.0.5"
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "prop-types": {
-            "version": "15.8.1",
-            "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-            "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-            "requires": {
-                "loose-envify": "^1.4.0",
-                "object-assign": "^4.1.1",
-                "react-is": "^16.13.1"
+        "node_modules/matchdep/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "prop-types-exact": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz",
-            "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==",
-            "requires": {
-                "has": "^1.0.3",
-                "object.assign": "^4.1.0",
-                "reflect.ownkeys": "^0.2.0"
+        "node_modules/matchdep/node_modules/is-glob": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+            "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+            "dev": true,
+            "dependencies": {
+                "is-extglob": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "property-information": {
-            "version": "5.6.0",
-            "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
-            "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
-            "requires": {
-                "xtend": "^4.0.0"
+        "node_modules/matchdep/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "proxy-addr": {
-            "version": "2.0.7",
-            "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-            "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-            "requires": {
-                "forwarded": "0.2.0",
-                "ipaddr.js": "1.9.1"
+        "node_modules/mathml-tag-names": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+            "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "proxy-agent": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz",
-            "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
+        "node_modules/md5.js": {
+            "version": "1.3.5",
+            "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+            "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
             "dev": true,
-            "requires": {
-                "agent-base": "^6.0.0",
-                "debug": "4",
-                "http-proxy-agent": "^4.0.0",
-                "https-proxy-agent": "^5.0.0",
-                "lru-cache": "^5.1.1",
-                "pac-proxy-agent": "^5.0.0",
-                "proxy-from-env": "^1.0.0",
-                "socks-proxy-agent": "^5.0.0"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "lru-cache": {
-                    "version": "5.1.1",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-                    "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-                    "dev": true,
-                    "requires": {
-                        "yallist": "^3.0.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "yallist": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-                    "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-                    "dev": true
-                }
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.1.2"
             }
         },
-        "proxy-from-env": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-            "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
-            "dev": true
+        "node_modules/mdast-util-from-markdown": {
+            "version": "0.8.5",
+            "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
+            "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/mdast": "^3.0.0",
+                "mdast-util-to-string": "^2.0.0",
+                "micromark": "~2.11.0",
+                "parse-entities": "^2.0.0",
+                "unist-util-stringify-position": "^2.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
         },
-        "prr": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-            "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-            "dev": true
+        "node_modules/mdast-util-to-markdown": {
+            "version": "0.6.5",
+            "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
+            "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/unist": "^2.0.0",
+                "longest-streak": "^2.0.0",
+                "mdast-util-to-string": "^2.0.0",
+                "parse-entities": "^2.0.0",
+                "repeat-string": "^1.0.0",
+                "zwitch": "^1.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
         },
-        "psl": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-            "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+        "node_modules/mdast-util-to-string": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
+            "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
+            "dev": true,
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
         },
-        "pstree.remy": {
-            "version": "1.1.8",
-            "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
-            "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+        "node_modules/mdn-data": {
+            "version": "2.0.14",
+            "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+            "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
+        },
+        "node_modules/mdurl": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+            "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
             "dev": true
         },
-        "public-encrypt": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-            "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+        "node_modules/media-typer": {
+            "version": "0.3.0",
+            "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+            "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/memfs": {
+            "version": "3.5.1",
+            "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz",
+            "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==",
             "dev": true,
-            "requires": {
-                "bn.js": "^4.1.0",
-                "browserify-rsa": "^4.0.0",
-                "create-hash": "^1.1.0",
-                "parse-asn1": "^5.0.0",
-                "randombytes": "^2.0.1",
-                "safe-buffer": "^5.1.2"
-            },
             "dependencies": {
-                "bn.js": {
-                    "version": "4.12.0",
-                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                    "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                    "dev": true
-                }
+                "fs-monkey": "^1.0.3"
+            },
+            "engines": {
+                "node": ">= 4.0.0"
             }
         },
-        "pump": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-            "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+        "node_modules/memoize-one": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
+            "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
+        },
+        "node_modules/memoizee": {
+            "version": "0.4.15",
+            "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
+            "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
             "dev": true,
-            "requires": {
-                "end-of-stream": "^1.1.0",
-                "once": "^1.3.1"
+            "dependencies": {
+                "d": "^1.0.1",
+                "es5-ext": "^0.10.53",
+                "es6-weak-map": "^2.0.3",
+                "event-emitter": "^0.3.5",
+                "is-promise": "^2.2.2",
+                "lru-queue": "^0.1.0",
+                "next-tick": "^1.1.0",
+                "timers-ext": "^0.1.7"
             }
         },
-        "pumpify": {
-            "version": "1.5.1",
-            "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-            "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+        "node_modules/memory-cache": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
+            "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA=="
+        },
+        "node_modules/memorystream": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+            "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+            "engines": {
+                "node": ">= 0.10.0"
+            }
+        },
+        "node_modules/meow": {
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
+            "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
             "dev": true,
-            "requires": {
-                "duplexify": "^3.6.0",
-                "inherits": "^2.0.3",
-                "pump": "^2.0.0"
-            },
             "dependencies": {
-                "pump": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-                    "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-                    "dev": true,
-                    "requires": {
-                        "end-of-stream": "^1.1.0",
-                        "once": "^1.3.1"
-                    }
-                }
+                "@types/minimist": "^1.2.0",
+                "camelcase-keys": "^6.2.2",
+                "decamelize": "^1.2.0",
+                "decamelize-keys": "^1.1.0",
+                "hard-rejection": "^2.1.0",
+                "minimist-options": "4.1.0",
+                "normalize-package-data": "^3.0.0",
+                "read-pkg-up": "^7.0.1",
+                "redent": "^3.0.0",
+                "trim-newlines": "^3.0.0",
+                "type-fest": "^0.18.0",
+                "yargs-parser": "^20.2.3"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "punycode": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-            "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-        },
-        "pupa": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-            "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+        "node_modules/meow/node_modules/decamelize": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+            "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
             "dev": true,
-            "requires": {
-                "escape-goat": "^2.0.0"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "pure-color": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz",
-            "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4="
+        "node_modules/meow/node_modules/hosted-git-info": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+            "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+            "dev": true,
+            "dependencies": {
+                "lru-cache": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "qs": {
-            "version": "6.9.7",
-            "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
-            "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw=="
+        "node_modules/meow/node_modules/lru-cache": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+            "dev": true,
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "querystring": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-            "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-            "dev": true
+        "node_modules/meow/node_modules/normalize-package-data": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+            "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+            "dev": true,
+            "dependencies": {
+                "hosted-git-info": "^4.0.1",
+                "is-core-module": "^2.5.0",
+                "semver": "^7.3.4",
+                "validate-npm-package-license": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=10"
+            }
         },
-        "querystring-browser": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz",
-            "integrity": "sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY="
+        "node_modules/meow/node_modules/type-fest": {
+            "version": "0.18.1",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+            "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "querystring-es3": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-            "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+        "node_modules/meow/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
             "dev": true
         },
-        "queue-microtask": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-            "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+        "node_modules/merge-descriptors": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+            "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
         },
-        "quick-lru": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
-            "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
-            "dev": true
+        "node_modules/merge-stream": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
         },
-        "raf": {
-            "version": "3.4.1",
-            "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
-            "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
-            "requires": {
-                "performance-now": "^2.1.0"
+        "node_modules/merge2": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+            "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "raf-schd": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz",
-            "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ=="
-        },
-        "railroad-diagrams": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
-            "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234="
+        "node_modules/methods": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+            "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+            "engines": {
+                "node": ">= 0.6"
+            }
         },
-        "randexp": {
-            "version": "0.4.6",
-            "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
-            "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
-            "requires": {
-                "discontinuous-range": "1.0.0",
-                "ret": "~0.1.10"
+        "node_modules/metro": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro/-/metro-0.73.9.tgz",
+            "integrity": "sha512-BlYbPmTF60hpetyNdKhdvi57dSqutb+/oK0u3ni4emIh78PiI0axGo7RfdsZ/mn3saASXc94tDbpC5yn7+NpEg==",
+            "peer": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "@babel/core": "^7.20.0",
+                "@babel/generator": "^7.20.0",
+                "@babel/parser": "^7.20.0",
+                "@babel/template": "^7.0.0",
+                "@babel/traverse": "^7.20.0",
+                "@babel/types": "^7.20.0",
+                "absolute-path": "^0.0.0",
+                "accepts": "^1.3.7",
+                "async": "^3.2.2",
+                "chalk": "^4.0.0",
+                "ci-info": "^2.0.0",
+                "connect": "^3.6.5",
+                "debug": "^2.2.0",
+                "denodeify": "^1.2.1",
+                "error-stack-parser": "^2.0.6",
+                "graceful-fs": "^4.2.4",
+                "hermes-parser": "0.8.0",
+                "image-size": "^0.6.0",
+                "invariant": "^2.2.4",
+                "jest-worker": "^27.2.0",
+                "lodash.throttle": "^4.1.1",
+                "metro-babel-transformer": "0.73.9",
+                "metro-cache": "0.73.9",
+                "metro-cache-key": "0.73.9",
+                "metro-config": "0.73.9",
+                "metro-core": "0.73.9",
+                "metro-file-map": "0.73.9",
+                "metro-hermes-compiler": "0.73.9",
+                "metro-inspector-proxy": "0.73.9",
+                "metro-minify-terser": "0.73.9",
+                "metro-minify-uglify": "0.73.9",
+                "metro-react-native-babel-preset": "0.73.9",
+                "metro-resolver": "0.73.9",
+                "metro-runtime": "0.73.9",
+                "metro-source-map": "0.73.9",
+                "metro-symbolicate": "0.73.9",
+                "metro-transform-plugins": "0.73.9",
+                "metro-transform-worker": "0.73.9",
+                "mime-types": "^2.1.27",
+                "node-fetch": "^2.2.0",
+                "nullthrows": "^1.1.1",
+                "rimraf": "^3.0.2",
+                "serialize-error": "^2.1.0",
+                "source-map": "^0.5.6",
+                "strip-ansi": "^6.0.0",
+                "temp": "0.8.3",
+                "throat": "^5.0.0",
+                "ws": "^7.5.1",
+                "yargs": "^17.5.1"
+            },
+            "bin": {
+                "metro": "src/cli.js"
             }
         },
-        "randombytes": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-            "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-            "requires": {
-                "safe-buffer": "^5.1.0"
+        "node_modules/metro-babel-transformer": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.73.9.tgz",
+            "integrity": "sha512-DlYwg9wwYIZTHtic7dyD4BP0SDftoltZ3clma76nHu43blMWsCnrImHeHsAVne3XsQ+RJaSRxhN5nkG2VyVHwA==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.20.0",
+                "hermes-parser": "0.8.0",
+                "metro-source-map": "0.73.9",
+                "nullthrows": "^1.1.1"
             }
         },
-        "randomfill": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-            "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-            "dev": true,
-            "requires": {
-                "randombytes": "^2.0.5",
-                "safe-buffer": "^5.1.0"
+        "node_modules/metro-cache": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.73.9.tgz",
+            "integrity": "sha512-upiRxY8rrQkUWj7ieACD6tna7xXuXdu2ZqrheksT79ePI0aN/t0memf6WcyUtJUMHZetke3j+ppELNvlmp3tOw==",
+            "peer": true,
+            "dependencies": {
+                "metro-core": "0.73.9",
+                "rimraf": "^3.0.2"
             }
         },
-        "range-parser": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-            "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        "node_modules/metro-cache-key": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.73.9.tgz",
+            "integrity": "sha512-uJg+6Al7UoGIuGfoxqPBy6y1Ewq7Y8/YapGYIDh6sohInwt/kYKnPZgLDYHIPvY2deORnQ/2CYo4tOeBTnhCXQ==",
+            "peer": true
         },
-        "raw-body": {
-            "version": "2.4.3",
-            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
-            "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
-            "requires": {
-                "bytes": "3.1.2",
-                "http-errors": "1.8.1",
-                "iconv-lite": "0.4.24",
-                "unpipe": "1.0.0"
+        "node_modules/metro-config": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.73.9.tgz",
+            "integrity": "sha512-NiWl1nkYtjqecDmw77tbRbXnzIAwdO6DXGZTuKSkH+H/c1NKq1eizO8Fe+NQyFtwR9YLqn8Q0WN1nmkwM1j8CA==",
+            "peer": true,
+            "dependencies": {
+                "cosmiconfig": "^5.0.5",
+                "jest-validate": "^26.5.2",
+                "metro": "0.73.9",
+                "metro-cache": "0.73.9",
+                "metro-core": "0.73.9",
+                "metro-runtime": "0.73.9"
             }
         },
-        "rc": {
-            "version": "1.2.8",
-            "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-            "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-            "dev": true,
-            "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
+        "node_modules/metro-core": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.73.9.tgz",
+            "integrity": "sha512-1NTs0IErlKcFTfYyRT3ljdgrISWpl1nys+gaHkXapzTSpvtX9F1NQNn5cgAuE+XIuTJhbsCdfIJiM2JXbrJQaQ==",
+            "peer": true,
+            "dependencies": {
+                "lodash.throttle": "^4.1.1",
+                "metro-resolver": "0.73.9"
             }
         },
-        "react": {
-            "version": "17.0.2",
-            "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
-            "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
-            "requires": {
-                "loose-envify": "^1.1.0",
-                "object-assign": "^4.1.1"
+        "node_modules/metro-file-map": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.73.9.tgz",
+            "integrity": "sha512-R/Wg3HYeQhYY3ehWtfedw8V0ne4lpufG7a21L3GWer8tafnC9pmjoCKEbJz9XZkVj9i1FtxE7UTbrtZNeIILxQ==",
+            "peer": true,
+            "dependencies": {
+                "abort-controller": "^3.0.0",
+                "anymatch": "^3.0.3",
+                "debug": "^2.2.0",
+                "fb-watchman": "^2.0.0",
+                "graceful-fs": "^4.2.4",
+                "invariant": "^2.2.4",
+                "jest-regex-util": "^27.0.6",
+                "jest-serializer": "^27.0.6",
+                "jest-util": "^27.2.0",
+                "jest-worker": "^27.2.0",
+                "micromatch": "^4.0.4",
+                "nullthrows": "^1.1.1",
+                "walker": "^1.0.7"
+            },
+            "optionalDependencies": {
+                "fsevents": "^2.3.2"
             }
         },
-        "react-base16-styling": {
-            "version": "0.5.3",
-            "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.5.3.tgz",
-            "integrity": "sha1-OFjyTpxN2MvT9wLz901YHKKRcmk=",
-            "requires": {
-                "base16": "^1.0.0",
-                "lodash.curry": "^4.0.1",
-                "lodash.flow": "^3.3.0",
-                "pure-color": "^1.2.0"
-            }
-        },
-        "react-beautiful-dnd": {
-            "version": "11.0.5",
-            "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-11.0.5.tgz",
-            "integrity": "sha512-7llby9U+jIfkINcyxPHVWU0HFYzqxMemUYgGHsFsbx4fZo1n/pW6sYKYzhxGxR3Ap5HxqswcQkKUZX4uEUWhlw==",
-            "requires": {
-                "@babel/runtime-corejs2": "^7.4.5",
-                "css-box-model": "^1.1.2",
-                "memoize-one": "^5.0.4",
-                "raf-schd": "^4.0.0",
-                "react-redux": "^7.0.3",
-                "redux": "^4.0.1",
-                "tiny-invariant": "^1.0.4",
-                "use-memo-one": "^1.1.0"
-            }
-        },
-        "react-custom-scrollbars": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz",
-            "integrity": "sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=",
-            "requires": {
-                "dom-css": "^2.0.0",
-                "prop-types": "^15.5.10",
-                "raf": "^3.1.0"
+        "node_modules/metro-file-map/node_modules/@jest/types": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+            "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+            "peer": true,
+            "dependencies": {
+                "@types/istanbul-lib-coverage": "^2.0.0",
+                "@types/istanbul-reports": "^3.0.0",
+                "@types/node": "*",
+                "@types/yargs": "^16.0.0",
+                "chalk": "^4.0.0"
+            },
+            "engines": {
+                "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
             }
         },
-        "react-dock": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/react-dock/-/react-dock-0.3.0.tgz",
-            "integrity": "sha512-A0Dfy6enwb6gruxsMXAkZM6hVyJETTcuB4u/CUVPAj4ZH0/ULQacLHmIdUHfYtZYmPCfeEgOa7KyTueSPrIjFg==",
-            "requires": {
-                "@types/prop-types": "^15.7.3",
-                "lodash.debounce": "^4.0.8",
-                "prop-types": "^15.7.2"
+        "node_modules/metro-file-map/node_modules/@types/yargs": {
+            "version": "16.0.5",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+            "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+            "peer": true,
+            "dependencies": {
+                "@types/yargs-parser": "*"
             }
         },
-        "react-dom": {
-            "version": "17.0.2",
-            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
-            "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
-            "requires": {
-                "loose-envify": "^1.1.0",
-                "object-assign": "^4.1.1",
-                "scheduler": "^0.20.2"
-            },
-            "dependencies": {
-                "scheduler": {
-                    "version": "0.20.2",
-                    "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
-                    "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
-                    "requires": {
-                        "loose-envify": "^1.1.0",
-                        "object-assign": "^4.1.1"
-                    }
+        "node_modules/metro-file-map/node_modules/ci-info": {
+            "version": "3.8.0",
+            "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+            "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/sibiraj-s"
                 }
+            ],
+            "peer": true,
+            "engines": {
+                "node": ">=8"
             }
         },
-        "react-draggable": {
-            "version": "4.4.4",
-            "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.4.tgz",
-            "integrity": "sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==",
-            "requires": {
-                "clsx": "^1.1.1",
-                "prop-types": "^15.6.0"
+        "node_modules/metro-file-map/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "peer": true,
+            "dependencies": {
+                "ms": "2.0.0"
             }
         },
-        "react-fast-compare": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
-            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        "node_modules/metro-file-map/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "peer": true,
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+            }
         },
-        "react-frame-component": {
-            "version": "4.1.3",
-            "resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-4.1.3.tgz",
-            "integrity": "sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA=="
+        "node_modules/metro-file-map/node_modules/jest-regex-util": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+            "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+            "peer": true,
+            "engines": {
+                "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+            }
         },
-        "react-helmet": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
-            "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
-            "requires": {
-                "object-assign": "^4.1.1",
-                "prop-types": "^15.7.2",
-                "react-fast-compare": "^3.1.1",
-                "react-side-effect": "^2.1.0"
+        "node_modules/metro-file-map/node_modules/jest-serializer": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+            "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+            "peer": true,
+            "dependencies": {
+                "@types/node": "*",
+                "graceful-fs": "^4.2.9"
             },
+            "engines": {
+                "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+            }
+        },
+        "node_modules/metro-file-map/node_modules/jest-util": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+            "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+            "peer": true,
             "dependencies": {
-                "react-fast-compare": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
-                    "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
-                },
-                "react-side-effect": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz",
-                    "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ=="
-                }
-            }
-        },
-        "react-is": {
-            "version": "16.13.1",
-            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-            "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        },
-        "react-json-tree": {
-            "version": "0.11.2",
-            "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.11.2.tgz",
-            "integrity": "sha512-aYhUPj1y5jR3ZQ+G3N7aL8FbTyO03iLwnVvvEikLcNFqNTyabdljo9xDftZndUBFyyyL0aK3qGO9+8EilILHUw==",
-            "requires": {
-                "babel-runtime": "^6.6.1",
-                "prop-types": "^15.5.8",
-                "react-base16-styling": "^0.5.1"
-            }
-        },
-        "react-jsx-parser": {
-            "version": "1.29.0",
-            "resolved": "https://registry.npmjs.org/react-jsx-parser/-/react-jsx-parser-1.29.0.tgz",
-            "integrity": "sha512-u0svZd0UsPffRrIK0sTbox54jhEbTmg6ED9ob5FQahp1DeOpd2Rq+KiSTIFNYkZUL+WZi4Ntia/Oj5T4lDJafQ==",
-            "requires": {
-                "@types/jsdom": "^16.2.6",
-                "@types/react": "^17.0.1",
-                "@types/react-dom": "^17.0.0",
-                "acorn": "^8.0.5",
-                "acorn-jsx": "^5.3.1",
-                "browserslist": "^4.14.5",
-                "core-js": "^3.8.3"
-            }
-        },
-        "react-live": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/react-live/-/react-live-2.4.1.tgz",
-            "integrity": "sha512-r+32f7oV/kBs3QZBRvaT+9vOkQW47UZrDpgwUe5FiIMOl7sdo5pmISgb7Zpj5PGHgY6XQaiXs3FEh+IWw3KbRg==",
-            "requires": {
-                "@types/buble": "^0.20.0",
-                "buble": "0.19.6",
-                "core-js": "^3.14.0",
-                "dom-iterator": "^1.0.0",
-                "prism-react-renderer": "^1.2.1",
-                "prop-types": "^15.7.2",
-                "react-simple-code-editor": "^0.11.0",
-                "unescape": "^1.0.1"
-            }
-        },
-        "react-native-crypto-js": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz",
-            "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA=="
-        },
-        "react-player": {
-            "version": "2.9.0",
-            "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.9.0.tgz",
-            "integrity": "sha512-jNUkTfMmUhwPPAktAdIqiBcVUKsFKrVGH6Ocutj6535CNfM91yrvWxHg6fvIX8Y/fjYUPoejddwh7qboNV9vGA==",
-            "requires": {
-                "deepmerge": "^4.0.0",
-                "load-script": "^1.0.0",
-                "memoize-one": "^5.1.1",
-                "prop-types": "^15.7.2",
-                "react-fast-compare": "^3.0.1"
+                "@jest/types": "^27.5.1",
+                "@types/node": "*",
+                "chalk": "^4.0.0",
+                "ci-info": "^3.2.0",
+                "graceful-fs": "^4.2.9",
+                "picomatch": "^2.2.3"
             },
-            "dependencies": {
-                "react-fast-compare": {
-                    "version": "3.2.0",
-                    "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
-                    "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
-                }
+            "engines": {
+                "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
             }
         },
-        "react-pure-render": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/react-pure-render/-/react-pure-render-1.0.2.tgz",
-            "integrity": "sha1-nYqSjH8sN1E8LQZOV7Pjw1bp+rs="
-        },
-        "react-redux": {
-            "version": "7.2.6",
-            "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz",
-            "integrity": "sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ==",
-            "requires": {
-                "@babel/runtime": "^7.15.4",
-                "@types/react-redux": "^7.1.20",
-                "hoist-non-react-statics": "^3.3.2",
-                "loose-envify": "^1.4.0",
-                "prop-types": "^15.7.2",
-                "react-is": "^17.0.2"
-            },
+        "node_modules/metro-file-map/node_modules/jest-worker": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+            "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+            "peer": true,
             "dependencies": {
-                "react-is": {
-                    "version": "17.0.2",
-                    "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-                    "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-                }
-            }
-        },
-        "react-router": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz",
-            "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==",
-            "requires": {
-                "@babel/runtime": "^7.12.13",
-                "history": "^4.9.0",
-                "hoist-non-react-statics": "^3.1.0",
-                "loose-envify": "^1.3.1",
-                "mini-create-react-context": "^0.4.0",
-                "path-to-regexp": "^1.7.0",
-                "prop-types": "^15.6.2",
-                "react-is": "^16.6.0",
-                "tiny-invariant": "^1.0.2",
-                "tiny-warning": "^1.0.0"
+                "@types/node": "*",
+                "merge-stream": "^2.0.0",
+                "supports-color": "^8.0.0"
             },
-            "dependencies": {
-                "path-to-regexp": {
-                    "version": "1.8.0",
-                    "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-                    "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-                    "requires": {
-                        "isarray": "0.0.1"
-                    }
-                }
+            "engines": {
+                "node": ">= 10.13.0"
             }
         },
-        "react-router-config": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz",
-            "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==",
-            "requires": {
-                "@babel/runtime": "^7.1.2"
-            }
-        },
-        "react-router-dom": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz",
-            "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==",
-            "requires": {
-                "@babel/runtime": "^7.12.13",
-                "history": "^4.9.0",
-                "loose-envify": "^1.3.1",
-                "prop-types": "^15.6.2",
-                "react-router": "5.2.1",
-                "tiny-invariant": "^1.0.2",
-                "tiny-warning": "^1.0.0"
-            }
+        "node_modules/metro-file-map/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "peer": true
         },
-        "react-side-effect": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.2.0.tgz",
-            "integrity": "sha512-v1ht1aHg5k/thv56DRcjw+WtojuuDHFUgGfc+bFHOWsF4ZK6C2V57DO0Or0GPsg6+LSTE0M6Ry/gfzhzSwbc5w==",
-            "requires": {
-                "shallowequal": "^1.0.1"
+        "node_modules/metro-file-map/node_modules/supports-color": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+            "peer": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/supports-color?sponsor=1"
             }
         },
-        "react-simple-code-editor": {
-            "version": "0.11.0",
-            "resolved": "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.11.0.tgz",
-            "integrity": "sha512-xGfX7wAzspl113ocfKQAR8lWPhavGWHL3xSzNLeseDRHysT+jzRBi/ExdUqevSMos+7ZtdfeuBOXtgk9HTwsrw=="
-        },
-        "react-spring": {
-            "version": "9.4.3",
-            "resolved": "https://registry.npmjs.org/react-spring/-/react-spring-9.4.3.tgz",
-            "integrity": "sha512-GGKAqQQ790JLoA2SAUgdJErFRG8oFR6pzX8jnJoqORVWX5Wo9bJUWs4563f2oN19+yQkVhc77neAkqQ7GCN8Lw==",
-            "requires": {
-                "@react-spring/core": "~9.4.3-beta.0",
-                "@react-spring/konva": "~9.4.3-beta.0",
-                "@react-spring/native": "~9.4.3-beta.0",
-                "@react-spring/three": "~9.4.3-beta.0",
-                "@react-spring/web": "~9.4.3-beta.0",
-                "@react-spring/zdog": "~9.4.3-beta.0"
-            }
-        },
-        "react-syntax-highlighter": {
-            "version": "11.0.3",
-            "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-11.0.3.tgz",
-            "integrity": "sha512-0v0ET2qn9oAam4K/Te9Q/2jtS4R2d6wUFqgk5VcxrCBm+4MB5BE+oQf2CA0RanUHbYaYFuagt/AugICU87ufxQ==",
-            "requires": {
-                "@babel/runtime": "^7.3.1",
-                "highlight.js": "~9.18.2",
-                "lowlight": "~1.11.0",
-                "prismjs": "^1.8.4",
-                "refractor": "^2.4.1"
-            }
-        },
-        "react-test-renderer": {
-            "version": "16.14.0",
-            "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz",
-            "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==",
-            "requires": {
-                "object-assign": "^4.1.1",
-                "prop-types": "^15.6.2",
-                "react-is": "^16.8.6",
-                "scheduler": "^0.19.1"
-            }
+        "node_modules/metro-hermes-compiler": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.73.9.tgz",
+            "integrity": "sha512-5B3vXIwQkZMSh3DQQY23XpTCpX9kPLqZbA3rDuAcbGW0tzC3f8dCenkyBb0GcCzyTDncJeot/A7oVCVK6zapwg==",
+            "peer": true
         },
-        "react-toastify": {
-            "version": "5.5.0",
-            "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-5.5.0.tgz",
-            "integrity": "sha512-jsVme7jALIFGRyQsri/g4YTsRuaaGI70T6/ikjwZMB4mwTZaCWqj5NqxhGrRStKlJc5npXKKvKeqTiRGQl78LQ==",
-            "requires": {
-                "@babel/runtime": "^7.4.2",
-                "classnames": "^2.2.6",
-                "prop-types": "^15.7.2",
-                "react-transition-group": "^4"
+        "node_modules/metro-inspector-proxy": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.73.9.tgz",
+            "integrity": "sha512-B3WrWZnlYhtTrv0IaX3aUAhi2qVILPAZQzb5paO1e+xrz4YZHk9c7dXv7qe7B/IQ132e3w46y3AL7rFo90qVjA==",
+            "peer": true,
+            "dependencies": {
+                "connect": "^3.6.5",
+                "debug": "^2.2.0",
+                "ws": "^7.5.1",
+                "yargs": "^17.5.1"
+            },
+            "bin": {
+                "metro-inspector-proxy": "src/cli.js"
             }
         },
-        "react-touch-events": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/react-touch-events/-/react-touch-events-2.1.0.tgz",
-            "integrity": "sha1-4ck6MomWNEzZGVN1ONZ7X78rLd8=",
-            "requires": {
-                "prop-types": "^15.5.8"
+        "node_modules/metro-inspector-proxy/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "peer": true,
+            "dependencies": {
+                "ms": "2.0.0"
             }
         },
-        "react-transition-group": {
-            "version": "4.4.2",
-            "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
-            "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
-            "requires": {
-                "@babel/runtime": "^7.5.5",
-                "dom-helpers": "^5.0.1",
-                "loose-envify": "^1.4.0",
-                "prop-types": "^15.6.2"
+        "node_modules/metro-inspector-proxy/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "peer": true
+        },
+        "node_modules/metro-minify-terser": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.73.9.tgz",
+            "integrity": "sha512-MTGPu2qV5qtzPJ2SqH6s58awHDtZ4jd7lmmLR+7TXDwtZDjIBA0YVfI0Zak2Haby2SqoNKrhhUns/b4dPAQAVg==",
+            "peer": true,
+            "dependencies": {
+                "terser": "^5.15.0"
+            }
+        },
+        "node_modules/metro-minify-uglify": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.73.9.tgz",
+            "integrity": "sha512-gzxD/7WjYcnCNGiFJaA26z34rjOp+c/Ft++194Wg91lYep3TeWQ0CnH8t2HRS7AYDHU81SGWgvD3U7WV0g4LGA==",
+            "peer": true,
+            "dependencies": {
+                "uglify-es": "^3.1.9"
+            }
+        },
+        "node_modules/metro-react-native-babel-preset": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.9.tgz",
+            "integrity": "sha512-AoD7v132iYDV4K78yN2OLgTPwtAKn0XlD2pOhzyBxiI8PeXzozhbKyPV7zUOJUPETj+pcEVfuYj5ZN/8+bhbCw==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.20.0",
+                "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+                "@babel/plugin-proposal-class-properties": "^7.0.0",
+                "@babel/plugin-proposal-export-default-from": "^7.0.0",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+                "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+                "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+                "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+                "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+                "@babel/plugin-syntax-export-default-from": "^7.0.0",
+                "@babel/plugin-syntax-flow": "^7.18.0",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+                "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+                "@babel/plugin-transform-arrow-functions": "^7.0.0",
+                "@babel/plugin-transform-async-to-generator": "^7.0.0",
+                "@babel/plugin-transform-block-scoping": "^7.0.0",
+                "@babel/plugin-transform-classes": "^7.0.0",
+                "@babel/plugin-transform-computed-properties": "^7.0.0",
+                "@babel/plugin-transform-destructuring": "^7.0.0",
+                "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+                "@babel/plugin-transform-function-name": "^7.0.0",
+                "@babel/plugin-transform-literals": "^7.0.0",
+                "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+                "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+                "@babel/plugin-transform-parameters": "^7.0.0",
+                "@babel/plugin-transform-react-display-name": "^7.0.0",
+                "@babel/plugin-transform-react-jsx": "^7.0.0",
+                "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+                "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+                "@babel/plugin-transform-runtime": "^7.0.0",
+                "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+                "@babel/plugin-transform-spread": "^7.0.0",
+                "@babel/plugin-transform-sticky-regex": "^7.0.0",
+                "@babel/plugin-transform-template-literals": "^7.0.0",
+                "@babel/plugin-transform-typescript": "^7.5.0",
+                "@babel/plugin-transform-unicode-regex": "^7.0.0",
+                "@babel/template": "^7.0.0",
+                "react-refresh": "^0.4.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "*"
+            }
+        },
+        "node_modules/metro-react-native-babel-transformer": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.73.9.tgz",
+            "integrity": "sha512-DSdrEHuQ22ixY7DyipyKkIcqhOJrt5s6h6X7BYJCP9AMUfXOwLe2biY3BcgJz5GOXv8/Akry4vTCvQscVS1otQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.20.0",
+                "babel-preset-fbjs": "^3.4.0",
+                "hermes-parser": "0.8.0",
+                "metro-babel-transformer": "0.73.9",
+                "metro-react-native-babel-preset": "0.73.9",
+                "metro-source-map": "0.73.9",
+                "nullthrows": "^1.1.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "*"
+            }
+        },
+        "node_modules/metro-resolver": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.73.9.tgz",
+            "integrity": "sha512-Ej3wAPOeNRPDnJmkK0zk7vJ33iU07n+oPhpcf5L0NFkWneMmSM2bflMPibI86UjzZGmRfn0AhGhs8yGeBwQ/Xg==",
+            "peer": true,
+            "dependencies": {
+                "absolute-path": "^0.0.0"
+            }
+        },
+        "node_modules/metro-runtime": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.73.9.tgz",
+            "integrity": "sha512-d5Hs83FpKB9r8q8Vb95+fa6ESpwysmPr4lL1I2rM2qXAFiO7OAPT9Bc23WmXgidkBtD0uUFdB2lG+H1ATz8rZg==",
+            "peer": true,
+            "dependencies": {
+                "@babel/runtime": "^7.0.0",
+                "react-refresh": "^0.4.0"
+            }
+        },
+        "node_modules/metro-source-map": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.73.9.tgz",
+            "integrity": "sha512-l4VZKzdqafipriETYR6lsrwtavCF1+CMhCOY9XbyWeTrpGSNgJQgdeJpttzEZTHQQTLR0csQo0nD1ef3zEP6IQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/traverse": "^7.20.0",
+                "@babel/types": "^7.20.0",
+                "invariant": "^2.2.4",
+                "metro-symbolicate": "0.73.9",
+                "nullthrows": "^1.1.1",
+                "ob1": "0.73.9",
+                "source-map": "^0.5.6",
+                "vlq": "^1.0.0"
             }
         },
-        "react-use-gesture": {
-            "version": "7.0.16",
-            "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-7.0.16.tgz",
-            "integrity": "sha512-gwgX+E+WQG0T1uFVl3z8j3ZwH3QQGIgVl7VtQEC2m0IscSs668sSps4Ss3CFp3Vns8xx0j9TVK4aBXH6+YrpEg=="
-        },
-        "read": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
-            "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
-            "dev": true,
-            "requires": {
-                "mute-stream": "~0.0.4"
+        "node_modules/metro-source-map/node_modules/source-map": {
+            "version": "0.5.7",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+            "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "read-pkg": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
-            "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
-            "requires": {
-                "load-json-file": "^4.0.0",
-                "normalize-package-data": "^2.3.2",
-                "path-type": "^3.0.0"
-            },
+        "node_modules/metro-symbolicate": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.73.9.tgz",
+            "integrity": "sha512-4TUOwxRHHqbEHxRqRJ3wZY5TA8xq7AHMtXrXcjegMH9FscgYztsrIG9aNBUBS+VLB6g1qc6BYbfIgoAnLjCDyw==",
+            "peer": true,
             "dependencies": {
-                "path-type": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-                    "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-                    "requires": {
-                        "pify": "^3.0.0"
-                    }
-                },
-                "pify": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-                    "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
-                }
-            }
-        },
-        "read-pkg-up": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-            "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-            "dev": true,
-            "requires": {
-                "find-up": "^1.0.0",
-                "read-pkg": "^1.0.0"
+                "invariant": "^2.2.4",
+                "metro-source-map": "0.73.9",
+                "nullthrows": "^1.1.1",
+                "source-map": "^0.5.6",
+                "through2": "^2.0.1",
+                "vlq": "^1.0.0"
             },
-            "dependencies": {
-                "find-up": {
-                    "version": "1.1.2",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-                    "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-                    "dev": true,
-                    "requires": {
-                        "path-exists": "^2.0.0",
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "load-json-file": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-                    "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "parse-json": "^2.2.0",
-                        "pify": "^2.0.0",
-                        "pinkie-promise": "^2.0.0",
-                        "strip-bom": "^2.0.0"
-                    }
-                },
-                "parse-json": {
-                    "version": "2.2.0",
-                    "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-                    "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-                    "dev": true,
-                    "requires": {
-                        "error-ex": "^1.2.0"
-                    }
-                },
-                "path-exists": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-                    "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-                    "dev": true,
-                    "requires": {
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "path-type": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-                    "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.2",
-                        "pify": "^2.0.0",
-                        "pinkie-promise": "^2.0.0"
-                    }
-                },
-                "pify": {
-                    "version": "2.3.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-                    "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-                    "dev": true
-                },
-                "read-pkg": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-                    "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-                    "dev": true,
-                    "requires": {
-                        "load-json-file": "^1.0.0",
-                        "normalize-package-data": "^2.3.2",
-                        "path-type": "^1.0.0"
-                    }
-                },
-                "strip-bom": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-                    "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-                    "dev": true,
-                    "requires": {
-                        "is-utf8": "^0.2.0"
-                    }
-                }
+            "bin": {
+                "metro-symbolicate": "src/index.js"
+            },
+            "engines": {
+                "node": ">=8.3"
             }
         },
-        "readable-stream": {
-            "version": "2.3.7",
-            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-            "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-            "dev": true,
-            "requires": {
+        "node_modules/metro-symbolicate/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "peer": true
+        },
+        "node_modules/metro-symbolicate/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "peer": true,
+            "dependencies": {
                 "core-util-is": "~1.0.0",
                 "inherits": "~2.0.3",
                 "isarray": "~1.0.0",
@@ -19463,6004 +17666,10572 @@
                 "safe-buffer": "~5.1.1",
                 "string_decoder": "~1.1.1",
                 "util-deprecate": "~1.0.1"
-            },
-            "dependencies": {
-                "isarray": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-                    "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-                    "dev": true
-                }
             }
         },
-        "readdir-recursive": {
-            "version": "0.0.4",
-            "resolved": "https://registry.npmjs.org/readdir-recursive/-/readdir-recursive-0.0.4.tgz",
-            "integrity": "sha1-mvQ1q6nFi9gNvclIi025up8SMB8=",
-            "dev": true
+        "node_modules/metro-symbolicate/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "peer": true
         },
-        "readdirp": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-            "requires": {
-                "picomatch": "^2.2.1"
+        "node_modules/metro-symbolicate/node_modules/source-map": {
+            "version": "0.5.7",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+            "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "rechoir": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-            "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-            "dev": true,
-            "requires": {
-                "resolve": "^1.1.6"
+        "node_modules/metro-symbolicate/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "peer": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "redbox-react": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.6.0.tgz",
-            "integrity": "sha512-mLjM5eYR41yOp5YKHpd3syFeGq6B4Wj5vZr64nbLvTZW5ZLff4LYk7VE4ITpVxkZpCY6OZuqh0HiP3A3uEaCpg==",
-            "requires": {
-                "error-stack-parser": "^1.3.6",
-                "object-assign": "^4.0.1",
-                "prop-types": "^15.5.4",
-                "sourcemapped-stacktrace": "^1.1.6"
+        "node_modules/metro-symbolicate/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "peer": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
             }
         },
-        "redent": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
-            "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-            "dev": true,
-            "requires": {
-                "indent-string": "^2.1.0",
-                "strip-indent": "^1.0.1"
-            },
-            "dependencies": {
-                "indent-string": {
-                    "version": "2.1.0",
-                    "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
-                    "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-                    "dev": true,
-                    "requires": {
-                        "repeating": "^2.0.0"
-                    }
-                }
+        "node_modules/metro-transform-plugins": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.73.9.tgz",
+            "integrity": "sha512-r9NeiqMngmooX2VOKLJVQrMuV7PAydbqst5bFhdVBPcFpZkxxqyzjzo+kzrszGy2UpSQBZr2P1L6OMjLHwQwfQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.20.0",
+                "@babel/generator": "^7.20.0",
+                "@babel/template": "^7.0.0",
+                "@babel/traverse": "^7.20.0",
+                "nullthrows": "^1.1.1"
+            }
+        },
+        "node_modules/metro-transform-worker": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.73.9.tgz",
+            "integrity": "sha512-Rq4b489sIaTUENA+WCvtu9yvlT/C6zFMWhU4sq+97W29Zj0mPBjdk+qGT5n1ZBgtBIJzZWt1KxeYuc17f4aYtQ==",
+            "peer": true,
+            "dependencies": {
+                "@babel/core": "^7.20.0",
+                "@babel/generator": "^7.20.0",
+                "@babel/parser": "^7.20.0",
+                "@babel/types": "^7.20.0",
+                "babel-preset-fbjs": "^3.4.0",
+                "metro": "0.73.9",
+                "metro-babel-transformer": "0.73.9",
+                "metro-cache": "0.73.9",
+                "metro-cache-key": "0.73.9",
+                "metro-hermes-compiler": "0.73.9",
+                "metro-source-map": "0.73.9",
+                "metro-transform-plugins": "0.73.9",
+                "nullthrows": "^1.1.1"
+            }
+        },
+        "node_modules/metro/node_modules/async": {
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+            "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+            "peer": true
+        },
+        "node_modules/metro/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "peer": true,
+            "dependencies": {
+                "ms": "2.0.0"
             }
         },
-        "redux": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz",
-            "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==",
-            "requires": {
-                "@babel/runtime": "^7.9.2"
+        "node_modules/metro/node_modules/jest-worker": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+            "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+            "peer": true,
+            "dependencies": {
+                "@types/node": "*",
+                "merge-stream": "^2.0.0",
+                "supports-color": "^8.0.0"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
             }
         },
-        "redux-devtools": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmjs.org/redux-devtools/-/redux-devtools-3.7.0.tgz",
-            "integrity": "sha512-Lnx3UX7mnJij2Xs+RicPK1GyKkbuodrCKtfYmJsN603wC0mc99W//xCAskGVNmRhIXg4e57m2k1CyX0kVzCsBg==",
-            "requires": {
-                "@types/prop-types": "^15.7.3",
-                "lodash": "^4.17.19",
-                "prop-types": "^15.7.2",
-                "redux-devtools-instrument": "^1.10.0"
+        "node_modules/metro/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "peer": true
+        },
+        "node_modules/metro/node_modules/source-map": {
+            "version": "0.5.7",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+            "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "redux-devtools-dock-monitor": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/redux-devtools-dock-monitor/-/redux-devtools-dock-monitor-1.2.0.tgz",
-            "integrity": "sha512-8Qs47jjs5itZMdhnXVl9sfpb1FPtxQZqs11reKUkJ83xxVsE9plL6FXj+kPjRStppzWUsDLMOLACVx3w/TjiRQ==",
-            "requires": {
-                "@types/prop-types": "^15.7.3",
-                "parse-key": "^0.2.1",
-                "prop-types": "^15.7.2",
-                "react-dock": "^0.3.0"
+        "node_modules/metro/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "peer": true,
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "redux-devtools-instrument": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/redux-devtools-instrument/-/redux-devtools-instrument-1.10.0.tgz",
-            "integrity": "sha512-X8JRBCzX2ADSMp+iiV7YQ8uoTNyEm0VPFPd4T854coz6lvRiBrFSqAr9YAS2n8Kzxx8CJQotR0QF9wsMM+3DvA==",
-            "requires": {
-                "lodash": "^4.17.19",
-                "symbol-observable": "^1.2.0"
+        "node_modules/metro/node_modules/supports-color": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+            "peer": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/supports-color?sponsor=1"
             }
         },
-        "redux-devtools-log-monitor": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/redux-devtools-log-monitor/-/redux-devtools-log-monitor-2.1.0.tgz",
-            "integrity": "sha512-68YOl45psVVXNzE4LZEnbb6Jsc2JiNyy6SZDgaJDXUOODVdzIQbjd30wUODoRx4P0J/1oSyJdYrb8PUtmtYbtA==",
-            "requires": {
-                "@types/lodash.debounce": "^4.0.6",
-                "@types/prop-types": "^15.7.3",
-                "@types/redux-devtools-themes": "^1.0.0",
-                "lodash.debounce": "^4.0.8",
-                "prop-types": "^15.7.2",
-                "react-json-tree": "^0.13.0",
-                "redux-devtools-themes": "^1.0.0"
-            },
-            "dependencies": {
-                "react-base16-styling": {
-                    "version": "0.8.2",
-                    "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.8.2.tgz",
-                    "integrity": "sha512-5bxHCNKT/FfU9yMzNB/CaCQLGqZ/Nr4FnaIRJUTkwwPTRaCfYAP+/3opeQb61XvesmofJ4FloTSYW9aw1tMXqQ==",
-                    "requires": {
-                        "@types/base16": "^1.0.2",
-                        "@types/lodash": "^4.14.178",
-                        "base16": "^1.0.0",
-                        "color": "^3.2.1",
-                        "csstype": "^3.0.10",
-                        "lodash.curry": "^4.1.1"
-                    }
+        "node_modules/micromark": {
+            "version": "2.11.4",
+            "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
+            "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "GitHub Sponsors",
+                    "url": "https://github.com/sponsors/unifiedjs"
                 },
-                "react-json-tree": {
-                    "version": "0.13.0",
-                    "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.13.0.tgz",
-                    "integrity": "sha512-FPJUQzYWi7pvBUAnMd9ENOnAUT2mXLhe01VUbPfKH9Q4gk4FQ0fpS1e1WZ3o7g6zfYJpYJeBTo1WwlMHlMlZOw==",
-                    "requires": {
-                        "@types/prop-types": "^15.7.3",
-                        "prop-types": "^15.7.2",
-                        "react-base16-styling": "^0.8.0"
-                    }
+                {
+                    "type": "OpenCollective",
+                    "url": "https://opencollective.com/unified"
                 }
+            ],
+            "dependencies": {
+                "debug": "^4.0.0",
+                "parse-entities": "^2.0.0"
             }
         },
-        "redux-devtools-themes": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/redux-devtools-themes/-/redux-devtools-themes-1.0.0.tgz",
-            "integrity": "sha1-xILc48U3OXYEX0ATSQfZ3LOuPV0=",
-            "requires": {
-                "base16": "^1.0.0"
+        "node_modules/micromatch": {
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+            "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+            "dependencies": {
+                "braces": "^3.0.2",
+                "picomatch": "^2.3.1"
+            },
+            "engines": {
+                "node": ">=8.6"
             }
         },
-        "redux-local-persist": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/redux-local-persist/-/redux-local-persist-0.1.0.tgz",
-            "integrity": "sha512-bR6StAN29g6TmixOnI8hki4JRC+sFiKpzbzbAWsFG7V7Bi6pDZgwi/IzSvPWbqFgyX5ZMlV1/UJluJV7AXFCDw==",
-            "requires": {
-                "moment": "^2.23.0",
-                "object-path": "^0.11.4",
-                "underscore": "^1.9.1"
+        "node_modules/micromatch/node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "dependencies": {
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "redux-super-thunk": {
-            "version": "0.0.10",
-            "resolved": "https://registry.npmjs.org/redux-super-thunk/-/redux-super-thunk-0.0.10.tgz",
-            "integrity": "sha512-GX6nMiD8z/y/LmKdj9b1Zw7Vo4wLsqc56dWmNKIRZhggMzZVvKq8WRXYoW3hON3n19LTEDNfbH1YUkYNRcAYVA=="
+        "node_modules/micromatch/node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "reflect.ownkeys": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz",
-            "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA="
-        },
-        "refractor": {
-            "version": "2.10.1",
-            "resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz",
-            "integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==",
-            "requires": {
-                "hastscript": "^5.0.0",
-                "parse-entities": "^1.1.2",
-                "prismjs": "~1.17.0"
-            },
-            "dependencies": {
-                "prismjs": {
-                    "version": "1.17.1",
-                    "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
-                    "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
-                    "requires": {
-                        "clipboard": "^2.0.0"
-                    }
-                }
+        "node_modules/micromatch/node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "engines": {
+                "node": ">=0.12.0"
             }
         },
-        "regenerate": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-            "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
-        },
-        "regenerate-unicode-properties": {
-            "version": "9.0.0",
-            "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
-            "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
-            "requires": {
-                "regenerate": "^1.4.2"
+        "node_modules/micromatch/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
             }
         },
-        "regenerator-runtime": {
-            "version": "0.13.9",
-            "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
-            "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
-        },
-        "regenerator-transform": {
-            "version": "0.14.5",
-            "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
-            "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+        "node_modules/miller-rabin": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+            "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
             "dev": true,
-            "requires": {
-                "@babel/runtime": "^7.8.4"
+            "dependencies": {
+                "bn.js": "^4.0.0",
+                "brorand": "^1.0.1"
+            },
+            "bin": {
+                "miller-rabin": "bin/miller-rabin"
             }
         },
-        "regex-not": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-            "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+        "node_modules/miller-rabin/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+            "dev": true
+        },
+        "node_modules/mime": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+            "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
             "dev": true,
-            "requires": {
-                "extend-shallow": "^3.0.2",
-                "safe-regex": "^1.1.0"
+            "bin": {
+                "mime": "cli.js"
             },
-            "dependencies": {
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    }
-                },
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+            "engines": {
+                "node": ">=10.0.0"
             }
         },
-        "regexp.prototype.flags": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz",
-            "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==",
-            "dev": true,
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3"
+        "node_modules/mime-db": {
+            "version": "1.52.0",
+            "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+            "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "regexpp": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
-            "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
-            "dev": true
+        "node_modules/mime-type": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/mime-type/-/mime-type-4.0.0.tgz",
+            "integrity": "sha512-1FCc9fsTg44pd7koB486WEepve+sc4847F0USUf08j4+bAU6/9ckIq4kHVEhCxbxHCyUZy++dxx/PtSR/m4XBQ==",
+            "dev": true,
+            "dependencies": {
+                "micromatch": "^4.0.2",
+                "path.js": "^1.0.7",
+                "util-ex": "^0.3.15"
+            },
+            "engines": {
+                "node": ">= 8.6"
+            }
         },
-        "regexpu-core": {
-            "version": "4.8.0",
-            "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
-            "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
-            "requires": {
-                "regenerate": "^1.4.2",
-                "regenerate-unicode-properties": "^9.0.0",
-                "regjsgen": "^0.5.2",
-                "regjsparser": "^0.7.0",
-                "unicode-match-property-ecmascript": "^2.0.0",
-                "unicode-match-property-value-ecmascript": "^2.0.0"
+        "node_modules/mime-types": {
+            "version": "2.1.35",
+            "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+            "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+            "dependencies": {
+                "mime-db": "1.52.0"
+            },
+            "engines": {
+                "node": ">= 0.6"
             }
         },
-        "registry-auth-token": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
-            "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
+        "node_modules/mimic-fn": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+            "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
             "dev": true,
-            "requires": {
-                "rc": "^1.2.8"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "registry-url": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-            "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+        "node_modules/min-indent": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+            "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
             "dev": true,
-            "requires": {
-                "rc": "^1.2.8"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "regjsgen": {
-            "version": "0.5.2",
-            "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
-            "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
+        "node_modules/minimalistic-assert": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+            "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
         },
-        "regjsparser": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
-            "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
-            "requires": {
-                "jsesc": "~0.5.0"
+        "node_modules/minimalistic-crypto-utils": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+            "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+            "dev": true
+        },
+        "node_modules/minimatch": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+            "dependencies": {
+                "brace-expansion": "^1.1.7"
+            },
+            "engines": {
+                "node": "*"
             }
         },
-        "remark": {
-            "version": "13.0.0",
-            "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz",
-            "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
-            "dev": true,
-            "requires": {
-                "remark-parse": "^9.0.0",
-                "remark-stringify": "^9.0.0",
-                "unified": "^9.1.0"
+        "node_modules/minimist": {
+            "version": "1.2.8",
+            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+            "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "remark-parse": {
-            "version": "9.0.0",
-            "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
-            "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
+        "node_modules/minimist-options": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+            "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
             "dev": true,
-            "requires": {
-                "mdast-util-from-markdown": "^0.8.0"
+            "dependencies": {
+                "arrify": "^1.0.1",
+                "is-plain-obj": "^1.1.0",
+                "kind-of": "^6.0.3"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "remark-stringify": {
-            "version": "9.0.1",
-            "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz",
-            "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
+        "node_modules/minipass": {
+            "version": "4.2.8",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+            "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
             "dev": true,
-            "requires": {
-                "mdast-util-to-markdown": "^0.6.0"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "remedial": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz",
-            "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==",
-            "dev": true
-        },
-        "remove-bom-buffer": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
-            "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+        "node_modules/minizlib": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+            "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
             "dev": true,
-            "requires": {
-                "is-buffer": "^1.1.5",
-                "is-utf8": "^0.2.1"
+            "dependencies": {
+                "minipass": "^3.0.0",
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "remove-bom-stream": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
-            "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
+        "node_modules/minizlib/node_modules/minipass": {
+            "version": "3.3.6",
+            "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+            "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
             "dev": true,
-            "requires": {
-                "remove-bom-buffer": "^3.0.0",
-                "safe-buffer": "^5.1.0",
-                "through2": "^2.0.3"
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "remove-trailing-separator": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-            "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-            "dev": true
-        },
-        "repeat-element": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-            "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+        "node_modules/minizlib/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
             "dev": true
         },
-        "repeat-string": {
-            "version": "1.6.1",
-            "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-            "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+        "node_modules/mitt": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz",
+            "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==",
             "dev": true
         },
-        "repeating": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
-            "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-            "dev": true,
-            "requires": {
-                "is-finite": "^1.0.0"
+        "node_modules/mixin-deep": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+            "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+            "dependencies": {
+                "for-in": "^1.0.2",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "replace-ext": {
+        "node_modules/mixin-deep/node_modules/is-extendable": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
-            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
-            "dev": true
-        },
-        "replace-homedir": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
-            "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
-            "dev": true,
-            "requires": {
-                "homedir-polyfill": "^1.0.1",
-                "is-absolute": "^1.0.0",
-                "remove-trailing-separator": "^1.1.0"
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "request": {
-            "version": "2.88.2",
-            "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-            "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-            "dev": true,
-            "requires": {
-                "aws-sign2": "~0.7.0",
-                "aws4": "^1.8.0",
-                "caseless": "~0.12.0",
-                "combined-stream": "~1.0.6",
-                "extend": "~3.0.2",
-                "forever-agent": "~0.6.1",
-                "form-data": "~2.3.2",
-                "har-validator": "~5.1.3",
-                "http-signature": "~1.2.0",
-                "is-typedarray": "~1.0.0",
-                "isstream": "~0.1.2",
-                "json-stringify-safe": "~5.0.1",
-                "mime-types": "~2.1.19",
-                "oauth-sign": "~0.9.0",
-                "performance-now": "^2.1.0",
-                "qs": "~6.5.2",
-                "safe-buffer": "^5.1.2",
-                "tough-cookie": "~2.5.0",
-                "tunnel-agent": "^0.6.0",
-                "uuid": "^3.3.2"
-            },
+        "node_modules/mkdirp": {
+            "version": "0.5.6",
+            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+            "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
             "dependencies": {
-                "form-data": {
-                    "version": "2.3.3",
-                    "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-                    "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-                    "dev": true,
-                    "requires": {
-                        "asynckit": "^0.4.0",
-                        "combined-stream": "^1.0.6",
-                        "mime-types": "^2.1.12"
-                    }
-                },
-                "qs": {
-                    "version": "6.5.3",
-                    "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
-                    "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
-                    "dev": true
-                },
-                "tough-cookie": {
-                    "version": "2.5.0",
-                    "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-                    "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-                    "dev": true,
-                    "requires": {
-                        "psl": "^1.1.28",
-                        "punycode": "^2.1.1"
-                    }
-                }
+                "minimist": "^1.2.6"
+            },
+            "bin": {
+                "mkdirp": "bin/cmd.js"
             }
         },
-        "require-directory": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-            "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+        "node_modules/module-alias": {
+            "version": "2.2.2",
+            "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz",
+            "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==",
             "dev": true
         },
-        "require-from-string": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
-            "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-            "dev": true
+        "node_modules/moment": {
+            "version": "2.29.4",
+            "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+            "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+            "engines": {
+                "node": "*"
+            }
         },
-        "require-in-the-middle": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz",
-            "integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==",
-            "dev": true,
-            "requires": {
-                "debug": "^4.1.1",
-                "module-details-from-path": "^1.0.3",
-                "resolve": "^1.12.0"
+        "node_modules/morgan": {
+            "version": "1.10.0",
+            "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
+            "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
+            "dependencies": {
+                "basic-auth": "~2.0.1",
+                "debug": "2.6.9",
+                "depd": "~2.0.0",
+                "on-finished": "~2.3.0",
+                "on-headers": "~1.0.2"
             },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/morgan/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "ms": "2.0.0"
             }
         },
-        "require-main-filename": {
+        "node_modules/morgan/node_modules/ms": {
             "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-            "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-            "dev": true
-        },
-        "requires-port": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-            "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
-        },
-        "reselect": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz",
-            "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
         },
-        "resolve": {
-            "version": "1.22.0",
-            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
-            "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
-            "requires": {
-                "is-core-module": "^2.8.1",
-                "path-parse": "^1.0.7",
-                "supports-preserve-symlinks-flag": "^1.0.0"
+        "node_modules/morgan/node_modules/on-finished": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+            "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+            "dependencies": {
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "resolve-cwd": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
-            "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
-            "dev": true,
-            "requires": {
-                "resolve-from": "^5.0.0"
-            }
+        "node_modules/ms": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
-        "resolve-dir": {
+        "node_modules/mute-stdout": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
-            "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+            "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
+            "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
             "dev": true,
-            "requires": {
-                "expand-tilde": "^2.0.0",
-                "global-modules": "^1.0.0"
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "resolve-from": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
-            "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+        "node_modules/mute-stream": {
+            "version": "0.0.7",
+            "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+            "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==",
             "dev": true
         },
-        "resolve-options": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
-            "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
+        "node_modules/nan": {
+            "version": "2.17.0",
+            "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
+            "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
             "dev": true,
-            "requires": {
-                "value-or-function": "^3.0.0"
+            "optional": true
+        },
+        "node_modules/nanoid": {
+            "version": "3.3.6",
+            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+            "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ],
+            "bin": {
+                "nanoid": "bin/nanoid.cjs"
+            },
+            "engines": {
+                "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
             }
         },
-        "resolve-pathname": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
-            "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+        "node_modules/nanomatch": {
+            "version": "1.2.13",
+            "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+            "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "fragment-cache": "^0.2.1",
+                "is-windows": "^1.0.2",
+                "kind-of": "^6.0.2",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "resolve-url": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-            "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-            "dev": true
+        "node_modules/nanomatch/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "resp-modifier": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz",
-            "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=",
-            "dev": true,
-            "requires": {
-                "debug": "^2.2.0",
-                "minimatch": "^3.0.2"
+        "node_modules/nanomatch/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/nanomatch/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                }
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/nanomatch/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "responselike": {
+        "node_modules/nanomatch/node_modules/is-descriptor": {
             "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-            "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
-            "dev": true,
-            "requires": {
-                "lowercase-keys": "^1.0.0"
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "restore-cursor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
-            "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
-            "dev": true,
-            "requires": {
-                "onetime": "^5.1.0",
-                "signal-exit": "^3.0.2"
+        "node_modules/nanomatch/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "ret": {
-            "version": "0.1.15",
-            "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-            "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+        "node_modules/natural-compare": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+            "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+            "dev": true
         },
-        "reusify": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-            "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+        "node_modules/negotiator": {
+            "version": "0.6.3",
+            "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+            "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
         },
-        "revalidator": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
-            "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=",
-            "dev": true
+        "node_modules/neo-async": {
+            "version": "2.6.2",
+            "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+            "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
         },
-        "rgb-hex": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz",
-            "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=",
+        "node_modules/next-tick": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+            "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
             "dev": true
         },
-        "right-align": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
-            "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
-            "dev": true,
-            "requires": {
-                "align-text": "^0.1.1"
-            }
-        },
-        "rimraf": {
-            "version": "2.7.1",
-            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-            "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-            "dev": true,
-            "requires": {
-                "glob": "^7.1.3"
-            }
+        "node_modules/nice-try": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+            "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
         },
-        "ripemd160": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-            "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-            "dev": true,
-            "requires": {
-                "hash-base": "^3.0.0",
-                "inherits": "^2.0.1"
+        "node_modules/nocache": {
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
+            "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
+            "peer": true,
+            "engines": {
+                "node": ">=12.0.0"
             }
         },
-        "rollup": {
-            "version": "1.32.1",
-            "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz",
-            "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==",
-            "dev": true,
-            "requires": {
-                "@types/estree": "*",
-                "@types/node": "*",
-                "acorn": "^7.1.0"
-            },
+        "node_modules/node-dir": {
+            "version": "0.1.17",
+            "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+            "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==",
+            "peer": true,
             "dependencies": {
-                "acorn": {
-                    "version": "7.4.1",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-                    "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-                    "dev": true
-                }
+                "minimatch": "^3.0.2"
+            },
+            "engines": {
+                "node": ">= 0.10.5"
             }
         },
-        "rollup-plugin-babel": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz",
-            "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==",
-            "dev": true,
-            "requires": {
-                "@babel/helper-module-imports": "^7.0.0",
-                "rollup-pluginutils": "^2.8.1"
+        "node_modules/node-environment-flags": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
+            "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==",
+            "dependencies": {
+                "object.getownpropertydescriptors": "^2.0.3",
+                "semver": "^5.7.0"
             }
         },
-        "rollup-plugin-terser": {
-            "version": "5.3.1",
-            "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz",
-            "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.5.5",
-                "jest-worker": "^24.9.0",
-                "rollup-pluginutils": "^2.8.2",
-                "serialize-javascript": "^4.0.0",
-                "terser": "^4.6.2"
-            },
-            "dependencies": {
-                "jest-worker": {
-                    "version": "24.9.0",
-                    "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-                    "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
-                    "dev": true,
-                    "requires": {
-                        "merge-stream": "^2.0.0",
-                        "supports-color": "^6.1.0"
-                    }
-                },
-                "serialize-javascript": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-                    "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-                    "dev": true,
-                    "requires": {
-                        "randombytes": "^2.1.0"
-                    }
-                },
-                "supports-color": {
-                    "version": "6.1.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^3.0.0"
-                    }
-                }
+        "node_modules/node-environment-flags/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "bin": {
+                "semver": "bin/semver"
             }
         },
-        "rollup-pluginutils": {
-            "version": "2.8.2",
-            "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
-            "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
-            "dev": true,
-            "requires": {
-                "estree-walker": "^0.6.1"
-            },
+        "node_modules/node-fetch": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
+            "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+            "peer": true,
             "dependencies": {
-                "estree-walker": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
-                    "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
-                    "dev": true
+                "whatwg-url": "^5.0.0"
+            },
+            "engines": {
+                "node": "4.x || >=6.0.0"
+            },
+            "peerDependencies": {
+                "encoding": "^0.1.0"
+            },
+            "peerDependenciesMeta": {
+                "encoding": {
+                    "optional": true
                 }
             }
         },
-        "rst-selector-parser": {
-            "version": "2.2.3",
-            "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
-            "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
-            "requires": {
-                "lodash.flattendeep": "^4.4.0",
-                "nearley": "^2.7.10"
-            }
+        "node_modules/node-fetch/node_modules/tr46": {
+            "version": "0.0.3",
+            "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+            "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+            "peer": true
         },
-        "rsvp": {
-            "version": "4.8.5",
-            "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-            "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
-            "dev": true
+        "node_modules/node-fetch/node_modules/webidl-conversions": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+            "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+            "peer": true
         },
-        "run-async": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
-            "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
-            "dev": true
+        "node_modules/node-fetch/node_modules/whatwg-url": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+            "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+            "peer": true,
+            "dependencies": {
+                "tr46": "~0.0.3",
+                "webidl-conversions": "^3.0.0"
+            }
         },
-        "run-node": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
-            "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
-            "dev": true
+        "node_modules/node-int64": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+            "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
         },
-        "run-parallel": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-            "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-            "requires": {
-                "queue-microtask": "^1.2.2"
+        "node_modules/node-polyfill-webpack-plugin": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz",
+            "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==",
+            "dev": true,
+            "dependencies": {
+                "assert": "^2.0.0",
+                "browserify-zlib": "^0.2.0",
+                "buffer": "^6.0.3",
+                "console-browserify": "^1.2.0",
+                "constants-browserify": "^1.0.0",
+                "crypto-browserify": "^3.12.0",
+                "domain-browser": "^4.22.0",
+                "events": "^3.3.0",
+                "filter-obj": "^2.0.2",
+                "https-browserify": "^1.0.0",
+                "os-browserify": "^0.3.0",
+                "path-browserify": "^1.0.1",
+                "process": "^0.11.10",
+                "punycode": "^2.1.1",
+                "querystring-es3": "^0.2.1",
+                "readable-stream": "^4.0.0",
+                "stream-browserify": "^3.0.0",
+                "stream-http": "^3.2.0",
+                "string_decoder": "^1.3.0",
+                "timers-browserify": "^2.0.12",
+                "tty-browserify": "^0.0.1",
+                "type-fest": "^2.14.0",
+                "url": "^0.11.0",
+                "util": "^0.12.4",
+                "vm-browserify": "^1.1.2"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "peerDependencies": {
+                "webpack": ">=5"
             }
         },
-        "run-queue": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-            "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+        "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz",
+            "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==",
             "dev": true,
-            "requires": {
-                "aproba": "^1.1.1"
+            "dependencies": {
+                "abort-controller": "^3.0.0",
+                "buffer": "^6.0.3",
+                "events": "^3.3.0",
+                "process": "^0.11.10"
+            },
+            "engines": {
+                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
             }
         },
-        "run-script-os": {
-            "version": "1.1.6",
-            "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz",
-            "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw=="
-        },
-        "run-series": {
-            "version": "1.1.9",
-            "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz",
-            "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==",
-            "dev": true
+        "node_modules/node-releases": {
+            "version": "2.0.10",
+            "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+            "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
         },
-        "rx": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
-            "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
-            "dev": true
+        "node_modules/node-stream-zip": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+            "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.12.0"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/antelle"
+            }
         },
-        "rxjs": {
-            "version": "6.6.7",
-            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-            "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+        "node_modules/nodemon": {
+            "version": "2.0.22",
+            "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+            "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
             "dev": true,
-            "requires": {
-                "tslib": "^1.9.0"
-            },
             "dependencies": {
-                "tslib": {
-                    "version": "1.14.1",
-                    "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-                    "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-                    "dev": true
-                }
+                "chokidar": "^3.5.2",
+                "debug": "^3.2.7",
+                "ignore-by-default": "^1.0.1",
+                "minimatch": "^3.1.2",
+                "pstree.remy": "^1.1.8",
+                "semver": "^5.7.1",
+                "simple-update-notifier": "^1.0.7",
+                "supports-color": "^5.5.0",
+                "touch": "^3.1.0",
+                "undefsafe": "^2.0.5"
+            },
+            "bin": {
+                "nodemon": "bin/nodemon.js"
+            },
+            "engines": {
+                "node": ">=8.10.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/nodemon"
             }
         },
-        "safari-14-idb-fix": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
-            "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==",
-            "dev": true
-        },
-        "safe-buffer": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        },
-        "safe-regex": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-            "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+        "node_modules/nodemon/node_modules/binary-extensions": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
             "dev": true,
-            "requires": {
-                "ret": "~0.1.10"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "safe-stable-stringify": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz",
-            "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==",
-            "dev": true
-        },
-        "safer-buffer": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-        },
-        "sane": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
-            "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+        "node_modules/nodemon/node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
             "dev": true,
-            "requires": {
-                "@cnakazawa/watch": "^1.0.3",
-                "anymatch": "^2.0.0",
-                "capture-exit": "^2.0.0",
-                "exec-sh": "^0.3.2",
-                "execa": "^1.0.0",
-                "fb-watchman": "^2.0.0",
-                "micromatch": "^3.1.4",
-                "minimist": "^1.1.1",
-                "walker": "~1.0.5"
-            },
             "dependencies": {
-                "anymatch": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-                    "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-                    "dev": true,
-                    "requires": {
-                        "micromatch": "^3.1.4",
-                        "normalize-path": "^2.1.1"
-                    }
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "normalize-path": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                    "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                    "dev": true,
-                    "requires": {
-                        "remove-trailing-separator": "^1.0.1"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "sass": {
-            "version": "1.49.9",
-            "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz",
-            "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==",
+        "node_modules/nodemon/node_modules/chokidar": {
+            "version": "3.5.3",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+            "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
             "dev": true,
-            "requires": {
-                "chokidar": ">=3.0.0 <4.0.0",
-                "immutable": "^4.0.0",
-                "source-map-js": ">=0.6.2 <2.0.0"
-            },
-            "dependencies": {
-                "immutable": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
-                    "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
-                    "dev": true
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://paulmillr.com/funding/"
                 }
+            ],
+            "dependencies": {
+                "anymatch": "~3.1.2",
+                "braces": "~3.0.2",
+                "glob-parent": "~5.1.2",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.6.0"
+            },
+            "engines": {
+                "node": ">= 8.10.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.2"
             }
         },
-        "sass-graph": {
-            "version": "2.2.5",
-            "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
-            "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+        "node_modules/nodemon/node_modules/debug": {
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+            "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
             "dev": true,
-            "requires": {
-                "glob": "^7.0.0",
-                "lodash": "^4.0.0",
-                "scss-tokenizer": "^0.2.3",
-                "yargs": "^13.3.2"
-            },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                    "dev": true
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "cliui": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-                    "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-                    "dev": true,
-                    "requires": {
-                        "string-width": "^3.1.0",
-                        "strip-ansi": "^5.2.0",
-                        "wrap-ansi": "^5.1.0"
-                    }
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "7.0.3",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                },
-                "wrap-ansi": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-                    "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^3.2.0",
-                        "string-width": "^3.0.0",
-                        "strip-ansi": "^5.0.0"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-                    "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-                    "dev": true
-                },
-                "yargs": {
-                    "version": "13.3.2",
-                    "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
-                    "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
-                    "dev": true,
-                    "requires": {
-                        "cliui": "^5.0.0",
-                        "find-up": "^3.0.0",
-                        "get-caller-file": "^2.0.1",
-                        "require-directory": "^2.1.1",
-                        "require-main-filename": "^2.0.0",
-                        "set-blocking": "^2.0.0",
-                        "string-width": "^3.0.0",
-                        "which-module": "^2.0.0",
-                        "y18n": "^4.0.0",
-                        "yargs-parser": "^13.1.2"
-                    }
-                },
-                "yargs-parser": {
-                    "version": "13.1.2",
-                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-                    "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^5.0.0",
-                        "decamelize": "^1.2.0"
-                    }
-                }
+                "ms": "^2.1.1"
             }
         },
-        "sax": {
-            "version": "1.2.4",
-            "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-            "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-            "dev": true
-        },
-        "saxes": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
-            "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
-            "requires": {
-                "xmlchars": "^2.2.0"
+        "node_modules/nodemon/node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "dev": true,
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "scheduler": {
-            "version": "0.19.1",
-            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
-            "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
-            "requires": {
-                "loose-envify": "^1.1.0",
-                "object-assign": "^4.1.1"
+        "node_modules/nodemon/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+            "dev": true,
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
             }
         },
-        "schema-utils": {
-            "version": "2.7.1",
-            "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-            "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+        "node_modules/nodemon/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
             "dev": true,
-            "requires": {
-                "@types/json-schema": "^7.0.5",
-                "ajv": "^6.12.4",
-                "ajv-keywords": "^3.5.2"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "scroll-into-view-if-needed": {
-            "version": "2.2.29",
-            "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz",
-            "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==",
-            "requires": {
-                "compute-scroll-into-view": "^1.0.17"
+        "node_modules/nodemon/node_modules/is-binary-path": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+            "dev": true,
+            "dependencies": {
+                "binary-extensions": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "scss-tokenizer": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
-            "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
-            "dev": true,
-            "requires": {
-                "js-base64": "^2.1.8",
-                "source-map": "^0.4.2"
-            },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.4.4",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
-                    "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-                    "dev": true,
-                    "requires": {
-                        "amdefine": ">=0.0.4"
-                    }
-                }
+        "node_modules/nodemon/node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.12.0"
             }
         },
-        "seek-bzip": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
-            "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+        "node_modules/nodemon/node_modules/readdirp": {
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
             "dev": true,
-            "requires": {
-                "commander": "^2.8.1"
-            },
             "dependencies": {
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-                    "dev": true
-                }
+                "picomatch": "^2.2.1"
+            },
+            "engines": {
+                "node": ">=8.10.0"
             }
         },
-        "select": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
-            "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
-            "optional": true
-        },
-        "semver": {
-            "version": "7.3.5",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-            "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-            "requires": {
-                "lru-cache": "^6.0.0"
+        "node_modules/nodemon/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver"
             }
         },
-        "semver-compare": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
-            "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
-            "dev": true
-        },
-        "semver-diff": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-            "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+        "node_modules/nodemon/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
             "dev": true,
-            "requires": {
-                "semver": "^6.3.0"
-            },
             "dependencies": {
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                }
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "semver-greatest-satisfied-range": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
-            "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
+        "node_modules/nodemon/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
             "dev": true,
-            "requires": {
-                "sver-compat": "^1.5.0"
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
             }
         },
-        "send": {
-            "version": "0.17.2",
-            "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
-            "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
-            "requires": {
-                "debug": "2.6.9",
-                "depd": "~1.1.2",
-                "destroy": "~1.0.4",
-                "encodeurl": "~1.0.2",
-                "escape-html": "~1.0.3",
-                "etag": "~1.8.1",
-                "fresh": "0.5.2",
-                "http-errors": "1.8.1",
-                "mime": "1.6.0",
-                "ms": "2.1.3",
-                "on-finished": "~2.3.0",
-                "range-parser": "~1.2.1",
-                "statuses": "~1.5.0"
-            },
+        "node_modules/nomnom": {
+            "version": "1.8.1",
+            "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+            "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==",
+            "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.",
+            "dev": true,
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "requires": {
-                        "ms": "2.0.0"
-                    },
-                    "dependencies": {
-                        "ms": {
-                            "version": "2.0.0",
-                            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-                        }
-                    }
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-                }
+                "chalk": "~0.4.0",
+                "underscore": "~1.6.0"
             }
         },
-        "serialize-javascript": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-            "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-            "requires": {
-                "randombytes": "^2.1.0"
+        "node_modules/nomnom/node_modules/ansi-styles": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+            "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.8.0"
             }
         },
-        "serve-index": {
-            "version": "1.9.1",
-            "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-            "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+        "node_modules/nomnom/node_modules/chalk": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+            "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==",
             "dev": true,
-            "requires": {
-                "accepts": "~1.3.4",
-                "batch": "0.6.1",
-                "debug": "2.6.9",
-                "escape-html": "~1.0.3",
-                "http-errors": "~1.6.2",
-                "mime-types": "~2.1.17",
-                "parseurl": "~1.3.2"
-            },
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "http-errors": {
-                    "version": "1.6.3",
-                    "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-                    "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-                    "dev": true,
-                    "requires": {
-                        "depd": "~1.1.2",
-                        "inherits": "2.0.3",
-                        "setprototypeof": "1.1.0",
-                        "statuses": ">= 1.4.0 < 2"
-                    }
-                },
-                "inherits": {
-                    "version": "2.0.3",
-                    "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-                    "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-                    "dev": true
-                },
-                "setprototypeof": {
-                    "version": "1.1.0",
-                    "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-                    "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-                    "dev": true
-                }
-            }
-        },
-        "serve-static": {
-            "version": "1.14.2",
-            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
-            "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
-            "requires": {
-                "encodeurl": "~1.0.2",
-                "escape-html": "~1.0.3",
-                "parseurl": "~1.3.3",
-                "send": "0.17.2"
+                "ansi-styles": "~1.0.0",
+                "has-color": "~0.1.0",
+                "strip-ansi": "~0.1.0"
+            },
+            "engines": {
+                "node": ">=0.8.0"
             }
         },
-        "server-destroy": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
-            "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=",
-            "dev": true
-        },
-        "set-blocking": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-            "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-            "dev": true
-        },
-        "set-value": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-            "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+        "node_modules/nomnom/node_modules/strip-ansi": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+            "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==",
             "dev": true,
-            "requires": {
-                "extend-shallow": "^2.0.1",
-                "is-extendable": "^0.1.1",
-                "is-plain-object": "^2.0.3",
-                "split-string": "^3.0.1"
+            "bin": {
+                "strip-ansi": "cli.js"
+            },
+            "engines": {
+                "node": ">=0.8.0"
             }
         },
-        "setimmediate": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-            "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+        "node_modules/nomnom/node_modules/underscore": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+            "integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ==",
             "dev": true
         },
-        "setprototypeof": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-            "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
-        },
-        "sha.js": {
-            "version": "2.4.11",
-            "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-            "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+        "node_modules/nopt": {
+            "version": "1.0.10",
+            "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+            "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
             "dev": true,
-            "requires": {
-                "inherits": "^2.0.1",
-                "safe-buffer": "^5.0.1"
+            "dependencies": {
+                "abbrev": "1"
+            },
+            "bin": {
+                "nopt": "bin/nopt.js"
+            },
+            "engines": {
+                "node": "*"
             }
         },
-        "shallow-clone": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-            "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-            "requires": {
-                "kind-of": "^6.0.2"
+        "node_modules/normalize-package-data": {
+            "version": "2.5.0",
+            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+            "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+            "dependencies": {
+                "hosted-git-info": "^2.1.4",
+                "resolve": "^1.10.0",
+                "semver": "2 || 3 || 4 || 5",
+                "validate-npm-package-license": "^3.0.1"
             }
         },
-        "shallow-equals": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/shallow-equals/-/shallow-equals-1.0.0.tgz",
-            "integrity": "sha1-JLdL8cY0wR7Uxxgqbfb7MA3OQ5A="
-        },
-        "shallowequal": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
-            "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
-        },
-        "shebang-command": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-            "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-            "requires": {
-                "shebang-regex": "^3.0.0"
+        "node_modules/normalize-package-data/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "bin": {
+                "semver": "bin/semver"
             }
         },
-        "shebang-regex": {
+        "node_modules/normalize-path": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
-        },
-        "shell-quote": {
-            "version": "1.7.3",
-            "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
-            "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
-        },
-        "shellwords": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
-            "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
-            "dev": true,
-            "optional": true
-        },
-        "shimmer": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
-            "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==",
-            "dev": true
-        },
-        "shorten-css-hex": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/shorten-css-hex/-/shorten-css-hex-1.1.0.tgz",
-            "integrity": "sha1-PHrYvxahEVcLiXlGbwVfYCoyzy4=",
-            "dev": true,
-            "requires": {
-                "is-css-color-hex": "^0.2.0"
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "side-channel": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-            "requires": {
-                "call-bind": "^1.0.0",
-                "get-intrinsic": "^1.0.2",
-                "object-inspect": "^1.9.0"
+        "node_modules/normalize-range": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+            "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "signal-exit": {
-            "version": "3.0.7",
-            "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+        "node_modules/normalize-selector": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
+            "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==",
             "dev": true
         },
-        "simple-swizzle": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-            "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-            "requires": {
-                "is-arrayish": "^0.3.1"
-            },
+        "node_modules/now-and-later": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+            "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+            "dev": true,
             "dependencies": {
-                "is-arrayish": {
-                    "version": "0.3.2",
-                    "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-                    "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
-                }
-            }
-        },
-        "sisteransi": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-            "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
-            "dev": true
-        },
-        "slash": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-            "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="
-        },
-        "slate": {
-            "version": "0.57.3",
-            "resolved": "https://registry.npmjs.org/slate/-/slate-0.57.3.tgz",
-            "integrity": "sha512-GQrqxtojEhsA4q/ae6T25wv89VI1eqkFx3r1LyoQ1DkfFPgu5oE7wGCb9TAGTNPgTenTDGLHW5HqUQ1WMF8LIw==",
-            "requires": {
-                "@types/esrever": "^0.2.0",
-                "esrever": "^0.2.0",
-                "immer": "^5.0.0",
-                "is-plain-object": "^3.0.0",
-                "tiny-warning": "^1.0.3"
+                "once": "^1.3.2"
             },
-            "dependencies": {
-                "is-plain-object": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
-                    "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g=="
-                }
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "slate-history": {
-            "version": "0.57.3",
-            "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.57.3.tgz",
-            "integrity": "sha512-8vqjLWAsX79117uhfMPqDPXgi7QnFXSZjjSJotzhMRnuqYUw9RneWf/VGVKmsJXZ8JliaQ+QFYEd3EctvmDOlQ==",
-            "requires": {
-                "immer": "^5.0.0",
-                "is-plain-object": "^3.0.0"
-            },
+        "node_modules/npm-run-all": {
+            "version": "4.1.5",
+            "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+            "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
             "dependencies": {
-                "is-plain-object": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
-                    "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g=="
-                }
+                "ansi-styles": "^3.2.1",
+                "chalk": "^2.4.1",
+                "cross-spawn": "^6.0.5",
+                "memorystream": "^0.3.1",
+                "minimatch": "^3.0.4",
+                "pidtree": "^0.3.0",
+                "read-pkg": "^3.0.0",
+                "shell-quote": "^1.6.1",
+                "string.prototype.padend": "^3.0.0"
+            },
+            "bin": {
+                "npm-run-all": "bin/npm-run-all/index.js",
+                "run-p": "bin/run-p/index.js",
+                "run-s": "bin/run-s/index.js"
+            },
+            "engines": {
+                "node": ">= 4"
             }
         },
-        "slate-react": {
-            "version": "0.57.3",
-            "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.57.3.tgz",
-            "integrity": "sha512-UOodnOD5P3XnTB3iztTyum3PVLwhpiwqc3So6PlHVr2pIm5Pjf4IfHCNAuP+/xMB2tOunSQR3bBXNPz34k6pWg==",
-            "requires": {
-                "@types/is-hotkey": "^0.1.1",
-                "@types/lodash": "^4.14.149",
-                "direction": "^1.0.3",
-                "is-hotkey": "^0.1.6",
-                "is-plain-object": "^3.0.0",
-                "lodash": "^4.17.4",
-                "scroll-into-view-if-needed": "^2.2.20"
-            },
+        "node_modules/npm-run-all/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
             "dependencies": {
-                "is-plain-object": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
-                    "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g=="
-                }
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "slice-ansi": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
-            "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
-            "dev": true,
-            "requires": {
-                "ansi-styles": "^3.2.0",
-                "astral-regex": "^1.0.0",
-                "is-fullwidth-code-point": "^2.0.0"
-            },
+        "node_modules/npm-run-all/node_modules/chalk": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
             "dependencies": {
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                }
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "slugify": {
-            "version": "1.6.5",
-            "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz",
-            "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ=="
-        },
-        "smart-buffer": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-            "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
-            "dev": true
-        },
-        "snapdragon": {
-            "version": "0.8.2",
-            "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-            "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-            "dev": true,
-            "requires": {
-                "base": "^0.11.1",
-                "debug": "^2.2.0",
-                "define-property": "^0.2.5",
-                "extend-shallow": "^2.0.1",
-                "map-cache": "^0.2.2",
-                "source-map": "^0.5.6",
-                "source-map-resolve": "^0.5.0",
-                "use": "^3.1.0"
-            },
+        "node_modules/npm-run-all/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
             "dependencies": {
-                "debug": {
-                    "version": "2.6.9",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.0.0"
-                    }
-                },
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
+                "color-name": "1.1.3"
             }
         },
-        "snapdragon-node": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-            "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-            "dev": true,
-            "requires": {
-                "define-property": "^1.0.0",
-                "isobject": "^3.0.0",
-                "snapdragon-util": "^3.0.1"
-            },
+        "node_modules/npm-run-all/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+        },
+        "node_modules/npm-run-all/node_modules/cross-spawn": {
+            "version": "6.0.5",
+            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+            "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
             "dependencies": {
-                "define-property": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                    "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^1.0.0"
-                    }
-                },
-                "is-accessor-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-data-descriptor": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                    "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^6.0.0"
-                    }
-                },
-                "is-descriptor": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                    "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                    "dev": true,
-                    "requires": {
-                        "is-accessor-descriptor": "^1.0.0",
-                        "is-data-descriptor": "^1.0.0",
-                        "kind-of": "^6.0.2"
-                    }
-                }
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+            },
+            "engines": {
+                "node": ">=4.8"
             }
         },
-        "snapdragon-util": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-            "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-            "dev": true,
-            "requires": {
-                "kind-of": "^3.2.0"
-            },
-            "dependencies": {
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
+        "node_modules/npm-run-all/node_modules/has-flag": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "socket.io": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz",
-            "integrity": "sha512-9UPJ1UTvKayuQfVv2IQ3k7tCQC/fboDyIK62i99dAQIyHKaBsNdTpwHLgKJ6guRWxRtC9H+138UwpaGuQO9uWQ==",
-            "dev": true,
-            "requires": {
-                "debug": "~4.1.0",
-                "engine.io": "~3.5.0",
-                "has-binary2": "~1.0.2",
-                "socket.io-adapter": "~1.1.0",
-                "socket.io-client": "2.4.0",
-                "socket.io-parser": "~3.4.0"
-            },
+        "node_modules/npm-run-all/node_modules/load-json-file": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+            "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
             "dependencies": {
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "engine.io-client": {
-                    "version": "3.5.2",
-                    "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
-                    "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
-                    "dev": true,
-                    "requires": {
-                        "component-emitter": "~1.3.0",
-                        "component-inherit": "0.0.3",
-                        "debug": "~3.1.0",
-                        "engine.io-parser": "~2.2.0",
-                        "has-cors": "1.1.0",
-                        "indexof": "0.0.1",
-                        "parseqs": "0.0.6",
-                        "parseuri": "0.0.6",
-                        "ws": "~7.4.2",
-                        "xmlhttprequest-ssl": "~1.6.2",
-                        "yeast": "0.1.2"
-                    },
-                    "dependencies": {
-                        "debug": {
-                            "version": "3.1.0",
-                            "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-                            "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-                            "dev": true,
-                            "requires": {
-                                "ms": "2.0.0"
-                            }
-                        },
-                        "ms": {
-                            "version": "2.0.0",
-                            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                            "dev": true
-                        }
-                    }
-                },
-                "engine.io-parser": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
-                    "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
-                    "dev": true,
-                    "requires": {
-                        "after": "0.8.2",
-                        "arraybuffer.slice": "~0.0.7",
-                        "base64-arraybuffer": "0.1.4",
-                        "blob": "0.0.5",
-                        "has-binary2": "~1.0.2"
-                    }
-                },
-                "isarray": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-                    "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-                    "dev": true
-                },
-                "ms": {
-                    "version": "2.1.3",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-                    "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-                    "dev": true
-                },
-                "socket.io-client": {
-                    "version": "2.4.0",
-                    "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz",
-                    "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==",
-                    "dev": true,
-                    "requires": {
-                        "backo2": "1.0.2",
-                        "component-bind": "1.0.0",
-                        "component-emitter": "~1.3.0",
-                        "debug": "~3.1.0",
-                        "engine.io-client": "~3.5.0",
-                        "has-binary2": "~1.0.2",
-                        "indexof": "0.0.1",
-                        "parseqs": "0.0.6",
-                        "parseuri": "0.0.6",
-                        "socket.io-parser": "~3.3.0",
-                        "to-array": "0.1.4"
-                    },
-                    "dependencies": {
-                        "debug": {
-                            "version": "3.1.0",
-                            "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-                            "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-                            "dev": true,
-                            "requires": {
-                                "ms": "2.0.0"
-                            }
-                        },
-                        "ms": {
-                            "version": "2.0.0",
-                            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                            "dev": true
-                        },
-                        "socket.io-parser": {
-                            "version": "3.3.2",
-                            "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
-                            "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
-                            "dev": true,
-                            "requires": {
-                                "component-emitter": "~1.3.0",
-                                "debug": "~3.1.0",
-                                "isarray": "2.0.1"
-                            }
-                        }
-                    }
-                },
-                "socket.io-parser": {
-                    "version": "3.4.1",
-                    "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
-                    "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
-                    "dev": true,
-                    "requires": {
-                        "component-emitter": "1.2.1",
-                        "debug": "~4.1.0",
-                        "isarray": "2.0.1"
-                    },
-                    "dependencies": {
-                        "component-emitter": {
-                            "version": "1.2.1",
-                            "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-                            "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-                            "dev": true
-                        }
-                    }
-                },
-                "ws": {
-                    "version": "7.4.6",
-                    "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-                    "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
-                    "dev": true
-                }
+                "graceful-fs": "^4.1.2",
+                "parse-json": "^4.0.0",
+                "pify": "^3.0.0",
+                "strip-bom": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "socket.io-adapter": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
-            "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==",
-            "dev": true
-        },
-        "socket.io-client": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.3.tgz",
-            "integrity": "sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==",
-            "requires": {
-                "@types/component-emitter": "^1.2.10",
-                "backo2": "~1.0.2",
-                "component-emitter": "~1.3.0",
-                "debug": "~4.3.1",
-                "engine.io-client": "~4.1.0",
-                "parseuri": "0.0.6",
-                "socket.io-parser": "~4.0.4"
-            },
-            "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
+        "node_modules/npm-run-all/node_modules/path-key": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+            "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "socket.io-parser": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
-            "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
-            "requires": {
-                "@types/component-emitter": "^1.2.10",
-                "component-emitter": "~1.3.0",
-                "debug": "~4.3.1"
-            },
+        "node_modules/npm-run-all/node_modules/path-type": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+            "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-                }
+                "pify": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "socks": {
-            "version": "2.6.2",
-            "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
-            "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
-            "dev": true,
-            "requires": {
-                "ip": "^1.1.5",
-                "smart-buffer": "^4.2.0"
+        "node_modules/npm-run-all/node_modules/pify": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+            "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "socks-proxy-agent": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
-            "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
-            "dev": true,
-            "requires": {
-                "agent-base": "^6.0.2",
-                "debug": "4",
-                "socks": "^2.3.3"
-            },
+        "node_modules/npm-run-all/node_modules/read-pkg": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+            "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
             "dependencies": {
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                }
+                "load-json-file": "^4.0.0",
+                "normalize-package-data": "^2.3.2",
+                "path-type": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "source-list-map": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-            "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-            "dev": true
+        "node_modules/npm-run-all/node_modules/semver": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+            "bin": {
+                "semver": "bin/semver"
+            }
         },
-        "source-map": {
-            "version": "0.5.7",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-            "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        "node_modules/npm-run-all/node_modules/shebang-command": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+            "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+            "dependencies": {
+                "shebang-regex": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "source-map-js": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-            "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-            "dev": true
+        "node_modules/npm-run-all/node_modules/shebang-regex": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+            "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "source-map-resolve": {
-            "version": "0.5.3",
-            "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-            "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-            "dev": true,
-            "requires": {
-                "atob": "^2.1.2",
-                "decode-uri-component": "^0.2.0",
-                "resolve-url": "^0.2.1",
-                "source-map-url": "^0.4.0",
-                "urix": "^0.1.0"
+        "node_modules/npm-run-all/node_modules/strip-bom": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+            "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "source-map-support": {
-            "version": "0.5.21",
-            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-            "requires": {
-                "buffer-from": "^1.0.0",
-                "source-map": "^0.6.0"
+        "node_modules/npm-run-all/node_modules/supports-color": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+            "dependencies": {
+                "has-flag": "^3.0.0"
             },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/npm-run-all/node_modules/which": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-                }
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
             }
         },
-        "source-map-url": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-            "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
-            "dev": true
+        "node_modules/npm-run-path": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+            "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+            "dependencies": {
+                "path-key": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "sourcemap-codec": {
-            "version": "1.4.8",
-            "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-            "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+        "node_modules/npm-run-path/node_modules/path-key": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+            "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "sourcemapped-stacktrace": {
-            "version": "1.1.11",
-            "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.11.tgz",
-            "integrity": "sha512-O0pcWjJqzQFVsisPlPXuNawJHHg9N9UgpJ/aDmvi9+vnS3x1C0NhwkVFzzZ1VN0Xo+bekyweoqYvBw5ZBKiNnQ==",
-            "requires": {
-                "source-map": "0.5.6"
-            },
+        "node_modules/nth-check": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+            "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
             "dependencies": {
-                "source-map": {
-                    "version": "0.5.6",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-                    "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI="
-                }
+                "boolbase": "^1.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/fb55/nth-check?sponsor=1"
             }
         },
-        "space-separated-tokens": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
-            "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
+        "node_modules/nullthrows": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+            "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
+            "peer": true
         },
-        "sparkles": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
-            "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+        "node_modules/num2fraction": {
+            "version": "1.2.2",
+            "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+            "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
             "dev": true
         },
-        "spdx-correct": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-            "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-            "requires": {
-                "spdx-expression-parse": "^3.0.0",
-                "spdx-license-ids": "^3.0.0"
+        "node_modules/number-is-nan": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+            "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "spdx-exceptions": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-            "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+        "node_modules/nwsapi": {
+            "version": "2.2.4",
+            "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz",
+            "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g=="
         },
-        "spdx-expression-parse": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-            "requires": {
-                "spdx-exceptions": "^2.1.0",
-                "spdx-license-ids": "^3.0.0"
+        "node_modules/oauth-sign": {
+            "version": "0.9.0",
+            "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+            "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+            "dev": true,
+            "engines": {
+                "node": "*"
             }
         },
-        "spdx-license-ids": {
-            "version": "3.0.11",
-            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
-            "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g=="
+        "node_modules/ob1": {
+            "version": "0.73.9",
+            "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.73.9.tgz",
+            "integrity": "sha512-kHOzCOFXmAM26fy7V/YuXNKne2TyRiXbFAvPBIbuedJCZZWQZHLdPzMeXJI4Egt6IcfDttRzN3jQ90wOwq1iNw==",
+            "peer": true
         },
-        "specificity": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz",
-            "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
-            "dev": true
+        "node_modules/object-assign": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+            "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "split-string": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-            "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-            "dev": true,
-            "requires": {
-                "extend-shallow": "^3.0.0"
-            },
+        "node_modules/object-copy": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+            "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
             "dependencies": {
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    }
-                },
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+                "copy-descriptor": "^0.1.0",
+                "define-property": "^0.2.5",
+                "kind-of": "^3.0.3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "sprintf-js": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
-            "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
-            "dev": true
+        "node_modules/object-copy/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
         },
-        "sshpk": {
-            "version": "1.17.0",
-            "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
-            "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-            "dev": true,
-            "requires": {
-                "asn1": "~0.2.3",
-                "assert-plus": "^1.0.0",
-                "bcrypt-pbkdf": "^1.0.0",
-                "dashdash": "^1.12.0",
-                "ecc-jsbn": "~0.1.1",
-                "getpass": "^0.1.1",
-                "jsbn": "~0.1.0",
-                "safer-buffer": "^2.0.2",
-                "tweetnacl": "~0.14.0"
-            }
-        },
-        "ssri": {
-            "version": "8.0.1",
-            "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
-            "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
-            "dev": true,
-            "requires": {
-                "minipass": "^3.1.1"
-            }
-        },
-        "stack-trace": {
-            "version": "0.0.10",
-            "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-            "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
-            "dev": true
-        },
-        "stack-utils": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
-            "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
-            "dev": true,
-            "requires": {
-                "escape-string-regexp": "^2.0.0"
-            },
+        "node_modules/object-copy/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
             "dependencies": {
-                "escape-string-regexp": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-                    "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
-                    "dev": true
-                }
-            }
-        },
-        "stackframe": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
-            "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ="
-        },
-        "static-extend": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-            "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-            "dev": true,
-            "requires": {
-                "define-property": "^0.2.5",
-                "object-copy": "^0.1.0"
+                "is-buffer": "^1.1.5"
             },
-            "dependencies": {
-                "define-property": {
-                    "version": "0.2.5",
-                    "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                    "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                    "dev": true,
-                    "requires": {
-                        "is-descriptor": "^0.1.0"
-                    }
-                }
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "statuses": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-            "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-        },
-        "stdout-stream": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
-            "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
-            "dev": true,
-            "requires": {
-                "readable-stream": "^2.0.1"
+        "node_modules/object-inspect": {
+            "version": "1.12.3",
+            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+            "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "stream-browserify": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-            "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+        "node_modules/object-is": {
+            "version": "1.1.5",
+            "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+            "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
             "dev": true,
-            "requires": {
-                "inherits": "~2.0.1",
-                "readable-stream": "^2.0.2"
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "stream-each": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-            "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
-            "dev": true,
-            "requires": {
-                "end-of-stream": "^1.1.0",
-                "stream-shift": "^1.0.0"
+        "node_modules/object-keys": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+            "engines": {
+                "node": ">= 0.4"
             }
         },
-        "stream-exhaust": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
-            "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
-            "dev": true
-        },
-        "stream-http": {
-            "version": "2.8.3",
-            "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-            "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
-            "dev": true,
-            "requires": {
-                "builtin-status-codes": "^3.0.0",
-                "inherits": "^2.0.1",
-                "readable-stream": "^2.3.6",
-                "to-arraybuffer": "^1.0.0",
-                "xtend": "^4.0.0"
+        "node_modules/object-path": {
+            "version": "0.11.8",
+            "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz",
+            "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==",
+            "engines": {
+                "node": ">= 10.12.0"
             }
         },
-        "stream-shift": {
+        "node_modules/object-visit": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-            "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
-            "dev": true
-        },
-        "stream-throttle": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz",
-            "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=",
-            "dev": true,
-            "requires": {
-                "commander": "^2.2.0",
-                "limiter": "^1.0.5"
-            },
+            "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+            "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
             "dependencies": {
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-                    "dev": true
-                }
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "stream-to-array": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz",
-            "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=",
-            "dev": true,
-            "requires": {
-                "any-promise": "^1.1.0"
+        "node_modules/object.assign": {
+            "version": "4.1.4",
+            "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+            "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "has-symbols": "^1.0.3",
+                "object-keys": "^1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "string-argv": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
-            "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
-            "dev": true
-        },
-        "string-length": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
-            "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+        "node_modules/object.defaults": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+            "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
             "dev": true,
-            "requires": {
-                "char-regex": "^1.0.2",
-                "strip-ansi": "^6.0.0"
+            "dependencies": {
+                "array-each": "^1.0.1",
+                "array-slice": "^1.0.0",
+                "for-own": "^1.0.0",
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "string-width": {
-            "version": "4.2.3",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+        "node_modules/object.entries": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
+            "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
             "dev": true,
-            "requires": {
-                "emoji-regex": "^8.0.0",
-                "is-fullwidth-code-point": "^3.0.0",
-                "strip-ansi": "^6.0.1"
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
             }
         },
-        "string.prototype.matchall": {
-            "version": "4.0.6",
-            "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz",
-            "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==",
+        "node_modules/object.fromentries": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
+            "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
             "dev": true,
-            "requires": {
+            "dependencies": {
                 "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1",
-                "get-intrinsic": "^1.1.1",
-                "has-symbols": "^1.0.2",
-                "internal-slot": "^1.0.3",
-                "regexp.prototype.flags": "^1.3.1",
-                "side-channel": "^1.0.4"
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "string.prototype.padend": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz",
-            "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==",
-            "requires": {
+        "node_modules/object.getownpropertydescriptors": {
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz",
+            "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==",
+            "dependencies": {
+                "array.prototype.reduce": "^1.0.5",
                 "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
+                "define-properties": "^1.2.0",
+                "es-abstract": "^1.21.2",
+                "safe-array-concat": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "string.prototype.trim": {
-            "version": "1.2.5",
-            "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz",
-            "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.19.1"
+        "node_modules/object.hasown": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
+            "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
+            "dev": true,
+            "dependencies": {
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "string.prototype.trimend": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
-            "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3"
+        "node_modules/object.map": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+            "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+            "dev": true,
+            "dependencies": {
+                "for-own": "^1.0.0",
+                "make-iterator": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "string.prototype.trimstart": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
-            "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.3"
+        "node_modules/object.pick": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+            "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+            "dependencies": {
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "string_decoder": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+        "node_modules/object.reduce": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
+            "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",
             "dev": true,
-            "requires": {
-                "safe-buffer": "~5.1.0"
+            "dependencies": {
+                "for-own": "^1.0.0",
+                "make-iterator": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "stringify-object": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
-            "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+        "node_modules/object.values": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
+            "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
             "dev": true,
-            "requires": {
-                "get-own-enumerable-property-symbols": "^3.0.0",
-                "is-obj": "^1.0.1",
-                "is-regexp": "^1.0.0"
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
             },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/obuf": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+            "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+        },
+        "node_modules/on-finished": {
+            "version": "2.4.1",
+            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+            "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
             "dependencies": {
-                "is-obj": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-                    "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
-                    "dev": true
-                }
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "strip-ansi": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-            "dev": true,
-            "requires": {
-                "ansi-regex": "^5.0.1"
+        "node_modules/on-headers": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+            "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "strip-bom": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-            "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+        "node_modules/once": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+            "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+            "dependencies": {
+                "wrappy": "1"
+            }
         },
-        "strip-bom-buf": {
+        "node_modules/one-time": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz",
-            "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=",
+            "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+            "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
             "dev": true,
-            "requires": {
-                "is-utf8": "^0.2.1"
+            "dependencies": {
+                "fn.name": "1.x.x"
             }
         },
-        "strip-bom-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz",
-            "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=",
+        "node_modules/onetime": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+            "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
             "dev": true,
-            "requires": {
-                "first-chunk-stream": "^2.0.0",
-                "strip-bom": "^2.0.0"
-            },
             "dependencies": {
-                "strip-bom": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-                    "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-                    "dev": true,
-                    "requires": {
-                        "is-utf8": "^0.2.0"
-                    }
-                }
+                "mimic-fn": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "strip-bom-string": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
-            "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=",
-            "dev": true
-        },
-        "strip-comments": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz",
-            "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==",
+        "node_modules/open": {
+            "version": "8.4.2",
+            "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+            "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
             "dev": true,
-            "requires": {
-                "babel-extract-comments": "^1.0.0",
-                "babel-plugin-transform-object-rest-spread": "^6.26.0"
+            "dependencies": {
+                "define-lazy-prop": "^2.0.0",
+                "is-docker": "^2.1.1",
+                "is-wsl": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "strip-dirs": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
-            "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+        "node_modules/opencollective-postinstall": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
+            "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
             "dev": true,
-            "requires": {
-                "is-natural-number": "^4.0.1"
+            "bin": {
+                "opencollective-postinstall": "index.js"
             }
         },
-        "strip-eof": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-            "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
-            "dev": true
-        },
-        "strip-final-newline": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-            "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+        "node_modules/openurl": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz",
+            "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==",
             "dev": true
         },
-        "strip-indent": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
-            "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+        "node_modules/opn": {
+            "version": "5.3.0",
+            "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
+            "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
             "dev": true,
-            "requires": {
-                "get-stdin": "^4.0.1"
-            },
             "dependencies": {
-                "get-stdin": {
-                    "version": "4.0.1",
-                    "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-                    "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-                    "dev": true
-                }
+                "is-wsl": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "strip-json-comments": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-            "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-            "dev": true
+        "node_modules/opn/node_modules/is-wsl": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+            "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "style-search": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
-            "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=",
-            "dev": true
+        "node_modules/optionator": {
+            "version": "0.8.3",
+            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+            "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+            "dependencies": {
+                "deep-is": "~0.1.3",
+                "fast-levenshtein": "~2.0.6",
+                "levn": "~0.3.0",
+                "prelude-ls": "~1.1.2",
+                "type-check": "~0.3.2",
+                "word-wrap": "~1.2.3"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
         },
-        "stylelint": {
-            "version": "13.13.1",
-            "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz",
-            "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==",
-            "dev": true,
-            "requires": {
-                "@stylelint/postcss-css-in-js": "^0.37.2",
-                "@stylelint/postcss-markdown": "^0.36.2",
-                "autoprefixer": "^9.8.6",
-                "balanced-match": "^2.0.0",
-                "chalk": "^4.1.1",
-                "cosmiconfig": "^7.0.0",
-                "debug": "^4.3.1",
-                "execall": "^2.0.0",
-                "fast-glob": "^3.2.5",
-                "fastest-levenshtein": "^1.0.12",
-                "file-entry-cache": "^6.0.1",
-                "get-stdin": "^8.0.0",
-                "global-modules": "^2.0.0",
-                "globby": "^11.0.3",
-                "globjoin": "^0.1.4",
-                "html-tags": "^3.1.0",
-                "ignore": "^5.1.8",
-                "import-lazy": "^4.0.0",
-                "imurmurhash": "^0.1.4",
-                "known-css-properties": "^0.21.0",
-                "lodash": "^4.17.21",
+        "node_modules/ora": {
+            "version": "5.4.1",
+            "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+            "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+            "dependencies": {
+                "bl": "^4.1.0",
+                "chalk": "^4.1.0",
+                "cli-cursor": "^3.1.0",
+                "cli-spinners": "^2.5.0",
+                "is-interactive": "^1.0.0",
+                "is-unicode-supported": "^0.1.0",
                 "log-symbols": "^4.1.0",
-                "mathml-tag-names": "^2.1.3",
-                "meow": "^9.0.0",
-                "micromatch": "^4.0.4",
-                "normalize-selector": "^0.2.0",
-                "postcss": "^7.0.35",
-                "postcss-html": "^0.36.0",
-                "postcss-less": "^3.1.4",
-                "postcss-media-query-parser": "^0.2.3",
-                "postcss-resolve-nested-selector": "^0.1.1",
-                "postcss-safe-parser": "^4.0.2",
-                "postcss-sass": "^0.4.4",
-                "postcss-scss": "^2.1.1",
-                "postcss-selector-parser": "^6.0.5",
-                "postcss-syntax": "^0.36.2",
-                "postcss-value-parser": "^4.1.0",
-                "resolve-from": "^5.0.0",
-                "slash": "^3.0.0",
-                "specificity": "^0.4.1",
-                "string-width": "^4.2.2",
                 "strip-ansi": "^6.0.0",
-                "style-search": "^0.1.0",
-                "sugarss": "^2.0.0",
-                "svg-tags": "^1.0.0",
-                "table": "^6.6.0",
-                "v8-compile-cache": "^2.3.0",
-                "write-file-atomic": "^3.0.3"
+                "wcwidth": "^1.0.1"
             },
-            "dependencies": {
-                "ajv": {
-                    "version": "8.10.0",
-                    "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz",
-                    "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
-                    "dev": true,
-                    "requires": {
-                        "fast-deep-equal": "^3.1.1",
-                        "json-schema-traverse": "^1.0.0",
-                        "require-from-string": "^2.0.2",
-                        "uri-js": "^4.2.2"
-                    }
-                },
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "astral-regex": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
-                    "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
-                    "dev": true
-                },
-                "autoprefixer": {
-                    "version": "9.8.8",
-                    "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
-                    "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
-                    "dev": true,
-                    "requires": {
-                        "browserslist": "^4.12.0",
-                        "caniuse-lite": "^1.0.30001109",
-                        "normalize-range": "^0.1.2",
-                        "num2fraction": "^1.2.2",
-                        "picocolors": "^0.2.1",
-                        "postcss": "^7.0.32",
-                        "postcss-value-parser": "^4.1.0"
-                    }
-                },
-                "balanced-match": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
-                    "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
-                    "dev": true
-                },
-                "camelcase": {
-                    "version": "5.3.1",
-                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                    "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-                    "dev": true
-                },
-                "camelcase-keys": {
-                    "version": "6.2.2",
-                    "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
-                    "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
-                    "dev": true,
-                    "requires": {
-                        "camelcase": "^5.3.1",
-                        "map-obj": "^4.0.0",
-                        "quick-lru": "^4.0.1"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                },
-                "cosmiconfig": {
-                    "version": "7.0.1",
-                    "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
-                    "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
-                    "dev": true,
-                    "requires": {
-                        "@types/parse-json": "^4.0.0",
-                        "import-fresh": "^3.2.1",
-                        "parse-json": "^5.0.0",
-                        "path-type": "^4.0.0",
-                        "yaml": "^1.10.0"
-                    }
-                },
-                "debug": {
-                    "version": "4.3.3",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-                    "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "2.1.2"
-                    }
-                },
-                "decamelize": {
-                    "version": "1.2.0",
-                    "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                    "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-                    "dev": true
-                },
-                "file-entry-cache": {
-                    "version": "6.0.1",
-                    "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-                    "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-                    "dev": true,
-                    "requires": {
-                        "flat-cache": "^3.0.4"
-                    }
-                },
-                "find-up": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-                    "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-                    "dev": true,
-                    "requires": {
-                        "locate-path": "^5.0.0",
-                        "path-exists": "^4.0.0"
-                    }
-                },
-                "flat-cache": {
-                    "version": "3.0.4",
-                    "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-                    "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-                    "dev": true,
-                    "requires": {
-                        "flatted": "^3.1.0",
-                        "rimraf": "^3.0.2"
-                    }
-                },
-                "flatted": {
-                    "version": "3.2.5",
-                    "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
-                    "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
-                    "dev": true
-                },
-                "get-stdin": {
-                    "version": "8.0.0",
-                    "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
-                    "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
-                    "dev": true
-                },
-                "global-modules": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
-                    "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
-                    "dev": true,
-                    "requires": {
-                        "global-prefix": "^3.0.0"
-                    }
-                },
-                "global-prefix": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
-                    "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
-                    "dev": true,
-                    "requires": {
-                        "ini": "^1.3.5",
-                        "kind-of": "^6.0.2",
-                        "which": "^1.3.1"
-                    }
-                },
-                "hosted-git-info": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
-                    "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-                    "dev": true,
-                    "requires": {
-                        "lru-cache": "^6.0.0"
-                    }
-                },
-                "import-lazy": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
-                    "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
-                    "dev": true
-                },
-                "json-schema-traverse": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-                    "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-                    "dev": true
-                },
-                "locate-path": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-                    "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-                    "dev": true,
-                    "requires": {
-                        "p-locate": "^4.1.0"
-                    }
-                },
-                "map-obj": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
-                    "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
-                    "dev": true
-                },
-                "meow": {
-                    "version": "9.0.0",
-                    "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
-                    "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
-                    "dev": true,
-                    "requires": {
-                        "@types/minimist": "^1.2.0",
-                        "camelcase-keys": "^6.2.2",
-                        "decamelize": "^1.2.0",
-                        "decamelize-keys": "^1.1.0",
-                        "hard-rejection": "^2.1.0",
-                        "minimist-options": "4.1.0",
-                        "normalize-package-data": "^3.0.0",
-                        "read-pkg-up": "^7.0.1",
-                        "redent": "^3.0.0",
-                        "trim-newlines": "^3.0.0",
-                        "type-fest": "^0.18.0",
-                        "yargs-parser": "^20.2.3"
-                    }
-                },
-                "ms": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-                    "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-                    "dev": true
-                },
-                "normalize-package-data": {
-                    "version": "3.0.3",
-                    "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
-                    "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
-                    "dev": true,
-                    "requires": {
-                        "hosted-git-info": "^4.0.1",
-                        "is-core-module": "^2.5.0",
-                        "semver": "^7.3.4",
-                        "validate-npm-package-license": "^3.0.1"
-                    }
-                },
-                "p-locate": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-                    "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-                    "dev": true,
-                    "requires": {
-                        "p-limit": "^2.2.0"
-                    }
-                },
-                "parse-json": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-                    "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-                    "dev": true,
-                    "requires": {
-                        "@babel/code-frame": "^7.0.0",
-                        "error-ex": "^1.3.1",
-                        "json-parse-even-better-errors": "^2.3.0",
-                        "lines-and-columns": "^1.1.6"
-                    }
-                },
-                "path-exists": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-                    "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-                    "dev": true
-                },
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "read-pkg": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
-                    "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
-                    "dev": true,
-                    "requires": {
-                        "@types/normalize-package-data": "^2.4.0",
-                        "normalize-package-data": "^2.5.0",
-                        "parse-json": "^5.0.0",
-                        "type-fest": "^0.6.0"
-                    },
-                    "dependencies": {
-                        "hosted-git-info": {
-                            "version": "2.8.9",
-                            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-                            "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-                            "dev": true
-                        },
-                        "normalize-package-data": {
-                            "version": "2.5.0",
-                            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-                            "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-                            "dev": true,
-                            "requires": {
-                                "hosted-git-info": "^2.1.4",
-                                "resolve": "^1.10.0",
-                                "semver": "2 || 3 || 4 || 5",
-                                "validate-npm-package-license": "^3.0.1"
-                            }
-                        },
-                        "semver": {
-                            "version": "5.7.1",
-                            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                            "dev": true
-                        },
-                        "type-fest": {
-                            "version": "0.6.0",
-                            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
-                            "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
-                            "dev": true
-                        }
-                    }
-                },
-                "read-pkg-up": {
-                    "version": "7.0.1",
-                    "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
-                    "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
-                    "dev": true,
-                    "requires": {
-                        "find-up": "^4.1.0",
-                        "read-pkg": "^5.2.0",
-                        "type-fest": "^0.8.1"
-                    },
-                    "dependencies": {
-                        "type-fest": {
-                            "version": "0.8.1",
-                            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-                            "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-                            "dev": true
-                        }
-                    }
-                },
-                "redent": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
-                    "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
-                    "dev": true,
-                    "requires": {
-                        "indent-string": "^4.0.0",
-                        "strip-indent": "^3.0.0"
-                    }
-                },
-                "rimraf": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-                    "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                },
-                "slash": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-                    "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-                    "dev": true
-                },
-                "slice-ansi": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
-                    "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^4.0.0",
-                        "astral-regex": "^2.0.0",
-                        "is-fullwidth-code-point": "^3.0.0"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                },
-                "strip-indent": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
-                    "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
-                    "dev": true,
-                    "requires": {
-                        "min-indent": "^1.0.0"
-                    }
-                },
-                "table": {
-                    "version": "6.8.0",
-                    "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz",
-                    "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
-                    "dev": true,
-                    "requires": {
-                        "ajv": "^8.0.1",
-                        "lodash.truncate": "^4.4.2",
-                        "slice-ansi": "^4.0.0",
-                        "string-width": "^4.2.3",
-                        "strip-ansi": "^6.0.1"
-                    }
-                },
-                "trim-newlines": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
-                    "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
-                    "dev": true
-                },
-                "type-fest": {
-                    "version": "0.18.1",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
-                    "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
-                    "dev": true
-                },
-                "which": {
-                    "version": "1.3.1",
-                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-                    "dev": true,
-                    "requires": {
-                        "isexe": "^2.0.0"
-                    }
-                }
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "sugarss": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz",
-            "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==",
-            "dev": true,
-            "requires": {
-                "postcss": "^7.0.2"
+        "node_modules/ora/node_modules/cli-cursor": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+            "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+            "dependencies": {
+                "restore-cursor": "^3.1.0"
             },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/ora/node_modules/log-symbols": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+            "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
             "dependencies": {
-                "picocolors": {
-                    "version": "0.2.1",
-                    "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-                    "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-                    "dev": true
-                },
-                "postcss": {
-                    "version": "7.0.39",
-                    "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-                    "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-                    "dev": true,
-                    "requires": {
-                        "picocolors": "^0.2.1",
-                        "source-map": "^0.6.1"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "chalk": "^4.1.0",
+                "is-unicode-supported": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "supports-color": {
-            "version": "5.5.0",
-            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-            "requires": {
-                "has-flag": "^3.0.0"
+        "node_modules/ora/node_modules/mimic-fn": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+            "engines": {
+                "node": ">=6"
             }
         },
-        "supports-hyperlinks": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
-            "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
-            "dev": true,
-            "requires": {
-                "has-flag": "^4.0.0",
-                "supports-color": "^7.0.0"
+        "node_modules/ora/node_modules/onetime": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+            "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+            "dependencies": {
+                "mimic-fn": "^2.1.0"
             },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/ora/node_modules/restore-cursor": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+            "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
             "dependencies": {
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
+                "onetime": "^5.1.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "supports-preserve-symlinks-flag": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-            "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+        "node_modules/ora/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "sver-compat": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
-            "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
+        "node_modules/ordered-read-streams": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+            "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
             "dev": true,
-            "requires": {
-                "es6-iterator": "^2.0.1",
-                "es6-symbol": "^3.1.1"
+            "dependencies": {
+                "readable-stream": "^2.0.1"
             }
         },
-        "svg-tags": {
+        "node_modules/ordered-read-streams/node_modules/isarray": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
-            "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
             "dev": true
         },
-        "symbol-observable": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
-            "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
-        },
-        "symbol-tree": {
-            "version": "3.2.4",
-            "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
-            "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
-        },
-        "systeminformation": {
-            "version": "5.11.5",
-            "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.5.tgz",
-            "integrity": "sha512-AtJreEPwOAnMstMRtVbQwq8V+dOgOJa8fqzjXjrb46JnVIqrRHRP6+L8VU4WvDbPgdRHA7Nr0l6jH42dmGoACQ==",
+        "node_modules/ordered-read-streams/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
             "dev": true,
-            "optional": true
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
         },
-        "table": {
-            "version": "5.4.6",
-            "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-            "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+        "node_modules/ordered-read-streams/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/ordered-read-streams/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "ajv": "^6.10.2",
-                "lodash": "^4.17.14",
-                "slice-ansi": "^2.1.0",
-                "string-width": "^3.0.0"
-            },
             "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "7.0.3",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
+                "safe-buffer": "~5.1.0"
             }
         },
-        "tapable": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-            "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+        "node_modules/os-browserify": {
+            "version": "0.3.0",
+            "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+            "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
             "dev": true
         },
-        "tar": {
-            "version": "6.1.11",
-            "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
-            "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
-            "dev": true,
-            "requires": {
-                "chownr": "^2.0.0",
-                "fs-minipass": "^2.0.0",
-                "minipass": "^3.0.0",
-                "minizlib": "^2.1.1",
-                "mkdirp": "^1.0.3",
-                "yallist": "^4.0.0"
+        "node_modules/os-homedir": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+            "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "tar-stream": {
-            "version": "1.6.2",
-            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
-            "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+        "node_modules/os-locale": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+            "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
             "dev": true,
-            "requires": {
-                "bl": "^1.0.0",
-                "buffer-alloc": "^1.2.0",
-                "end-of-stream": "^1.0.0",
-                "fs-constants": "^1.0.0",
-                "readable-stream": "^2.3.0",
-                "to-buffer": "^1.1.1",
-                "xtend": "^4.0.0"
+            "dependencies": {
+                "lcid": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "temp-dir": {
+        "node_modules/os-tmpdir": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+            "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/p-finally": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
-            "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+            "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "tempy": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
-            "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
-            "dev": true,
-            "requires": {
-                "temp-dir": "^1.0.0",
-                "type-fest": "^0.3.1",
-                "unique-string": "^1.0.0"
-            },
+        "node_modules/p-limit": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+            "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
             "dependencies": {
-                "crypto-random-string": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
-                    "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
-                    "dev": true
-                },
-                "type-fest": {
-                    "version": "0.3.1",
-                    "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
-                    "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
-                    "dev": true
-                },
-                "unique-string": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
-                    "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
-                    "dev": true,
-                    "requires": {
-                        "crypto-random-string": "^1.0.0"
-                    }
-                }
+                "p-try": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "terminal-link": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
-            "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
-            "dev": true,
-            "requires": {
-                "ansi-escapes": "^4.2.1",
-                "supports-hyperlinks": "^2.0.0"
+        "node_modules/p-locate": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+            "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+            "dependencies": {
+                "p-limit": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "ternary-stream": {
+        "node_modules/p-map": {
             "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz",
-            "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==",
+            "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+            "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
             "dev": true,
-            "requires": {
-                "duplexify": "^4.1.1",
-                "fork-stream": "^0.0.4",
-                "merge-stream": "^2.0.0",
-                "through2": "^3.0.1"
+            "dependencies": {
+                "aggregate-error": "^3.0.0"
             },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/p-try": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/pako": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+            "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+            "dev": true
+        },
+        "node_modules/parent-module": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
             "dependencies": {
-                "duplexify": {
-                    "version": "4.1.2",
-                    "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
-                    "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
-                    "dev": true,
-                    "requires": {
-                        "end-of-stream": "^1.4.1",
-                        "inherits": "^2.0.3",
-                        "readable-stream": "^3.1.1",
-                        "stream-shift": "^1.0.0"
-                    }
-                },
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                },
-                "through2": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
-                    "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.4",
-                        "readable-stream": "2 || 3"
-                    }
-                }
+                "callsites": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "terser": {
-            "version": "4.8.0",
-            "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
-            "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+        "node_modules/parse": {
+            "version": "3.5.1",
+            "resolved": "https://registry.npmjs.org/parse/-/parse-3.5.1.tgz",
+            "integrity": "sha512-uxkLVNfbqgZ/pStg/jIQGh09tOUkPZorzDIqz9vSFjZ3iIZzgvNk6VBbjXjcMWsR8LyFPOR1ROR6/y9Dedn3/w==",
+            "dependencies": {
+                "@babel/runtime": "7.18.0",
+                "@babel/runtime-corejs3": "7.17.8",
+                "idb-keyval": "6.0.3",
+                "react-native-crypto-js": "1.0.0",
+                "uuid": "3.4.0",
+                "ws": "8.6.0",
+                "xmlhttprequest": "1.8.0"
+            },
+            "optionalDependencies": {
+                "crypto-js": "4.1.1"
+            }
+        },
+        "node_modules/parse-asn1": {
+            "version": "5.1.6",
+            "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+            "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
             "dev": true,
-            "requires": {
-                "commander": "^2.20.0",
-                "source-map": "~0.6.1",
-                "source-map-support": "~0.5.12"
+            "dependencies": {
+                "asn1.js": "^5.2.0",
+                "browserify-aes": "^1.0.0",
+                "evp_bytestokey": "^1.0.0",
+                "pbkdf2": "^3.0.3",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "node_modules/parse-entities": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+            "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+            "dev": true,
+            "dependencies": {
+                "character-entities": "^1.0.0",
+                "character-entities-legacy": "^1.0.0",
+                "character-reference-invalid": "^1.0.0",
+                "is-alphanumerical": "^1.0.0",
+                "is-decimal": "^1.0.0",
+                "is-hexadecimal": "^1.0.0"
             },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/parse-filepath": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+            "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+            "dev": true,
             "dependencies": {
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-                    "dev": true
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                }
+                "is-absolute": "^1.0.0",
+                "map-cache": "^0.2.0",
+                "path-root": "^0.1.1"
+            },
+            "engines": {
+                "node": ">=0.8"
             }
         },
-        "terser-webpack-plugin": {
-            "version": "1.4.5",
-            "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-            "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
-            "dev": true,
-            "requires": {
-                "cacache": "^12.0.2",
-                "find-cache-dir": "^2.1.0",
-                "is-wsl": "^1.1.0",
-                "schema-utils": "^1.0.0",
-                "serialize-javascript": "^4.0.0",
-                "source-map": "^0.6.1",
-                "terser": "^4.1.2",
-                "webpack-sources": "^1.4.0",
-                "worker-farm": "^1.7.0"
-            },
-            "dependencies": {
-                "cacache": {
-                    "version": "12.0.4",
-                    "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-                    "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-                    "dev": true,
-                    "requires": {
-                        "bluebird": "^3.5.5",
-                        "chownr": "^1.1.1",
-                        "figgy-pudding": "^3.5.1",
-                        "glob": "^7.1.4",
-                        "graceful-fs": "^4.1.15",
-                        "infer-owner": "^1.0.3",
-                        "lru-cache": "^5.1.1",
-                        "mississippi": "^3.0.0",
-                        "mkdirp": "^0.5.1",
-                        "move-concurrently": "^1.0.1",
-                        "promise-inflight": "^1.0.1",
-                        "rimraf": "^2.6.3",
-                        "ssri": "^6.0.1",
-                        "unique-filename": "^1.1.1",
-                        "y18n": "^4.0.0"
-                    }
-                },
-                "chownr": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-                    "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-                    "dev": true
-                },
-                "lru-cache": {
-                    "version": "5.1.1",
-                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-                    "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-                    "dev": true,
-                    "requires": {
-                        "yallist": "^3.0.2"
-                    }
-                },
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                },
-                "schema-utils": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-                    "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-                    "dev": true,
-                    "requires": {
-                        "ajv": "^6.1.0",
-                        "ajv-errors": "^1.0.0",
-                        "ajv-keywords": "^3.1.0"
-                    }
-                },
-                "serialize-javascript": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-                    "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-                    "dev": true,
-                    "requires": {
-                        "randombytes": "^2.1.0"
-                    }
-                },
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
-                },
-                "ssri": {
-                    "version": "6.0.2",
-                    "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-                    "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
-                    "dev": true,
-                    "requires": {
-                        "figgy-pudding": "^3.5.1"
-                    }
-                },
-                "y18n": {
-                    "version": "4.0.3",
-                    "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-                    "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-                    "dev": true
-                },
-                "yallist": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-                    "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-                    "dev": true
-                }
+        "node_modules/parse-json": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+            "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+            "dependencies": {
+                "error-ex": "^1.3.1",
+                "json-parse-better-errors": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "test-exclude": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
-            "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+        "node_modules/parse-node-version": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+            "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
             "dev": true,
-            "requires": {
-                "@istanbuljs/schema": "^0.1.2",
-                "glob": "^7.1.4",
-                "minimatch": "^3.0.4"
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "text-hex": {
+        "node_modules/parse-passwd": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
-            "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+            "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "text-table": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-            "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
-            "dev": true
+        "node_modules/parse/node_modules/@babel/runtime": {
+            "version": "7.18.0",
+            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz",
+            "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==",
+            "dependencies": {
+                "regenerator-runtime": "^0.13.4"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
         },
-        "tfunk": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz",
-            "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==",
-            "dev": true,
-            "requires": {
-                "chalk": "^1.1.3",
-                "dlv": "^1.1.3"
+        "node_modules/parse/node_modules/ws": {
+            "version": "8.6.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
+            "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
+            "engines": {
+                "node": ">=10.0.0"
             },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-                    "dev": true
-                },
-                "ansi-styles": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-                    "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-                    "dev": true
-                },
-                "chalk": {
-                    "version": "1.1.3",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-                    "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-styles": "^2.2.1",
-                        "escape-string-regexp": "^1.0.2",
-                        "has-ansi": "^2.0.0",
-                        "strip-ansi": "^3.0.0",
-                        "supports-color": "^2.0.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "3.0.1",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^2.0.0"
-                    }
+            "peerDependencies": {
+                "bufferutil": "^4.0.1",
+                "utf-8-validate": "^5.0.2"
+            },
+            "peerDependenciesMeta": {
+                "bufferutil": {
+                    "optional": true
                 },
-                "supports-color": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-                    "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-                    "dev": true
+                "utf-8-validate": {
+                    "optional": true
                 }
             }
         },
-        "throat": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
-            "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+        "node_modules/parse5": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+            "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+        },
+        "node_modules/parseurl": {
+            "version": "1.3.3",
+            "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+            "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/pascalcase": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+            "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/path-browserify": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+            "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
             "dev": true
         },
-        "through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+        "node_modules/path-dirname": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+            "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
             "dev": true
         },
-        "through2": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-            "dev": true,
-            "requires": {
-                "readable-stream": "~2.3.6",
-                "xtend": "~4.0.1"
+        "node_modules/path-exists": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+            "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+            "engines": {
+                "node": ">=4"
             }
         },
-        "through2-filter": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
-            "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+        "node_modules/path-is-absolute": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-2.0.0.tgz",
+            "integrity": "sha512-ajROpjq1SLxJZsgSVCcVIt+ZebVH+PwJtPnVESjfg6JKwJGwAgHRC3zIcjvI0LnecjIHCJhtfNZ/Y/RregqyXg==",
+            "deprecated": "This package is no longer relevant as Node.js 0.12 is unmaintained.",
             "dev": true,
-            "requires": {
-                "through2": "~2.0.0",
-                "xtend": "~4.0.0"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "time-stamp": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
-            "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+        "node_modules/path-is-inside": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+            "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
             "dev": true
         },
-        "timers-browserify": {
-            "version": "2.0.12",
-            "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
-            "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+        "node_modules/path-key": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/path-parse": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+        },
+        "node_modules/path-root": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+            "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
             "dev": true,
-            "requires": {
-                "setimmediate": "^1.0.4"
+            "dependencies": {
+                "path-root-regex": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "timers-ext": {
-            "version": "0.1.7",
-            "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
-            "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+        "node_modules/path-root-regex": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+            "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
             "dev": true,
-            "requires": {
-                "es5-ext": "~0.10.46",
-                "next-tick": "1"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "tiny-emitter": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
-            "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
-            "optional": true
+        "node_modules/path-starts-with": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.0.tgz",
+            "integrity": "sha512-3UHTHbJz5+NLkPafFR+2ycJOjoc4WV2e9qCZCnm71zHiWaFrm1XniLVTkZXvaRgxr1xFh9JsTdicpH2yM03nLA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "tiny-invariant": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz",
-            "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg=="
+        "node_modules/path-to-regexp": {
+            "version": "0.1.7",
+            "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+            "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
         },
-        "tiny-warning": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
-            "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+        "node_modules/path-type": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+            "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+            "engines": {
+                "node": ">=8"
+            }
         },
-        "tmp": {
-            "version": "0.0.33",
-            "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-            "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+        "node_modules/path.js": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/path.js/-/path.js-1.0.7.tgz",
+            "integrity": "sha512-DPX1vNSmckC3figW8xT/fEuF+XBg/96RUpXfW0yT6UGHgQI2mtTSADflz45bXKREbz+5GJa0qDQGNIpNr1skRQ==",
             "dev": true,
-            "requires": {
-                "os-tmpdir": "~1.0.2"
+            "dependencies": {
+                "escape-string-regexp": "^1.0.3",
+                "inherits-ex": "^1.1.2",
+                "util-ex": "^0.3.10"
             }
         },
-        "tmpl": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
-            "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
-            "dev": true
-        },
-        "to-absolute-glob": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
-            "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
+        "node_modules/pbkdf2": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+            "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
             "dev": true,
-            "requires": {
-                "is-absolute": "^1.0.0",
-                "is-negated-glob": "^1.0.0"
+            "dependencies": {
+                "create-hash": "^1.1.2",
+                "create-hmac": "^1.1.4",
+                "ripemd160": "^2.0.1",
+                "safe-buffer": "^5.0.1",
+                "sha.js": "^2.4.8"
+            },
+            "engines": {
+                "node": ">=0.12"
             }
         },
-        "to-array": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-            "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
-            "dev": true
-        },
-        "to-arraybuffer": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-            "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+        "node_modules/pend": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+            "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
             "dev": true
         },
-        "to-buffer": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
-            "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
-            "dev": true
+        "node_modules/performance-now": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+            "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
         },
-        "to-camel-case": {
+        "node_modules/picocolors": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz",
-            "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=",
-            "requires": {
-                "to-space-case": "^1.0.0"
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+        },
+        "node_modules/picomatch": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+            "engines": {
+                "node": ">=8.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/jonschlinkert"
             }
         },
-        "to-fast-properties": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-            "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
-            "dev": true
+        "node_modules/pidtree": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+            "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+            "bin": {
+                "pidtree": "bin/pidtree.js"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
         },
-        "to-no-case": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
-            "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo="
+        "node_modules/pify": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+            "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "to-object-path": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-            "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+        "node_modules/pinkie": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+            "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
             "dev": true,
-            "requires": {
-                "kind-of": "^3.0.2"
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/pinkie-promise": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+            "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+            "dev": true,
+            "dependencies": {
+                "pinkie": "^2.0.0"
             },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/pirates": {
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+            "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/pkg-dir": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+            "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
             "dependencies": {
-                "kind-of": {
-                    "version": "3.2.2",
-                    "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                    "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                    "dev": true,
-                    "requires": {
-                        "is-buffer": "^1.1.5"
-                    }
-                }
+                "find-up": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "to-readable-stream": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-            "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-            "dev": true
+        "node_modules/pkg-dir/node_modules/find-up": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+            "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
         },
-        "to-regex": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-            "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-            "dev": true,
-            "requires": {
-                "define-property": "^2.0.2",
-                "extend-shallow": "^3.0.2",
-                "regex-not": "^1.0.2",
-                "safe-regex": "^1.1.0"
+        "node_modules/pkg-dir/node_modules/locate-path": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+            "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
             },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/pkg-dir/node_modules/p-locate": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+            "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
             "dependencies": {
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    }
-                },
-                "is-extendable": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                    "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                    "dev": true,
-                    "requires": {
-                        "is-plain-object": "^2.0.4"
-                    }
-                }
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "to-regex-range": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-            "requires": {
-                "is-number": "^7.0.0"
+        "node_modules/pkg-up": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+            "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+            "dev": true,
+            "dependencies": {
+                "find-up": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "to-space-case": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
-            "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=",
-            "requires": {
-                "to-no-case": "^1.0.0"
+        "node_modules/pkg-up/node_modules/find-up": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+            "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+            "dev": true,
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "to-through": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
-            "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
+        "node_modules/pkg-up/node_modules/locate-path": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+            "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
             "dev": true,
-            "requires": {
-                "through2": "^2.0.3"
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
             }
         },
-        "toggle-selection": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
-            "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI="
+        "node_modules/pkg-up/node_modules/p-locate": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+            "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+            "dev": true,
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/please-upgrade-node": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+            "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+            "dev": true,
+            "dependencies": {
+                "semver-compare": "^1.0.0"
+            }
         },
-        "toidentifier": {
+        "node_modules/plugin-error": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-            "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+            "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
+            "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+            "dev": true,
+            "dependencies": {
+                "ansi-colors": "^1.0.1",
+                "arr-diff": "^4.0.0",
+                "arr-union": "^3.1.0",
+                "extend-shallow": "^3.0.2"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
         },
-        "touch": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
-            "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+        "node_modules/plugin-error/node_modules/ansi-colors": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+            "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
             "dev": true,
-            "requires": {
-                "nopt": "~1.0.10"
+            "dependencies": {
+                "ansi-wrap": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "tough-cookie": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
-            "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
-            "requires": {
-                "psl": "^1.1.33",
-                "punycode": "^2.1.1",
-                "universalify": "^0.1.2"
+        "node_modules/plugin-error/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "tr46": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
-            "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
-            "requires": {
-                "punycode": "^2.1.1"
+        "node_modules/plugin-error/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "tree-flatten": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/tree-flatten/-/tree-flatten-1.0.0.tgz",
-            "integrity": "sha1-tdQJbGJ3W86shImTfPviDex1a10="
+        "node_modules/pluralize": {
+            "version": "8.0.0",
+            "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+            "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "trim-newlines": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-            "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-            "dev": true
+        "node_modules/po2json": {
+            "version": "0.4.5",
+            "resolved": "https://registry.npmjs.org/po2json/-/po2json-0.4.5.tgz",
+            "integrity": "sha512-JH0hgi1fC0t9UvdiyS7kcVly0N1WNey4R2YZ/jPaxQKYm6Cfej7ZTgiEy8LP2JwoEhONceiNS8JH5mWPQkiXeA==",
+            "dev": true,
+            "dependencies": {
+                "gettext-parser": "1.1.0",
+                "nomnom": "1.8.1"
+            },
+            "bin": {
+                "po2json": "bin/po2json"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
         },
-        "triple-beam": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
-            "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
+        "node_modules/pofile": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz",
+            "integrity": "sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==",
             "dev": true
         },
-        "trough": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
-            "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
-            "dev": true
+        "node_modules/pointer-events-polyfill": {
+            "version": "0.4.4-pre",
+            "resolved": "https://registry.npmjs.org/pointer-events-polyfill/-/pointer-events-polyfill-0.4.4-pre.tgz",
+            "integrity": "sha512-t7iitVY5jW9mGOFZEHphJOzB8eMhoYaE6I5HqsUX14rjsPa9F6OlMOCj3EpqDzNb/8XtMk2BxMpOyePPyuefHw==",
+            "peer": true
         },
-        "true-case-path": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
-            "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+        "node_modules/portscanner": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz",
+            "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==",
             "dev": true,
-            "requires": {
-                "glob": "^7.1.2"
+            "dependencies": {
+                "async": "^2.6.0",
+                "is-number-like": "^1.0.3"
+            },
+            "engines": {
+                "node": ">=0.4",
+                "npm": ">=1.0.0"
             }
         },
-        "tslib": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
-            "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+        "node_modules/posix-character-classes": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+            "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
         },
-        "tsscmp": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
-            "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
+        "node_modules/postcss": {
+            "version": "8.4.23",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
+            "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/postcss/"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/postcss"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ],
+            "dependencies": {
+                "nanoid": "^3.3.6",
+                "picocolors": "^1.0.0",
+                "source-map-js": "^1.0.2"
+            },
+            "engines": {
+                "node": "^10 || ^12 || >=14"
+            }
         },
-        "tty-browserify": {
-            "version": "0.0.0",
-            "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-            "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+        "node_modules/postcss-html": {
+            "version": "0.36.0",
+            "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz",
+            "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==",
+            "dev": true,
+            "dependencies": {
+                "htmlparser2": "^3.10.0"
+            },
+            "peerDependencies": {
+                "postcss": ">=5.0.0",
+                "postcss-syntax": ">=0.36.0"
+            }
+        },
+        "node_modules/postcss-less": {
+            "version": "3.1.4",
+            "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz",
+            "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==",
+            "dev": true,
+            "dependencies": {
+                "postcss": "^7.0.14"
+            },
+            "engines": {
+                "node": ">=6.14.4"
+            }
+        },
+        "node_modules/postcss-less/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
             "dev": true
         },
-        "tunnel-agent": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-            "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+        "node_modules/postcss-less/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
             "dev": true,
-            "requires": {
-                "safe-buffer": "^5.0.1"
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
             }
         },
-        "tv4": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz",
-            "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=",
+        "node_modules/postcss-media-query-parser": {
+            "version": "0.2.3",
+            "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+            "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
             "dev": true
         },
-        "tweetnacl": {
-            "version": "0.14.5",
-            "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-            "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+        "node_modules/postcss-resolve-nested-selector": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+            "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
             "dev": true
         },
-        "tx2": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz",
-            "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==",
+        "node_modules/postcss-safe-parser": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
+            "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
             "dev": true,
-            "optional": true,
-            "requires": {
-                "json-stringify-safe": "^5.0.1"
+            "dependencies": {
+                "postcss": "^7.0.26"
+            },
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "type": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
-            "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+        "node_modules/postcss-safe-parser/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
             "dev": true
         },
-        "type-check": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-            "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-            "requires": {
-                "prelude-ls": "~1.1.2"
+        "node_modules/postcss-safe-parser/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+            "dev": true,
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
             }
         },
-        "type-detect": {
-            "version": "4.0.8",
-            "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-            "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
-            "dev": true
+        "node_modules/postcss-sass": {
+            "version": "0.4.4",
+            "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz",
+            "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==",
+            "dev": true,
+            "dependencies": {
+                "gonzales-pe": "^4.3.0",
+                "postcss": "^7.0.21"
+            }
         },
-        "type-fest": {
-            "version": "0.21.3",
-            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
-            "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+        "node_modules/postcss-sass/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
             "dev": true
         },
-        "type-is": {
-            "version": "1.6.18",
-            "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-            "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-            "requires": {
-                "media-typer": "0.3.0",
-                "mime-types": "~2.1.24"
+        "node_modules/postcss-sass/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+            "dev": true,
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
             }
         },
-        "typedarray": {
-            "version": "0.0.6",
-            "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-            "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+        "node_modules/postcss-scss": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz",
+            "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==",
+            "dev": true,
+            "dependencies": {
+                "postcss": "^7.0.6"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/postcss-scss/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
             "dev": true
         },
-        "typedarray-to-buffer": {
-            "version": "3.1.5",
-            "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-            "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+        "node_modules/postcss-scss/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
             "dev": true,
-            "requires": {
-                "is-typedarray": "^1.0.0"
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
             }
         },
-        "typescript": {
-            "version": "4.5.5",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
-            "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
-            "dev": true
+        "node_modules/postcss-selector-parser": {
+            "version": "6.0.11",
+            "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
+            "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
+            "dev": true,
+            "dependencies": {
+                "cssesc": "^3.0.0",
+                "util-deprecate": "^1.0.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
         },
-        "ua-parser-js": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz",
-            "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==",
-            "dev": true
+        "node_modules/postcss-syntax": {
+            "version": "0.36.2",
+            "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz",
+            "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==",
+            "dev": true,
+            "peerDependencies": {
+                "postcss": ">=5.0.0"
+            }
         },
-        "uc.micro": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
-            "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+        "node_modules/postcss-value-parser": {
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+            "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
             "dev": true
         },
-        "uglify-js": {
-            "version": "3.15.2",
-            "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.2.tgz",
-            "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==",
-            "optional": true
+        "node_modules/prefix-style": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz",
+            "integrity": "sha512-gdr1MBNVT0drzTq95CbSNdsrBDoHGlb2aDJP/FoY+1e+jSDPOb1Cv554gH2MGiSr2WTcXi/zu+NaFzfcHQkfBQ=="
         },
-        "uglify-to-browserify": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-            "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+        "node_modules/prelude-ls": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+            "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/prettier": {
+            "version": "2.8.8",
+            "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+            "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
             "dev": true,
-            "optional": true
+            "bin": {
+                "prettier": "bin-prettier.js"
+            },
+            "engines": {
+                "node": ">=10.13.0"
+            },
+            "funding": {
+                "url": "https://github.com/prettier/prettier?sponsor=1"
+            }
         },
-        "unbox-primitive": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
-            "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
-            "requires": {
-                "function-bind": "^1.1.1",
-                "has-bigints": "^1.0.1",
-                "has-symbols": "^1.0.2",
-                "which-boxed-primitive": "^1.0.2"
+        "node_modules/pretty-format": {
+            "version": "26.6.2",
+            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+            "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+            "peer": true,
+            "dependencies": {
+                "@jest/types": "^26.6.2",
+                "ansi-regex": "^5.0.0",
+                "ansi-styles": "^4.0.0",
+                "react-is": "^17.0.1"
+            },
+            "engines": {
+                "node": ">= 10"
             }
         },
-        "unbzip2-stream": {
-            "version": "1.4.3",
-            "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
-            "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+        "node_modules/pretty-format/node_modules/react-is": {
+            "version": "17.0.2",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+            "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+            "peer": true
+        },
+        "node_modules/pretty-hrtime": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+            "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
             "dev": true,
-            "requires": {
-                "buffer": "^5.2.1",
-                "through": "^2.3.8"
+            "engines": {
+                "node": ">= 0.8"
             }
         },
-        "unc-path-regex": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
-            "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
-            "dev": true
+        "node_modules/prism-react-renderer": {
+            "version": "1.3.5",
+            "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz",
+            "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==",
+            "peerDependencies": {
+                "react": ">=0.14.9"
+            }
         },
-        "undefsafe": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
-            "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
-            "dev": true
+        "node_modules/process": {
+            "version": "0.11.10",
+            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+            "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.6.0"
+            }
         },
-        "underscore": {
-            "version": "1.13.2",
-            "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
-            "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g=="
+        "node_modules/process-nextick-args": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+            "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+        },
+        "node_modules/progress": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+            "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/promise": {
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+            "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+            "peer": true,
+            "dependencies": {
+                "asap": "~2.0.6"
+            }
         },
-        "undertaker": {
+        "node_modules/prompt": {
             "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
-            "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+            "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.3.0.tgz",
+            "integrity": "sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg==",
             "dev": true,
-            "requires": {
-                "arr-flatten": "^1.0.1",
-                "arr-map": "^2.0.0",
-                "bach": "^1.0.0",
-                "collection-map": "^1.0.0",
-                "es6-weak-map": "^2.0.1",
-                "fast-levenshtein": "^1.0.0",
-                "last-run": "^1.1.0",
-                "object.defaults": "^1.0.0",
-                "object.reduce": "^1.0.0",
-                "undertaker-registry": "^1.0.0"
+            "dependencies": {
+                "@colors/colors": "1.5.0",
+                "async": "3.2.3",
+                "read": "1.0.x",
+                "revalidator": "0.1.x",
+                "winston": "2.x"
             },
+            "engines": {
+                "node": ">= 6.0.0"
+            }
+        },
+        "node_modules/prompt/node_modules/async": {
+            "version": "3.2.3",
+            "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
+            "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
+            "dev": true
+        },
+        "node_modules/prompt/node_modules/winston": {
+            "version": "2.4.7",
+            "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz",
+            "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==",
+            "dev": true,
             "dependencies": {
-                "fast-levenshtein": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
-                    "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=",
-                    "dev": true
-                }
+                "async": "^2.6.4",
+                "colors": "1.0.x",
+                "cycle": "1.0.x",
+                "eyes": "0.1.x",
+                "isstream": "0.1.x",
+                "stack-trace": "0.0.x"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "undertaker-registry": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
-            "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
+        "node_modules/prompt/node_modules/winston/node_modules/async": {
+            "version": "2.6.4",
+            "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+            "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+            "dev": true,
+            "dependencies": {
+                "lodash": "^4.17.14"
+            }
+        },
+        "node_modules/prompts": {
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+            "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+            "peer": true,
+            "dependencies": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/prop-types": {
+            "version": "15.8.1",
+            "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+            "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+            "dependencies": {
+                "loose-envify": "^1.4.0",
+                "object-assign": "^4.1.1",
+                "react-is": "^16.13.1"
+            }
+        },
+        "node_modules/proxy-addr": {
+            "version": "2.0.7",
+            "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+            "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+            "dependencies": {
+                "forwarded": "0.2.0",
+                "ipaddr.js": "1.9.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/proxy-from-env": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+            "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
             "dev": true
         },
-        "unescape": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz",
-            "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
-            "requires": {
-                "extend-shallow": "^2.0.1"
+        "node_modules/psl": {
+            "version": "1.9.0",
+            "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+            "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+        },
+        "node_modules/pstree.remy": {
+            "version": "1.1.8",
+            "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+            "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+            "dev": true
+        },
+        "node_modules/public-encrypt": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+            "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+            "dev": true,
+            "dependencies": {
+                "bn.js": "^4.1.0",
+                "browserify-rsa": "^4.0.0",
+                "create-hash": "^1.1.0",
+                "parse-asn1": "^5.0.0",
+                "randombytes": "^2.0.1",
+                "safe-buffer": "^5.1.2"
             }
         },
-        "unicode-canonical-property-names-ecmascript": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
-            "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ=="
+        "node_modules/public-encrypt/node_modules/bn.js": {
+            "version": "4.12.0",
+            "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+            "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+            "dev": true
+        },
+        "node_modules/pump": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+            "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
+        "node_modules/pumpify": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+            "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+            "dev": true,
+            "dependencies": {
+                "duplexify": "^3.6.0",
+                "inherits": "^2.0.3",
+                "pump": "^2.0.0"
+            }
+        },
+        "node_modules/pumpify/node_modules/duplexify": {
+            "version": "3.7.1",
+            "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+            "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+            "dev": true,
+            "dependencies": {
+                "end-of-stream": "^1.0.0",
+                "inherits": "^2.0.1",
+                "readable-stream": "^2.0.0",
+                "stream-shift": "^1.0.0"
+            }
+        },
+        "node_modules/pumpify/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/pumpify/node_modules/pump": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+            "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+            "dev": true,
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
+        "node_modules/pumpify/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/pumpify/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/pumpify/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/punycode": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+            "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/qs": {
+            "version": "6.11.0",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+            "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+            "dependencies": {
+                "side-channel": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=0.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/querystring": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+            "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+            "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.x"
+            }
+        },
+        "node_modules/querystring-browser": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz",
+            "integrity": "sha512-oqPm3iZO4r4lEFM2YAJyMwCqAMIL0r3jO36ZohmHLUs9NpAfEGee7G5+PllGec/TkAnfI85FMmkPaW8UbZI0Uw=="
+        },
+        "node_modules/querystring-es3": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+            "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.x"
+            }
+        },
+        "node_modules/querystringify": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+            "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+        },
+        "node_modules/queue-microtask": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+            "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
+        "node_modules/quick-lru": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+            "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/raf": {
+            "version": "3.4.1",
+            "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+            "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+            "dependencies": {
+                "performance-now": "^2.1.0"
+            }
+        },
+        "node_modules/raf-schd": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz",
+            "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ=="
+        },
+        "node_modules/randombytes": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+            "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+            "dependencies": {
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "node_modules/randomfill": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+            "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+            "dev": true,
+            "dependencies": {
+                "randombytes": "^2.0.5",
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "node_modules/range-parser": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+            "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/raw-body": {
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+            "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+            "dependencies": {
+                "bytes": "3.1.2",
+                "http-errors": "2.0.0",
+                "iconv-lite": "0.4.24",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/raw-body/node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/re-resizable": {
+            "version": "6.9.9",
+            "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.9.tgz",
+            "integrity": "sha512-l+MBlKZffv/SicxDySKEEh42hR6m5bAHfNu3Tvxks2c4Ah+ldnWjfnVRwxo/nxF27SsUsxDS0raAzFuJNKABXA==",
+            "peerDependencies": {
+                "react": "^16.13.1 || ^17.0.0 || ^18.0.0",
+                "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/react": {
+            "version": "18.2.0",
+            "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+            "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+            "dependencies": {
+                "loose-envify": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/react-beautiful-dnd": {
+            "version": "13.1.1",
+            "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz",
+            "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==",
+            "dependencies": {
+                "@babel/runtime": "^7.9.2",
+                "css-box-model": "^1.2.0",
+                "memoize-one": "^5.1.1",
+                "raf-schd": "^4.0.2",
+                "react-redux": "^7.2.0",
+                "redux": "^4.0.4",
+                "use-memo-one": "^1.1.1"
+            },
+            "peerDependencies": {
+                "react": "^16.8.5 || ^17.0.0 || ^18.0.0",
+                "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/react-devtools-core": {
+            "version": "4.27.6",
+            "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.27.6.tgz",
+            "integrity": "sha512-jeFNhEzcSwpiqmw+zix5IFibNEPmUodICN7ClrlRKGktzO/3FMteMb52l1NRUiz/ABSYt9hOZ9IPgVDrg5pyUw==",
+            "peer": true,
+            "dependencies": {
+                "shell-quote": "^1.6.1",
+                "ws": "^7"
+            }
+        },
+        "node_modules/react-dom": {
+            "version": "18.2.0",
+            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+            "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "scheduler": "^0.23.0"
+            },
+            "peerDependencies": {
+                "react": "^18.2.0"
+            }
+        },
+        "node_modules/react-draggable": {
+            "version": "4.4.5",
+            "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz",
+            "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==",
+            "dependencies": {
+                "clsx": "^1.1.1",
+                "prop-types": "^15.8.1"
+            },
+            "peerDependencies": {
+                "react": ">= 16.3.0",
+                "react-dom": ">= 16.3.0"
+            }
+        },
+        "node_modules/react-fast-compare": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz",
+            "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg=="
+        },
+        "node_modules/react-helmet": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
+            "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
+            "dependencies": {
+                "object-assign": "^4.1.1",
+                "prop-types": "^15.7.2",
+                "react-fast-compare": "^3.1.1",
+                "react-side-effect": "^2.1.0"
+            },
+            "peerDependencies": {
+                "react": ">=16.3.0"
+            }
+        },
+        "node_modules/react-is": {
+            "version": "16.13.1",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+            "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+        },
+        "node_modules/react-konva": {
+            "version": "18.2.7",
+            "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-18.2.7.tgz",
+            "integrity": "sha512-Q52ghaIR+2g3x14V5aIyt7VWNqPnWRotILo0Nj4YWVbNQisozrTJJ3/w68qb5Ar2fsYo7yXb4T6Nt4yZcGd2yg==",
+            "funding": [
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/lavrton"
+                },
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/konva"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/lavrton"
+                }
+            ],
+            "peer": true,
+            "dependencies": {
+                "@types/react-reconciler": "^0.28.2",
+                "its-fine": "^1.0.6",
+                "react-reconciler": "~0.29.0",
+                "scheduler": "^0.23.0"
+            },
+            "peerDependencies": {
+                "konva": "^8.0.1 || ^7.2.5 || ^9.0.0",
+                "react": ">=18.0.0",
+                "react-dom": ">=18.0.0"
+            }
+        },
+        "node_modules/react-konva/node_modules/@types/react-reconciler": {
+            "version": "0.28.2",
+            "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.2.tgz",
+            "integrity": "sha512-8tu6lHzEgYPlfDf/J6GOQdIc+gs+S2yAqlby3zTsB3SP2svlqTYe5fwZNtZyfactP74ShooP2vvi1BOp9ZemWw==",
+            "peer": true,
+            "dependencies": {
+                "@types/react": "*"
+            }
+        },
+        "node_modules/react-konva/node_modules/react-reconciler": {
+            "version": "0.29.0",
+            "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz",
+            "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "scheduler": "^0.23.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            },
+            "peerDependencies": {
+                "react": "^18.2.0"
+            }
+        },
+        "node_modules/react-live": {
+            "version": "2.4.1",
+            "resolved": "https://registry.npmjs.org/react-live/-/react-live-2.4.1.tgz",
+            "integrity": "sha512-r+32f7oV/kBs3QZBRvaT+9vOkQW47UZrDpgwUe5FiIMOl7sdo5pmISgb7Zpj5PGHgY6XQaiXs3FEh+IWw3KbRg==",
+            "dependencies": {
+                "@types/buble": "^0.20.0",
+                "buble": "0.19.6",
+                "core-js": "^3.14.0",
+                "dom-iterator": "^1.0.0",
+                "prism-react-renderer": "^1.2.1",
+                "prop-types": "^15.7.2",
+                "react-simple-code-editor": "^0.11.0",
+                "unescape": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.12.0",
+                "npm": ">= 2.0.0"
+            }
+        },
+        "node_modules/react-native": {
+            "version": "0.71.7",
+            "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.71.7.tgz",
+            "integrity": "sha512-Id6iRLS581fJMFGbBl1jP5uSmjExtGOvw5Gvh7694zISXjsRAsFMmU+izs0pyCLqDBoHK7y4BT7WGPGw693nYw==",
+            "peer": true,
+            "dependencies": {
+                "@jest/create-cache-key-function": "^29.2.1",
+                "@react-native-community/cli": "10.2.2",
+                "@react-native-community/cli-platform-android": "10.2.0",
+                "@react-native-community/cli-platform-ios": "10.2.1",
+                "@react-native/assets": "1.0.0",
+                "@react-native/normalize-color": "2.1.0",
+                "@react-native/polyfills": "2.0.0",
+                "abort-controller": "^3.0.0",
+                "anser": "^1.4.9",
+                "base64-js": "^1.1.2",
+                "deprecated-react-native-prop-types": "^3.0.1",
+                "event-target-shim": "^5.0.1",
+                "invariant": "^2.2.4",
+                "jest-environment-node": "^29.2.1",
+                "jsc-android": "^250231.0.0",
+                "memoize-one": "^5.0.0",
+                "metro-react-native-babel-transformer": "0.73.9",
+                "metro-runtime": "0.73.9",
+                "metro-source-map": "0.73.9",
+                "mkdirp": "^0.5.1",
+                "nullthrows": "^1.1.1",
+                "pretty-format": "^26.5.2",
+                "promise": "^8.3.0",
+                "react-devtools-core": "^4.26.1",
+                "react-native-codegen": "^0.71.5",
+                "react-native-gradle-plugin": "^0.71.17",
+                "react-refresh": "^0.4.0",
+                "react-shallow-renderer": "^16.15.0",
+                "regenerator-runtime": "^0.13.2",
+                "scheduler": "^0.23.0",
+                "stacktrace-parser": "^0.1.3",
+                "use-sync-external-store": "^1.0.0",
+                "whatwg-fetch": "^3.0.0",
+                "ws": "^6.2.2"
+            },
+            "bin": {
+                "react-native": "cli.js"
+            },
+            "engines": {
+                "node": ">=14"
+            },
+            "peerDependencies": {
+                "react": "18.2.0"
+            }
+        },
+        "node_modules/react-native-codegen": {
+            "version": "0.71.5",
+            "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.71.5.tgz",
+            "integrity": "sha512-rfsuc0zkuUuMjFnrT55I1mDZ+pBRp2zAiRwxck3m6qeGJBGK5OV5JH66eDQ4aa+3m0of316CqrJDRzVlYufzIg==",
+            "peer": true,
+            "dependencies": {
+                "@babel/parser": "^7.14.0",
+                "flow-parser": "^0.185.0",
+                "jscodeshift": "^0.13.1",
+                "nullthrows": "^1.1.1"
+            }
+        },
+        "node_modules/react-native-crypto-js": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz",
+            "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA=="
+        },
+        "node_modules/react-native-gradle-plugin": {
+            "version": "0.71.17",
+            "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.71.17.tgz",
+            "integrity": "sha512-OXXYgpISEqERwjSlaCiaQY6cTY5CH6j73gdkWpK0hedxtiWMWgH+i5TOi4hIGYitm9kQBeyDu+wim9fA8ROFJA==",
+            "peer": true
+        },
+        "node_modules/react-native/node_modules/ws": {
+            "version": "6.2.2",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
+            "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+            "peer": true,
+            "dependencies": {
+                "async-limiter": "~1.0.0"
+            }
+        },
+        "node_modules/react-player": {
+            "version": "2.13.0",
+            "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.13.0.tgz",
+            "integrity": "sha512-gkY7ZdbVFztlKFFhCPcnDrFQm+L399b8fhWsKatZ+b2wpKJwfUHBXQFMRxqYQGT0ic1/wQ7D7EZEWy7ZBqk2pw==",
+            "dependencies": {
+                "deepmerge": "^4.0.0",
+                "load-script": "^1.0.0",
+                "memoize-one": "^5.1.1",
+                "prop-types": "^15.7.2",
+                "react-fast-compare": "^3.0.1"
+            },
+            "peerDependencies": {
+                "react": ">=16.6.0"
+            }
+        },
+        "node_modules/react-reconciler": {
+            "version": "0.27.0",
+            "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz",
+            "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "scheduler": "^0.21.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            },
+            "peerDependencies": {
+                "react": "^18.0.0"
+            }
+        },
+        "node_modules/react-reconciler/node_modules/scheduler": {
+            "version": "0.21.0",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
+            "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0"
+            }
+        },
+        "node_modules/react-redux": {
+            "version": "7.2.9",
+            "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz",
+            "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==",
+            "dependencies": {
+                "@babel/runtime": "^7.15.4",
+                "@types/react-redux": "^7.1.20",
+                "hoist-non-react-statics": "^3.3.2",
+                "loose-envify": "^1.4.0",
+                "prop-types": "^15.7.2",
+                "react-is": "^17.0.2"
+            },
+            "peerDependencies": {
+                "react": "^16.8.3 || ^17 || ^18"
+            },
+            "peerDependenciesMeta": {
+                "react-dom": {
+                    "optional": true
+                },
+                "react-native": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/react-redux/node_modules/react-is": {
+            "version": "17.0.2",
+            "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+            "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
+        },
+        "node_modules/react-refresh": {
+            "version": "0.4.3",
+            "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
+            "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/react-router": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz",
+            "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==",
+            "dependencies": {
+                "@babel/runtime": "^7.12.13",
+                "history": "^4.9.0",
+                "hoist-non-react-statics": "^3.1.0",
+                "loose-envify": "^1.3.1",
+                "mini-create-react-context": "^0.4.0",
+                "path-to-regexp": "^1.7.0",
+                "prop-types": "^15.6.2",
+                "react-is": "^16.6.0",
+                "tiny-invariant": "^1.0.2",
+                "tiny-warning": "^1.0.0"
+            },
+            "peerDependencies": {
+                "react": ">=15"
+            }
+        },
+        "node_modules/react-router-dom": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.1.tgz",
+            "integrity": "sha512-xhFFkBGVcIVPbWM2KEYzED+nuHQPmulVa7sqIs3ESxzYd1pYg8N8rxPnQ4T2o1zu/2QeDUWcaqST131SO1LR3w==",
+            "dependencies": {
+                "@babel/runtime": "^7.12.13",
+                "history": "^4.9.0",
+                "loose-envify": "^1.3.1",
+                "prop-types": "^15.6.2",
+                "react-router": "5.2.1",
+                "tiny-invariant": "^1.0.2",
+                "tiny-warning": "^1.0.0"
+            },
+            "peerDependencies": {
+                "react": ">=15"
+            }
+        },
+        "node_modules/react-router/node_modules/isarray": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+            "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+        },
+        "node_modules/react-router/node_modules/mini-create-react-context": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
+            "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
+            "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+            "dependencies": {
+                "@babel/runtime": "^7.12.1",
+                "tiny-warning": "^1.0.3"
+            },
+            "peerDependencies": {
+                "prop-types": "^15.0.0",
+                "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+            }
+        },
+        "node_modules/react-router/node_modules/path-to-regexp": {
+            "version": "1.8.0",
+            "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+            "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+            "dependencies": {
+                "isarray": "0.0.1"
+            }
+        },
+        "node_modules/react-shallow-renderer": {
+            "version": "16.15.0",
+            "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
+            "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
+            "peer": true,
+            "dependencies": {
+                "object-assign": "^4.1.1",
+                "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
+            },
+            "peerDependencies": {
+                "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/react-side-effect": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
+            "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==",
+            "peerDependencies": {
+                "react": "^16.3.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/react-simple-code-editor": {
+            "version": "0.11.3",
+            "resolved": "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.11.3.tgz",
+            "integrity": "sha512-7bVI4Yd1aNCeuldErXUt8ksaAG5Fi+GZ6vp3mtFBnckKdzsQtrgkDvdwMFXIhwTGG+mUYmk5ZpMo0axSW9JBzA==",
+            "peerDependencies": {
+                "react": "*",
+                "react-dom": "*"
+            }
+        },
+        "node_modules/react-spring": {
+            "version": "9.7.1",
+            "resolved": "https://registry.npmjs.org/react-spring/-/react-spring-9.7.1.tgz",
+            "integrity": "sha512-o2+r2DNQDVEuefiz33ZF76DPd/gLq3kbdObJmllGF2IUfv2W6x+ZP0gR97QYCSR4QLbmOl1mPKUBbI+FJdys2Q==",
+            "dependencies": {
+                "@react-spring/core": "~9.7.1",
+                "@react-spring/konva": "~9.7.1",
+                "@react-spring/native": "~9.7.1",
+                "@react-spring/three": "~9.7.1",
+                "@react-spring/web": "~9.7.1",
+                "@react-spring/zdog": "~9.7.1"
+            },
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+                "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/react-toastify": {
+            "version": "5.5.0",
+            "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-5.5.0.tgz",
+            "integrity": "sha512-jsVme7jALIFGRyQsri/g4YTsRuaaGI70T6/ikjwZMB4mwTZaCWqj5NqxhGrRStKlJc5npXKKvKeqTiRGQl78LQ==",
+            "dependencies": {
+                "@babel/runtime": "^7.4.2",
+                "classnames": "^2.2.6",
+                "prop-types": "^15.7.2",
+                "react-transition-group": "^4"
+            },
+            "peerDependencies": {
+                "react": ">=15.0.0",
+                "react-dom": ">=15.0.0"
+            }
+        },
+        "node_modules/react-touch-events": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/react-touch-events/-/react-touch-events-2.1.0.tgz",
+            "integrity": "sha512-uh1tidaOzM1bgehsATndVwsPN9iMIuTC+IBdsMp+6MGBSGj8v7vJoYSFB+HABunqPe6kgzlul7KDQUzF12iLag==",
+            "dependencies": {
+                "prop-types": "^15.5.8"
+            }
+        },
+        "node_modules/react-transition-group": {
+            "version": "4.4.5",
+            "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+            "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+            "dependencies": {
+                "@babel/runtime": "^7.5.5",
+                "dom-helpers": "^5.0.1",
+                "loose-envify": "^1.4.0",
+                "prop-types": "^15.6.2"
+            },
+            "peerDependencies": {
+                "react": ">=16.6.0",
+                "react-dom": ">=16.6.0"
+            }
+        },
+        "node_modules/react-use-gesture": {
+            "version": "7.0.16",
+            "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-7.0.16.tgz",
+            "integrity": "sha512-gwgX+E+WQG0T1uFVl3z8j3ZwH3QQGIgVl7VtQEC2m0IscSs668sSps4Ss3CFp3Vns8xx0j9TVK4aBXH6+YrpEg==",
+            "deprecated": "This package is no longer maintained. Please use @use-gesture/react instead",
+            "peerDependencies": {
+                "react": ">= 16.8.0"
+            }
+        },
+        "node_modules/react-use-measure": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz",
+            "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==",
+            "peer": true,
+            "dependencies": {
+                "debounce": "^1.2.1"
+            },
+            "peerDependencies": {
+                "react": ">=16.13",
+                "react-dom": ">=16.13"
+            }
+        },
+        "node_modules/react-zdog": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/react-zdog/-/react-zdog-1.0.11.tgz",
+            "integrity": "sha512-L6/8Zi+Nf+faNMsSZ31HLmLlu6jcbs/jqqFvme7CFnYjAeYfhJ4HyuHKd7Pu/zk9tegv6FaJj1v+hmUwUpKLQw==",
+            "peer": true,
+            "dependencies": {
+                "@babel/runtime": "^7.4.4",
+                "lodash-es": "^4.17.11",
+                "pointer-events-polyfill": "^0.4.4-pre",
+                "react-reconciler": "^0.20.4",
+                "resize-observer-polyfill": "^1.5.1",
+                "scheduler": "0.13.3"
+            },
+            "peerDependencies": {
+                "react": ">=16.8",
+                "react-dom": ">=16.8",
+                "zdog": ">=1.1"
+            }
+        },
+        "node_modules/react-zdog/node_modules/react-reconciler": {
+            "version": "0.20.4",
+            "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.20.4.tgz",
+            "integrity": "sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "object-assign": "^4.1.1",
+                "prop-types": "^15.6.2",
+                "scheduler": "^0.13.6"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            },
+            "peerDependencies": {
+                "react": "^16.0.0"
+            }
+        },
+        "node_modules/react-zdog/node_modules/react-reconciler/node_modules/scheduler": {
+            "version": "0.13.6",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz",
+            "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "object-assign": "^4.1.1"
+            }
+        },
+        "node_modules/react-zdog/node_modules/scheduler": {
+            "version": "0.13.3",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.3.tgz",
+            "integrity": "sha512-UxN5QRYWtpR1egNWzJcVLk8jlegxAugswQc984lD3kU7NuobsO37/sRfbpTdBjtnD5TBNFA2Q2oLV5+UmPSmEQ==",
+            "peer": true,
+            "dependencies": {
+                "loose-envify": "^1.1.0",
+                "object-assign": "^4.1.1"
+            }
+        },
+        "node_modules/read": {
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+            "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+            "dev": true,
+            "dependencies": {
+                "mute-stream": "~0.0.4"
+            },
+            "engines": {
+                "node": ">=0.8"
+            }
+        },
+        "node_modules/read-pkg": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+            "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+            "dev": true,
+            "dependencies": {
+                "@types/normalize-package-data": "^2.4.0",
+                "normalize-package-data": "^2.5.0",
+                "parse-json": "^5.0.0",
+                "type-fest": "^0.6.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/read-pkg-up": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+            "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+            "dev": true,
+            "dependencies": {
+                "find-up": "^4.1.0",
+                "read-pkg": "^5.2.0",
+                "type-fest": "^0.8.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/read-pkg-up/node_modules/type-fest": {
+            "version": "0.8.1",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+            "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/read-pkg/node_modules/parse-json": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "error-ex": "^1.3.1",
+                "json-parse-even-better-errors": "^2.3.0",
+                "lines-and-columns": "^1.1.6"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/read-pkg/node_modules/type-fest": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+            "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/readable-stream": {
+            "version": "3.6.2",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+            "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/readdir-recursive": {
+            "version": "0.0.4",
+            "resolved": "https://registry.npmjs.org/readdir-recursive/-/readdir-recursive-0.0.4.tgz",
+            "integrity": "sha512-ssr08dEAwee07WjMz6OmTqlYYhQScrOwfA2DZglCe2WoVTXXz0AMqy5D27llh8dU7ISEzjgdtHoCHBp2ZnxklQ==",
+            "dev": true
+        },
+        "node_modules/readdirp": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+            "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+            "dev": true,
+            "dependencies": {
+                "graceful-fs": "^4.1.11",
+                "micromatch": "^3.1.10",
+                "readable-stream": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/readdirp/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dev": true,
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dev": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/readdirp/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/readdirp/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/readdirp/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/readdirp/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/readline": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+            "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==",
+            "peer": true
+        },
+        "node_modules/recast": {
+            "version": "0.20.5",
+            "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz",
+            "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==",
+            "peer": true,
+            "dependencies": {
+                "ast-types": "0.14.2",
+                "esprima": "~4.0.0",
+                "source-map": "~0.6.1",
+                "tslib": "^2.0.1"
+            },
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/rechoir": {
+            "version": "0.6.2",
+            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+            "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+            "dev": true,
+            "dependencies": {
+                "resolve": "^1.1.6"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/redent": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+            "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+            "dev": true,
+            "dependencies": {
+                "indent-string": "^4.0.0",
+                "strip-indent": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/redent/node_modules/indent-string": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+            "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/redux": {
+            "version": "4.2.1",
+            "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+            "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+            "dependencies": {
+                "@babel/runtime": "^7.9.2"
+            }
+        },
+        "node_modules/regenerate": {
+            "version": "1.4.2",
+            "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+            "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+        },
+        "node_modules/regenerate-unicode-properties": {
+            "version": "10.1.0",
+            "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+            "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+            "dependencies": {
+                "regenerate": "^1.4.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/regenerator-runtime": {
+            "version": "0.13.11",
+            "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+            "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+        },
+        "node_modules/regenerator-transform": {
+            "version": "0.15.1",
+            "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+            "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+            "dependencies": {
+                "@babel/runtime": "^7.8.4"
+            }
+        },
+        "node_modules/regex-not": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+            "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+            "dependencies": {
+                "extend-shallow": "^3.0.2",
+                "safe-regex": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/regex-not/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/regex-not/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/regexp.prototype.flags": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
+            "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.2.0",
+                "functions-have-names": "^1.2.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/regexpp": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+            "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.5.0"
+            }
+        },
+        "node_modules/regexpu-core": {
+            "version": "5.3.2",
+            "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+            "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+            "dependencies": {
+                "@babel/regjsgen": "^0.8.0",
+                "regenerate": "^1.4.2",
+                "regenerate-unicode-properties": "^10.1.0",
+                "regjsparser": "^0.9.1",
+                "unicode-match-property-ecmascript": "^2.0.0",
+                "unicode-match-property-value-ecmascript": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/regjsgen": {
+            "version": "0.5.2",
+            "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+            "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
+        },
+        "node_modules/regjsparser": {
+            "version": "0.9.1",
+            "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+            "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+            "dependencies": {
+                "jsesc": "~0.5.0"
+            },
+            "bin": {
+                "regjsparser": "bin/parser"
+            }
+        },
+        "node_modules/regjsparser/node_modules/jsesc": {
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+            "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+            "bin": {
+                "jsesc": "bin/jsesc"
+            }
+        },
+        "node_modules/remark": {
+            "version": "13.0.0",
+            "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz",
+            "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
+            "dev": true,
+            "dependencies": {
+                "remark-parse": "^9.0.0",
+                "remark-stringify": "^9.0.0",
+                "unified": "^9.1.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/remark-parse": {
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
+            "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
+            "dev": true,
+            "dependencies": {
+                "mdast-util-from-markdown": "^0.8.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/remark-stringify": {
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz",
+            "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
+            "dev": true,
+            "dependencies": {
+                "mdast-util-to-markdown": "^0.6.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/remedial": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz",
+            "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/remove-bom-buffer": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+            "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+            "dev": true,
+            "dependencies": {
+                "is-buffer": "^1.1.5",
+                "is-utf8": "^0.2.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/remove-bom-buffer/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+            "dev": true
+        },
+        "node_modules/remove-bom-stream": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+            "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",
+            "dev": true,
+            "dependencies": {
+                "remove-bom-buffer": "^3.0.0",
+                "safe-buffer": "^5.1.0",
+                "through2": "^2.0.3"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/remove-bom-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/remove-bom-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/remove-bom-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/remove-bom-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/remove-bom-stream/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/remove-trailing-separator": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+            "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+            "dev": true
+        },
+        "node_modules/repeat-element": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+            "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/repeat-string": {
+            "version": "1.6.1",
+            "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+            "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/replace-ext": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
+            "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
+            "dev": true,
+            "engines": {
+                "node": ">= 10"
+            }
+        },
+        "node_modules/replace-homedir": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
+            "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",
+            "dev": true,
+            "dependencies": {
+                "homedir-polyfill": "^1.0.1",
+                "is-absolute": "^1.0.0",
+                "remove-trailing-separator": "^1.1.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/request": {
+            "version": "2.88.2",
+            "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+            "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+            "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
+            "dev": true,
+            "dependencies": {
+                "aws-sign2": "~0.7.0",
+                "aws4": "^1.8.0",
+                "caseless": "~0.12.0",
+                "combined-stream": "~1.0.6",
+                "extend": "~3.0.2",
+                "forever-agent": "~0.6.1",
+                "form-data": "~2.3.2",
+                "har-validator": "~5.1.3",
+                "http-signature": "~1.2.0",
+                "is-typedarray": "~1.0.0",
+                "isstream": "~0.1.2",
+                "json-stringify-safe": "~5.0.1",
+                "mime-types": "~2.1.19",
+                "oauth-sign": "~0.9.0",
+                "performance-now": "^2.1.0",
+                "qs": "~6.5.2",
+                "safe-buffer": "^5.1.2",
+                "tough-cookie": "~2.5.0",
+                "tunnel-agent": "^0.6.0",
+                "uuid": "^3.3.2"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/request/node_modules/form-data": {
+            "version": "2.3.3",
+            "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+            "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+            "dev": true,
+            "dependencies": {
+                "asynckit": "^0.4.0",
+                "combined-stream": "^1.0.6",
+                "mime-types": "^2.1.12"
+            },
+            "engines": {
+                "node": ">= 0.12"
+            }
+        },
+        "node_modules/request/node_modules/qs": {
+            "version": "6.5.3",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+            "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.6"
+            }
+        },
+        "node_modules/request/node_modules/tough-cookie": {
+            "version": "2.5.0",
+            "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+            "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+            "dev": true,
+            "dependencies": {
+                "psl": "^1.1.28",
+                "punycode": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=0.8"
+            }
+        },
+        "node_modules/require-directory": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+            "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/require-from-string": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+            "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/require-main-filename": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+            "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
+            "dev": true
+        },
+        "node_modules/requires-port": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+            "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+        },
+        "node_modules/reselect": {
+            "version": "4.1.8",
+            "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz",
+            "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==",
+            "dev": true
+        },
+        "node_modules/resize-observer-polyfill": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+            "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
+            "peer": true
+        },
+        "node_modules/resolve": {
+            "version": "1.22.2",
+            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
+            "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+            "dependencies": {
+                "is-core-module": "^2.11.0",
+                "path-parse": "^1.0.7",
+                "supports-preserve-symlinks-flag": "^1.0.0"
+            },
+            "bin": {
+                "resolve": "bin/resolve"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/resolve-dir": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+            "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+            "dev": true,
+            "dependencies": {
+                "expand-tilde": "^2.0.0",
+                "global-modules": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/resolve-from": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+            "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/resolve-options": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
+            "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",
+            "dev": true,
+            "dependencies": {
+                "value-or-function": "^3.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/resolve-pathname": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+            "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+        },
+        "node_modules/resolve-url": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+            "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+            "deprecated": "https://github.com/lydell/resolve-url#deprecated"
+        },
+        "node_modules/resp-modifier": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz",
+            "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==",
+            "dev": true,
+            "dependencies": {
+                "debug": "^2.2.0",
+                "minimatch": "^3.0.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/resp-modifier/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/resp-modifier/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "dev": true
+        },
+        "node_modules/restore-cursor": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+            "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+            "dev": true,
+            "dependencies": {
+                "onetime": "^2.0.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/ret": {
+            "version": "0.1.15",
+            "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+            "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+            "engines": {
+                "node": ">=0.12"
+            }
+        },
+        "node_modules/reusify": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+            "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+            "engines": {
+                "iojs": ">=1.0.0",
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/revalidator": {
+            "version": "0.1.8",
+            "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
+            "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.4.0"
+            }
+        },
+        "node_modules/rimraf": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+            "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/ripemd160": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+            "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+            "dev": true,
+            "dependencies": {
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1"
+            }
+        },
+        "node_modules/rsvp": {
+            "version": "4.8.5",
+            "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+            "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+            "dev": true,
+            "engines": {
+                "node": "6.* || >= 7.*"
+            }
+        },
+        "node_modules/run-async": {
+            "version": "2.4.1",
+            "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+            "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/run-node": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
+            "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
+            "dev": true,
+            "bin": {
+                "run-node": "run-node"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/run-parallel": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+            "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
+                "queue-microtask": "^1.2.2"
+            }
+        },
+        "node_modules/run-script-os": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz",
+            "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==",
+            "bin": {
+                "run-os": "index.js",
+                "run-script-os": "index.js"
+            }
+        },
+        "node_modules/rx": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
+            "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==",
+            "dev": true
+        },
+        "node_modules/rxjs": {
+            "version": "6.6.7",
+            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+            "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+            "dev": true,
+            "dependencies": {
+                "tslib": "^1.9.0"
+            },
+            "engines": {
+                "npm": ">=2.0.0"
+            }
+        },
+        "node_modules/rxjs/node_modules/tslib": {
+            "version": "1.14.1",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+            "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+            "dev": true
+        },
+        "node_modules/safari-14-idb-fix": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+            "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+        },
+        "node_modules/safe-array-concat": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
+            "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "get-intrinsic": "^1.2.0",
+                "has-symbols": "^1.0.3",
+                "isarray": "^2.0.5"
+            },
+            "engines": {
+                "node": ">=0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/safe-buffer": {
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+            "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
+        "node_modules/safe-regex": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+            "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+            "dependencies": {
+                "ret": "~0.1.10"
+            }
+        },
+        "node_modules/safe-regex-test": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+            "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "get-intrinsic": "^1.1.3",
+                "is-regex": "^1.1.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/safe-stable-stringify": {
+            "version": "2.4.3",
+            "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+            "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/safer-buffer": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+        },
+        "node_modules/sane": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+            "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+            "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added",
+            "dev": true,
+            "dependencies": {
+                "@cnakazawa/watch": "^1.0.3",
+                "anymatch": "^2.0.0",
+                "capture-exit": "^2.0.0",
+                "exec-sh": "^0.3.2",
+                "execa": "^1.0.0",
+                "fb-watchman": "^2.0.0",
+                "micromatch": "^3.1.4",
+                "minimist": "^1.1.1",
+                "walker": "~1.0.5"
+            },
+            "bin": {
+                "sane": "src/cli.js"
+            },
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
+            }
+        },
+        "node_modules/sane/node_modules/anymatch": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+            "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+            "dev": true,
+            "dependencies": {
+                "micromatch": "^3.1.4",
+                "normalize-path": "^2.1.1"
+            }
+        },
+        "node_modules/sane/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dev": true,
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dev": true,
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dev": true,
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dev": true,
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dev": true,
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/micromatch": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+            "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+            "dev": true,
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sane/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+            "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+            "dev": true,
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sass": {
+            "version": "1.62.1",
+            "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz",
+            "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==",
+            "dev": true,
+            "dependencies": {
+                "chokidar": ">=3.0.0 <4.0.0",
+                "immutable": "^4.0.0",
+                "source-map-js": ">=0.6.2 <2.0.0"
+            },
+            "bin": {
+                "sass": "sass.js"
+            },
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.62.0.tgz",
+            "integrity": "sha512-SwTIG6UmrMiT94/v8G+2pPf6i+XwY4hOQxm8HZl0ld0st2KdGDj/SBXDznFl7+sJ6tFq6hvVvrB9rW5Nj7EhuQ==",
+            "dev": true,
+            "dependencies": {
+                "@bufbuild/protobuf": "^1.0.0",
+                "buffer-builder": "^0.2.0",
+                "immutable": "^4.0.0",
+                "rxjs": "^7.4.0",
+                "supports-color": "^8.1.1"
+            },
+            "engines": {
+                "node": ">=14.0.0"
+            },
+            "optionalDependencies": {
+                "sass-embedded-darwin-arm64": "1.62.0",
+                "sass-embedded-darwin-x64": "1.62.0",
+                "sass-embedded-linux-arm": "1.62.0",
+                "sass-embedded-linux-arm64": "1.62.0",
+                "sass-embedded-linux-ia32": "1.62.0",
+                "sass-embedded-linux-x64": "1.62.0",
+                "sass-embedded-win32-ia32": "1.62.0",
+                "sass-embedded-win32-x64": "1.62.0"
+            }
+        },
+        "node_modules/sass-embedded-darwin-arm64": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.62.0.tgz",
+            "integrity": "sha512-bYEM6DY7kteOd/aJXUisiavm8B1acRhpIn+rhzKZeTn87kUW5RzZv2nKaSmb1vUd4ZptDGaJ144qz/d20rnogQ==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-darwin-x64": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.62.0.tgz",
+            "integrity": "sha512-2sBQ4uWjZbf8TKXF8Aq7N0p5V2tKUr4zX9gQAiKvm1NBYwsW22+m8D34heOWu50ikpIxebvt7i/z7hafH5kzKg==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-linux-arm": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.62.0.tgz",
+            "integrity": "sha512-0lz9Ids/OzKiOK+fd5wo/fHBGJ5lCHbcRsjDnU0CIMWkUmMt7yhcFABWB/TUofS5XvrohYbGqs+yKP3X0oGX3g==",
+            "cpu": [
+                "arm"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-linux-arm64": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.62.0.tgz",
+            "integrity": "sha512-FexUt8aE7I7fJub3N6+NsDdbPRP/O8o400qpbEbY7BWgiWEdpr81OBulQZY/2LzZUnz9keUhfpmltNY3SNg3kg==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-linux-ia32": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.62.0.tgz",
+            "integrity": "sha512-VpDHtMIwcoWqDsiskjhDYAle0SJV4mUiZJTXg5RkMzoX1ZyNiVz+uNaZ88kDqcGXsWpe2i0sIlljD4ryaiMAhA==",
+            "cpu": [
+                "ia32"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-linux-x64": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.62.0.tgz",
+            "integrity": "sha512-dntYMsu0QonlerFB8VDlzxoJcpMEtN9lPHstKOQ6rk6hbSFPvcI8MqqUomlOjmpakKeVrpyZ04nm9jHrzlFmYg==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-win32-ia32": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.62.0.tgz",
+            "integrity": "sha512-rTCZCVkQa6XcreyQ8gYqnsEG13HCzqKoN2mCvIuGwJro8IjyT2PzWauouO0M06T0FLH0pc3EvKdKaLdtijf9AQ==",
+            "cpu": [
+                "ia32"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "win32"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded-win32-x64": {
+            "version": "1.62.0",
+            "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.62.0.tgz",
+            "integrity": "sha512-g6DZBPGfIDKLBarvYRVKJ+7rJAHJXkOQQVrYSWm22klA9ZNZ0CaVyqLqejttZPKGreD8h/xh2uz/s6w/P900Sw==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "win32"
+            ],
+            "engines": {
+                "node": ">=14.0.0"
+            }
+        },
+        "node_modules/sass-embedded/node_modules/immutable": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
+            "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+            "dev": true
+        },
+        "node_modules/sass-embedded/node_modules/rxjs": {
+            "version": "7.8.1",
+            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+            "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+            "dev": true,
+            "dependencies": {
+                "tslib": "^2.1.0"
+            }
+        },
+        "node_modules/sass-embedded/node_modules/supports-color": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/supports-color?sponsor=1"
+            }
+        },
+        "node_modules/sass/node_modules/binary-extensions": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/sass/node_modules/braces": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "dev": true,
+            "dependencies": {
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/sass/node_modules/chokidar": {
+            "version": "3.5.3",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+            "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://paulmillr.com/funding/"
+                }
+            ],
+            "dependencies": {
+                "anymatch": "~3.1.2",
+                "braces": "~3.0.2",
+                "glob-parent": "~5.1.2",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.6.0"
+            },
+            "engines": {
+                "node": ">= 8.10.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.2"
+            }
+        },
+        "node_modules/sass/node_modules/fill-range": {
+            "version": "7.0.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "dev": true,
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/sass/node_modules/fsevents": {
+            "version": "2.3.2",
+            "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+            "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+            "dev": true,
+            "hasInstallScript": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+            }
+        },
+        "node_modules/sass/node_modules/immutable": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
+            "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+            "dev": true
+        },
+        "node_modules/sass/node_modules/is-binary-path": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+            "dev": true,
+            "dependencies": {
+                "binary-extensions": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/sass/node_modules/is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/sass/node_modules/readdirp": {
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+            "dev": true,
+            "dependencies": {
+                "picomatch": "^2.2.1"
+            },
+            "engines": {
+                "node": ">=8.10.0"
+            }
+        },
+        "node_modules/sass/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+            "dev": true,
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
+            }
+        },
+        "node_modules/saxes": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+            "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+            "dependencies": {
+                "xmlchars": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/scheduler": {
+            "version": "0.23.0",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+            "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+            "dependencies": {
+                "loose-envify": "^1.1.0"
+            }
+        },
+        "node_modules/schema-utils": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz",
+            "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/json-schema": "^7.0.9",
+                "ajv": "^8.9.0",
+                "ajv-formats": "^2.1.1",
+                "ajv-keywords": "^5.1.0"
+            },
+            "engines": {
+                "node": ">= 12.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            }
+        },
+        "node_modules/seek-bzip": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+            "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+            "dev": true,
+            "dependencies": {
+                "commander": "^2.8.1"
+            },
+            "bin": {
+                "seek-bunzip": "bin/seek-bunzip",
+                "seek-table": "bin/seek-bzip-table"
+            }
+        },
+        "node_modules/seek-bzip/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+            "dev": true
+        },
+        "node_modules/select-hose": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+            "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
+        },
+        "node_modules/semver": {
+            "version": "7.5.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz",
+            "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==",
+            "dependencies": {
+                "lru-cache": "^6.0.0"
+            },
+            "bin": {
+                "semver": "bin/semver.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/semver-compare": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+            "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+            "dev": true
+        },
+        "node_modules/semver-greatest-satisfied-range": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
+            "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",
+            "dev": true,
+            "dependencies": {
+                "sver-compat": "^1.5.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/semver/node_modules/lru-cache": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+            "dependencies": {
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/semver/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+        },
+        "node_modules/send": {
+            "version": "0.16.2",
+            "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+            "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+            "dependencies": {
+                "debug": "2.6.9",
+                "depd": "~1.1.2",
+                "destroy": "~1.0.4",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "etag": "~1.8.1",
+                "fresh": "0.5.2",
+                "http-errors": "~1.6.2",
+                "mime": "1.4.1",
+                "ms": "2.0.0",
+                "on-finished": "~2.3.0",
+                "range-parser": "~1.2.0",
+                "statuses": "~1.4.0"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/send/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/send/node_modules/depd": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+            "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/send/node_modules/destroy": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+            "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
+        },
+        "node_modules/send/node_modules/http-errors": {
+            "version": "1.6.3",
+            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+            "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+            "dependencies": {
+                "depd": "~1.1.2",
+                "inherits": "2.0.3",
+                "setprototypeof": "1.1.0",
+                "statuses": ">= 1.4.0 < 2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/send/node_modules/inherits": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+            "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+        },
+        "node_modules/send/node_modules/mime": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+            "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+            "bin": {
+                "mime": "cli.js"
+            }
+        },
+        "node_modules/send/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/send/node_modules/on-finished": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+            "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+            "dependencies": {
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/send/node_modules/setprototypeof": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+            "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+        },
+        "node_modules/send/node_modules/statuses": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+            "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/serialize-error": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+            "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
+            "peer": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/serialize-javascript": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+            "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+            "dependencies": {
+                "randombytes": "^2.1.0"
+            }
+        },
+        "node_modules/serve-index": {
+            "version": "1.9.1",
+            "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+            "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+            "dev": true,
+            "dependencies": {
+                "accepts": "~1.3.4",
+                "batch": "0.6.1",
+                "debug": "2.6.9",
+                "escape-html": "~1.0.3",
+                "http-errors": "~1.6.2",
+                "mime-types": "~2.1.17",
+                "parseurl": "~1.3.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/serve-index/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/serve-index/node_modules/depd": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+            "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/serve-index/node_modules/http-errors": {
+            "version": "1.6.3",
+            "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+            "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+            "dev": true,
+            "dependencies": {
+                "depd": "~1.1.2",
+                "inherits": "2.0.3",
+                "setprototypeof": "1.1.0",
+                "statuses": ">= 1.4.0 < 2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/serve-index/node_modules/inherits": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+            "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+            "dev": true
+        },
+        "node_modules/serve-index/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+            "dev": true
+        },
+        "node_modules/serve-index/node_modules/setprototypeof": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+            "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+            "dev": true
+        },
+        "node_modules/serve-index/node_modules/statuses": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+            "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/serve-static": {
+            "version": "1.13.2",
+            "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+            "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+            "dependencies": {
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "parseurl": "~1.3.2",
+                "send": "0.16.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/server-destroy": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
+            "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
+            "dev": true
+        },
+        "node_modules/set-blocking": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+            "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+        },
+        "node_modules/set-value": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+            "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+            "dependencies": {
+                "extend-shallow": "^2.0.1",
+                "is-extendable": "^0.1.1",
+                "is-plain-object": "^2.0.3",
+                "split-string": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/setimmediate": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+            "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+            "dev": true
+        },
+        "node_modules/setprototypeof": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+            "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+        },
+        "node_modules/sha.js": {
+            "version": "2.4.11",
+            "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+            "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            },
+            "bin": {
+                "sha.js": "bin.js"
+            }
+        },
+        "node_modules/shallow-clone": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+            "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+            "dependencies": {
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/shallow-equals": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/shallow-equals/-/shallow-equals-1.0.0.tgz",
+            "integrity": "sha512-xd/FKcdmfmMbyYCca3QTVEJtqUOGuajNzvAX6nt8dXILwjAIEkfHc4hI8/JMGApAmb7VeULO0Q30NTxnbH/15g=="
+        },
+        "node_modules/shebang-command": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+            "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+            "dependencies": {
+                "shebang-regex": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/shebang-regex": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/shell-quote": {
+            "version": "1.8.1",
+            "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+            "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/side-channel": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+            "dependencies": {
+                "call-bind": "^1.0.0",
+                "get-intrinsic": "^1.0.2",
+                "object-inspect": "^1.9.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/signal-exit": {
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+        },
+        "node_modules/simple-swizzle": {
+            "version": "0.2.2",
+            "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+            "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+            "dev": true,
+            "dependencies": {
+                "is-arrayish": "^0.3.1"
+            }
+        },
+        "node_modules/simple-swizzle/node_modules/is-arrayish": {
+            "version": "0.3.2",
+            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+            "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+            "dev": true
+        },
+        "node_modules/simple-update-notifier": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
+            "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
+            "dev": true,
+            "dependencies": {
+                "semver": "~7.0.0"
+            },
+            "engines": {
+                "node": ">=8.10.0"
+            }
+        },
+        "node_modules/simple-update-notifier/node_modules/semver": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+            "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/sisteransi": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+            "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+            "peer": true
+        },
+        "node_modules/slash": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+            "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/slice-ansi": {
+            "version": "0.0.4",
+            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+            "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/slugify": {
+            "version": "1.6.6",
+            "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+            "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8.0.0"
+            }
+        },
+        "node_modules/snapdragon": {
+            "version": "0.8.2",
+            "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+            "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+            "dependencies": {
+                "base": "^0.11.1",
+                "debug": "^2.2.0",
+                "define-property": "^0.2.5",
+                "extend-shallow": "^2.0.1",
+                "map-cache": "^0.2.2",
+                "source-map": "^0.5.6",
+                "source-map-resolve": "^0.5.0",
+                "use": "^3.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+            "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+            "dependencies": {
+                "define-property": "^1.0.0",
+                "isobject": "^3.0.0",
+                "snapdragon-util": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/define-property": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+            "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+            "dependencies": {
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-util": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+            "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+            "dependencies": {
+                "kind-of": "^3.2.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-util/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "node_modules/snapdragon-util/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/debug": {
+            "version": "2.6.9",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/ms": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        },
+        "node_modules/snapdragon/node_modules/source-map": {
+            "version": "0.5.7",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+            "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/source-map-resolve": {
+            "version": "0.5.3",
+            "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+            "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+            "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+            "dependencies": {
+                "atob": "^2.1.2",
+                "decode-uri-component": "^0.2.0",
+                "resolve-url": "^0.2.1",
+                "source-map-url": "^0.4.0",
+                "urix": "^0.1.0"
+            }
+        },
+        "node_modules/socket.io": {
+            "version": "4.6.1",
+            "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
+            "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
+            "dev": true,
+            "dependencies": {
+                "accepts": "~1.3.4",
+                "base64id": "~2.0.0",
+                "debug": "~4.3.2",
+                "engine.io": "~6.4.1",
+                "socket.io-adapter": "~2.5.2",
+                "socket.io-parser": "~4.2.1"
+            },
+            "engines": {
+                "node": ">=10.0.0"
+            }
+        },
+        "node_modules/socket.io-adapter": {
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
+            "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+            "dev": true,
+            "dependencies": {
+                "ws": "~8.11.0"
+            }
+        },
+        "node_modules/socket.io-adapter/node_modules/ws": {
+            "version": "8.11.0",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+            "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+            "dev": true,
+            "engines": {
+                "node": ">=10.0.0"
+            },
+            "peerDependencies": {
+                "bufferutil": "^4.0.1",
+                "utf-8-validate": "^5.0.2"
+            },
+            "peerDependenciesMeta": {
+                "bufferutil": {
+                    "optional": true
+                },
+                "utf-8-validate": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/socket.io-client": {
+            "version": "4.6.1",
+            "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz",
+            "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==",
+            "dependencies": {
+                "@socket.io/component-emitter": "~3.1.0",
+                "debug": "~4.3.2",
+                "engine.io-client": "~6.4.0",
+                "socket.io-parser": "~4.2.1"
+            },
+            "engines": {
+                "node": ">=10.0.0"
+            }
+        },
+        "node_modules/socket.io-parser": {
+            "version": "4.2.2",
+            "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz",
+            "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==",
+            "dependencies": {
+                "@socket.io/component-emitter": "~3.1.0",
+                "debug": "~4.3.1"
+            },
+            "engines": {
+                "node": ">=10.0.0"
+            }
+        },
+        "node_modules/source-map": {
+            "version": "0.6.1",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/source-map-js": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+            "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/source-map-resolve": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+            "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
+            "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+            "dev": true,
+            "dependencies": {
+                "atob": "^2.1.2",
+                "decode-uri-component": "^0.2.0"
+            }
+        },
+        "node_modules/source-map-support": {
+            "version": "0.5.21",
+            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+            "dependencies": {
+                "buffer-from": "^1.0.0",
+                "source-map": "^0.6.0"
+            }
+        },
+        "node_modules/source-map-url": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+            "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+            "deprecated": "See https://github.com/lydell/source-map-url#deprecated"
+        },
+        "node_modules/sourcemap-codec": {
+            "version": "1.4.8",
+            "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+            "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+            "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+        },
+        "node_modules/sparkles": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
+            "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/spdx-correct": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+            "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+            "dependencies": {
+                "spdx-expression-parse": "^3.0.0",
+                "spdx-license-ids": "^3.0.0"
+            }
+        },
+        "node_modules/spdx-exceptions": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+            "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+        },
+        "node_modules/spdx-expression-parse": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+            "dependencies": {
+                "spdx-exceptions": "^2.1.0",
+                "spdx-license-ids": "^3.0.0"
+            }
+        },
+        "node_modules/spdx-license-ids": {
+            "version": "3.0.13",
+            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+            "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w=="
+        },
+        "node_modules/spdy": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+            "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+            "dependencies": {
+                "debug": "^4.1.0",
+                "handle-thing": "^2.0.0",
+                "http-deceiver": "^1.2.7",
+                "select-hose": "^2.0.0",
+                "spdy-transport": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/spdy-transport": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+            "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+            "dependencies": {
+                "debug": "^4.1.0",
+                "detect-node": "^2.0.4",
+                "hpack.js": "^2.1.6",
+                "obuf": "^1.1.2",
+                "readable-stream": "^3.0.6",
+                "wbuf": "^1.7.3"
+            }
+        },
+        "node_modules/specificity": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz",
+            "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
+            "dev": true,
+            "bin": {
+                "specificity": "bin/specificity"
+            }
+        },
+        "node_modules/split-string": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+            "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+            "dependencies": {
+                "extend-shallow": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/split-string/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/split-string/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/sprintf-js": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+            "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+        },
+        "node_modules/sshpk": {
+            "version": "1.17.0",
+            "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
+            "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+            "dev": true,
+            "dependencies": {
+                "asn1": "~0.2.3",
+                "assert-plus": "^1.0.0",
+                "bcrypt-pbkdf": "^1.0.0",
+                "dashdash": "^1.12.0",
+                "ecc-jsbn": "~0.1.1",
+                "getpass": "^0.1.1",
+                "jsbn": "~0.1.0",
+                "safer-buffer": "^2.0.2",
+                "tweetnacl": "~0.14.0"
+            },
+            "bin": {
+                "sshpk-conv": "bin/sshpk-conv",
+                "sshpk-sign": "bin/sshpk-sign",
+                "sshpk-verify": "bin/sshpk-verify"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/stable": {
+            "version": "0.1.8",
+            "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+            "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+            "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility"
+        },
+        "node_modules/stack-trace": {
+            "version": "0.0.10",
+            "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+            "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+            "dev": true,
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/stack-utils": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+            "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+            "peer": true,
+            "dependencies": {
+                "escape-string-regexp": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/stack-utils/node_modules/escape-string-regexp": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+            "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stackframe": {
+            "version": "1.3.4",
+            "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+            "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+            "peer": true
+        },
+        "node_modules/stacktrace-parser": {
+            "version": "0.1.10",
+            "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+            "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+            "peer": true,
+            "dependencies": {
+                "type-fest": "^0.7.1"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/stacktrace-parser/node_modules/type-fest": {
+            "version": "0.7.1",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+            "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+            "peer": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/static-extend": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+            "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+            "dependencies": {
+                "define-property": "^0.2.5",
+                "object-copy": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/statuses": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+            "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/stream-browserify": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+            "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "~2.0.4",
+                "readable-stream": "^3.5.0"
+            }
+        },
+        "node_modules/stream-exhaust": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+            "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+            "dev": true
+        },
+        "node_modules/stream-http": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+            "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+            "dev": true,
+            "dependencies": {
+                "builtin-status-codes": "^3.0.0",
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.6.0",
+                "xtend": "^4.0.2"
+            }
+        },
+        "node_modules/stream-shift": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+            "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+            "dev": true
+        },
+        "node_modules/stream-throttle": {
+            "version": "0.1.3",
+            "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz",
+            "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==",
+            "dev": true,
+            "dependencies": {
+                "commander": "^2.2.0",
+                "limiter": "^1.0.5"
+            },
+            "bin": {
+                "throttleproxy": "bin/throttleproxy.js"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
+            }
+        },
+        "node_modules/stream-throttle/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+            "dev": true
+        },
+        "node_modules/stream-to-array": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz",
+            "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==",
+            "dev": true,
+            "dependencies": {
+                "any-promise": "^1.1.0"
+            }
+        },
+        "node_modules/string_decoder": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+            "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+            "dependencies": {
+                "safe-buffer": "~5.2.0"
+            }
+        },
+        "node_modules/string-argv": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
+            "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.6.19"
+            }
+        },
+        "node_modules/string-width": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+            "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+            "dev": true,
+            "dependencies": {
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/string.prototype.matchall": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
+            "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
+            "dev": true,
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4",
+                "get-intrinsic": "^1.1.3",
+                "has-symbols": "^1.0.3",
+                "internal-slot": "^1.0.3",
+                "regexp.prototype.flags": "^1.4.3",
+                "side-channel": "^1.0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/string.prototype.padend": {
+            "version": "3.1.4",
+            "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
+            "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/string.prototype.trim": {
+            "version": "1.2.7",
+            "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
+            "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/string.prototype.trimend": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+            "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/string.prototype.trimstart": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+            "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.4",
+                "es-abstract": "^1.20.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/stringify-object": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+            "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+            "dev": true,
+            "dependencies": {
+                "get-own-enumerable-property-symbols": "^3.0.0",
+                "is-obj": "^1.0.1",
+                "is-regexp": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/strip-ansi": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+            "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+            "dev": true,
+            "dependencies": {
+                "ansi-regex": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/strip-ansi/node_modules/ansi-regex": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+            "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/strip-bom": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+            "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+            "dev": true,
+            "dependencies": {
+                "is-utf8": "^0.2.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strip-bom-buf": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz",
+            "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==",
+            "dev": true,
+            "dependencies": {
+                "is-utf8": "^0.2.1"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/strip-bom-stream": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz",
+            "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==",
+            "dev": true,
+            "dependencies": {
+                "first-chunk-stream": "^2.0.0",
+                "strip-bom": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strip-bom-string": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+            "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strip-dirs": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+            "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+            "dev": true,
+            "dependencies": {
+                "is-natural-number": "^4.0.1"
+            }
+        },
+        "node_modules/strip-eof": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+            "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strip-final-newline": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+            "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/strip-indent": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+            "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+            "dev": true,
+            "dependencies": {
+                "min-indent": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/strip-json-comments": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+            "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strnum": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+            "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+            "peer": true
+        },
+        "node_modules/style-search": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+            "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
+            "dev": true
+        },
+        "node_modules/stylelint": {
+            "version": "13.13.1",
+            "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz",
+            "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==",
+            "dev": true,
+            "dependencies": {
+                "@stylelint/postcss-css-in-js": "^0.37.2",
+                "@stylelint/postcss-markdown": "^0.36.2",
+                "autoprefixer": "^9.8.6",
+                "balanced-match": "^2.0.0",
+                "chalk": "^4.1.1",
+                "cosmiconfig": "^7.0.0",
+                "debug": "^4.3.1",
+                "execall": "^2.0.0",
+                "fast-glob": "^3.2.5",
+                "fastest-levenshtein": "^1.0.12",
+                "file-entry-cache": "^6.0.1",
+                "get-stdin": "^8.0.0",
+                "global-modules": "^2.0.0",
+                "globby": "^11.0.3",
+                "globjoin": "^0.1.4",
+                "html-tags": "^3.1.0",
+                "ignore": "^5.1.8",
+                "import-lazy": "^4.0.0",
+                "imurmurhash": "^0.1.4",
+                "known-css-properties": "^0.21.0",
+                "lodash": "^4.17.21",
+                "log-symbols": "^4.1.0",
+                "mathml-tag-names": "^2.1.3",
+                "meow": "^9.0.0",
+                "micromatch": "^4.0.4",
+                "normalize-selector": "^0.2.0",
+                "postcss": "^7.0.35",
+                "postcss-html": "^0.36.0",
+                "postcss-less": "^3.1.4",
+                "postcss-media-query-parser": "^0.2.3",
+                "postcss-resolve-nested-selector": "^0.1.1",
+                "postcss-safe-parser": "^4.0.2",
+                "postcss-sass": "^0.4.4",
+                "postcss-scss": "^2.1.1",
+                "postcss-selector-parser": "^6.0.5",
+                "postcss-syntax": "^0.36.2",
+                "postcss-value-parser": "^4.1.0",
+                "resolve-from": "^5.0.0",
+                "slash": "^3.0.0",
+                "specificity": "^0.4.1",
+                "string-width": "^4.2.2",
+                "strip-ansi": "^6.0.0",
+                "style-search": "^0.1.0",
+                "sugarss": "^2.0.0",
+                "svg-tags": "^1.0.0",
+                "table": "^6.6.0",
+                "v8-compile-cache": "^2.3.0",
+                "write-file-atomic": "^3.0.3"
+            },
+            "bin": {
+                "stylelint": "bin/stylelint.js"
+            },
+            "engines": {
+                "node": ">=10.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/stylelint"
+            }
+        },
+        "node_modules/stylelint/node_modules/astral-regex": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+            "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stylelint/node_modules/autoprefixer": {
+            "version": "9.8.8",
+            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
+            "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+            "dev": true,
+            "dependencies": {
+                "browserslist": "^4.12.0",
+                "caniuse-lite": "^1.0.30001109",
+                "normalize-range": "^0.1.2",
+                "num2fraction": "^1.2.2",
+                "picocolors": "^0.2.1",
+                "postcss": "^7.0.32",
+                "postcss-value-parser": "^4.1.0"
+            },
+            "bin": {
+                "autoprefixer": "bin/autoprefixer"
+            },
+            "funding": {
+                "type": "tidelift",
+                "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+            }
+        },
+        "node_modules/stylelint/node_modules/balanced-match": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+            "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+            "dev": true
+        },
+        "node_modules/stylelint/node_modules/cosmiconfig": {
+            "version": "7.1.0",
+            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+            "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+            "dev": true,
+            "dependencies": {
+                "@types/parse-json": "^4.0.0",
+                "import-fresh": "^3.2.1",
+                "parse-json": "^5.0.0",
+                "path-type": "^4.0.0",
+                "yaml": "^1.10.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/stylelint/node_modules/file-entry-cache": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+            "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+            "dev": true,
+            "dependencies": {
+                "flat-cache": "^3.0.4"
+            },
+            "engines": {
+                "node": "^10.12.0 || >=12.0.0"
+            }
+        },
+        "node_modules/stylelint/node_modules/flat-cache": {
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+            "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+            "dev": true,
+            "dependencies": {
+                "flatted": "^3.1.0",
+                "rimraf": "^3.0.2"
+            },
+            "engines": {
+                "node": "^10.12.0 || >=12.0.0"
+            }
+        },
+        "node_modules/stylelint/node_modules/flatted": {
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+            "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+            "dev": true
+        },
+        "node_modules/stylelint/node_modules/get-stdin": {
+            "version": "8.0.0",
+            "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+            "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+            "dev": true,
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/stylelint/node_modules/global-modules": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+            "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+            "dev": true,
+            "dependencies": {
+                "global-prefix": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/stylelint/node_modules/global-prefix": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+            "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+            "dev": true,
+            "dependencies": {
+                "ini": "^1.3.5",
+                "kind-of": "^6.0.2",
+                "which": "^1.3.1"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/stylelint/node_modules/ignore": {
+            "version": "5.2.4",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+            "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/stylelint/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stylelint/node_modules/log-symbols": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+            "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+            "dev": true,
+            "dependencies": {
+                "chalk": "^4.1.0",
+                "is-unicode-supported": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/stylelint/node_modules/parse-json": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+            "dev": true,
+            "dependencies": {
+                "@babel/code-frame": "^7.0.0",
+                "error-ex": "^1.3.1",
+                "json-parse-even-better-errors": "^2.3.0",
+                "lines-and-columns": "^1.1.6"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/stylelint/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+            "dev": true
+        },
+        "node_modules/stylelint/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+            "dev": true,
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
+            }
+        },
+        "node_modules/stylelint/node_modules/slash": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stylelint/node_modules/slice-ansi": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+            "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^4.0.0",
+                "astral-regex": "^2.0.0",
+                "is-fullwidth-code-point": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+            }
+        },
+        "node_modules/stylelint/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dev": true,
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stylelint/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/stylelint/node_modules/table": {
+            "version": "6.8.1",
+            "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
+            "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+            "dev": true,
+            "dependencies": {
+                "ajv": "^8.0.1",
+                "lodash.truncate": "^4.4.2",
+                "slice-ansi": "^4.0.0",
+                "string-width": "^4.2.3",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=10.0.0"
+            }
+        },
+        "node_modules/stylelint/node_modules/which": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+            "dev": true,
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
+            }
+        },
+        "node_modules/sudo-prompt": {
+            "version": "9.2.1",
+            "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+            "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
+            "peer": true
+        },
+        "node_modules/sugarss": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz",
+            "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==",
+            "dev": true,
+            "dependencies": {
+                "postcss": "^7.0.2"
+            }
+        },
+        "node_modules/sugarss/node_modules/picocolors": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+            "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+            "dev": true
+        },
+        "node_modules/sugarss/node_modules/postcss": {
+            "version": "7.0.39",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+            "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+            "dev": true,
+            "dependencies": {
+                "picocolors": "^0.2.1",
+                "source-map": "^0.6.1"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/postcss/"
+            }
+        },
+        "node_modules/supports-color": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+            "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/supports-preserve-symlinks-flag": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+            "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/suspend-react": {
+            "version": "0.0.8",
+            "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.0.8.tgz",
+            "integrity": "sha512-ZC3r8Hu1y0dIThzsGw0RLZplnX9yXwfItcvaIzJc2VQVi8TGyGDlu92syMB5ulybfvGLHAI5Ghzlk23UBPF8xg==",
+            "peer": true,
+            "peerDependencies": {
+                "react": ">=17.0"
+            }
+        },
+        "node_modules/sver-compat": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
+            "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",
+            "dev": true,
+            "dependencies": {
+                "es6-iterator": "^2.0.1",
+                "es6-symbol": "^3.1.1"
+            }
+        },
+        "node_modules/svg-parser": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
+            "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
+        },
+        "node_modules/svg-tags": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+            "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+            "dev": true
+        },
+        "node_modules/svgo": {
+            "version": "2.8.0",
+            "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+            "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+            "dependencies": {
+                "@trysound/sax": "0.2.0",
+                "commander": "^7.2.0",
+                "css-select": "^4.1.3",
+                "css-tree": "^1.1.3",
+                "csso": "^4.2.0",
+                "picocolors": "^1.0.0",
+                "stable": "^0.1.8"
+            },
+            "bin": {
+                "svgo": "bin/svgo"
+            },
+            "engines": {
+                "node": ">=10.13.0"
+            }
+        },
+        "node_modules/svgo/node_modules/commander": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+            "engines": {
+                "node": ">= 10"
+            }
+        },
+        "node_modules/symbol-observable": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+            "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/symbol-tree": {
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+            "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
+        },
+        "node_modules/table": {
+            "version": "5.4.6",
+            "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+            "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+            "dev": true,
+            "dependencies": {
+                "ajv": "^6.10.2",
+                "lodash": "^4.17.14",
+                "slice-ansi": "^2.1.0",
+                "string-width": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/table/node_modules/ajv": {
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
+        },
+        "node_modules/table/node_modules/ansi-regex": {
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/table/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dev": true,
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/table/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dev": true,
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/table/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+            "dev": true
+        },
+        "node_modules/table/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+            "dev": true
+        },
+        "node_modules/table/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+            "dev": true
+        },
+        "node_modules/table/node_modules/slice-ansi": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+            "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+            "dev": true,
+            "dependencies": {
+                "ansi-styles": "^3.2.0",
+                "astral-regex": "^1.0.0",
+                "is-fullwidth-code-point": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/table/node_modules/string-width": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+            "dev": true,
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/table/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "dev": true,
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/tapable": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+            "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/tar": {
+            "version": "6.1.13",
+            "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
+            "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
+            "dev": true,
+            "dependencies": {
+                "chownr": "^2.0.0",
+                "fs-minipass": "^2.0.0",
+                "minipass": "^4.0.0",
+                "minizlib": "^2.1.1",
+                "mkdirp": "^1.0.3",
+                "yallist": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/tar-stream": {
+            "version": "1.6.2",
+            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+            "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+            "dev": true,
+            "dependencies": {
+                "bl": "^1.0.0",
+                "buffer-alloc": "^1.2.0",
+                "end-of-stream": "^1.0.0",
+                "fs-constants": "^1.0.0",
+                "readable-stream": "^2.3.0",
+                "to-buffer": "^1.1.1",
+                "xtend": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/tar-stream/node_modules/bl": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+            "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "^2.3.5",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "node_modules/tar-stream/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/tar-stream/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/tar-stream/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/tar-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/tar/node_modules/mkdirp": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+            "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+            "dev": true,
+            "bin": {
+                "mkdirp": "bin/cmd.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/tar/node_modules/yallist": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+            "dev": true
+        },
+        "node_modules/temp": {
+            "version": "0.8.3",
+            "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+            "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==",
+            "engines": [
+                "node >=0.8.0"
+            ],
+            "peer": true,
+            "dependencies": {
+                "os-tmpdir": "^1.0.0",
+                "rimraf": "~2.2.6"
+            }
+        },
+        "node_modules/temp/node_modules/rimraf": {
+            "version": "2.2.8",
+            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+            "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==",
+            "peer": true,
+            "bin": {
+                "rimraf": "bin.js"
+            }
+        },
+        "node_modules/ternary-stream": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz",
+            "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==",
+            "dev": true,
+            "dependencies": {
+                "duplexify": "^4.1.1",
+                "fork-stream": "^0.0.4",
+                "merge-stream": "^2.0.0",
+                "through2": "^3.0.1"
+            }
+        },
+        "node_modules/ternary-stream/node_modules/through2": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+            "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "^2.0.4",
+                "readable-stream": "2 || 3"
+            }
+        },
+        "node_modules/terser": {
+            "version": "5.17.1",
+            "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz",
+            "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==",
+            "dependencies": {
+                "@jridgewell/source-map": "^0.3.2",
+                "acorn": "^8.5.0",
+                "commander": "^2.20.0",
+                "source-map-support": "~0.5.20"
+            },
+            "bin": {
+                "terser": "bin/terser"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/terser-webpack-plugin": {
+            "version": "5.3.7",
+            "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
+            "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
+            "dev": true,
+            "dependencies": {
+                "@jridgewell/trace-mapping": "^0.3.17",
+                "jest-worker": "^27.4.5",
+                "schema-utils": "^3.1.1",
+                "serialize-javascript": "^6.0.1",
+                "terser": "^5.16.5"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            },
+            "peerDependencies": {
+                "webpack": "^5.1.0"
+            },
+            "peerDependenciesMeta": {
+                "@swc/core": {
+                    "optional": true
+                },
+                "esbuild": {
+                    "optional": true
+                },
+                "uglify-js": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/ajv": {
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+            "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+            "dev": true,
+            "peerDependencies": {
+                "ajv": "^6.9.1"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
+            "version": "27.5.1",
+            "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+            "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+            "dev": true,
+            "dependencies": {
+                "@types/node": "*",
+                "merge-stream": "^2.0.0",
+                "supports-color": "^8.0.0"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+            "dev": true
+        },
+        "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz",
+            "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==",
+            "dev": true,
+            "dependencies": {
+                "@types/json-schema": "^7.0.8",
+                "ajv": "^6.12.5",
+                "ajv-keywords": "^3.5.2"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/supports-color": {
+            "version": "8.1.1",
+            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+            "dev": true,
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/supports-color?sponsor=1"
+            }
+        },
+        "node_modules/terser/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        },
+        "node_modules/test-exclude": {
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+            "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+            "dev": true,
+            "dependencies": {
+                "@istanbuljs/schema": "^0.1.2",
+                "glob": "^7.1.4",
+                "minimatch": "^3.0.4"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/text-hex": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+            "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+            "dev": true
+        },
+        "node_modules/text-table": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+            "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+            "dev": true
+        },
+        "node_modules/three": {
+            "version": "0.151.3",
+            "resolved": "https://registry.npmjs.org/three/-/three-0.151.3.tgz",
+            "integrity": "sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ==",
+            "peer": true
+        },
+        "node_modules/throat": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+            "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+            "peer": true
+        },
+        "node_modules/through": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+            "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+            "dev": true
+        },
+        "node_modules/through2": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+            "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "3"
+            }
+        },
+        "node_modules/through2-filter": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+            "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+            "dev": true,
+            "dependencies": {
+                "through2": "~2.0.0",
+                "xtend": "~4.0.0"
+            }
+        },
+        "node_modules/through2-filter/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/through2-filter/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/through2-filter/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/through2-filter/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/through2-filter/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/time-stamp": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+            "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/timers-browserify": {
+            "version": "2.0.12",
+            "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+            "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+            "dev": true,
+            "dependencies": {
+                "setimmediate": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=0.6.0"
+            }
+        },
+        "node_modules/timers-ext": {
+            "version": "0.1.7",
+            "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
+            "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+            "dev": true,
+            "dependencies": {
+                "es5-ext": "~0.10.46",
+                "next-tick": "1"
+            }
+        },
+        "node_modules/tiny-invariant": {
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
+            "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
+        },
+        "node_modules/tiny-warning": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+            "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+        },
+        "node_modules/tmp": {
+            "version": "0.0.33",
+            "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+            "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+            "dev": true,
+            "dependencies": {
+                "os-tmpdir": "~1.0.2"
+            },
+            "engines": {
+                "node": ">=0.6.0"
+            }
+        },
+        "node_modules/tmpl": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+            "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
+        },
+        "node_modules/to-absolute-glob": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+            "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
+            "dev": true,
+            "dependencies": {
+                "is-absolute": "^1.0.0",
+                "is-negated-glob": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-buffer": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+            "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+            "dev": true
+        },
+        "node_modules/to-camel-case": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz",
+            "integrity": "sha512-nD8pQi5H34kyu1QDMFjzEIYqk0xa9Alt6ZfrdEMuHCFOfTLhDG5pgTu/aAM9Wt9lXILwlXmWP43b8sav0GNE8Q==",
+            "dependencies": {
+                "to-space-case": "^1.0.0"
+            }
+        },
+        "node_modules/to-fast-properties": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+            "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/to-no-case": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
+            "integrity": "sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg=="
+        },
+        "node_modules/to-object-path": {
+            "version": "0.3.0",
+            "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+            "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-object-path/node_modules/is-buffer": {
+            "version": "1.1.6",
+            "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+            "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "node_modules/to-object-path/node_modules/kind-of": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+            "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+            "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+            "dependencies": {
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "regex-not": "^1.0.2",
+                "safe-regex": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex-range": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+            "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+            "dependencies": {
+                "is-number": "^3.0.0",
+                "repeat-string": "^1.6.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/define-property": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+            "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+            "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+            "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+            "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+            "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-space-case": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
+            "integrity": "sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==",
+            "dependencies": {
+                "to-no-case": "^1.0.0"
+            }
+        },
+        "node_modules/to-through": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
+            "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",
+            "dev": true,
+            "dependencies": {
+                "through2": "^2.0.3"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/to-through/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/to-through/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+            "dev": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/to-through/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+            "dev": true
+        },
+        "node_modules/to-through/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/to-through/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+            "dev": true,
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/toggle-selection": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+            "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
+        },
+        "node_modules/toidentifier": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+            "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+            "engines": {
+                "node": ">=0.6"
+            }
+        },
+        "node_modules/touch": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+            "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+            "dev": true,
+            "dependencies": {
+                "nopt": "~1.0.10"
+            },
+            "bin": {
+                "nodetouch": "bin/nodetouch.js"
+            }
+        },
+        "node_modules/tough-cookie": {
+            "version": "4.1.2",
+            "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
+            "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+            "dependencies": {
+                "psl": "^1.1.33",
+                "punycode": "^2.1.1",
+                "universalify": "^0.2.0",
+                "url-parse": "^1.5.3"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/tough-cookie/node_modules/universalify": {
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+            "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+            "engines": {
+                "node": ">= 4.0.0"
+            }
+        },
+        "node_modules/tr46": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+            "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+            "dependencies": {
+                "punycode": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/trim-newlines": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+            "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/triple-beam": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
+            "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
+            "dev": true
+        },
+        "node_modules/trough": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
+            "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
+            }
+        },
+        "node_modules/tslib": {
+            "version": "2.5.0",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+            "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+        },
+        "node_modules/tsscmp": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+            "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
+            "engines": {
+                "node": ">=0.6.x"
+            }
+        },
+        "node_modules/tty-browserify": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+            "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+            "dev": true
+        },
+        "node_modules/tunnel-agent": {
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+            "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+            "dev": true,
+            "dependencies": {
+                "safe-buffer": "^5.0.1"
+            },
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/tweetnacl": {
+            "version": "0.14.5",
+            "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+            "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+            "dev": true
+        },
+        "node_modules/type": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+            "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+            "dev": true
+        },
+        "node_modules/type-check": {
+            "version": "0.3.2",
+            "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+            "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+            "dependencies": {
+                "prelude-ls": "~1.1.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/type-detect": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+            "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+            "peer": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/type-fest": {
+            "version": "2.19.0",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+            "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+            "dev": true,
+            "engines": {
+                "node": ">=12.20"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/type-is": {
+            "version": "1.6.18",
+            "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+            "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+            "dependencies": {
+                "media-typer": "0.3.0",
+                "mime-types": "~2.1.24"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/typed-array-length": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+            "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "for-each": "^0.3.3",
+                "is-typed-array": "^1.1.9"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/typedarray": {
+            "version": "0.0.6",
+            "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+            "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+            "dev": true
+        },
+        "node_modules/typedarray-to-buffer": {
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+            "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+            "dev": true,
+            "dependencies": {
+                "is-typedarray": "^1.0.0"
+            }
+        },
+        "node_modules/typescript": {
+            "version": "5.0.4",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+            "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+            "dev": true,
+            "bin": {
+                "tsc": "bin/tsc",
+                "tsserver": "bin/tsserver"
+            },
+            "engines": {
+                "node": ">=12.20"
+            }
+        },
+        "node_modules/ua-parser-js": {
+            "version": "1.0.35",
+            "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz",
+            "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/ua-parser-js"
+                },
+                {
+                    "type": "paypal",
+                    "url": "https://paypal.me/faisalman"
+                }
+            ],
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/uc.micro": {
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+            "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+            "dev": true
+        },
+        "node_modules/uglify-es": {
+            "version": "3.3.9",
+            "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+            "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+            "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0",
+            "peer": true,
+            "dependencies": {
+                "commander": "~2.13.0",
+                "source-map": "~0.6.1"
+            },
+            "bin": {
+                "uglifyjs": "bin/uglifyjs"
+            },
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/uglify-es/node_modules/commander": {
+            "version": "2.13.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+            "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+            "peer": true
+        },
+        "node_modules/uglify-js": {
+            "version": "3.17.4",
+            "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+            "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+            "dev": true,
+            "optional": true,
+            "bin": {
+                "uglifyjs": "bin/uglifyjs"
+            },
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/unbox-primitive": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+            "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "has-bigints": "^1.0.2",
+                "has-symbols": "^1.0.3",
+                "which-boxed-primitive": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/unbzip2-stream": {
+            "version": "1.4.3",
+            "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+            "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+            "dev": true,
+            "dependencies": {
+                "buffer": "^5.2.1",
+                "through": "^2.3.8"
+            }
+        },
+        "node_modules/unbzip2-stream/node_modules/buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
+        },
+        "node_modules/unc-path-regex": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+            "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/undefsafe": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+            "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
+            "dev": true
+        },
+        "node_modules/underscore": {
+            "version": "1.13.6",
+            "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+            "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+        },
+        "node_modules/undertaker": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
+            "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+            "dev": true,
+            "dependencies": {
+                "arr-flatten": "^1.0.1",
+                "arr-map": "^2.0.0",
+                "bach": "^1.0.0",
+                "collection-map": "^1.0.0",
+                "es6-weak-map": "^2.0.1",
+                "fast-levenshtein": "^1.0.0",
+                "last-run": "^1.1.0",
+                "object.defaults": "^1.0.0",
+                "object.reduce": "^1.0.0",
+                "undertaker-registry": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/undertaker-registry": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
+            "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/undertaker/node_modules/fast-levenshtein": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
+            "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==",
+            "dev": true
+        },
+        "node_modules/unescape": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz",
+            "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
+            "dependencies": {
+                "extend-shallow": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unicode-canonical-property-names-ecmascript": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+            "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-match-property-ecmascript": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+            "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+            "dependencies": {
+                "unicode-canonical-property-names-ecmascript": "^2.0.0",
+                "unicode-property-aliases-ecmascript": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-match-property-value-ecmascript": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+            "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-property-aliases-ecmascript": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+            "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unified": {
+            "version": "9.2.2",
+            "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
+            "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
+            "dev": true,
+            "dependencies": {
+                "bail": "^1.0.0",
+                "extend": "^3.0.0",
+                "is-buffer": "^2.0.0",
+                "is-plain-obj": "^2.0.0",
+                "trough": "^1.0.0",
+                "vfile": "^4.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/unified/node_modules/is-plain-obj": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+            "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/union-value": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+            "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+            "dependencies": {
+                "arr-union": "^3.1.0",
+                "get-value": "^2.0.6",
+                "is-extendable": "^0.1.1",
+                "set-value": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unique-stream": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+            "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+            "dev": true,
+            "dependencies": {
+                "json-stable-stringify-without-jsonify": "^1.0.1",
+                "through2-filter": "^3.0.0"
+            }
+        },
+        "node_modules/unist-util-find-all-after": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz",
+            "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==",
+            "dev": true,
+            "dependencies": {
+                "unist-util-is": "^4.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/unist-util-is": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
+            "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
+            "dev": true,
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/unist-util-stringify-position": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+            "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+            "dev": true,
+            "dependencies": {
+                "@types/unist": "^2.0.2"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/universalify": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+            "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+            "engines": {
+                "node": ">= 10.0.0"
+            }
+        },
+        "node_modules/unix-crypt-td-js": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz",
+            "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw=="
+        },
+        "node_modules/unpipe": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+            "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/unset-value": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+            "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+            "dependencies": {
+                "has-value": "^0.3.1",
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-value": {
+            "version": "0.3.1",
+            "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+            "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+            "dependencies": {
+                "get-value": "^2.0.3",
+                "has-values": "^0.1.4",
+                "isobject": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+            "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+            "dependencies": {
+                "isarray": "1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-values": {
+            "version": "0.1.4",
+            "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+            "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/isarray": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+        },
+        "node_modules/upath": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+            "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+            "dev": true,
+            "engines": {
+                "node": ">=4",
+                "yarn": "*"
+            }
+        },
+        "node_modules/update-browserslist-db": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+            "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/browserslist"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/browserslist"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
+            ],
+            "dependencies": {
+                "escalade": "^3.1.1",
+                "picocolors": "^1.0.0"
+            },
+            "bin": {
+                "update-browserslist-db": "cli.js"
+            },
+            "peerDependencies": {
+                "browserslist": ">= 4.21.0"
+            }
+        },
+        "node_modules/uri-js": {
+            "version": "4.4.1",
+            "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+            "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+            "dev": true,
+            "dependencies": {
+                "punycode": "^2.1.0"
+            }
+        },
+        "node_modules/urix": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+            "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+            "deprecated": "Please see https://github.com/lydell/urix#deprecated"
+        },
+        "node_modules/url": {
+            "version": "0.11.0",
+            "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+            "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+            "dev": true,
+            "dependencies": {
+                "punycode": "1.3.2",
+                "querystring": "0.2.0"
+            }
+        },
+        "node_modules/url-parse": {
+            "version": "1.5.10",
+            "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+            "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+            "dependencies": {
+                "querystringify": "^2.1.1",
+                "requires-port": "^1.0.0"
+            }
+        },
+        "node_modules/url/node_modules/punycode": {
+            "version": "1.3.2",
+            "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+            "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+            "dev": true
+        },
+        "node_modules/use": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+            "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/use-memo-one": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
+            "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==",
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/use-sync-external-store": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+            "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+            "peer": true,
+            "peerDependencies": {
+                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+            }
+        },
+        "node_modules/util": {
+            "version": "0.12.5",
+            "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+            "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+            "dev": true,
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "is-arguments": "^1.0.4",
+                "is-generator-function": "^1.0.7",
+                "is-typed-array": "^1.1.3",
+                "which-typed-array": "^1.1.2"
+            }
+        },
+        "node_modules/util-deprecate": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+            "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+        },
+        "node_modules/util-ex": {
+            "version": "0.3.18",
+            "resolved": "https://registry.npmjs.org/util-ex/-/util-ex-0.3.18.tgz",
+            "integrity": "sha512-GPVjD257DtgCDMHYqbdWvZ+RY3HaXZ7Dps/44de5WscOjFNL2Qr+6dTIKGlyfA4A5BXyeFKWy8mb19OATWhh8Q==",
+            "dev": true,
+            "dependencies": {
+                "inherits-ex": "^1.5.2",
+                "xtend": "^4.0.2"
+            }
+        },
+        "node_modules/utils-merge": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+            "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+            "engines": {
+                "node": ">= 0.4.0"
+            }
+        },
+        "node_modules/uuid": {
+            "version": "3.4.0",
+            "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+            "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+            "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+            "bin": {
+                "uuid": "bin/uuid"
+            }
+        },
+        "node_modules/v8-compile-cache": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+            "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+            "dev": true
+        },
+        "node_modules/v8flags": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+            "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+            "dependencies": {
+                "homedir-polyfill": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/validate-npm-package-license": {
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+            "dependencies": {
+                "spdx-correct": "^3.0.0",
+                "spdx-expression-parse": "^3.0.0"
+            }
+        },
+        "node_modules/value-equal": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+            "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+        },
+        "node_modules/value-or-function": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
+            "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/vary": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+            "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/verror": {
+            "version": "1.10.0",
+            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+            "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+            "dev": true,
+            "engines": [
+                "node >=0.6.0"
+            ],
+            "dependencies": {
+                "assert-plus": "^1.0.0",
+                "core-util-is": "1.0.2",
+                "extsprintf": "^1.2.0"
+            }
+        },
+        "node_modules/vfile": {
+            "version": "4.2.1",
+            "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
+            "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
+            "dev": true,
+            "dependencies": {
+                "@types/unist": "^2.0.0",
+                "is-buffer": "^2.0.0",
+                "unist-util-stringify-position": "^2.0.0",
+                "vfile-message": "^2.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/vfile-message": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+            "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/unist": "^2.0.0",
+                "unist-util-stringify-position": "^2.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/unified"
+            }
+        },
+        "node_modules/victory": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory/-/victory-32.3.7.tgz",
+            "integrity": "sha512-nkUm3C4IY/COP5xgb+Ix18yinkiUrq0J3uHCgfHFF8MqyK0FHs1VRKhT9zA6n/QLy1fT/iowtv6cfV6hTTUIUw==",
+            "dependencies": {
+                "victory-area": "^32.3.7",
+                "victory-axis": "^32.3.7",
+                "victory-bar": "^32.3.7",
+                "victory-box-plot": "^32.3.7",
+                "victory-brush-container": "^32.3.7",
+                "victory-brush-line": "^32.3.7",
+                "victory-candlestick": "^32.3.7",
+                "victory-chart": "^32.3.7",
+                "victory-core": "^32.3.7",
+                "victory-create-container": "^32.3.7",
+                "victory-cursor-container": "^32.3.7",
+                "victory-errorbar": "^32.3.7",
+                "victory-group": "^32.3.7",
+                "victory-legend": "^32.3.7",
+                "victory-line": "^32.3.7",
+                "victory-pie": "^32.3.7",
+                "victory-polar-axis": "^32.3.7",
+                "victory-scatter": "^32.3.7",
+                "victory-selection-container": "^32.3.7",
+                "victory-shared-events": "^32.3.7",
+                "victory-stack": "^32.3.7",
+                "victory-tooltip": "^32.3.7",
+                "victory-voronoi": "^32.3.7",
+                "victory-voronoi-container": "^32.3.7",
+                "victory-zoom-container": "^32.3.7"
+            }
+        },
+        "node_modules/victory-area": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-32.3.7.tgz",
+            "integrity": "sha512-jXzrVH/JRMjqJ7mKhKB06t9qW82alNiq5383MC47GHr5MkB9EJPGYMGWG7bBv1VP0UdHF+woNlW1IaY2qCXOeQ==",
+            "dependencies": {
+                "d3-shape": "^1.2.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-axis": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-32.3.7.tgz",
+            "integrity": "sha512-Rp1c6tWjUaRJ1fjclBrMzE6QrfnLhXH3E20Jnf9Fo+24XNfrltQ2jrHSWzk3EWIllwIKbJtCWNtt6IysR5Vaxg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-bar": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-32.3.7.tgz",
+            "integrity": "sha512-iibeysvsFV4RJs2hC1v7bL5e8ZSsDdOAt7a3SJ9VmdX9ViPsc565PGdfpwJKrDKn/2+ExreCWgzd34WG1+wpRA==",
+            "dependencies": {
+                "d3-shape": "^1.2.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-box-plot": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-32.3.7.tgz",
+            "integrity": "sha512-VMsDcCKX4t2hbuLyWm9SibZVQrLwH/uobw43b8GPD4IuBcIjXIlNfHxWzSTlvJJsBtH21LzQzLmmr00al5x1Rg==",
+            "dependencies": {
+                "d3-array": "^1.2.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-brush-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-32.3.7.tgz",
+            "integrity": "sha512-FKXudglPBdhLuIS4dSDVPOtefhIHiEXSw4kQni0HyuK/6J6zNqsH7r8nplh3RclB8dizgaQKSlBl9VD5g8rWZQ==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-brush-line": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-brush-line/-/victory-brush-line-32.3.7.tgz",
+            "integrity": "sha512-WX2/grW0W4C2w/i5F6pyvLJYb1cZx/Gobg6zzjAJWbqcSvkDoBy1gVbr9GPW2ITsdNTgPVMeYWxuig9udjC+zw==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-candlestick": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-candlestick/-/victory-candlestick-32.3.7.tgz",
+            "integrity": "sha512-FxlJgmlNoYfliGAsK/MWpw/4UY9MYCcT43Pwv/e/2kWLoC9Mv5yMeQqS/7DROKhXYzcHvFvjeaqGONMWXeg+TQ==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-chart": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-32.3.7.tgz",
+            "integrity": "sha512-QcYBOf33KmmYDU2fAZYBjCb4TphdiuHVDS9zRgeWj8Xu2ipuHlnpR6YfZQ2go4PkBINXnv3q0Mn6FxeZSb18gg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "react-fast-compare": "^2.0.0",
+                "victory-axis": "^32.3.7",
+                "victory-core": "^32.3.7",
+                "victory-polar-axis": "^32.3.7",
+                "victory-shared-events": "^32.3.7"
+            }
+        },
+        "node_modules/victory-chart/node_modules/react-fast-compare": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
+            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        },
+        "node_modules/victory-core": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-32.3.7.tgz",
+            "integrity": "sha512-7D23WVSPGXIlndCCPyikmYm+aRHz6FKXGCCPd9vrbc83Dp1JMv9XvqWq8c650ALl396dgIp4VN+onhNFwtO6uQ==",
+            "dependencies": {
+                "d3-ease": "^1.0.0",
+                "d3-interpolate": "^1.1.1",
+                "d3-scale": "^1.0.0",
+                "d3-shape": "^1.2.0",
+                "d3-timer": "^1.0.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "react-fast-compare": "^2.0.0"
+            }
+        },
+        "node_modules/victory-core/node_modules/react-fast-compare": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
+            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        },
+        "node_modules/victory-create-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-32.3.7.tgz",
+            "integrity": "sha512-WjQ4TIFFwdMSCX8GMBdC124TmjK6yJVIXnOlP4+DLB5iMMLS7S5RjnNl+H/KUA94/fHPqSFNOY0K7TDsRpBTlA==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "victory-brush-container": "^32.3.7",
+                "victory-core": "^32.3.7",
+                "victory-cursor-container": "^32.3.7",
+                "victory-selection-container": "^32.3.7",
+                "victory-voronoi-container": "^32.3.7",
+                "victory-zoom-container": "^32.3.7"
+            }
+        },
+        "node_modules/victory-cursor-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-32.3.7.tgz",
+            "integrity": "sha512-/mjXb3UtK29rievpetI9Ucww9HaJovCSfrNOUj35s9WLQgcdprEgpp4VOtL+spTnjpjsqqBeMfLnkvzn4zLSXg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-errorbar": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-errorbar/-/victory-errorbar-32.3.7.tgz",
+            "integrity": "sha512-nTnF+sKdF1a6zGJtaj3VRhJGmxSRrpTEKt4YgR+/u1+K//StTOohP0IIsf4mG+Br9g2WFUHXvlXcPvrGtaghyw==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-group": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-32.3.7.tgz",
+            "integrity": "sha512-4BOSj7tAV870j1J7TFQ6wvZco0OzxkxHHawtI2sSgeQJyTOGl9oBQeAV3J93skgxFSOc7+uEFFkqzcCV58/41A==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "react-fast-compare": "^2.0.0",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-group/node_modules/react-fast-compare": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
+            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        },
+        "node_modules/victory-legend": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-32.3.7.tgz",
+            "integrity": "sha512-l8V1h7ubBW7AJnn0K3Gbaeg/oAD1rOvxTwTKHZ65FRXBxgQsvHLXso+Poh7IKx9goxilU8krCvfdJ0xxekyBDw==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-line": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-32.3.7.tgz",
+            "integrity": "sha512-xeQ1CSPTbhiapZPUVGGJTuJD8vMLMGAM5oV2OCKfFhaGNN8kDf79SnQtjzhxAh5VcFsvoVPmlzHpS+rMKu0wcw==",
+            "dependencies": {
+                "d3-shape": "^1.2.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-pie": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-32.3.7.tgz",
+            "integrity": "sha512-oEn1gJIwOP94uWLzA6q2S0vrblkEUwUCxzUu1RxFJF3cjtSIT5RY9OKav9o3n45TTzYLGKnOC+yoOadeQksU+Q==",
+            "dependencies": {
+                "d3-shape": "^1.0.0",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-polar-axis": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-32.3.7.tgz",
+            "integrity": "sha512-6mOQj3Ngzjn7o/E71gIldZUDqbZTcyrNk5yzreGUilrDHtFDiJPEcWdCJKyYMYq3y0qoeUzdJcd9GumxSB77aQ==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-scatter": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-32.3.7.tgz",
+            "integrity": "sha512-3suaJqOEaKbMvoXZqW8odkVs0uZDP5djjT9TFsdrzZqFmONUfpcP1l8hmmQ89P5BV2Tn7qTroRgdbCIYgiKTtQ==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-selection-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-32.3.7.tgz",
+            "integrity": "sha512-AxbtqR04rFsm7yXK7ujQMBtd9609hz2LgTWfjAocO6/NV0yTx6fH6I0HmpScTlPG7hiFjNXrrdMvpdq0IrXVjg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-shared-events": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-32.3.7.tgz",
+            "integrity": "sha512-1QrTBi2jtYnCiEgth+YvfEtaBAq3bPX8jv4aEjdpfXAzj7nOoZ0Y6HRuMrDgPMcZNX0uYZ+BhRUHU4TtEflJvg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "react-fast-compare": "^2.0.0",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-shared-events/node_modules/react-fast-compare": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
+            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        },
+        "node_modules/victory-stack": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-32.3.7.tgz",
+            "integrity": "sha512-g++4DZRlU+/0ICO7I4BHCC852QY5gIYNplVAni2J+DDLmB3kNRLlqvOBzNAzEjYbxQBz/kee3gzSmhv3fsveGA==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "react-fast-compare": "^2.0.0",
+                "victory-core": "^32.3.7"
+            }
+        },
+        "node_modules/victory-stack/node_modules/react-fast-compare": {
+            "version": "2.0.4",
+            "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
+            "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
+        },
+        "node_modules/victory-tooltip": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-32.3.7.tgz",
+            "integrity": "sha512-j0J2oC3bdhkFekRtL4APgbjh5Rcyrc/kUShkz1SGPo8ePC16z+y+duxKnCsMWEUP3ygdbM4lo+EMoc6mNTtQKw==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
         },
-        "unicode-match-property-ecmascript": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
-            "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
-            "requires": {
-                "unicode-canonical-property-names-ecmascript": "^2.0.0",
-                "unicode-property-aliases-ecmascript": "^2.0.0"
+        "node_modules/victory-voronoi": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-voronoi/-/victory-voronoi-32.3.7.tgz",
+            "integrity": "sha512-i3JTTyynHacW1Trh64WK6ojYlNMLxByrzRTy4nAzwrwyJBSXft3P7YTkwor8PTMHGlrCLXSycmMaiM0NlnZFtA==",
+            "dependencies": {
+                "d3-voronoi": "^1.1.2",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
             }
         },
-        "unicode-match-property-value-ecmascript": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
-            "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw=="
+        "node_modules/victory-voronoi-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-32.3.7.tgz",
+            "integrity": "sha512-6ql/aCknKyGWN6d8Ed5TZawglo/kmGxHYzu16VyFXz86yai5q3uwLyf6juGAWtkiijG1Wg44BupUwsl3hXJqFw==",
+            "dependencies": {
+                "delaunay-find": "0.0.3",
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7",
+                "victory-tooltip": "^32.3.7"
+            }
         },
-        "unicode-property-aliases-ecmascript": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
-            "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ=="
+        "node_modules/victory-zoom-container": {
+            "version": "32.3.7",
+            "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-32.3.7.tgz",
+            "integrity": "sha512-lN/4NgHWCIo6D+OvYV8/0JpXyGjiudOdT6/Wxt4Wzq44sI/RQ8h9C1Xay6HWyaBcn+lmAGtjYz9XPTJFErzHbg==",
+            "dependencies": {
+                "lodash": "^4.17.15",
+                "prop-types": "^15.5.8",
+                "victory-core": "^32.3.7"
+            }
         },
-        "unified": {
-            "version": "9.2.2",
-            "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
-            "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
+        "node_modules/vinyl": {
+            "version": "0.4.6",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+            "integrity": "sha512-pmza4M5VA15HOImIQYWhoXGlGNafCm0QK5BpBUXkzzEwrRxKqBsbAhTfkT2zMcJhUX1G1Gkid0xaV8WjOl7DsA==",
             "dev": true,
-            "requires": {
-                "bail": "^1.0.0",
-                "extend": "^3.0.0",
-                "is-buffer": "^2.0.0",
-                "is-plain-obj": "^2.0.0",
-                "trough": "^1.0.0",
-                "vfile": "^4.0.0"
-            },
             "dependencies": {
-                "is-buffer": {
-                    "version": "2.0.5",
-                    "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
-                    "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
-                    "dev": true
-                }
+                "clone": "^0.2.0",
+                "clone-stats": "^0.0.1"
+            },
+            "engines": {
+                "node": ">= 0.9"
             }
         },
-        "union-value": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-            "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+        "node_modules/vinyl-file": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz",
+            "integrity": "sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==",
             "dev": true,
-            "requires": {
-                "arr-union": "^3.1.0",
-                "get-value": "^2.0.6",
-                "is-extendable": "^0.1.1",
-                "set-value": "^2.0.1"
+            "dependencies": {
+                "graceful-fs": "^4.1.2",
+                "pify": "^2.3.0",
+                "strip-bom-buf": "^1.0.0",
+                "strip-bom-stream": "^2.0.0",
+                "vinyl": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "unique-filename": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-            "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+        "node_modules/vinyl-file/node_modules/clone": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+            "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
             "dev": true,
-            "requires": {
-                "unique-slug": "^2.0.0"
+            "engines": {
+                "node": ">=0.8"
             }
         },
-        "unique-slug": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-            "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+        "node_modules/vinyl-file/node_modules/clone-stats": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+            "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+            "dev": true
+        },
+        "node_modules/vinyl-file/node_modules/pify": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
             "dev": true,
-            "requires": {
-                "imurmurhash": "^0.1.4"
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "unique-stream": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
-            "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+        "node_modules/vinyl-file/node_modules/replace-ext": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
             "dev": true,
-            "requires": {
-                "json-stable-stringify-without-jsonify": "^1.0.1",
-                "through2-filter": "^3.0.0"
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "unique-string": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-            "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+        "node_modules/vinyl-file/node_modules/vinyl": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
             "dev": true,
-            "requires": {
-                "crypto-random-string": "^2.0.0"
+            "dependencies": {
+                "clone": "^2.1.1",
+                "clone-buffer": "^1.0.0",
+                "clone-stats": "^1.0.0",
+                "cloneable-readable": "^1.0.0",
+                "remove-trailing-separator": "^1.0.1",
+                "replace-ext": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "unist-util-find-all-after": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz",
-            "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==",
+        "node_modules/vinyl-fs": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+            "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
             "dev": true,
-            "requires": {
-                "unist-util-is": "^4.0.0"
+            "dependencies": {
+                "fs-mkdirp-stream": "^1.0.0",
+                "glob-stream": "^6.1.0",
+                "graceful-fs": "^4.0.0",
+                "is-valid-glob": "^1.0.0",
+                "lazystream": "^1.0.0",
+                "lead": "^1.0.0",
+                "object.assign": "^4.0.4",
+                "pumpify": "^1.3.5",
+                "readable-stream": "^2.3.3",
+                "remove-bom-buffer": "^3.0.0",
+                "remove-bom-stream": "^1.2.0",
+                "resolve-options": "^1.1.0",
+                "through2": "^2.0.0",
+                "to-through": "^2.0.0",
+                "value-or-function": "^3.0.0",
+                "vinyl": "^2.0.0",
+                "vinyl-sourcemap": "^1.1.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "unist-util-is": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
-            "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
-            "dev": true
-        },
-        "unist-util-stringify-position": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
-            "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+        "node_modules/vinyl-fs/node_modules/clone": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+            "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
             "dev": true,
-            "requires": {
-                "@types/unist": "^2.0.2"
+            "engines": {
+                "node": ">=0.8"
             }
         },
-        "universalify": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
-        },
-        "unix-crypt-td-js": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz",
-            "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw=="
-        },
-        "unpipe": {
+        "node_modules/vinyl-fs/node_modules/clone-stats": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-            "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+            "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+            "dev": true
         },
-        "unset-value": {
+        "node_modules/vinyl-fs/node_modules/isarray": {
             "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-            "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+            "dev": true
+        },
+        "node_modules/vinyl-fs/node_modules/readable-stream": {
+            "version": "2.3.8",
+            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
             "dev": true,
-            "requires": {
-                "has-value": "^0.3.1",
-                "isobject": "^3.0.0"
-            },
             "dependencies": {
-                "has-value": {
-                    "version": "0.3.1",
-                    "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-                    "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-                    "dev": true,
-                    "requires": {
-                        "get-value": "^2.0.3",
-                        "has-values": "^0.1.4",
-                        "isobject": "^2.0.0"
-                    },
-                    "dependencies": {
-                        "isobject": {
-                            "version": "2.1.0",
-                            "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-                            "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-                            "dev": true,
-                            "requires": {
-                                "isarray": "1.0.0"
-                            }
-                        }
-                    }
-                },
-                "has-values": {
-                    "version": "0.1.4",
-                    "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-                    "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-                    "dev": true
-                },
-                "isarray": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-                    "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-                    "dev": true
-                }
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
             }
         },
-        "upath": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-            "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+        "node_modules/vinyl-fs/node_modules/replace-ext": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/vinyl-fs/node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
             "dev": true
         },
-        "update-notifier": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
-            "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
+        "node_modules/vinyl-fs/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "dev": true,
-            "requires": {
-                "boxen": "^5.0.0",
-                "chalk": "^4.1.0",
-                "configstore": "^5.0.1",
-                "has-yarn": "^2.1.0",
-                "import-lazy": "^2.1.0",
-                "is-ci": "^2.0.0",
-                "is-installed-globally": "^0.4.0",
-                "is-npm": "^5.0.0",
-                "is-yarn-global": "^0.3.0",
-                "latest-version": "^5.1.0",
-                "pupa": "^2.1.1",
-                "semver": "^7.3.4",
-                "semver-diff": "^3.1.1",
-                "xdg-basedir": "^4.0.0"
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
             }
         },
-        "uri-js": {
-            "version": "4.4.1",
-            "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-            "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+        "node_modules/vinyl-fs/node_modules/through2": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+            "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
             "dev": true,
-            "requires": {
-                "punycode": "^2.1.0"
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
             }
         },
-        "urix": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-            "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-            "dev": true
-        },
-        "url": {
-            "version": "0.11.0",
-            "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-            "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+        "node_modules/vinyl-fs/node_modules/vinyl": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
             "dev": true,
-            "requires": {
-                "punycode": "1.3.2",
-                "querystring": "0.2.0"
+            "dependencies": {
+                "clone": "^2.1.1",
+                "clone-buffer": "^1.0.0",
+                "clone-stats": "^1.0.0",
+                "cloneable-readable": "^1.0.0",
+                "remove-trailing-separator": "^1.0.1",
+                "replace-ext": "^1.0.0"
             },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/vinyl-sourcemap": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+            "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",
+            "dev": true,
             "dependencies": {
-                "punycode": {
-                    "version": "1.3.2",
-                    "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-                    "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
-                    "dev": true
-                }
+                "append-buffer": "^1.0.2",
+                "convert-source-map": "^1.5.0",
+                "graceful-fs": "^4.1.6",
+                "normalize-path": "^2.1.1",
+                "now-and-later": "^2.0.0",
+                "remove-bom-buffer": "^3.0.0",
+                "vinyl": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "url-parse-lax": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-            "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+        "node_modules/vinyl-sourcemap/node_modules/clone": {
+            "version": "2.1.2",
+            "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+            "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
             "dev": true,
-            "requires": {
-                "prepend-http": "^2.0.0"
+            "engines": {
+                "node": ">=0.8"
             }
         },
-        "use": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-            "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+        "node_modules/vinyl-sourcemap/node_modules/clone-stats": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+            "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
             "dev": true
         },
-        "use-memo-one": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz",
-            "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ=="
-        },
-        "util": {
-            "version": "0.11.1",
-            "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-            "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+        "node_modules/vinyl-sourcemap/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+            "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
             "dev": true,
-            "requires": {
-                "inherits": "2.0.3"
-            },
             "dependencies": {
-                "inherits": {
-                    "version": "2.0.3",
-                    "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-                    "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-                    "dev": true
-                }
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "util-deprecate": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-            "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-            "dev": true
-        },
-        "utils-merge": {
+        "node_modules/vinyl-sourcemap/node_modules/replace-ext": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-            "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-        },
-        "uuid": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-            "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
-        },
-        "v8-compile-cache": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
-            "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+            "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.10"
+            }
         },
-        "v8-to-istanbul": {
-            "version": "7.1.2",
-            "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz",
-            "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==",
+        "node_modules/vinyl-sourcemap/node_modules/vinyl": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
             "dev": true,
-            "requires": {
-                "@types/istanbul-lib-coverage": "^2.0.1",
-                "convert-source-map": "^1.6.0",
-                "source-map": "^0.7.3"
+            "dependencies": {
+                "clone": "^2.1.1",
+                "clone-buffer": "^1.0.0",
+                "clone-stats": "^1.0.0",
+                "cloneable-readable": "^1.0.0",
+                "remove-trailing-separator": "^1.0.1",
+                "replace-ext": "^1.0.0"
             },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.7.3",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-                    "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-                    "dev": true
-                }
+            "engines": {
+                "node": ">= 0.10"
             }
         },
-        "v8flags": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
-            "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
-            "requires": {
-                "homedir-polyfill": "^1.0.1"
+        "node_modules/vinyl-sourcemaps-apply": {
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
+            "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==",
+            "dev": true,
+            "dependencies": {
+                "source-map": "^0.5.1"
             }
         },
-        "validate-npm-package-license": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-            "requires": {
-                "spdx-correct": "^3.0.0",
-                "spdx-expression-parse": "^3.0.0"
+        "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": {
+            "version": "0.5.7",
+            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+            "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "value-equal": {
+        "node_modules/vlq": {
             "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
-            "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
-        },
-        "value-or-function": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
-            "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
-            "dev": true
+            "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+            "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
         },
-        "vary": {
+        "node_modules/vm-browserify": {
             "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-            "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+            "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+            "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+            "dev": true
         },
-        "verror": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-            "dev": true,
-            "requires": {
-                "assert-plus": "^1.0.0",
-                "core-util-is": "1.0.2",
-                "extsprintf": "^1.2.0"
-            },
+        "node_modules/w3c-hr-time": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+            "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+            "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
             "dependencies": {
-                "core-util-is": {
-                    "version": "1.0.2",
-                    "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-                    "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-                    "dev": true
-                }
+                "browser-process-hrtime": "^1.0.0"
             }
         },
-        "vfile": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
-            "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
-            "dev": true,
-            "requires": {
-                "@types/unist": "^2.0.0",
-                "is-buffer": "^2.0.0",
-                "unist-util-stringify-position": "^2.0.0",
-                "vfile-message": "^2.0.0"
+        "node_modules/w3c-xmlserializer": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+            "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+            "dependencies": {
+                "xml-name-validator": "^3.0.0"
             },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/walker": {
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+            "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
             "dependencies": {
-                "is-buffer": {
-                    "version": "2.0.5",
-                    "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
-                    "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
-                    "dev": true
-                }
+                "makeerror": "1.0.12"
             }
         },
-        "vfile-message": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
-            "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+        "node_modules/watchpack": {
+            "version": "2.4.0",
+            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+            "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
             "dev": true,
-            "requires": {
-                "@types/unist": "^2.0.0",
-                "unist-util-stringify-position": "^2.0.0"
+            "dependencies": {
+                "glob-to-regexp": "^0.4.1",
+                "graceful-fs": "^4.1.2"
+            },
+            "engines": {
+                "node": ">=10.13.0"
             }
         },
-        "victory": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory/-/victory-32.3.7.tgz",
-            "integrity": "sha512-nkUm3C4IY/COP5xgb+Ix18yinkiUrq0J3uHCgfHFF8MqyK0FHs1VRKhT9zA6n/QLy1fT/iowtv6cfV6hTTUIUw==",
-            "requires": {
-                "victory-area": "^32.3.7",
-                "victory-axis": "^32.3.7",
-                "victory-bar": "^32.3.7",
-                "victory-box-plot": "^32.3.7",
-                "victory-brush-container": "^32.3.7",
-                "victory-brush-line": "^32.3.7",
-                "victory-candlestick": "^32.3.7",
-                "victory-chart": "^32.3.7",
-                "victory-core": "^32.3.7",
-                "victory-create-container": "^32.3.7",
-                "victory-cursor-container": "^32.3.7",
-                "victory-errorbar": "^32.3.7",
-                "victory-group": "^32.3.7",
-                "victory-legend": "^32.3.7",
-                "victory-line": "^32.3.7",
-                "victory-pie": "^32.3.7",
-                "victory-polar-axis": "^32.3.7",
-                "victory-scatter": "^32.3.7",
-                "victory-selection-container": "^32.3.7",
-                "victory-shared-events": "^32.3.7",
-                "victory-stack": "^32.3.7",
-                "victory-tooltip": "^32.3.7",
-                "victory-voronoi": "^32.3.7",
-                "victory-voronoi-container": "^32.3.7",
-                "victory-zoom-container": "^32.3.7"
+        "node_modules/wbuf": {
+            "version": "1.7.3",
+            "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+            "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+            "dependencies": {
+                "minimalistic-assert": "^1.0.0"
             }
         },
-        "victory-area": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-32.3.7.tgz",
-            "integrity": "sha512-jXzrVH/JRMjqJ7mKhKB06t9qW82alNiq5383MC47GHr5MkB9EJPGYMGWG7bBv1VP0UdHF+woNlW1IaY2qCXOeQ==",
-            "requires": {
-                "d3-shape": "^1.2.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/wcwidth": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+            "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+            "dependencies": {
+                "defaults": "^1.0.3"
             }
         },
-        "victory-axis": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-32.3.7.tgz",
-            "integrity": "sha512-Rp1c6tWjUaRJ1fjclBrMzE6QrfnLhXH3E20Jnf9Fo+24XNfrltQ2jrHSWzk3EWIllwIKbJtCWNtt6IysR5Vaxg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webidl-conversions": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+            "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+            "engines": {
+                "node": ">=10.4"
             }
         },
-        "victory-bar": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-32.3.7.tgz",
-            "integrity": "sha512-iibeysvsFV4RJs2hC1v7bL5e8ZSsDdOAt7a3SJ9VmdX9ViPsc565PGdfpwJKrDKn/2+ExreCWgzd34WG1+wpRA==",
-            "requires": {
-                "d3-shape": "^1.2.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack": {
+            "version": "5.81.0",
+            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz",
+            "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==",
+            "dev": true,
+            "dependencies": {
+                "@types/eslint-scope": "^3.7.3",
+                "@types/estree": "^1.0.0",
+                "@webassemblyjs/ast": "^1.11.5",
+                "@webassemblyjs/wasm-edit": "^1.11.5",
+                "@webassemblyjs/wasm-parser": "^1.11.5",
+                "acorn": "^8.7.1",
+                "acorn-import-assertions": "^1.7.6",
+                "browserslist": "^4.14.5",
+                "chrome-trace-event": "^1.0.2",
+                "enhanced-resolve": "^5.13.0",
+                "es-module-lexer": "^1.2.1",
+                "eslint-scope": "5.1.1",
+                "events": "^3.2.0",
+                "glob-to-regexp": "^0.4.1",
+                "graceful-fs": "^4.2.9",
+                "json-parse-even-better-errors": "^2.3.1",
+                "loader-runner": "^4.2.0",
+                "mime-types": "^2.1.27",
+                "neo-async": "^2.6.2",
+                "schema-utils": "^3.1.2",
+                "tapable": "^2.1.1",
+                "terser-webpack-plugin": "^5.3.7",
+                "watchpack": "^2.4.0",
+                "webpack-sources": "^3.2.3"
+            },
+            "bin": {
+                "webpack": "bin/webpack.js"
+            },
+            "engines": {
+                "node": ">=10.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            },
+            "peerDependenciesMeta": {
+                "webpack-cli": {
+                    "optional": true
+                }
             }
         },
-        "victory-box-plot": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-32.3.7.tgz",
-            "integrity": "sha512-VMsDcCKX4t2hbuLyWm9SibZVQrLwH/uobw43b8GPD4IuBcIjXIlNfHxWzSTlvJJsBtH21LzQzLmmr00al5x1Rg==",
-            "requires": {
-                "d3-array": "^1.2.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack-dev-middleware": {
+            "version": "5.3.3",
+            "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
+            "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+            "dev": true,
+            "dependencies": {
+                "colorette": "^2.0.10",
+                "memfs": "^3.4.3",
+                "mime-types": "^2.1.31",
+                "range-parser": "^1.2.1",
+                "schema-utils": "^4.0.0"
+            },
+            "engines": {
+                "node": ">= 12.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            },
+            "peerDependencies": {
+                "webpack": "^4.0.0 || ^5.0.0"
             }
         },
-        "victory-brush-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-32.3.7.tgz",
-            "integrity": "sha512-FKXudglPBdhLuIS4dSDVPOtefhIHiEXSw4kQni0HyuK/6J6zNqsH7r8nplh3RclB8dizgaQKSlBl9VD5g8rWZQ==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack-dev-middleware/node_modules/colorette": {
+            "version": "2.0.20",
+            "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+            "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+            "dev": true
+        },
+        "node_modules/webpack-hot-middleware": {
+            "version": "2.25.3",
+            "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz",
+            "integrity": "sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA==",
+            "dev": true,
+            "dependencies": {
+                "ansi-html-community": "0.0.8",
+                "html-entities": "^2.1.0",
+                "strip-ansi": "^6.0.0"
             }
         },
-        "victory-brush-line": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-brush-line/-/victory-brush-line-32.3.7.tgz",
-            "integrity": "sha512-WX2/grW0W4C2w/i5F6pyvLJYb1cZx/Gobg6zzjAJWbqcSvkDoBy1gVbr9GPW2ITsdNTgPVMeYWxuig9udjC+zw==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack-hot-middleware/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+            "dev": true,
+            "dependencies": {
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "victory-candlestick": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-candlestick/-/victory-candlestick-32.3.7.tgz",
-            "integrity": "sha512-FxlJgmlNoYfliGAsK/MWpw/4UY9MYCcT43Pwv/e/2kWLoC9Mv5yMeQqS/7DROKhXYzcHvFvjeaqGONMWXeg+TQ==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack-sources": {
+            "version": "3.2.3",
+            "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+            "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+            "dev": true,
+            "engines": {
+                "node": ">=10.13.0"
             }
         },
-        "victory-chart": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-32.3.7.tgz",
-            "integrity": "sha512-QcYBOf33KmmYDU2fAZYBjCb4TphdiuHVDS9zRgeWj8Xu2ipuHlnpR6YfZQ2go4PkBINXnv3q0Mn6FxeZSb18gg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "react-fast-compare": "^2.0.0",
-                "victory-axis": "^32.3.7",
-                "victory-core": "^32.3.7",
-                "victory-polar-axis": "^32.3.7",
-                "victory-shared-events": "^32.3.7"
+        "node_modules/webpack/node_modules/ajv": {
+            "version": "6.12.6",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+            "dev": true,
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
             }
         },
-        "victory-core": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-32.3.7.tgz",
-            "integrity": "sha512-7D23WVSPGXIlndCCPyikmYm+aRHz6FKXGCCPd9vrbc83Dp1JMv9XvqWq8c650ALl396dgIp4VN+onhNFwtO6uQ==",
-            "requires": {
-                "d3-ease": "^1.0.0",
-                "d3-interpolate": "^1.1.1",
-                "d3-scale": "^1.0.0",
-                "d3-shape": "^1.2.0",
-                "d3-timer": "^1.0.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "react-fast-compare": "^2.0.0"
+        "node_modules/webpack/node_modules/ajv-keywords": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+            "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+            "dev": true,
+            "peerDependencies": {
+                "ajv": "^6.9.1"
             }
         },
-        "victory-create-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-32.3.7.tgz",
-            "integrity": "sha512-WjQ4TIFFwdMSCX8GMBdC124TmjK6yJVIXnOlP4+DLB5iMMLS7S5RjnNl+H/KUA94/fHPqSFNOY0K7TDsRpBTlA==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "victory-brush-container": "^32.3.7",
-                "victory-core": "^32.3.7",
-                "victory-cursor-container": "^32.3.7",
-                "victory-selection-container": "^32.3.7",
-                "victory-voronoi-container": "^32.3.7",
-                "victory-zoom-container": "^32.3.7"
+        "node_modules/webpack/node_modules/eslint-scope": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+            "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+            "dev": true,
+            "dependencies": {
+                "esrecurse": "^4.3.0",
+                "estraverse": "^4.1.1"
+            },
+            "engines": {
+                "node": ">=8.0.0"
             }
         },
-        "victory-cursor-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-32.3.7.tgz",
-            "integrity": "sha512-/mjXb3UtK29rievpetI9Ucww9HaJovCSfrNOUj35s9WLQgcdprEgpp4VOtL+spTnjpjsqqBeMfLnkvzn4zLSXg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack/node_modules/estraverse": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+            "dev": true,
+            "engines": {
+                "node": ">=4.0"
             }
         },
-        "victory-errorbar": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-errorbar/-/victory-errorbar-32.3.7.tgz",
-            "integrity": "sha512-nTnF+sKdF1a6zGJtaj3VRhJGmxSRrpTEKt4YgR+/u1+K//StTOohP0IIsf4mG+Br9g2WFUHXvlXcPvrGtaghyw==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/webpack/node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+            "dev": true
+        },
+        "node_modules/webpack/node_modules/schema-utils": {
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz",
+            "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==",
+            "dev": true,
+            "dependencies": {
+                "@types/json-schema": "^7.0.8",
+                "ajv": "^6.12.5",
+                "ajv-keywords": "^3.5.2"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
             }
         },
-        "victory-group": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-32.3.7.tgz",
-            "integrity": "sha512-4BOSj7tAV870j1J7TFQ6wvZco0OzxkxHHawtI2sSgeQJyTOGl9oBQeAV3J93skgxFSOc7+uEFFkqzcCV58/41A==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "react-fast-compare": "^2.0.0",
-                "victory-core": "^32.3.7"
+        "node_modules/whatwg-encoding": {
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+            "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+            "dependencies": {
+                "iconv-lite": "0.4.24"
             }
         },
-        "victory-legend": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-32.3.7.tgz",
-            "integrity": "sha512-l8V1h7ubBW7AJnn0K3Gbaeg/oAD1rOvxTwTKHZ65FRXBxgQsvHLXso+Poh7IKx9goxilU8krCvfdJ0xxekyBDw==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "victory-line": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-32.3.7.tgz",
-            "integrity": "sha512-xeQ1CSPTbhiapZPUVGGJTuJD8vMLMGAM5oV2OCKfFhaGNN8kDf79SnQtjzhxAh5VcFsvoVPmlzHpS+rMKu0wcw==",
-            "requires": {
-                "d3-shape": "^1.2.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
-            }
+        "node_modules/whatwg-fetch": {
+            "version": "3.6.2",
+            "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+            "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==",
+            "peer": true
         },
-        "victory-pie": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-32.3.7.tgz",
-            "integrity": "sha512-oEn1gJIwOP94uWLzA6q2S0vrblkEUwUCxzUu1RxFJF3cjtSIT5RY9OKav9o3n45TTzYLGKnOC+yoOadeQksU+Q==",
-            "requires": {
-                "d3-shape": "^1.0.0",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
-            }
+        "node_modules/whatwg-mimetype": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+            "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
         },
-        "victory-polar-axis": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-32.3.7.tgz",
-            "integrity": "sha512-6mOQj3Ngzjn7o/E71gIldZUDqbZTcyrNk5yzreGUilrDHtFDiJPEcWdCJKyYMYq3y0qoeUzdJcd9GumxSB77aQ==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/whatwg-url": {
+            "version": "8.7.0",
+            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+            "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+            "dependencies": {
+                "lodash": "^4.7.0",
+                "tr46": "^2.1.0",
+                "webidl-conversions": "^6.1.0"
+            },
+            "engines": {
+                "node": ">=10"
             }
         },
-        "victory-scatter": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-32.3.7.tgz",
-            "integrity": "sha512-3suaJqOEaKbMvoXZqW8odkVs0uZDP5djjT9TFsdrzZqFmONUfpcP1l8hmmQ89P5BV2Tn7qTroRgdbCIYgiKTtQ==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/which": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+            "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "node-which": "bin/node-which"
+            },
+            "engines": {
+                "node": ">= 8"
             }
         },
-        "victory-selection-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-32.3.7.tgz",
-            "integrity": "sha512-AxbtqR04rFsm7yXK7ujQMBtd9609hz2LgTWfjAocO6/NV0yTx6fH6I0HmpScTlPG7hiFjNXrrdMvpdq0IrXVjg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/which-boxed-primitive": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+            "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+            "dependencies": {
+                "is-bigint": "^1.0.1",
+                "is-boolean-object": "^1.1.0",
+                "is-number-object": "^1.0.4",
+                "is-string": "^1.0.5",
+                "is-symbol": "^1.0.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "victory-shared-events": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-32.3.7.tgz",
-            "integrity": "sha512-1QrTBi2jtYnCiEgth+YvfEtaBAq3bPX8jv4aEjdpfXAzj7nOoZ0Y6HRuMrDgPMcZNX0uYZ+BhRUHU4TtEflJvg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "react-fast-compare": "^2.0.0",
-                "victory-core": "^32.3.7"
-            }
+        "node_modules/which-module": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+            "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
+            "dev": true
         },
-        "victory-stack": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-32.3.7.tgz",
-            "integrity": "sha512-g++4DZRlU+/0ICO7I4BHCC852QY5gIYNplVAni2J+DDLmB3kNRLlqvOBzNAzEjYbxQBz/kee3gzSmhv3fsveGA==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "react-fast-compare": "^2.0.0",
-                "victory-core": "^32.3.7"
+        "node_modules/which-typed-array": {
+            "version": "1.1.9",
+            "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+            "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+            "dependencies": {
+                "available-typed-arrays": "^1.0.5",
+                "call-bind": "^1.0.2",
+                "for-each": "^0.3.3",
+                "gopd": "^1.0.1",
+                "has-tostringtag": "^1.0.0",
+                "is-typed-array": "^1.1.10"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "victory-tooltip": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-32.3.7.tgz",
-            "integrity": "sha512-j0J2oC3bdhkFekRtL4APgbjh5Rcyrc/kUShkz1SGPo8ePC16z+y+duxKnCsMWEUP3ygdbM4lo+EMoc6mNTtQKw==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/winston": {
+            "version": "3.8.2",
+            "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz",
+            "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==",
+            "dev": true,
+            "dependencies": {
+                "@colors/colors": "1.5.0",
+                "@dabh/diagnostics": "^2.0.2",
+                "async": "^3.2.3",
+                "is-stream": "^2.0.0",
+                "logform": "^2.4.0",
+                "one-time": "^1.0.0",
+                "readable-stream": "^3.4.0",
+                "safe-stable-stringify": "^2.3.1",
+                "stack-trace": "0.0.x",
+                "triple-beam": "^1.3.0",
+                "winston-transport": "^4.5.0"
+            },
+            "engines": {
+                "node": ">= 12.0.0"
             }
         },
-        "victory-voronoi": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-voronoi/-/victory-voronoi-32.3.7.tgz",
-            "integrity": "sha512-i3JTTyynHacW1Trh64WK6ojYlNMLxByrzRTy4nAzwrwyJBSXft3P7YTkwor8PTMHGlrCLXSycmMaiM0NlnZFtA==",
-            "requires": {
-                "d3-voronoi": "^1.1.2",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/winston-transport": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
+            "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
+            "dev": true,
+            "dependencies": {
+                "logform": "^2.3.2",
+                "readable-stream": "^3.6.0",
+                "triple-beam": "^1.3.0"
+            },
+            "engines": {
+                "node": ">= 6.4.0"
             }
         },
-        "victory-voronoi-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-32.3.7.tgz",
-            "integrity": "sha512-6ql/aCknKyGWN6d8Ed5TZawglo/kmGxHYzu16VyFXz86yai5q3uwLyf6juGAWtkiijG1Wg44BupUwsl3hXJqFw==",
-            "requires": {
-                "delaunay-find": "0.0.3",
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7",
-                "victory-tooltip": "^32.3.7"
+        "node_modules/winston/node_modules/async": {
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+            "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+            "dev": true
+        },
+        "node_modules/winston/node_modules/is-stream": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+            "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "victory-zoom-container": {
-            "version": "32.3.7",
-            "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-32.3.7.tgz",
-            "integrity": "sha512-lN/4NgHWCIo6D+OvYV8/0JpXyGjiudOdT6/Wxt4Wzq44sI/RQ8h9C1Xay6HWyaBcn+lmAGtjYz9XPTJFErzHbg==",
-            "requires": {
-                "lodash": "^4.17.15",
-                "prop-types": "^15.5.8",
-                "victory-core": "^32.3.7"
+        "node_modules/word-wrap": {
+            "version": "1.2.3",
+            "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+            "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+            "engines": {
+                "node": ">=0.10.0"
             }
         },
-        "vinyl": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
-            "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+        "node_modules/wordwrap": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+            "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+            "dev": true
+        },
+        "node_modules/wrap-ansi": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
+            "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==",
             "dev": true,
-            "requires": {
-                "clone": "^2.1.1",
-                "clone-buffer": "^1.0.0",
-                "clone-stats": "^1.0.0",
-                "cloneable-readable": "^1.0.0",
-                "remove-trailing-separator": "^1.0.1",
-                "replace-ext": "^1.0.0"
-            },
             "dependencies": {
-                "clone": {
-                    "version": "2.1.2",
-                    "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-                    "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
-                    "dev": true
-                }
+                "string-width": "^2.1.1",
+                "strip-ansi": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "vinyl-file": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz",
-            "integrity": "sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=",
+        "node_modules/wrappy": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+            "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+        },
+        "node_modules/write": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+            "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
             "dev": true,
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "pify": "^2.3.0",
-                "strip-bom-buf": "^1.0.0",
-                "strip-bom-stream": "^2.0.0",
-                "vinyl": "^2.0.1"
-            },
             "dependencies": {
-                "pify": {
-                    "version": "2.3.0",
-                    "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-                    "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-                    "dev": true
-                }
+                "mkdirp": "^0.5.1"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "vinyl-fs": {
+        "node_modules/write-file-atomic": {
             "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
-            "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
+            "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+            "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
             "dev": true,
-            "requires": {
-                "fs-mkdirp-stream": "^1.0.0",
-                "glob-stream": "^6.1.0",
-                "graceful-fs": "^4.0.0",
-                "is-valid-glob": "^1.0.0",
-                "lazystream": "^1.0.0",
-                "lead": "^1.0.0",
-                "object.assign": "^4.0.4",
-                "pumpify": "^1.3.5",
-                "readable-stream": "^2.3.3",
-                "remove-bom-buffer": "^3.0.0",
-                "remove-bom-stream": "^1.2.0",
-                "resolve-options": "^1.1.0",
-                "through2": "^2.0.0",
-                "to-through": "^2.0.0",
-                "value-or-function": "^3.0.0",
-                "vinyl": "^2.0.0",
-                "vinyl-sourcemap": "^1.1.0"
+            "dependencies": {
+                "imurmurhash": "^0.1.4",
+                "is-typedarray": "^1.0.0",
+                "signal-exit": "^3.0.2",
+                "typedarray-to-buffer": "^3.1.5"
             }
         },
-        "vinyl-sourcemap": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
-            "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
-            "dev": true,
-            "requires": {
-                "append-buffer": "^1.0.2",
-                "convert-source-map": "^1.5.0",
-                "graceful-fs": "^4.1.6",
-                "normalize-path": "^2.1.1",
-                "now-and-later": "^2.0.0",
-                "remove-bom-buffer": "^3.0.0",
-                "vinyl": "^2.0.0"
+        "node_modules/ws": {
+            "version": "7.5.9",
+            "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+            "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+            "engines": {
+                "node": ">=8.3.0"
             },
-            "dependencies": {
-                "normalize-path": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                    "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                    "dev": true,
-                    "requires": {
-                        "remove-trailing-separator": "^1.0.1"
-                    }
+            "peerDependencies": {
+                "bufferutil": "^4.0.1",
+                "utf-8-validate": "^5.0.2"
+            },
+            "peerDependenciesMeta": {
+                "bufferutil": {
+                    "optional": true
+                },
+                "utf-8-validate": {
+                    "optional": true
                 }
             }
         },
-        "vinyl-sourcemaps-apply": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
-            "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
-            "dev": true,
-            "requires": {
-                "source-map": "^0.5.1"
-            }
+        "node_modules/xml-name-validator": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+            "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
         },
-        "vizion": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz",
-            "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==",
-            "dev": true,
-            "requires": {
-                "async": "^2.6.3",
-                "git-node-fs": "^1.0.0",
-                "ini": "^1.3.5",
-                "js-git": "^0.7.8"
-            }
+        "node_modules/xmlchars": {
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+            "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
         },
-        "vlq": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
-            "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
+        "node_modules/xmlhttprequest": {
+            "version": "1.8.0",
+            "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+            "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+            "engines": {
+                "node": ">=0.4.0"
+            }
         },
-        "vm-browserify": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-            "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-            "dev": true
+        "node_modules/xmlhttprequest-ssl": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
+            "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+            "engines": {
+                "node": ">=0.4.0"
+            }
         },
-        "vm2": {
-            "version": "3.9.9",
-            "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz",
-            "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==",
+        "node_modules/xregexp": {
+            "version": "4.4.1",
+            "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.1.tgz",
+            "integrity": "sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==",
             "dev": true,
-            "requires": {
-                "acorn": "^8.7.0",
-                "acorn-walk": "^8.2.0"
-            },
             "dependencies": {
-                "acorn-walk": {
-                    "version": "8.2.0",
-                    "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
-                    "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
-                    "dev": true
-                }
+                "@babel/runtime-corejs3": "^7.12.1"
             }
         },
-        "w3c-hr-time": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
-            "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
-            "requires": {
-                "browser-process-hrtime": "^1.0.0"
+        "node_modules/xss": {
+            "version": "1.0.14",
+            "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
+            "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
+            "dependencies": {
+                "commander": "^2.20.3",
+                "cssfilter": "0.0.10"
+            },
+            "bin": {
+                "xss": "bin/xss"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
             }
         },
-        "w3c-xmlserializer": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
-            "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
-            "requires": {
-                "xml-name-validator": "^3.0.0"
+        "node_modules/xss/node_modules/commander": {
+            "version": "2.20.3",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        },
+        "node_modules/xtend": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+            "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+            "engines": {
+                "node": ">=0.4"
             }
         },
-        "walker": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
-            "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
-            "dev": true,
-            "requires": {
-                "makeerror": "1.0.12"
+        "node_modules/y18n": {
+            "version": "5.0.8",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+            "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+            "engines": {
+                "node": ">=10"
             }
         },
-        "watchpack": {
-            "version": "1.7.5",
-            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-            "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
-            "dev": true,
-            "requires": {
-                "chokidar": "^3.4.1",
-                "graceful-fs": "^4.1.2",
-                "neo-async": "^2.5.0",
-                "watchpack-chokidar2": "^2.0.1"
+        "node_modules/yallist": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+            "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+        },
+        "node_modules/yaml": {
+            "version": "1.10.2",
+            "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+            "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "watchpack-chokidar2": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-            "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
-            "dev": true,
-            "optional": true,
-            "requires": {
-                "chokidar": "^2.1.8"
-            },
-            "dependencies": {
-                "anymatch": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-                    "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "micromatch": "^3.1.4",
-                        "normalize-path": "^2.1.1"
-                    },
-                    "dependencies": {
-                        "normalize-path": {
-                            "version": "2.1.1",
-                            "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                            "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "remove-trailing-separator": "^1.0.1"
-                            }
-                        }
-                    }
-                },
-                "binary-extensions": {
-                    "version": "1.13.1",
-                    "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-                    "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-                    "dev": true,
-                    "optional": true
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "chokidar": {
-                    "version": "2.1.8",
-                    "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-                    "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "anymatch": "^2.0.0",
-                        "async-each": "^1.0.1",
-                        "braces": "^2.3.2",
-                        "fsevents": "^1.2.7",
-                        "glob-parent": "^3.1.0",
-                        "inherits": "^2.0.3",
-                        "is-binary-path": "^1.0.0",
-                        "is-glob": "^4.0.0",
-                        "normalize-path": "^3.0.0",
-                        "path-is-absolute": "^1.0.0",
-                        "readdirp": "^2.2.1",
-                        "upath": "^1.1.1"
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "fsevents": {
-                    "version": "1.2.13",
-                    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-                    "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "bindings": "^1.5.0",
-                        "nan": "^2.12.1"
-                    }
-                },
-                "glob-parent": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-                    "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "is-glob": "^3.1.0",
-                        "path-dirname": "^1.0.0"
-                    },
-                    "dependencies": {
-                        "is-glob": {
-                            "version": "3.1.0",
-                            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                            "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "is-extglob": "^2.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-binary-path": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-                    "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "binary-extensions": "^1.0.0"
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "optional": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "readdirp": {
-                    "version": "2.2.1",
-                    "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-                    "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "graceful-fs": "^4.1.11",
-                        "micromatch": "^3.1.10",
-                        "readable-stream": "^2.0.2"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+        "node_modules/yargs": {
+            "version": "17.7.1",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+            "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+            "dependencies": {
+                "cliui": "^8.0.1",
+                "escalade": "^3.1.1",
+                "get-caller-file": "^2.0.5",
+                "require-directory": "^2.1.1",
+                "string-width": "^4.2.3",
+                "y18n": "^5.0.5",
+                "yargs-parser": "^21.1.1"
+            },
+            "engines": {
+                "node": ">=12"
             }
         },
-        "wcwidth": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-            "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+        "node_modules/yargs-parser": {
+            "version": "20.2.9",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+            "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
             "dev": true,
-            "requires": {
-                "defaults": "^1.0.3"
+            "engines": {
+                "node": ">=10"
             }
         },
-        "webidl-conversions": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
-            "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
-        },
-        "webpack": {
-            "version": "4.46.0",
-            "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
-            "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-module-context": "1.9.0",
-                "@webassemblyjs/wasm-edit": "1.9.0",
-                "@webassemblyjs/wasm-parser": "1.9.0",
-                "acorn": "^6.4.1",
-                "ajv": "^6.10.2",
-                "ajv-keywords": "^3.4.1",
-                "chrome-trace-event": "^1.0.2",
-                "enhanced-resolve": "^4.5.0",
-                "eslint-scope": "^4.0.3",
-                "json-parse-better-errors": "^1.0.2",
-                "loader-runner": "^2.4.0",
-                "loader-utils": "^1.2.3",
-                "memory-fs": "^0.4.1",
-                "micromatch": "^3.1.10",
-                "mkdirp": "^0.5.3",
-                "neo-async": "^2.6.1",
-                "node-libs-browser": "^2.2.1",
-                "schema-utils": "^1.0.0",
-                "tapable": "^1.1.3",
-                "terser-webpack-plugin": "^1.4.3",
-                "watchpack": "^1.7.4",
-                "webpack-sources": "^1.4.1"
-            },
-            "dependencies": {
-                "acorn": {
-                    "version": "6.4.2",
-                    "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-                    "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-                    "dev": true
-                },
-                "braces": {
-                    "version": "2.3.2",
-                    "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                    "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                    "dev": true,
-                    "requires": {
-                        "arr-flatten": "^1.1.0",
-                        "array-unique": "^0.3.2",
-                        "extend-shallow": "^2.0.1",
-                        "fill-range": "^4.0.0",
-                        "isobject": "^3.0.1",
-                        "repeat-element": "^1.1.2",
-                        "snapdragon": "^0.8.1",
-                        "snapdragon-node": "^2.0.1",
-                        "split-string": "^3.0.2",
-                        "to-regex": "^3.0.1"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "extend-shallow": {
-                    "version": "3.0.2",
-                    "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                    "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                    "dev": true,
-                    "requires": {
-                        "assign-symbols": "^1.0.0",
-                        "is-extendable": "^1.0.1"
-                    },
-                    "dependencies": {
-                        "is-extendable": {
-                            "version": "1.0.1",
-                            "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                            "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                            "dev": true,
-                            "requires": {
-                                "is-plain-object": "^2.0.4"
-                            }
-                        }
-                    }
-                },
-                "fill-range": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                    "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                    "dev": true,
-                    "requires": {
-                        "extend-shallow": "^2.0.1",
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1",
-                        "to-regex-range": "^2.1.0"
-                    },
-                    "dependencies": {
-                        "extend-shallow": {
-                            "version": "2.0.1",
-                            "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                            "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                            "dev": true,
-                            "requires": {
-                                "is-extendable": "^0.1.0"
-                            }
-                        }
-                    }
-                },
-                "is-number": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                    "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                    "dev": true,
-                    "requires": {
-                        "kind-of": "^3.0.2"
-                    },
-                    "dependencies": {
-                        "kind-of": {
-                            "version": "3.2.2",
-                            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                            "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                            "dev": true,
-                            "requires": {
-                                "is-buffer": "^1.1.5"
-                            }
-                        }
-                    }
-                },
-                "micromatch": {
-                    "version": "3.1.10",
-                    "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                    "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                    "dev": true,
-                    "requires": {
-                        "arr-diff": "^4.0.0",
-                        "array-unique": "^0.3.2",
-                        "braces": "^2.3.1",
-                        "define-property": "^2.0.2",
-                        "extend-shallow": "^3.0.2",
-                        "extglob": "^2.0.4",
-                        "fragment-cache": "^0.2.1",
-                        "kind-of": "^6.0.2",
-                        "nanomatch": "^1.2.9",
-                        "object.pick": "^1.3.0",
-                        "regex-not": "^1.0.0",
-                        "snapdragon": "^0.8.1",
-                        "to-regex": "^3.0.2"
-                    }
-                },
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                },
-                "schema-utils": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-                    "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-                    "dev": true,
-                    "requires": {
-                        "ajv": "^6.1.0",
-                        "ajv-errors": "^1.0.0",
-                        "ajv-keywords": "^3.1.0"
-                    }
-                },
-                "to-regex-range": {
-                    "version": "2.1.1",
-                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                    "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                    "dev": true,
-                    "requires": {
-                        "is-number": "^3.0.0",
-                        "repeat-string": "^1.6.1"
-                    }
-                }
+        "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+            "engines": {
+                "node": ">=8"
             }
         },
-        "webpack-dev-middleware": {
-            "version": "3.7.3",
-            "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
-            "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
-            "dev": true,
-            "requires": {
-                "memory-fs": "^0.4.1",
-                "mime": "^2.4.4",
-                "mkdirp": "^0.5.1",
-                "range-parser": "^1.2.1",
-                "webpack-log": "^2.0.0"
+        "node_modules/yargs/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
             },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/yargs/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
             "dependencies": {
-                "mime": {
-                    "version": "2.6.0",
-                    "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-                    "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
-                    "dev": true
-                },
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                }
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "webpack-filter-warnings-plugin": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz",
-            "integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==",
-            "dev": true
+        "node_modules/yargs/node_modules/yargs-parser": {
+            "version": "21.1.1",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+            "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+            "engines": {
+                "node": ">=12"
+            }
         },
-        "webpack-hot-middleware": {
-            "version": "2.25.1",
-            "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz",
-            "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==",
+        "node_modules/yauzl": {
+            "version": "2.10.0",
+            "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+            "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
             "dev": true,
-            "requires": {
-                "ansi-html-community": "0.0.8",
-                "html-entities": "^2.1.0",
-                "querystring": "^0.2.0",
-                "strip-ansi": "^6.0.0"
+            "dependencies": {
+                "buffer-crc32": "~0.2.3",
+                "fd-slicer": "~1.1.0"
             }
         },
-        "webpack-log": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-            "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-            "dev": true,
-            "requires": {
-                "ansi-colors": "^3.0.0",
-                "uuid": "^3.3.2"
+        "node_modules/yocto-queue": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+            "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+            "peer": true,
+            "engines": {
+                "node": ">=10"
             },
-            "dependencies": {
-                "ansi-colors": {
-                    "version": "3.2.4",
-                    "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-                    "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
-                    "dev": true
-                }
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "webpack-sources": {
-            "version": "1.4.3",
-            "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-            "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+        "node_modules/zdog": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/zdog/-/zdog-1.1.3.tgz",
+            "integrity": "sha512-raRj6r0gPzopFm5XWBJZr/NuV4EEnT4iE+U3dp5FV5pCb588Gmm3zLIp/j9yqqcMiHH8VNQlerLTgOqL7krh6w==",
+            "peer": true
+        },
+        "node_modules/zip-stream": {
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
+            "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
             "dev": true,
-            "requires": {
-                "source-list-map": "^2.0.0",
-                "source-map": "~0.6.1"
-            },
             "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true
+                "archiver-utils": "^2.1.0",
+                "compress-commons": "^2.1.1",
+                "readable-stream": "^3.4.0"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/zustand": {
+            "version": "3.7.2",
+            "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
+            "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
+            "peer": true,
+            "engines": {
+                "node": ">=12.7.0"
+            },
+            "peerDependencies": {
+                "react": ">=16.8"
+            },
+            "peerDependenciesMeta": {
+                "react": {
+                    "optional": true
                 }
             }
         },
-        "whatwg-encoding": {
+        "node_modules/zwitch": {
             "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
-            "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
-            "requires": {
-                "iconv-lite": "0.4.24"
+            "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
+            "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
+            "dev": true,
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "whatwg-mimetype": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
-            "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
+        "reactium_modules/@atomic-reactor/reactium-admin-core": {
+            "version": "5.0.0",
+            "license": "MIT",
+            "dependencies": {
+                "@atomic-reactor/react-custom-scrollbars": "^4.2.2",
+                "@atomic-reactor/react-jsx-parser": "^1.21.0",
+                "@babel/runtime-corejs2": "^7.21.0",
+                "camelcase": "^6.2.0",
+                "dropzone": "^5.5.1",
+                "fullscrn": "^1.3.3",
+                "gsap": "^2.1.3",
+                "is-hotkey": "^0.1.6",
+                "lunr": "^2.3.8",
+                "memory-cache": "^0.2.0",
+                "moment": "^2.27.0",
+                "pluralize": "^8.0.0",
+                "re-resizable": "^6.9.9",
+                "react-beautiful-dnd": "^13.1.1",
+                "react-draggable": "^4.2.0",
+                "react-live": "^2.2.2",
+                "react-player": "^2.13.0",
+                "react-spring": "^9.1.2",
+                "react-toastify": "^5.2.1",
+                "react-touch-events": "^2.1.0",
+                "react-use-gesture": "^7.0.11",
+                "uuid": "^3.4.0",
+                "victory": "^32.3.0"
+            }
         },
-        "whatwg-url": {
-            "version": "8.7.0",
-            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
-            "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
-            "requires": {
-                "lodash": "^4.7.0",
-                "tr46": "^2.1.0",
-                "webidl-conversions": "^6.1.0"
+        "reactium_modules/@atomic-reactor/reactium-admin-core/_npm": {
+            "name": "@atomic-reactor/reactium-admin-core",
+            "version": "1.0.2",
+            "extraneous": true,
+            "license": "MIT",
+            "dependencies": {
+                "@atomic-reactor/react-custom-scrollbars": "^4.2.2",
+                "@atomic-reactor/react-jsx-parser": "^1.21.0",
+                "@babel/runtime-corejs2": "^7.21.0",
+                "camelcase": "^6.2.0",
+                "dropzone": "^5.5.1",
+                "fullscrn": "^1.3.3",
+                "gsap": "^2.1.3",
+                "is-hotkey": "^0.1.6",
+                "lunr": "^2.3.8",
+                "memory-cache": "^0.2.0",
+                "moment": "^2.27.0",
+                "pluralize": "^8.0.0",
+                "react-beautiful-dnd": "^13.1.1",
+                "react-draggable": "^4.2.0",
+                "react-live": "^2.2.2",
+                "react-player": "^2.7.2",
+                "react-spring": "^9.1.2",
+                "react-toastify": "^5.2.1",
+                "react-touch-events": "^2.1.0",
+                "react-use-gesture": "^7.0.11",
+                "slate": "^0.57.1",
+                "slate-history": "^0.57.1",
+                "slate-react": "^0.57.1",
+                "uuid": "^3.4.0",
+                "victory": "^32.3.0"
             }
         },
-        "when": {
-            "version": "3.7.8",
-            "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
-            "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-admin-core/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
-        "which": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-            "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-            "requires": {
-                "isexe": "^2.0.0"
+        "reactium_modules/@atomic-reactor/reactium-api": {
+            "version": "5.0.3",
+            "license": "MIT",
+            "dependencies": {
+                "http-proxy-middleware": "^0.20.0",
+                "parse": "^3.4.0",
+                "socket.io-client": "^4.6.1"
             }
         },
-        "which-boxed-primitive": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-            "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-            "requires": {
-                "is-bigint": "^1.0.1",
-                "is-boolean-object": "^1.1.0",
-                "is-number-object": "^1.0.4",
-                "is-string": "^1.0.5",
-                "is-symbol": "^1.0.3"
+        "reactium_modules/@atomic-reactor/reactium-api/_npm": {
+            "name": "@atomic-reactor/reactium-api",
+            "version": "5.0.3",
+            "extraneous": true,
+            "license": "MIT",
+            "dependencies": {
+                "http-proxy-middleware": "^0.20.0",
+                "parse": "^3.4.0",
+                "socket.io-client": "^4.6.1"
             }
         },
-        "which-module": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-            "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-capability": {
+            "version": "5.0.1",
+            "license": "MIT"
         },
-        "wide-align": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
-            "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+        "reactium_modules/@atomic-reactor/reactium-capability/_npm": {
+            "name": "@atomic-reactor/reactium-capability",
+            "version": "5.0.1",
+            "extraneous": true,
+            "license": "MIT"
+        },
+        "reactium_modules/@atomic-reactor/reactium-core": {
+            "version": "5.0.22",
+            "license": "MIT",
+            "dependencies": {
+                "@atomic-reactor/dirname": "^1.0.2",
+                "@atomic-reactor/reactium-sdk-core": "^1.4.3",
+                "@babel/cli": "^7.21.0",
+                "@babel/node": "^7.20.7",
+                "@loadable/component": "^5.15.3",
+                "action-sequence": "^1.1.2",
+                "axios": "^0.26.0",
+                "axios-retry": "^3.2.4",
+                "body-parser": "^1.20.2",
+                "camelcase": "^7.0.1",
+                "chalk": "^4.1.2",
+                "classnames": "^2.3.2",
+                "cookie-parser": "^1.4.6",
+                "cookie-session": "^2.0.0",
+                "copy-to-clipboard": "^3.3.3",
+                "core-js": "^3.29.1",
+                "cors": "^2.8.5",
+                "cross-env": "^7.0.3",
+                "dayjs": "^1.11.7",
+                "directory-tree": "^2.2.7",
+                "express": "^4.17.3",
+                "express-static-gzip": "^2.1.7",
+                "fs-extra": "^10.0.0",
+                "globby": "^11.0.3",
+                "http-auth": "^3.2.4",
+                "http-proxy-middleware": "^0.20.0",
+                "jed": "^1.1.1",
+                "jsdom": "^16.5.2",
+                "memory-cache": "^0.2.0",
+                "moment": "^2.29.4",
+                "morgan": "^1.10.0",
+                "npm-run-all": "^4.1.5",
+                "object-path": "^0.11.8",
+                "prettier": "^1.19.1",
+                "prop-types": "^15.8.1",
+                "querystring-browser": "^1.0.4",
+                "react": "^18.2.0",
+                "react-dom": "^18.2.0",
+                "react-helmet": "^6.1.0",
+                "react-router-dom": "~5.2.0",
+                "regenerator-runtime": "^0.13.11",
+                "run-script-os": "^1.1.6",
+                "semver": "^7.3.8",
+                "serialize-javascript": "^6.0.1",
+                "shallow-equals": "^1.0.0",
+                "spdy": "^4.0.2",
+                "underscore": "^1.13.6",
+                "uuid": "^3.4.0",
+                "xss": "^1.0.14"
+            },
+            "devDependencies": {
+                "@atomic-reactor/gulp-run": "^1.8.0",
+                "@atomic-reactor/gulp-watch": "^5.0.2",
+                "@atomic-reactor/node-sass-reactium-importer": "^1.0.0",
+                "@atomic-reactor/webpack-po-loader": "^5.0.2",
+                "@babel/core": "^7.21.3",
+                "@babel/plugin-proposal-class-properties": "^7.18.6",
+                "@babel/plugin-proposal-export-default-from": "^7.18.10",
+                "@babel/plugin-proposal-private-methods": "^7.18.6",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+                "@babel/preset-env": "^7.20.2",
+                "@babel/preset-react": "^7.18.6",
+                "ajv": "^8.12.0",
+                "apidoc": "^0.25.0",
+                "babel-core": "^7.0.0-bridge.0",
+                "babel-eslint": "^10.1.0",
+                "babel-jest": "^26.6.3",
+                "babel-loader": "^9.1.2",
+                "babel-plugin-module-resolver": "^4.1.0",
+                "browser-sync": "^2.28.3",
+                "cli-spinners": "^2.7.0",
+                "compression-webpack-plugin": "^10.0.0",
+                "decamelize": "^3.2.0",
+                "del": "^5.1.0",
+                "eslint": "^5.16.0",
+                "eslint-plugin-react": "^7.28.0",
+                "eslint-plugin-react-hooks": "^2.5.0",
+                "fast-diff": "^1.2.0",
+                "file-api": "^0.10.4",
+                "fs-readdir-recursive": "^1.1.0",
+                "gettext-extract": "^2.0.1",
+                "gulp": "^4.0.2",
+                "gulp-autoprefixer": "^8.0.0",
+                "gulp-clean-css": "^4.3.0",
+                "gulp-concat": "^2.6.1",
+                "gulp-gzip": "^1.4.2",
+                "gulp-if": "^3.0.0",
+                "gulp-rename": "^2.0.0",
+                "gulp-sass": "^5.1.0",
+                "gulp-sourcemaps": "^3.0.0",
+                "gulp4-run-sequence": "^1.0.1",
+                "handlebars": "^4.7.7",
+                "husky": "^3.1.0",
+                "lint-staged": "^9.4.3",
+                "mime": "^1.6.0",
+                "mime-db": "^1.52.0",
+                "mime-type": "^4.0.0",
+                "module-alias": "^2.2.2",
+                "node-polyfill-webpack-plugin": "^2.0.1",
+                "nodemon": "^2.0.21",
+                "open": "^8.4.2",
+                "ora": "^5.4.1",
+                "reactium": "^5.0.0",
+                "readdir-recursive": "0.0.4",
+                "sass": "^1.59.3",
+                "sass-embedded": "^1.62.0",
+                "slugify": "^1.6.5",
+                "stylelint": "^13.12.0",
+                "webpack": "^5.76.2",
+                "webpack-dev-middleware": "^5.3.3",
+                "webpack-hot-middleware": "^2.25.3"
+            }
+        },
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/ansi-escapes": {
+            "version": "4.3.2",
+            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+            "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
             "dev": true,
-            "requires": {
-                "string-width": "^1.0.2 || 2 || 3 || 4"
+            "dependencies": {
+                "type-fest": "^0.21.3"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "widest-line": {
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/cli-cursor": {
             "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
-            "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+            "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
             "dev": true,
-            "requires": {
-                "string-width": "^4.0.0"
+            "dependencies": {
+                "restore-cursor": "^3.1.0"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "window-size": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
-            "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/cli-width": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+            "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 10"
+            }
         },
-        "winston": {
-            "version": "2.4.5",
-            "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz",
-            "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/commander": {
+            "version": "6.2.1",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+            "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+            "dev": true,
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/figures": {
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+            "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
             "dev": true,
-            "requires": {
-                "async": "~1.0.0",
-                "colors": "1.0.x",
-                "cycle": "1.0.x",
-                "eyes": "0.1.x",
-                "isstream": "0.1.x",
-                "stack-trace": "0.0.x"
-            },
             "dependencies": {
-                "async": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
-                    "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
-                    "dev": true
-                }
+                "escape-string-regexp": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "winston-transport": {
-            "version": "4.5.0",
-            "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
-            "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/form-data": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+            "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
             "dev": true,
-            "requires": {
-                "logform": "^2.3.2",
-                "readable-stream": "^3.6.0",
-                "triple-beam": "^1.3.0"
-            },
             "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                }
+                "asynckit": "^0.4.0",
+                "combined-stream": "^1.0.8",
+                "mime-types": "^2.1.12"
+            },
+            "engines": {
+                "node": ">= 6"
             }
         },
-        "word-wrap": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-            "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
-        },
-        "wordwrap": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-            "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/ignore": {
+            "version": "5.2.4",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+            "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4"
+            }
         },
-        "workbox-background-sync": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz",
-            "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/inquirer": {
+            "version": "7.3.3",
+            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+            "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "dependencies": {
+                "ansi-escapes": "^4.2.1",
+                "chalk": "^4.1.0",
+                "cli-cursor": "^3.1.0",
+                "cli-width": "^3.0.0",
+                "external-editor": "^3.0.3",
+                "figures": "^3.0.0",
+                "lodash": "^4.17.19",
+                "mute-stream": "0.0.8",
+                "run-async": "^2.4.0",
+                "rxjs": "^6.6.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0",
+                "through": "^2.3.6"
+            },
+            "engines": {
+                "node": ">=8.0.0"
             }
         },
-        "workbox-broadcast-update": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz",
-            "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+            "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "engines": {
+                "node": ">=8"
             }
         },
-        "workbox-build": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz",
-            "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/mime": {
+            "version": "1.6.0",
+            "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
             "dev": true,
-            "requires": {
-                "@babel/core": "^7.8.4",
-                "@babel/preset-env": "^7.8.4",
-                "@babel/runtime": "^7.8.4",
-                "@hapi/joi": "^15.1.0",
-                "@rollup/plugin-node-resolve": "^7.1.1",
-                "@rollup/plugin-replace": "^2.3.1",
-                "@surma/rollup-plugin-off-main-thread": "^1.1.1",
-                "common-tags": "^1.8.0",
-                "fast-json-stable-stringify": "^2.1.0",
-                "fs-extra": "^8.1.0",
-                "glob": "^7.1.6",
-                "lodash.template": "^4.5.0",
-                "pretty-bytes": "^5.3.0",
-                "rollup": "^1.31.1",
-                "rollup-plugin-babel": "^4.3.3",
-                "rollup-plugin-terser": "^5.3.1",
-                "source-map": "^0.7.3",
-                "source-map-url": "^0.4.0",
-                "stringify-object": "^3.3.0",
-                "strip-comments": "^1.0.2",
-                "tempy": "^0.3.0",
-                "upath": "^1.2.0",
-                "workbox-background-sync": "^5.1.4",
-                "workbox-broadcast-update": "^5.1.4",
-                "workbox-cacheable-response": "^5.1.4",
-                "workbox-core": "^5.1.4",
-                "workbox-expiration": "^5.1.4",
-                "workbox-google-analytics": "^5.1.4",
-                "workbox-navigation-preload": "^5.1.4",
-                "workbox-precaching": "^5.1.4",
-                "workbox-range-requests": "^5.1.4",
-                "workbox-routing": "^5.1.4",
-                "workbox-strategies": "^5.1.4",
-                "workbox-streams": "^5.1.4",
-                "workbox-sw": "^5.1.4",
-                "workbox-window": "^5.1.4"
-            },
-            "dependencies": {
-                "fs-extra": {
-                    "version": "8.1.0",
-                    "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-                    "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-                    "dev": true,
-                    "requires": {
-                        "graceful-fs": "^4.2.0",
-                        "jsonfile": "^4.0.0",
-                        "universalify": "^0.1.0"
-                    }
-                },
-                "source-map": {
-                    "version": "0.7.3",
-                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-                    "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-                    "dev": true
-                }
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "workbox-cacheable-response": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz",
-            "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/mimic-fn": {
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "engines": {
+                "node": ">=6"
             }
         },
-        "workbox-core": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz",
-            "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/mute-stream": {
+            "version": "0.0.8",
+            "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+            "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
             "dev": true
         },
-        "workbox-expiration": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz",
-            "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/onetime": {
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+            "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "dependencies": {
+                "mimic-fn": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "workbox-google-analytics": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz",
-            "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==",
-            "dev": true,
-            "requires": {
-                "workbox-background-sync": "^5.1.4",
-                "workbox-core": "^5.1.4",
-                "workbox-routing": "^5.1.4",
-                "workbox-strategies": "^5.1.4"
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/prettier": {
+            "version": "1.19.1",
+            "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+            "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+            "bin": {
+                "prettier": "bin-prettier.js"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "workbox-navigation-preload": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz",
-            "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/reactium/-/reactium-5.0.0.tgz",
+            "integrity": "sha512-5SdM8Jt23OPhLh+s8mjhvmmpG5IaBqfeR+/Ryuk1uDLriJ1a+v8yd2lPoeuHyyCIg4oTCF+W+6IxKHGf47S6og==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "dependencies": {
+                "@atomic-reactor/decompress": "^4.2.5",
+                "@atomic-reactor/reactium-sdk-core": "^1.2.21",
+                "action-sequence": "^1.1.2",
+                "axios": "^1.1.3",
+                "camelcase": "^6.2.0",
+                "chalk": "^4.1.2",
+                "cli-spinners": "^2.7.0",
+                "commander": "^6.1.0",
+                "crypto": "^1.0.1",
+                "decamelize": "^4.0.0",
+                "delete-empty": "^3.0.0",
+                "folder-zipper": "^1.0.0",
+                "fs-extra": "^10.1.0",
+                "fs-readdir-recursive": "^1.1.0",
+                "globby": "^13.1.2",
+                "handlebars": "^4.7.7",
+                "ignored": "^2.0.4",
+                "inquirer": "^7.3.3",
+                "inquirer-autocomplete-prompt": "^1.0.2",
+                "inquirer-fuzzy-path": "^2.3.0",
+                "memory-cache": "^0.2.0",
+                "micromatch": "^4.0.5",
+                "moment": "^2.29.4",
+                "object-path": "^0.11.8",
+                "ora": "^5.1.0",
+                "parse": "^3.4.4",
+                "portscanner": "^2.2.0",
+                "prettier": "1.18.1",
+                "prompt": "^1.0.0",
+                "request": "^2.88.2",
+                "semver": "^7.3.8",
+                "slugify": "^1.4.5",
+                "tar": "^6.1.11",
+                "text-table": "^0.2.0",
+                "underscore": "^1.13.6",
+                "uuid": "^3.3.3"
+            },
+            "bin": {
+                "reactium": "arcli.js"
+            },
+            "engines": {
+                "node": ">=18.12.1",
+                "npm": ">=9.1.1"
             }
         },
-        "workbox-precaching": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz",
-            "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium/node_modules/axios": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+            "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "dependencies": {
+                "follow-redirects": "^1.15.0",
+                "form-data": "^4.0.0",
+                "proxy-from-env": "^1.1.0"
             }
         },
-        "workbox-range-requests": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz",
-            "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium/node_modules/camelcase": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+            "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "workbox-routing": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz",
-            "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium/node_modules/decamelize": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+            "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "workbox-strategies": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz",
-            "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium/node_modules/globby": {
+            "version": "13.1.4",
+            "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz",
+            "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4",
-                "workbox-routing": "^5.1.4"
+            "dependencies": {
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.2.11",
+                "ignore": "^5.2.0",
+                "merge2": "^1.4.1",
+                "slash": "^4.0.0"
+            },
+            "engines": {
+                "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "workbox-streams": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz",
-            "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/reactium/node_modules/prettier": {
+            "version": "1.18.1",
+            "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.1.tgz",
+            "integrity": "sha512-cO2Lm9UuFJHhNgHSChbFddQEzNPP+sA6fX1tGmC0VNqTc2X+7EH0gpGWdEX0HfCe5+NVyOyyyWUpLKsb8LU5vg==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4",
-                "workbox-routing": "^5.1.4"
+            "bin": {
+                "prettier": "bin-prettier.js"
+            },
+            "engines": {
+                "node": ">=4"
             }
         },
-        "workbox-sw": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz",
-            "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==",
-            "dev": true
-        },
-        "workbox-window": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz",
-            "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/restore-cursor": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+            "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
             "dev": true,
-            "requires": {
-                "workbox-core": "^5.1.4"
+            "dependencies": {
+                "onetime": "^5.1.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "worker-farm": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-            "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/slash": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+            "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
             "dev": true,
-            "requires": {
-                "errno": "~0.1.7"
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "wrap-ansi": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-            "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/string-width": {
+            "version": "4.2.3",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
             "dev": true,
-            "requires": {
-                "ansi-styles": "^4.0.0",
-                "string-width": "^4.1.0",
-                "strip-ansi": "^6.0.0"
-            },
             "dependencies": {
-                "ansi-styles": {
-                    "version": "4.3.0",
-                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-                    "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-                    "dev": true,
-                    "requires": {
-                        "color-convert": "^2.0.1"
-                    }
-                },
-                "color-convert": {
-                    "version": "2.0.1",
-                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-                    "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-                    "dev": true,
-                    "requires": {
-                        "color-name": "~1.1.4"
-                    }
-                },
-                "color-name": {
-                    "version": "1.1.4",
-                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-                    "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-                    "dev": true
-                }
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "wrappy": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-        },
-        "write": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
-            "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/strip-ansi": {
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
             "dev": true,
-            "requires": {
-                "mkdirp": "^0.5.1"
-            },
             "dependencies": {
-                "mkdirp": {
-                    "version": "0.5.5",
-                    "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                    "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                    "dev": true,
-                    "requires": {
-                        "minimist": "^1.2.5"
-                    }
-                }
+                "ansi-regex": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
             }
         },
-        "write-file-atomic": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-            "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+        "reactium_modules/@atomic-reactor/reactium-core/node_modules/type-fest": {
+            "version": "0.21.3",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+            "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
             "dev": true,
-            "requires": {
-                "imurmurhash": "^0.1.4",
-                "is-typedarray": "^1.0.0",
-                "signal-exit": "^3.0.2",
-                "typedarray-to-buffer": "^3.1.5"
-            }
-        },
-        "ws": {
-            "version": "7.4.0",
-            "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
-            "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ=="
-        },
-        "xdg-basedir": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
-            "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
-            "dev": true
-        },
-        "xml-name-validator": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
-            "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
-        },
-        "xmlchars": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
-            "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
-        },
-        "xmlhttprequest": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
-            "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
-        },
-        "xmlhttprequest-ssl": {
-            "version": "1.6.3",
-            "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
-            "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q=="
-        },
-        "xregexp": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
-            "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=",
-            "dev": true
-        },
-        "xss": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.10.tgz",
-            "integrity": "sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw==",
-            "requires": {
-                "commander": "^2.20.3",
-                "cssfilter": "0.0.10"
+            "engines": {
+                "node": ">=10"
             },
-            "dependencies": {
-                "commander": {
-                    "version": "2.20.3",
-                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-                }
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "xtend": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-            "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-        },
-        "y18n": {
-            "version": "5.0.8",
-            "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
-            "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
-            "dev": true
-        },
-        "yallist": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+        "reactium_modules/@atomic-reactor/reactium-forcessl": {
+            "version": "1.0.0",
+            "license": "MIT"
         },
-        "yaml": {
-            "version": "1.10.2",
-            "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-            "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-role": {
+            "version": "5.0.1",
+            "license": "MIT"
         },
-        "yamljs": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
-            "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==",
-            "dev": true,
-            "requires": {
-                "argparse": "^1.0.7",
-                "glob": "^7.0.5"
-            }
+        "reactium_modules/@atomic-reactor/reactium-role/_npm": {
+            "name": "@atomic-reactor/reactium-role",
+            "version": "5.0.1",
+            "extraneous": true,
+            "license": "MIT"
         },
-        "yargs": {
-            "version": "16.2.0",
-            "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-            "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
-            "dev": true,
-            "requires": {
-                "cliui": "^7.0.2",
-                "escalade": "^3.1.1",
-                "get-caller-file": "^2.0.5",
-                "require-directory": "^2.1.1",
-                "string-width": "^4.2.0",
-                "y18n": "^5.0.5",
-                "yargs-parser": "^20.2.2"
-            }
+        "reactium_modules/@atomic-reactor/reactium-setting": {
+            "version": "5.0.1",
+            "license": "MIT"
         },
-        "yargs-parser": {
-            "version": "20.2.9",
-            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-            "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-setting/_npm": {
+            "name": "@atomic-reactor/reactium-setting",
+            "version": "5.0.1",
+            "extraneous": true,
+            "license": "MIT"
         },
-        "yauzl": {
-            "version": "2.10.0",
-            "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-            "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
-            "dev": true,
-            "requires": {
-                "buffer-crc32": "~0.2.3",
-                "fd-slicer": "~1.1.0"
+        "reactium_modules/@atomic-reactor/reactium-svg": {
+            "version": "0.0.3",
+            "license": "MIT",
+            "dependencies": {
+                "@svgr/webpack": "6.3.1"
             }
         },
-        "yeast": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-            "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
-        },
-        "zip-stream": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
-            "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
-            "dev": true,
-            "requires": {
-                "archiver-utils": "^2.1.0",
-                "compress-commons": "^2.1.1",
-                "readable-stream": "^3.4.0"
-            },
+        "reactium_modules/@atomic-reactor/reactium-svg/_npm": {
+            "name": "@atomic-reactor/reactium-svg",
+            "version": "0.0.3",
+            "extraneous": true,
+            "license": "MIT",
             "dependencies": {
-                "readable-stream": {
-                    "version": "3.6.0",
-                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-                    "dev": true,
-                    "requires": {
-                        "inherits": "^2.0.3",
-                        "string_decoder": "^1.1.1",
-                        "util-deprecate": "^1.0.1"
-                    }
-                }
+                "@svgr/webpack": "6.3.1"
             }
         },
-        "zwitch": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
-            "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
-            "dev": true
+        "reactium_modules/@atomic-reactor/reactium-user": {
+            "version": "5.0.1",
+            "license": "MIT"
+        },
+        "reactium_modules/@atomic-reactor/reactium-user/_npm": {
+            "name": "@atomic-reactor/reactium-user",
+            "version": "5.0.1",
+            "extraneous": true,
+            "license": "MIT"
         }
     }
 }
diff --git a/package.json b/package.json
index 9754fb1d..a836ee87 100644
--- a/package.json
+++ b/package.json
@@ -1,26 +1,18 @@
 {
   "name": "actinium-admin",
-  "version": "0.0.1",
+  "version": "5.0.0-alpha-1",
   "description": "Reactium front-end to Actinium.",
   "main": "index.js",
   "scripts": {
-    "start": "node build/.core/index.js",
-    "test": "jest",
-    "static": "npm-run-all build:* && gulp static",
+    "heroku-prebuild": "npx reactium install",
     "local": "gulp local",
-    "local:ssr": "gulp local:ssr",
     "clean": "gulp clean",
     "docker": "npm-run-all -s clean docker:*",
     "docker:build": "cross-env docker image build -t $npm_package_name:$npm_package_version -t $npm_package_name:latest .",
     "docker:push": "cross-env docker push $npm_package_name:$npm_package_version && cross-env docker push $npm_package_name:$npm_package_version:latest",
     "precommit": "lint-staged",
-    "docs": "gulp apidocs",
-    "publisher": "arcli publisher",
-    "build": "npm-run-all build:*",
-    "build:gulp": "cross-env NODE_ENV=production gulp",
-    "build:babel-core": "cross-env NODE_ENV=production babel .core --out-dir build/.core",
-    "build:babel-reactium_modules": "cross-env NODE_ENV=production babel reactium_modules --out-dir build/reactium_modules",
-    "build:babel-src": "cross-env NODE_ENV=production babel src --out-dir build/src"
+    "start": "node src/index.mjs",
+    "build": "cross-env NODE_ENV=production gulp"
   },
   "keywords": [
     "react",
@@ -32,190 +24,21 @@
   "author": "Cam Tullos <cam@tullos.ninja> (http://cam.tullos.ninja) and John Dillick <john@dillick.us>",
   "license": "MIT",
   "engines": {
-    "node": "12.13.0",
-    "npm": ">=6.12.0"
+    "node": "18.x",
+    "npm": "9.x"
   },
   "repository": {
     "type": "git",
-    "url": "https://github.com/Atomic-Reactor/Actinium-Admin.git"
+    "url": "https://github.com/Atomic-Reactor/Reactium.git"
   },
   "browser": {
     "parse/node": false
   },
   "dependencies": {
-    "@atomic-reactor/actinium-auth": "^1.0.2",
-    "@atomic-reactor/reactium-sdk-core": "^1.2.13",
-    "@atomic-reactor/reactium-ui": "^0.3.6",
-    "@babel/cli": "^7.17.3",
-    "@babel/node": "^7.16.8",
-    "@loadable/component": "^5.15.2",
-    "action-sequence": "^1.1.2",
-    "axios": "^0.26.0",
-    "axios-retry": "^3.2.4",
-    "base64-js": "^1.3.1",
-    "body-parser": "^1.19.2",
-    "chalk": "^4.1.2",
-    "classnames": "^2.3.1",
-    "cookie-parser": "^1.4.6",
-    "cookie-session": "^2.0.0",
-    "copy-to-clipboard": "^3.3.1",
-    "core-js": "^3.21.1",
-    "cors": "^2.8.5",
-    "cross-env": "^7.0.3",
-    "dayjs": "^1.10.7",
-    "directory-tree": "^2.2.7",
-    "express": "^4.17.3",
-    "express-static-gzip": "^2.1.5",
-    "fs-extra": "^10.0.0",
-    "fullscrn": "^1.3.3",
-    "globby": "^11.0.3",
-    "gsap": "^2.1.3",
-    "http-auth": "^3.2.4",
-    "http-proxy-middleware": "^0.20.0",
-    "is-hotkey": "^0.1.6",
-    "jed": "^1.1.1",
-    "jsdom": "^16.5.2",
-    "lunr": "^2.3.8",
-    "marked": "^0.8.2",
-    "memory-cache": "^0.2.0",
-    "moment": "^2.29.1",
-    "morgan": "^1.10.0",
-    "npm-run-all": "^4.1.5",
-    "object-path": "^0.11.8",
-    "parse": "^2.17.0",
-    "pluralize": "^8.0.0",
-    "prettier": "^1.19.1",
-    "prism-react-renderer": "^1.1.1",
-    "prop-types": "^15.8.1",
-    "querystring-browser": "^1.0.4",
-    "react": "^17.0.2",
-    "react-custom-scrollbars": "^4.2.1",
-    "react-dom": "^17.0.2",
-    "react-draggable": "^4.2.0",
-    "react-frame-component": "^4.1.3",
-    "react-helmet": "^6.1.0",
-    "react-jsx-parser": "^1.21.0",
-    "react-live": "^2.2.2",
-    "react-player": "^2.7.2",
-    "react-redux": "^7.2.3",
-    "react-router-config": "^5.1.1",
-    "react-router-dom": "^5.2.0",
-    "react-spring": "^9.1.2",
-    "react-syntax-highlighter": "^11.0.2",
-    "react-use-gesture": "^7.0.11",
-    "redbox-react": "^1.6.0",
-    "redux": "^4.0.5",
-    "redux-devtools": "^3.6.0",
-    "redux-devtools-dock-monitor": "^1.1.3",
-    "redux-devtools-log-monitor": "^2.0.0",
-    "redux-local-persist": "0.1.0",
-    "redux-super-thunk": "0.0.10",
-    "regenerator-runtime": "^0.13.9",
-    "run-script-os": "^1.1.6",
-    "semver": "^7.3.5",
-    "serialize-javascript": "^6.0.0",
-    "shallow-equals": "^1.0.0",
-    "slate": "^0.57.1",
-    "slate-history": "^0.57.1",
-    "slate-react": "^0.57.1",
-    "socket.io-client": "^3.1.0",
-    "tree-flatten": "^1.0.0",
-    "underscore": "*",
-    "uuid": "^3.4.0",
-    "xss": "^1.0.10",
-    "@atomic-reactor/reactium-api": "file:reactium_modules/@atomic-reactor/reactium-api/_npm",
-    "@atomic-reactor/reactium-capability": "file:reactium_modules/@atomic-reactor/reactium-capability/_npm",
-    "@atomic-reactor/reactium-redux": "file:reactium_modules/@atomic-reactor/reactium-redux/_npm",
-    "@atomic-reactor/reactium-role": "file:reactium_modules/@atomic-reactor/reactium-role/_npm",
-    "@atomic-reactor/reactium-setting": "file:reactium_modules/@atomic-reactor/reactium-setting/_npm",
-    "@atomic-reactor/reactium-user": "file:reactium_modules/@atomic-reactor/reactium-user/_npm"
+    "react": "^18.2.0"
   },
   "devDependencies": {
-    "@atomic-reactor/cli": "^2.2.72",
-    "@atomic-reactor/gulp-watch": "^5.0.2",
-    "@atomic-reactor/node-sass-reactium-importer": "^1.0.0",
-    "@atomic-reactor/webpack-po-loader": "0.0.3",
-    "@babel/core": "^7.17.5",
-    "@babel/plugin-proposal-class-properties": "^7.16.7",
-    "@babel/plugin-proposal-export-default-from": "^7.16.7",
-    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-    "@babel/preset-env": "^7.16.11",
-    "@babel/preset-flow": "^7.13.13",
-    "@babel/preset-react": "^7.16.7",
-    "apidoc": "^0.25.0",
-    "babel-core": "^7.0.0-bridge.0",
-    "babel-eslint": "^10.1.0",
-    "babel-jest": "^26.6.3",
-    "babel-loader": "^8.2.3",
-    "babel-plugin-module-resolver": "^4.1.0",
-    "browser-sync": "^2.27.7",
-    "camelcase": "^6.3.0",
-    "chalk": "^4.1.0",
-    "cli-spinners": "^2.6.1",
-    "clipboardy": "^2.1.0",
-    "compression-webpack-plugin": "^6.0.5",
-    "decamelize": "^3.2.0",
-    "del": "^5.1.0",
-    "enzyme": "^3.11.0",
-    "enzyme-adapter-react-16": "^1.15.6",
-    "eslint": "^5.16.0",
-    "eslint-plugin-react": "^7.28.0",
-    "eslint-plugin-react-hooks": "^2.5.0",
-    "fast-diff": "^1.2.0",
-    "fibers": "^5.0.1",
-    "file-api": "^0.10.4",
-    "flow-bin": "^0.136.0",
-    "fs-extra": "^9.1.0",
-    "fs-readdir-recursive": "^1.1.0",
-    "gettext-extract": "^2.0.1",
-    "gulp": "^4.0.2",
-    "gulp-autoprefixer": "^8.0.0",
-    "gulp-clean-css": "^4.3.0",
-    "gulp-concat": "^2.6.1",
-    "gulp-dart-sass": "^1.0.2",
-    "gulp-gzip": "^1.4.2",
-    "gulp-if": "^3.0.0",
-    "gulp-less": "^4.0.1",
-    "gulp-rename": "^2.0.0",
-    "gulp-run": "^1.7.1",
-    "gulp-sass": "^5.1.0",
-    "gulp-sourcemaps": "^3.0.0",
-    "gulp4-run-sequence": "^1.0.1",
-    "handlebars": "^4.7.7",
-    "husky": "^3.1.0",
-    "ignore-loader": "^0.1.2",
-    "jest": "^26.6.3",
-    "lint-staged": "^9.4.3",
-    "module-alias": "^2.2.2",
-    "node-sass": "^5.0.0",
-    "node-sass-functions-json": "^1.0.0",
-    "node-sass-tilde-importer": "^1.0.2",
-    "nodemon": "^2.0.15",
-    "open": "^8.4.0",
-    "ora": "^5.4.1",
-    "readdir-recursive": "0.0.4",
-    "sass": "^1.49.7",
-    "slugify": "^1.6.5",
-    "stylelint": "^13.12.0",
-    "terminal-link": "^2.0.0",
-    "webpack": "^4.44.1",
-    "webpack-dev-middleware": "^3.7.2",
-    "webpack-filter-warnings-plugin": "^1.2.1",
-    "webpack-hot-middleware": "^2.25.1",
-    "workbox-build": "^5.1.4",
-    "workbox-core": "^5.1.4",
-    "workbox-precaching": "^5.1.4",
-    "workbox-routing": "^5.1.4",
-    "workbox-strategies": "^5.1.4",
-    "yargs": "^16.2.0"
-  },
-  "reactiumDependencies": {
-    "@atomic-reactor/reactium-api": "1.0.1",
-    "@atomic-reactor/reactium-capability": "1.0.1",
-    "@atomic-reactor/reactium-role": "1.0.0",
-    "@atomic-reactor/reactium-user": "1.0.1",
-    "@atomic-reactor/reactium-setting": "1.0.0",
-    "@atomic-reactor/reactium-redux": "1.0.3"
+    "prettier": "^2.8.8"
   },
   "nodemonConfig": {
     "quite": true,
@@ -223,14 +46,28 @@
       "src/manifest.js"
     ],
     "ignore": [
-      "src/app/*"
+      "src/app/*",
+      ".tmp/"
     ]
   },
-  "husky": {},
   "lint-staged": {
     "*.{js,json,css,md}": [
       "prettier --write",
       "git add"
     ]
-  }
+  },
+  "reactiumDependencies": {
+    "@atomic-reactor/reactium-api": "5.0.3",
+    "@atomic-reactor/reactium-capability": "5.0.1",
+    "@atomic-reactor/reactium-role": "5.0.1",
+    "@atomic-reactor/reactium-user": "5.0.1",
+    "@atomic-reactor/reactium-setting": "5.0.1",
+    "@atomic-reactor/reactium-svg": "0.0.3",
+    "@atomic-reactor/reactium-core": "5.0.20"
+  },
+  "husky": {},
+  "workspaces": [
+    "reactium_modules/*",
+    "reactium_modules/@*/*"
+  ]
 }
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/state.js b/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/state.js
deleted file mode 100644
index ff8b4c56..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/state.js
+++ /dev/null
@@ -1 +0,0 @@
-export default {};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/ElementDialog/index.js b/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/ElementDialog/index.js
deleted file mode 100644
index c3fbae26..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/ElementDialog/index.js
+++ /dev/null
@@ -1,119 +0,0 @@
-import op from 'object-path';
-
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useRef,
-} from 'react';
-import Reactium, { useEventHandle, useHookComponent } from 'reactium-core/sdk';
-
-let ElementDialog = (props, ref) => {
-    const {
-        children,
-        className,
-        editor,
-        elements = [],
-        footer,
-        helpText,
-        pref,
-        onCollapse,
-        onExpand,
-        title,
-    } = props;
-
-    const header = {
-        title,
-        elements,
-    };
-
-    const collapsibleRef = useRef();
-    const dialogRef = useRef();
-
-    const { Alert, Button, Collapsible, Dialog, Icon } = useHookComponent(
-        'ReactiumUI',
-    );
-
-    let HelpComponent;
-    const helpPrefsKey = String(pref).replace('.dialog.', '.help.');
-    const expandedHelp = Reactium.Prefs.get(helpPrefsKey, true);
-    const _onHelpCollapse = () => Reactium.Prefs.set(helpPrefsKey, false);
-    const _onHelpExpand = () => Reactium.Prefs.set(helpPrefsKey, true);
-    const toggleHelp = () => {
-        const { expanded } = dialogRef.current.state;
-
-        if (expanded) {
-            collapsibleRef.current.toggle();
-        } else {
-            collapsibleRef.current.setState({ expanded: true });
-            dialogRef.current.expand();
-        }
-    };
-
-    if (helpText) {
-        header.elements.push(
-            <Button
-                key='help'
-                className='ar-dialog-header-btn'
-                color={Button.ENUMS.COLOR.CLEAR}
-                onClick={toggleHelp}
-                size={Button.ENUMS.SIZE.XS}>
-                <Icon name='Feather.HelpCircle' />
-            </Button>,
-        );
-
-        HelpComponent = useHookComponent(helpText, props => (
-            <div className={editor.cx('help')}>
-                <Alert
-                    {...props}
-                    color={Alert.ENUMS.COLOR.INFO}
-                    icon={<Icon name='Feather.HelpCircle' />}
-                />
-            </div>
-        ));
-    }
-
-    const _handle = () => ({
-        ...props,
-        ...dialogRef.current,
-    });
-
-    const [handle, setHandle] = useEventHandle(() => _handle);
-
-    useImperativeHandle(ref, () => handle);
-
-    useEffect(() => {
-        const newHandle = _handle();
-        Object.entries(newHandle).forEach(([key, value]) => {
-            handle[key] = value;
-        });
-        setHandle(handle);
-    }, [dialogRef.current]);
-
-    return (
-        <Dialog
-            ref={dialogRef}
-            pref={pref}
-            footer={footer}
-            header={header}
-            className={className}
-            onCollapse={onCollapse}
-            onExpand={onExpand}
-            {...props}>
-            {helpText && (
-                <Collapsible
-                    ref={collapsibleRef}
-                    expanded={expandedHelp}
-                    onCollapse={_onHelpCollapse}
-                    onExpand={_onHelpExpand}>
-                    <HelpComponent>{helpText}</HelpComponent>
-                </Collapsible>
-            )}
-            {children}
-        </Dialog>
-    );
-};
-
-ElementDialog = forwardRef(ElementDialog);
-
-export { ElementDialog, ElementDialog as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/_style.scss
deleted file mode 100644
index 5e51538d..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/_style.scss
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-.#{$admin-content-ns} {
-    position: relative;
-    overflow: hidden;
-    width: 100%;
-    height: 100vh;
-    padding-top: $height-admin-header;
-    display: flex;
-    flex-wrap: wrap;
-    flex-direction: column;
-    justify-content: stretch;
-    align-items: flex-start;
-    font-weight: normal;
-
-    @include breakpoint(md) {
-        flex-wrap: nowrap;
-        flex-direction: row;
-        align-items: stretch;
-        justify-content: flex-start;
-    }
-
-    &-editor {
-        position: relative;
-        flex-grow: 1;
-        height: 100%;
-        padding-right: 0;
-        overflow-y: auto;
-        overflow-x: hidden;
-
-        @include breakpoint(sm) {
-            padding-right: 50px;
-        }
-
-        @include breakpoint(md) {
-            padding-right: 0;
-            width: auto;
-        }
-
-        &-region {
-            position: relative;
-            padding: $padding-admin-content-zone;
-
-            &:empty {
-                display: none;
-            }
-
-            &-slug {
-                border-bottom: 1px solid darken($color-admin-header-border, 5%);
-                padding-bottom: $padding-admin-content-zone;
-            }
-        }
-    }
-
-    &-element {
-        &:empty {
-            display: none;
-        }
-
-        &:not(:first-child) {
-            margin-top: 25px;
-        }
-
-        &:first-child {
-            .admin-content-rte {
-                margin-top: -25px;
-            }
-        }
-    }
-
-    &-help {
-        @extend .p-xs-20;
-        border-bottom: 1px solid $color-admin-header-border;
-
-        .ar-alert {
-            box-shadow: 0 0 1px 1px $color-admin-header-border;
-
-            .content {
-                padding-bottom: 0;
-                padding-top: 2px;
-            }
-        }
-    }
-
-    &-errors {
-        margin: 0;
-        padding: 0;
-
-        li {
-            line-height: 1.5;
-            list-style: none;
-
-            &:not(:first-child) {
-                margin-top: 10px;
-            }
-        }
-    }
-
-    &-rte {
-        header {
-            display: flex;
-            border-bottom: 1px solid darken($color-admin-header-border, 5%);
-            border-top: 1px solid darken($color-admin-header-border, 5%);
-            margin-left: -24px;
-            margin-right: -24px;
-            padding: 24px 0 24px 24px;
-
-            h2 {
-                color: $color-gray;
-            }
-
-            .icon {
-                width: 30px;
-                margin-right: 16px;
-                color: $color-gray;
-                display: flex;
-                justify-content: center;
-            }
-        }
-
-        .editor {
-            // padding: 40px 0 24px 48px;
-            padding-left: 48px;
-            > .ar-rte {
-                > [data-gramm]:first-child {
-                    padding-top: 40px;
-                    padding-bottom: 40px;
-                }
-
-                p {
-                    line-height: 1.5;
-                    margin: 0;
-                }
-            }
-        }
-
-        .line {
-            border-bottom: 1px solid darken($color-admin-header-border, 5%);
-            margin: 0 -24px 32px -24px;
-        }
-    }
-}
-
-.zone-#{$admin-content-ns}-actions {
-    @include admin-actions-zone;
-    display: none;
-    position: fixed;
-    top: auto;
-    left: 50%;
-    bottom: $padding-admin-content-zone;
-    transform: translateX(-50%);
-}
-
-body.fullscreen {
-    .#{$admin-content-ns} {
-        padding-top: 0;
-    }
-}
-
-.content-save-btn {
-    min-width: 0;
-
-    @include breakpoint(md) {
-        min-width: 145px;
-    }
-}
-
-@import './Sidebar/style';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js
deleted file mode 100644
index 4e6a04d7..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import op from 'object-path';
-import React, { useEffect } from 'react';
-import {
-    __,
-    useHandle,
-    useHookComponent,
-    useRefs,
-    useSyncState,
-} from 'reactium-core/sdk';
-
-export const FieldType = props => {
-    const { id } = props;
-
-    const refs = useRefs();
-
-    const Editor = useHandle('ContentTypeEditor');
-
-    const { Toggle } = useHookComponent('ReactiumUI');
-
-    const val = id
-        ? op.get(Editor.getValue(), ['fields', id, 'options'], {})
-        : {};
-
-    const state = useSyncState({
-        options: {
-            defaultChecked: op.get(val, 'defaultChecked', false),
-            label: op.get(val, 'label', ''),
-        },
-    });
-
-    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
-
-    const onBeforeSave = params => {
-        const { fieldId } = params;
-        if (fieldId !== id) return;
-        op.set(params, 'fieldValue.options', state.get('options'));
-    };
-
-    const onChange = e => state.set('options.defaultChecked', e.target.checked);
-
-    const onLoad = () => {
-        const hooks = [
-            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
-        ];
-
-        return () => {
-            hooks.forEach(hookId => Reactium.Hook.unregister(hookId));
-        };
-    };
-
-    useEffect(onLoad, [Object.values(refs.get())]);
-
-    return (
-        <FieldTypeDialog {...props}>
-            <div className='form-group'>
-                <label>
-                    Label:
-                    <input
-                        type='text'
-                        value={state.get('options.label', '')}
-                        onChange={e =>
-                            state.set('options.label', e.target.value)
-                        }
-                    />
-                </label>
-            </div>
-            <div>
-                <Toggle
-                    onChange={onChange}
-                    label={
-                        <>
-                            <strong>{__('Default:')}</strong>{' '}
-                            <em>
-                                {String(
-                                    state.get('options.defaultChecked', false),
-                                )}
-                            </em>
-                        </>
-                    }
-                    defaultChecked={state.get('options.defaultChecked')}
-                />
-            </div>
-        </FieldTypeDialog>
-    );
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js
deleted file mode 100644
index 7765b49f..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import _ from 'underscore';
-import op from 'object-path';
-import React, { useEffect } from 'react';
-import {
-    __,
-    useHandle,
-    useHookComponent,
-    useRefs,
-    useSyncState,
-} from 'reactium-core/sdk';
-
-export const FieldType = props => {
-    const { id } = props;
-
-    const refs = useRefs();
-
-    const Editor = useHandle('ContentTypeEditor');
-
-    const val = id
-        ? op.get(Editor.getValue(), ['fields', id, 'options'], {})
-        : {};
-
-    const state = useSyncState({
-        options: {
-            min: op.get(val, 'min'),
-            max: op.get(val, 'max'),
-        },
-    });
-
-    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
-
-    const { DatePicker } = useHookComponent('ReactiumUI');
-
-    const onSelectDate = e => {
-        let { id: ID, selected = [] } = e;
-
-        ID = String(ID)
-            .replace('calendar-', '')
-            .substr(0, 3);
-
-        selected = _.compact(selected);
-
-        const date = selected.length > 0 ? _.first(selected) : null;
-
-        state.set(`options.${ID}`, date);
-    };
-
-    const onBeforeSave = params => {
-        const { fieldId } = params;
-        if (fieldId !== id) return;
-        op.set(params, 'fieldValue.options', state.get('options'));
-    };
-
-    const onLoad = () => {
-        const hooks = [
-            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
-        ];
-
-        return () => {
-            hooks.forEach(hookId => Reactium.Hook.unregister(hookId));
-        };
-    };
-
-    useEffect(onLoad, [Object.values(refs.get())]);
-
-    return (
-        <FieldTypeDialog {...props}>
-            <div className='field-type-date'>
-                <div className='row'>
-                    <div className='col-xs-12 col-md-6 pr-md-6 mb-xs-12 mb-md-0'>
-                        <div className='form-group'>
-                            <label className='block'>
-                                {__('Minimum Date')}:
-                                <DatePicker
-                                    readOnly
-                                    id='minDate'
-                                    align='right'
-                                    onChange={onSelectDate}
-                                    value={state.get('options.min')}
-                                    ref={elm => refs.set('min', elm)}
-                                />
-                            </label>
-                        </div>
-                    </div>
-                    <div className='col-xs-12 col-md-6 pl-md-6'>
-                        <div className='form-group'>
-                            <label className='block'>
-                                {__('Maximum Date')}:
-                                <DatePicker
-                                    readOnly
-                                    id='maxDate'
-                                    align='right'
-                                    onChange={onSelectDate}
-                                    value={state.get('options.max')}
-                                    ref={elm => refs.set('max', elm)}
-                                />
-                            </label>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </FieldTypeDialog>
-    );
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/_reactium-style-atoms-admin-logo.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/_reactium-style-atoms-admin-logo.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/reactium-hooks.js
index a2921d7b..370c0ff9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/AdminLogo/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium, { useHookComponent } from 'reactium-core/sdk';
+import Reactium, { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const Component = () => {
     const Logo = useHookComponent('Logo');
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/_style.scss
deleted file mode 100644
index 8b137891..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/_style.scss
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/actions.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/actions.js
deleted file mode 100644
index ab5ba526..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/actions.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import deps from 'dependencies';
-
-const actions = {};
-
-// Returns loading thunk
-actions.loadFactory = (route, config, blueprint) => (params, search) => async (
-    dispatch,
-    getState,
-) => {
-    /**
-     * @api {Hook} blueprint-load blueprint-load
-     * @apiDescription This hook is run whenever a route is loaded that matches the blueprint component.
-     Implementing this hook will give you an opportunity to load data for your blueprint components. Also
-     if you wish, you can set the data property on your hook's context to get that data spread into each of your
-     blueprint children.
-     * @apiName blueprint-load
-     * @apiGroup Actinium-Admin.Hooks
-     * @apiParam {Object} params includes:
-     - params: object of route params
-     - search: object of url search query
-     - route: the route object
-     - config: the route configuration (includes capabilities)
-     - blueprint: the loading blueprint schema
-     - dispatch: Redux dispatch function, in case you wish to dispatch after data loading
-     - getState: Redux getState function, in case you need Redux state context in your data loading
-     * @apiExample Example.js
-     import Reactium from 'reactium-core/sdk';
-
-     Reactium.Hook.register('blueprint-load', async (params, context) => {
-         try {
-             context.data = await Reactium.Cloud.run('my-data-loader');
-         } catch(error) {
-             context.data = { error };
-         }
-     });
-     */
-    return Reactium.Hook.run('blueprint-load', {
-        params,
-        search,
-        route,
-        config,
-        blueprint,
-        dispatch,
-        getState,
-    });
-};
-
-export default actions;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/domain.js
new file mode 100644
index 00000000..11d04b0c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/domain.js
@@ -0,0 +1,9 @@
+/**
+ * -----------------------------------------------------------------------------
+ * DDD Domain {{name}} - Change name to place domain artifacts in this directory
+ * in a different domain.
+ * -----------------------------------------------------------------------------
+ */
+module.exports = {
+    name: 'Blueprint',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/enums.js
new file mode 100644
index 00000000..4f4c36b1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/enums.js
@@ -0,0 +1,22 @@
+const Enums = {
+    transitionStates: [
+        {
+            state: 'EXITING',
+            active: 'previous',
+        },
+        {
+            state: 'LOADING',
+            active: 'current',
+        },
+        {
+            state: 'ENTERING',
+            active: 'current',
+        },
+        {
+            state: 'READY',
+            active: 'current',
+        },
+    ],
+};
+
+export default Enums;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/index.js
index e115332f..22aa119d 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/index.js
@@ -1,15 +1,21 @@
 import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
-import Reactium, { Zone } from 'reactium-core/sdk';
-import { useCapabilityCheck } from 'reactium-core/sdk';
-import React, { useEffect, useRef, useState } from 'react';
-import actions from './actions';
 
-const ENUMS = {};
+import Reactium, {
+    useHookComponent,
+    Zone,
+} from '@atomic-reactor/reactium-core/sdk';
+import React, { useEffect, useLayoutEffect as useWindowEffect } from 'react';
 
-const cname = (prefix, name) =>
-    cn(prefix, `${prefix}-${String(name).toLowerCase()}`);
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+const cname = (prefix, name, ...className) =>
+    cn(prefix, `${prefix}-${String(name).toLowerCase()}`, ...className);
+
+const zoneName = (zone) =>
+    typeof zone === 'string' ? zone : op.get(zone, 'zone');
 
 const cx = (meta, extended) => {
     const { className, namespace } = meta;
@@ -22,10 +28,12 @@ const cx = (meta, extended) => {
 };
 
 const blueprintConfig = {};
-
 Reactium.Hook.register(
     'blueprint-load',
     async (params, context) => {
+        Object.entries(params).forEach(([key, value]) =>
+            op.set(context, key, value),
+        );
         op.set(blueprintConfig, 'context', context);
 
         if (op.has(blueprintConfig, 'update')) {
@@ -35,45 +43,44 @@ Reactium.Hook.register(
     Reactium.Enums.priority.lowest,
 );
 
+const defaultWrapper = (props) => <section {...props} />;
+
 /**
  * -----------------------------------------------------------------------------
  * Hook Component: Blueprint
  * -----------------------------------------------------------------------------
  */
-const Blueprint = () => {
-    const [version, setVersion] = useState(new Date());
-    const bpParams = op.get(blueprintConfig, 'context.params.0', {});
+const Blueprint = (props) => {
     const {
-        params,
-        search,
-        blueprint,
-        route: routeObj = {},
-        config: routeConfig,
-    } = bpParams;
-
-    const capabilities = op.get(routeConfig, 'capabilities');
+        active, // The active routing state (might be actually the previous pathname / component)
+        params, // route params
+        search, // route URL params as object
+        transitionState, // e.g. EXITING, LOADING, ENTERING, READY
+        transitionStates = [], // Upcoming state changes if Reactium.Routing.nextState() is called
+    } = props;
+
+    // TODO: scheme for blueprint zones to handle there own transition states instead of doing here
+    useEffect(() => {
+        if (transitionState !== 'LOADING' && transitionStates.length > 0) {
+            Reactium.Routing.nextState();
+        }
+    }, [transitionState]);
 
-    const { component, load, ...route } = routeObj;
-    const data = op.get(blueprintConfig, 'context.data', {});
+    const route = op.get(active, 'match.route');
 
-    const allowed = useCapabilityCheck(capabilities);
+    const ZoneLoading = useHookComponent('ZoneLoading');
 
-    // Blueprint is a top-level component, so we'll treat module as singleton
-    useEffect(() => {
-        op.set(blueprintConfig, 'update', () => setVersion(new Date()));
-        return () => op.del(blueprintConfig, 'update');
-    }, []);
+    const blueprint = op.get(route, 'blueprint');
+    const settings =
+        typeof window !== 'undefined' ? window.settings : global.settings;
 
     const blueprintMeta = op.get(blueprint, 'meta', {});
     const sections = op.get(blueprint, 'sections', {});
-    const zoneMeta = value => op.get(value, 'meta', []);
-    const zones = () =>
-        _.chain(Object.values(sections))
-            .pluck('zones')
-            .flatten()
-            .value();
-
-    const metaToDataAttributes = meta => {
+    const zoneMeta = (value) => op.get(value, 'meta', []);
+    const allZones = () =>
+        _.chain(Object.values(sections)).pluck('zones').flatten().value();
+
+    const metaToDataAttributes = (meta) => {
         return Object.keys(meta).reduce((data, key) => {
             const dataKey = `data-${String(key).toLowerCase()}`;
             data[dataKey] = op.get(meta, key);
@@ -81,62 +88,100 @@ const Blueprint = () => {
         }, {});
     };
 
+    useLayoutEffect(() => {
+        if (typeof document === 'undefined') return;
+        const body = _.first(document.getElementsByTagName('BODY'));
+        const html = _.first(document.getElementsByTagName('HTML'));
+        if (!body) return;
+
+        const namespace = op.get(blueprint, 'meta.namespace', 'site-page');
+        const theme = op.get(settings, 'theme');
+
+        if (namespace) body.setAttribute('data-namespace', namespace);
+        if (theme) html.setAttribute('data-theme', theme);
+    }, []);
+
+    useLayoutEffect(() => {
+        if (typeof document === 'undefined') return;
+        const preloader = document.getElementById('site-preloader');
+        if (!preloader) return;
+
+        preloader.remove();
+    }, []);
+
+    const blueprintProps = {
+        route,
+        params,
+        search,
+        routeProps: props,
+        settings,
+    };
+
     // Renderer
-    const render = () => (
+    return (
         <main
             className={cx(
                 blueprintMeta,
                 cname('blueprint', op.get(blueprint, 'ID')),
-            )}>
-            {Object.entries(sections).map(([name, value]) => (
-                <section
-                    key={name}
-                    {...metaToDataAttributes(op.get(value, 'meta', {}))}
-                    className={cx(
-                        op.get(value, 'meta', {}),
-                        cname('section', name),
-                    )}>
-                    {op.get(value, 'zones', []).map(zone => {
-                        const meta = op.get(zone, 'meta', {});
-                        zone =
-                            typeof zone === 'string'
-                                ? zone
-                                : op.get(zone, 'zone');
-
-                        return !zone ? null : (
-                            <div
-                                key={zone}
-                                className={cname('zone', zone)}
-                                {...metaToDataAttributes(meta)}>
-                                <Zone
-                                    route={route}
-                                    params={params}
-                                    search={search}
-                                    zone={zone}
-                                    zones={zones()}
-                                    section={name}
-                                    sections={Object.keys(sections)}
-                                    meta={{
-                                        blueprint: blueprintMeta,
-                                        zone: zoneMeta(value),
-                                    }}
-                                    {...data}
-                                />
-                            </div>
-                        );
-                    })}
-                </section>
-            ))}
+            )}
+        >
+            {Object.entries(sections).map(([name, value]) => {
+                const className = op.get(value, 'meta.className');
+                op.del(value, 'meta.className');
+
+                const zones = op.get(value, 'zones', []);
+                const Wrap = op.get(value, 'wrapper', defaultWrapper);
+                const wrapAttr = metaToDataAttributes(
+                    op.get(value, 'meta', {}),
+                );
+
+                const refresh = op.get(value, 'meta.refresh', false) === true;
+                const loading = refresh && transitionState !== 'READY';
+
+                return (
+                    <Wrap
+                        key={name}
+                        className={cname('section', name, className, {
+                            loading,
+                        })}
+                        {...wrapAttr}
+                    >
+                        {zones.map((zone) => {
+                            const meta = op.get(zone, 'meta', {});
+                            zone = zoneName(zone);
+                            if (!zone) return null;
+
+                            const zoneProps = {
+                                ...blueprintProps,
+                                zone: zone,
+                                zones: allZones(),
+                                section: name,
+                                sections: Object.keys(sections),
+                                meta: {
+                                    blueprint: blueprintMeta,
+                                    zone: zoneMeta(value),
+                                },
+                            };
+
+                            return (
+                                <div
+                                    key={zone}
+                                    className={cname('zone', zone)}
+                                    {...metaToDataAttributes(meta)}
+                                >
+                                    {loading ? (
+                                        <ZoneLoading {...zoneProps} />
+                                    ) : (
+                                        <Zone {...zoneProps} />
+                                    )}
+                                </div>
+                            );
+                        })}
+                    </Wrap>
+                );
+            })}
         </main>
     );
-
-    if (!routeConfig || !blueprint || !allowed) return null;
-
-    // Render
-    return render();
 };
 
-Blueprint.ENUMS = ENUMS;
-Blueprint.actions = actions;
-
 export { Blueprint as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/reactium-hooks.js
index b4d23a81..5d29b3e0 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/reactium-hooks.js
@@ -1,166 +1,45 @@
-import React from 'react';
-import Reactium, { __ } from 'reactium-core/sdk';
-import ReactHelmet from 'react-helmet';
-import Blueprint from './index';
-import actions from './actions';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import op from 'object-path';
-import _ from 'underscore';
-import { Redirect } from 'react-router-dom';
-
-const defaultBlueprint = {
-    sections: {
-        sidebar: {
-            zones: ['admin-sidebar'],
-            meta: {},
-        },
-        main: {
-            zones: ['admin-header', 'admin-content', 'admin-actions'],
-            meta: {},
-        },
-        tools: {
-            zones: ['admin-tools'],
-        },
-    },
-    meta: {
-        builtIn: true,
-        admin: true,
-        namespace: 'admin-page',
-    },
-    ID: 'Default',
-    description: 'Admin default blueprint',
-    className: 'Blueprint',
-};
-
-Reactium.Hook.register('routes-init', async () => {
-    Reactium.Component.register('Blueprint', Blueprint);
-
-    // Build Blueprint Registry
-    Reactium.Blueprint = Reactium.Utils.registryFactory(
-        'Blueprint',
-        'ID',
-        Reactium.Utils.Registry.MODES.CLEAN,
-    );
-
-    /**
-     * @api {Hook} default-blueprint default-blueprint
-     * @apiDescription Hook defining default blueprint configuration if none has been provided that matches the current routes' blueprint id.
-     * @apiName default-blueprint
-     * @apiGroup Actinium-Admin.Hooks
-     * @apiParam {Object} defaultBlueprint The default blueprint object.
-     */
-
-    await Reactium.Hook.run('default-blueprint', defaultBlueprint);
-    Reactium.Blueprint.register(defaultBlueprint.ID, defaultBlueprint);
-    (await Reactium.Cloud.run('blueprints')).forEach(bp =>
-        Reactium.Blueprint.register(bp.ID, bp),
-    );
-    await Reactium.Hook.run('blueprints', Reactium.Blueprint);
-
-    // Load Routes
-    const { routes = [] } = await Reactium.Cloud.run('routes');
-
-    // gather relevant route capabilities ahead of time
-    let permissions = {};
-    const capChecks = {};
-    routes.forEach(route => {
-        const isPermitted = op.get(route, 'permitted');
-        if (typeof isPermitted === 'boolean') {
-            permissions[route.objectId] = isPermitted;
-            return;
-        }
-
-        const capabilities = _.chain([op.get(route, 'capabilities')])
-            .flatten()
-            .compact()
-            .value()
-            .filter(cap => typeof cap === 'string');
-
-        if (Array.isArray(capabilities) && capabilities.length > 0)
-            op.set(capChecks, route.objectId, { capabilities, strict: false });
-    });
+import SDK from './sdk';
+import Blueprint from './index';
 
-    // check permissions in bulk for current user
-    if (Object.keys(capChecks).length > 0) {
+const routingStateHandler = async (updates) => {
+    if (op.get(updates, 'transitionState') === 'LOADING') {
+        const setLoading = op.get(
+            window,
+            'LoadingRef.current.setVisible',
+            () => {},
+        );
         try {
-            permissions = {
-                ...permissions,
-                ...(await Reactium.Cloud.run('capability-bulk-check', {
-                    checks: capChecks,
-                })),
-            };
+            setLoading(true);
+            await Reactium.Hook.run('blueprint-route-loader', updates);
         } catch (error) {
-            console.error(error);
-            return;
-        }
-    }
-
-    // Register All routes User has permission to see
-    for (const r of routes) {
-        const { objectId: id, route: path, blueprint, meta, capabilities } = r;
-        const route = {
-            id,
-            path,
-            order: op.get(r, 'meta.order', Reactium.Enums.priority.normal),
-            meta,
-            blueprint: Reactium.Blueprint.get(blueprint) || defaultBlueprint,
-            capabilities,
-        };
-
-        if (op.get(permissions, id, true) === true) {
-            op.set(
-                route,
-                'thunk',
-                actions.loadFactory(
-                    route,
-                    {
-                        blueprint,
-                        capabilities,
-                        meta,
-                    },
-                    route.blueprint,
-                ),
-            );
-            op.set(route, 'component', Blueprint);
-        } else {
-            op.del(route, 'load');
-            op.set(route, 'component', () => <Redirect to={'/login'} />);
+            // TODO: DO SOMETHING ABOUT IT! Error route?
+            console.log('Error while loading route', error, updates);
         }
 
-        await Reactium.Routing.register(route);
+        setLoading(false);
+        Reactium.Routing.nextState();
     }
+};
 
-    // If there is no / route, create a redirect to /admin
-    if (!routes.find(({ path }) => path === '/')) {
-        await Reactium.Routing.register({
-            id: 'admin-redirect',
-            path: '/',
-            exact: true,
-            component: () => <Redirect to={'/admin'} />,
-            order: Reactium.Enums.priority.highest,
-        });
-    }
-});
-
-Reactium.Hook.register('plugin-init', async () => {
-    // Implement `helmet-props` hook with priority order than highest
-    // in your plugin to override these values
-    Reactium.Hook.register(
-        'helmet-props',
-        async context => {
-            context.props = {
-                titleTemplate: __('%s - Reactium Admin'),
-            };
-        },
-        Reactium.Enums.priority.highest,
-    );
+const observer = async () => {
+    Reactium.Routing.routeListeners.register('blueprint-routing-observer', {
+        handler: routingStateHandler,
+        order: Reactium.Enums.priority.low,
+    });
+};
 
-    const context = await Reactium.Hook.run('helmet-props');
-    const helmetProps = op.get(context, 'props', {});
+Reactium.Hook.register(
+    'routes-init',
+    SDK.initRoutes,
+    Reactium.Enums.priority.highest,
+);
 
-    const Helmet = props => {
-        const { children = null } = props;
-        return <ReactHelmet {...helmetProps}>{children}</ReactHelmet>;
-    };
+Reactium.Hook.register(
+    'routes-init',
+    observer,
+    Reactium.Enums.priority.highest,
+);
 
-    Reactium.Component.register('Helmet', Helmet);
-});
+Reactium.Component.register('Blueprint', Blueprint);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/sdk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/sdk.js
new file mode 100644
index 00000000..57d53ada
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint/sdk.js
@@ -0,0 +1,219 @@
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+import op from 'object-path';
+import _ from 'underscore';
+import Enums from './enums';
+import Blueprint from './index';
+
+const routingApp =
+    op.get(typeof global !== 'undefined' ? global : window, 'routingApp') ||
+    'admin';
+
+export const DEFAULTS = [
+    {
+        sections: {
+            sidebar: {
+                zones: ['admin-sidebar'],
+                meta: {},
+            },
+            main: {
+                zones: ['admin-header', 'admin-dashboard', 'admin-actions'],
+                meta: {},
+            },
+        },
+        meta: {
+            builtIn: true,
+            admin: true,
+            namespace: 'admin-page',
+        },
+        ID: 'Admin',
+        description: 'Admin blueprint',
+        className: 'Blueprint',
+    },
+    {
+        sections: {
+            main: {
+                zones: ['content'],
+                meta: {},
+            },
+        },
+        meta: {
+            builtIn: true,
+            admin: true,
+        },
+        ID: 'Simple',
+        description: 'Blueprint with one simple content section',
+        className: 'Blueprint',
+    },
+    {
+        sections: {
+            sidebar: {
+                zones: ['admin-sidebar'],
+                meta: {},
+            },
+            main: {
+                zones: ['admin-header', 'admin-profile', 'admin-actions'],
+                meta: {},
+            },
+        },
+        meta: {
+            builtIn: true,
+            admin: true,
+            namespace: 'admin-page',
+        },
+        ID: 'Profile',
+        description: 'Profile blueprint',
+        className: 'Blueprint',
+    },
+];
+
+// Build Blueprint Registry
+const SDK = (Reactium.Blueprint = Reactium.Utils.registryFactory(
+    'Blueprint',
+    'ID',
+    Reactium.Utils.Registry.MODES.CLEAN,
+));
+
+// TODO: Portal Tools to page with or without the section
+const sanitizeBP = (bp) => {
+    const sanitized = { ...bp };
+
+    if (!op.has(sanitized, 'sections.tools')) {
+        op.set(sanitized, 'sections.tools', {
+            zones: ['admin-tools'],
+        });
+    }
+    if (
+        !op.get(sanitized, 'sections.tools.zones', []).includes('admin-tools')
+    ) {
+        op.set(
+            sanitized,
+            'sections.tools.zones',
+            op.get(sanitized, 'sections.tools.zones', []).concat('admin-tools'),
+        );
+    }
+    return sanitized;
+};
+
+Reactium.Hook.register(
+    'blueprints',
+    async () => {
+        for (const bp of DEFAULTS) {
+            const blueprint = sanitizeBP(bp);
+            Reactium.Blueprint.register(blueprint.ID, blueprint);
+        }
+    },
+    Reactium.Enums.priority.highest,
+    'DEFAULT_ROUTES',
+);
+
+const CACHE_DURATION = 10000;
+const CACHE_KEY = 'BLUEPRINT_ROUTES';
+
+Reactium.Blueprint.initRoutes = async () => {
+    await Reactium.Hook.run('blueprints', Reactium.Blueprint);
+
+    let routes = Reactium.Cache.get(CACHE_KEY);
+    if (!routes) {
+        // Load Routes
+        // const notAdmin = new Reactium.Query('Route').notEqualTo(
+        //     'meta.app',
+        //     'admin',
+        // );
+        const noAppProp = new Reactium.Query('Route').doesNotExist('meta.app');
+        const hasAppRoute = new Reactium.Query('Route').equalTo(
+            'meta.app',
+            routingApp,
+        );
+
+        // TODO: Make this behavior dynamic based on context (admin / app)
+        const baseQuery = Reactium.Query.or(noAppProp, hasAppRoute);
+        // const baseQuery = Reactium.Query.and(
+        //     notAdmin,
+        //     Reactium.Query.or(noAppProp, hasAppRoute),
+        // );
+
+        try {
+            routes = (await baseQuery.find()).map((r) => r.toJSON());
+            Reactium.Cache.set(CACHE_KEY, routes, CACHE_DURATION);
+        } catch (error) {
+            console.error('Unable to load routes!', error);
+        }
+    }
+
+    // gather relevant route capabilities ahead of time
+    let permissions = {};
+    const capChecks = {};
+    routes.forEach((route) => {
+        const isPermitted = op.get(route, 'permitted');
+        if (typeof isPermitted === 'boolean') {
+            permissions[route.objectId] = isPermitted;
+            return;
+        }
+
+        const capabilities = _.chain([op.get(route, 'capabilities')])
+            .flatten()
+            .compact()
+            .value()
+            .filter((cap) => typeof cap === 'string');
+
+        if (Array.isArray(capabilities) && capabilities.length > 0)
+            op.set(capChecks, route.objectId, {
+                capabilities,
+                strict: false,
+            });
+    });
+
+    // check permissions in bulk for current user
+    if (Object.keys(capChecks).length > 0) {
+        try {
+            permissions = {
+                ...permissions,
+                ...(await Reactium.Cloud.run('capability-bulk-check', {
+                    checks: capChecks,
+                })),
+            };
+        } catch (error) {
+            console.error(error);
+            return;
+        }
+    }
+
+    // Register All routes User has permission to see
+    for (const r of routes) {
+        const {
+            objectId: id,
+            route: path,
+            blueprint: blueprintId,
+            meta,
+            capabilities,
+        } = r;
+
+        const blueprint =
+            Reactium.Blueprint.get(blueprintId) ||
+            Reactium.Blueprint.get('Admin');
+
+        const route = {
+            id,
+            path,
+            order: op.get(r, 'meta.order', Reactium.Enums.priority.normal),
+            meta,
+            blueprint,
+            capabilities,
+
+            // blueprint transitions on by default
+            transitions: op.get(blueprint, 'meta.transitions', true) === true,
+            transitionStates: op.get(
+                blueprint,
+                'meta.transitionStates',
+                Enums.transitionStates,
+            ),
+        };
+
+        if (op.get(permissions, id, true) === true) {
+            op.set(route, 'component', Blueprint);
+            await Reactium.Routing.register(route);
+        }
+    }
+};
+
+export default SDK;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/Breadcrumbs.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/Breadcrumbs.js
new file mode 100644
index 00000000..bcc1f45e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/Breadcrumbs.js
@@ -0,0 +1,82 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useCallback, useMemo } from 'react';
+import { useContentTypes } from '../../TypeList/useContentTypes';
+import { useDoesMatchPath, useRouteParams } from 'reactium-admin-core';
+
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Component: Breadcrumbs
+ * -----------------------------------------------------------------------------
+ */
+
+const Render = () => {
+    const params = useRouteParams();
+
+    const [types] = useContentTypes(null);
+
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    const type = useMemo(
+        () =>
+            types === null
+                ? null
+                : _.findWhere(types, { machineName: op.get(params, 'type') }),
+        [types, op.get(params, 'type')],
+    );
+
+    const slug = useMemo(
+        () => (!types || !type || !op.get(params, 'slug') ? null : params.slug),
+        [type, types, op.get(params, 'slug')],
+    );
+
+    const onClick = useCallback(
+        (e) => {
+            e.target.blur();
+            e.preventDefault();
+
+            if (slug) {
+                Reactium.Routing.history.push(
+                    `/admin/content/${params.type}/page/1`,
+                );
+            }
+        },
+        [slug, op.get(params, 'type')],
+    );
+
+    return !type ? null : (
+        <ul className='ar-breadcrumbs'>
+            <li>
+                <Button className='px-0' color='clear' readOnly size='sm'>
+                    <Icon name={type.meta.icon} className='mr-xs-12' />
+                    {__('Content')}
+                </Button>
+            </li>
+            {type && (
+                <li className='uppercase'>
+                    <a href='#' onClick={onClick}>
+                        {type.machineName}
+                    </a>
+                </li>
+            )}
+            {slug && (
+                <li className='hide-xs show-md'>
+                    {slug === 'new' ? __('NEW') : slug}
+                </li>
+            )}
+        </ul>
+    );
+};
+
+export const Breadcrumbs = (props) => {
+    const visible = useDoesMatchPath((path) =>
+        path.startsWith('/admin/content'),
+    );
+
+    return !visible ? null : <Render {...props} />;
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/reactium-hooks.js
new file mode 100644
index 00000000..ec5d3ba3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Breadcrumbs/reactium-hooks.js
@@ -0,0 +1,11 @@
+import { Breadcrumbs } from './Breadcrumbs';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    Reactium.Zone.addComponent({
+        component: Breadcrumbs,
+        zone: ['admin-header'],
+        order: Reactium.Enums.priority.lowest,
+        id: 'ADMIN-CONTENT-BREADCRUMBS-WIDGET',
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/ElementDialog/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/ElementDialog/index.js
new file mode 100644
index 00000000..5eaeb7a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/ElementDialog/index.js
@@ -0,0 +1,123 @@
+import op from 'object-path';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+import Reactium, { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+let ElementDialog = (props) => {
+    const {
+        children,
+        className,
+        editor,
+        elements = [],
+        footer,
+        helpText,
+        pref,
+        onCollapse,
+        onExpand,
+        fieldId,
+        fieldName,
+    } = props;
+
+    const header = {
+        title: fieldName,
+        elements,
+    };
+
+    const collapsibleRef = useRef();
+    const dialogRef = useRef();
+
+    const { Alert, Button, Collapsible, Dialog, Icon } =
+        useHookComponent('ReactiumUI');
+
+    let HelpComponent;
+    const helpPrefsKey = String(pref).replace('.dialog.', '.help.');
+    const expandedHelp = Reactium.Prefs.get(helpPrefsKey, true);
+    const _onHelpCollapse = () => Reactium.Prefs.set(helpPrefsKey, false);
+    const _onHelpExpand = () => Reactium.Prefs.set(helpPrefsKey, true);
+    const toggleHelp = () => {
+        const { expanded } = dialogRef.current.state;
+
+        if (expanded) {
+            collapsibleRef.current.toggle();
+        } else {
+            collapsibleRef.current.setState({ expanded: true });
+            dialogRef.current.expand();
+        }
+    };
+
+    if (helpText) {
+        header.elements.push(
+            <Button
+                key='help'
+                className='ar-dialog-header-btn'
+                color={Button.ENUMS.COLOR.CLEAR}
+                onClick={toggleHelp}
+                size={Button.ENUMS.SIZE.XS}
+            >
+                <Icon name='Feather.HelpCircle' />
+            </Button>,
+        );
+
+        HelpComponent = useHookComponent(helpText, (props) => (
+            <div className={editor.cx('help')}>
+                <Alert
+                    {...props}
+                    color={Alert.ENUMS.COLOR.INFO}
+                    icon={<Icon name='Feather.HelpCircle' />}
+                />
+            </div>
+        ));
+    }
+
+    // const _handle = () => ({
+    //     ...props,
+    //     ...dialogRef.current,
+    // });
+
+    // const [handle, setHandle] = useEventHandle(() => _handle);
+
+    // useImperativeHandle(ref, () => handle);
+
+    // useEffect(() => {
+    //     const newHandle = _handle();
+    //     Object.entries(newHandle).forEach(([key, value]) => {
+    //         handle[key] = value;
+    //     });
+    //     setHandle(handle);
+    // }, [dialogRef.current]);
+
+    return (
+        <Dialog
+            ref={dialogRef}
+            pref={pref}
+            footer={footer}
+            header={header}
+            className={className}
+            onCollapse={onCollapse}
+            onExpand={onExpand}
+            {...props}
+            id={String(`ar-dialog-${fieldName}`).toLowerCase()}
+        >
+            {helpText && (
+                <Collapsible
+                    ref={collapsibleRef}
+                    expanded={expandedHelp}
+                    onCollapse={_onHelpCollapse}
+                    onExpand={_onHelpExpand}
+                >
+                    <HelpComponent>{helpText}</HelpComponent>
+                </Collapsible>
+            )}
+            {children}
+        </Dialog>
+    );
+};
+
+// ElementDialog = forwardRef(ElementDialog);
+
+export { ElementDialog };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/index.js
new file mode 100644
index 00000000..0aba676b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/index.js
@@ -0,0 +1,20 @@
+import { useEffect } from 'react';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Reset
+ * -----------------------------------------------------------------------------
+ */
+export const Reset = () => {
+    const redirect = Reactium.Cache.get('reset') || '/admin';
+
+    useEffect(() => {
+        Reactium.Routing.history.push(redirect);
+        return () => {
+            Reactium.Cache.del('reset');
+        };
+    }, []);
+
+    return null;
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/route.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/route.js
new file mode 100644
index 00000000..e2b6ffd9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/Reset/route.js
@@ -0,0 +1,7 @@
+import { Reset } from './index';
+
+export default {
+    exact: true,
+    component: Reset,
+    path: ['/admin/reset'],
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/_reactium-style-organisms-ce.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/_reactium-style-organisms-ce.scss
new file mode 100644
index 00000000..928ef82c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/_reactium-style-organisms-ce.scss
@@ -0,0 +1,157 @@
+.admin-content-editor {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    margin-top: $height-admin-header;
+
+    @include breakpoint(md) {
+        overflow: hidden;
+        flex-wrap: nowrap;
+        flex-direction: row;
+        align-items: stretch;
+        height: calc(100vh - #{$height-admin-header});
+    }
+
+    &-element {
+        position: relative;
+        padding: 20px;
+
+        &:not(:first-child) {
+            margin-bottom: -20px;
+        }
+
+        &:empty {
+            display: none;
+        }
+
+        &-title {
+            border-bottom: 1px solid darken($color-grey-light, 5%);
+
+            button {
+                z-index: 5;
+            }
+
+            .input-sm {
+                margin-top: 4px;
+            }
+        }
+    }
+
+    &-spinner {
+        height: 100vh;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    &-default {
+        @include breakpoint(md) {
+            overflow-y: auto;
+            height: calc(100vh - #{$height-admin-header});
+        }
+    }
+
+    &-sidebar {
+        display: flex;
+        overflow-x: hidden;
+        flex-direction: column;
+        flex-shrink: 0;
+
+        padding: 20px;
+
+        @include breakpoint(md) {
+            padding: 0;
+            background-color: $color-white;
+            height: calc(100vh - #{$height-admin-header});
+        }
+
+        &-element {
+            position: relative;
+            min-width: 400px;
+
+            &-publish {
+                flex-grow: 1;
+                display: flex;
+                flex-direction: column;
+                justify-content: flex-end;
+
+                right: 0;
+                bottom: 0;
+                width: 100%;
+                position: sticky;
+                z-index: map-get($z-indexes, 'overlay');
+
+                button {
+                    font-size: 20px;
+                }
+
+                &-box {
+                    padding: 20px;
+                    margin-top: -1px;
+                    background-color: $color-white;
+                    border-top: 1px solid darken($color-grey-light, 5%);
+                    border-bottom: 1px solid darken($color-grey-light, 5%);
+
+                    .error-message {
+                        margin-top: 0;
+                        margin-bottom: 10px;
+                    }
+                }
+            }
+        }
+    }
+
+    &-sidebar-placeholder {
+        width: 100%;
+    }
+
+    &-column {
+        overflow-x: visible;
+        position: relative;
+        min-width: 100%;
+        padding-bottom: 20px;
+
+        @include breakpoint(md) {
+            min-width: 0;
+            height: calc(100vh - #{$height-admin-header});
+        }
+
+        &:first-child {
+            flex-grow: 1;
+        }
+
+        &:last-child {
+            flex-shrink: 0;
+            flex-grow: 0;
+            padding-bottom: 0;
+            border-left: 1px solid darken($color-grey-light, 5%);
+        }
+
+        .handle-left {
+            position: relative;
+
+            &:after {
+                content: '';
+                width: 4px;
+                height: 20px;
+                top: 50%;
+                left: 0px;
+                position: absolute;
+                transform: translate(-100%, -50%);
+                border-left: 1px solid $color-grey;
+                border-right: 1px solid $color-grey;
+                background-color: $color-grey-light;
+            }
+        }
+    }
+
+    .resizable {
+        transition: width 0.125s ease-in-out;
+    }
+}
+
+.ar-dialog-content {
+    > .error-message {
+        padding: 12px 20px 0 20px;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/index.js
new file mode 100644
index 00000000..5ba2ecef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/index.js
@@ -0,0 +1,769 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Resizable } from 're-resizable';
+import { Button, Icon, Spinner } from 'reactium-ui';
+import { useRouteParams } from 'reactium-admin-core';
+import { useContentTypes } from '../TypeList/useContentTypes';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useEffect,
+    useMemo,
+    useState,
+} from 'react';
+
+import Reactium, {
+    __,
+    cxFactory,
+    useDispatcher,
+    useAsyncEffect,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const min = 0;
+const iw = 400;
+
+export const ContentEditor = (props) => {
+    const { className, namespace, title } = props;
+
+    const refs = useRefs();
+
+    const params = useRouteParams();
+
+    const [types] = useContentTypes(false);
+
+    const Helmet = useHookComponent('Helmet');
+
+    const { Form } = useHookComponent('ReactiumUI');
+
+    const state = useSyncState({
+        params,
+        obj: false,
+        ready: false,
+        valid: false,
+        disabled: false,
+        sidebarSize: initialSidebarWidth(),
+    });
+
+    const cx = cxFactory(namespace);
+
+    const _dispatch = useDispatcher({ props, state });
+
+    const dispatch = (...args) => {
+        const evt = String(args.shift());
+        const hook = evt.startsWith('content-') ? evt : `content-${evt}`;
+
+        const hooks = runHookSync(hook, ...args);
+
+        _dispatch(evt, ...args);
+
+        return hooks;
+    };
+
+    const dispatchAsync = async (...args) => {
+        const evt = String(args.shift());
+        const hook = evt.startsWith('content-') ? evt : `content-${evt}`;
+
+        const hooks = await runHook(hook, ...args);
+
+        dispatch(evt, ...args);
+
+        return hooks;
+    };
+
+    const runHook = useCallback((hook, args) => {
+        const type = op.get(params, 'type');
+
+        const detail = { type, state, params, ...args };
+
+        return Promise.all([
+            Reactium.Hook.run(hook, detail),
+            Reactium.Hook.run(`${hook}-${type}`, detail),
+        ]);
+    });
+
+    const runHookSync = useCallback((hook, args) => {
+        const type = op.get(params, 'type');
+
+        const detail = { type, state, params, ...args };
+
+        return [
+            Reactium.Hook.runSync(hook, detail),
+            Reactium.Hook.runSync(`${hook}-${type}`, detail),
+        ];
+    });
+
+    const isNew = useMemo(() => op.get(params, 'slug') === 'new', [params]);
+
+    const isReady = useMemo(() => state.get('ready'), [state.get('ready')]);
+
+    const isType = useMemo(() => !!state.get('type'), [state.get('type')]);
+
+    const isValid = () => {
+        if (!state.Form) return false;
+        return Object.keys(state.Form.error()).length < 1;
+    };
+
+    const hasElements = useCallback(
+        () => _.flatten(Object.values(elements)).length > 0,
+        [elements],
+    );
+
+    const defaultValue = useCallback(() => {
+        if (!isNew) return;
+        if (!hasElements()) return;
+
+        const elms = _.flatten(Object.values(elements));
+
+        const values = elms.reduce((obj, item) => {
+            const k = op.get(item, 'fieldName');
+            const v = op.get(item, 'defaultValue');
+
+            if (k && v) op.set(obj, k, v);
+
+            return obj;
+        }, {});
+
+        state.Form.setValue(values);
+    }, [isNew]);
+
+    const initialValue = useCallback(() => {
+        if (!isReady) return;
+        if (!state.Form) return;
+
+        const obj = state.get('obj');
+        let value = null;
+
+        if (obj) {
+            const val = obj.toJSON();
+            const data = obj.get('data');
+
+            value = { ...data, ...val };
+            delete value.data;
+        }
+
+        state.Form.setValue(value);
+    }, [isReady]);
+
+    const retrieve = useCallback(async () => {
+        if (isReady || isNew) return state.set('ready', true);
+
+        const uuid = op.get(params, 'slug');
+
+        if (!uuid) return state.set('ready', true);
+
+        const obj =
+            !isNew && uuid ? await Reactium.Content.retrieve(uuid) : null;
+
+        state.set(
+            {
+                obj,
+                isNew,
+                params,
+                updated: Date.now(),
+                uuid: isNew ? null : uuid,
+            },
+            true,
+        );
+
+        state.set('ready', true);
+    }, [isNew, isReady, params]);
+
+    const clearError = (...args) => {
+        if (!state.Form) return;
+        state.Form.clearError(...args);
+        return state;
+    };
+
+    const setError = (...args) => {
+        if (!state.Form) return;
+        state.Form.setError(...args);
+        return state;
+    };
+
+    const setForm = useCallback((elm) => {
+        if (state.Form) return;
+        state.Form = elm;
+        state.update();
+    }, []);
+
+    const setValue = (...args) => {
+        if (!state.Form) return state;
+        state.Form.setValue(...args);
+        return state;
+    };
+
+    const onChange = async (e) => {
+        if (!isReady) return;
+
+        if (e.path === 'update' && e.detail === null) return;
+        const detail = e.detail || { changed: { previous: null } };
+        if (op.get(detail, 'changed.previous') === undefined) return;
+
+        await dispatchAsync(e.type, e);
+    };
+
+    const onChangeUUID = useCallback(() => {
+        const uuid = state.get('params.uuid');
+
+        if (uuid === op.get(params, 'slug')) return;
+
+        if (state.Form) state.Form.setValue(null);
+
+        state.set({ obj: null, ready: false });
+    }, [params]);
+
+    const onParamTypeChange = useCallback(() => {
+        if (!types || !params) return;
+        const { type: machineName } = params;
+
+        const type = _.findWhere(types, { machineName });
+        if (type) state.set({ type });
+    }, [types, params]);
+
+    const onReady = useCallback(
+        async (mounted) => {
+            if (!isReady) return;
+            if (!mounted()) return;
+            if (!state.Form) return;
+
+            if (!isNew) await dispatchAsync('editor-load', { mounted });
+            await dispatchAsync('editor-ready', { mounted });
+        },
+        [isReady, state.Form],
+    );
+
+    const onBeforeSubmit = async (e) => {
+        await dispatchAsync(e.type, { values: e.target.value });
+    };
+
+    const onSubmit = useCallback(async (e) => {
+        if (!isReady || !isValid() || state.get('disabled') === true) return;
+
+        let {
+            objectId,
+            meta,
+            slug,
+            status,
+            uuid,
+            title,
+            file,
+            parent,
+            ...data
+        } = _.clone(e.value);
+
+        const cleanseData = [
+            'ACL',
+            'createdAt',
+            'updatedAt',
+            'taxonomy',
+            'objectId',
+            'type',
+            'user',
+            'children',
+            'parent',
+            'file',
+        ];
+
+        cleanseData.forEach((field) => op.del(data, field));
+
+        const type = state.get('params.type');
+
+        const values = {
+            objectId,
+            data,
+            meta,
+            slug,
+            status,
+            title,
+            type,
+            uuid,
+            parent,
+            file,
+        };
+
+        await Promise.all([
+            dispatchAsync('submit', { value: values }),
+            dispatchAsync('save', { value: values }),
+        ]);
+
+        const results = await Reactium.Content.save(values);
+
+        if (_.isError(results)) {
+            e.target.setError('submit', results.message);
+            await Promise.all([
+                dispatchAsync('submit-error', { error: results, values }),
+                dispatchAsync('save-error', { error: results, values }),
+            ]);
+        } else {
+            e.target.complete(results);
+        }
+    });
+
+    const onComplete = useCallback(async (e) => {
+        const object = e.results;
+
+        await dispatchAsync('after-save', { object });
+
+        const { Toast } = Reactium.State.Tools;
+
+        const message = __('Saved %title').replace(
+            /%title/gi,
+            object.get('title'),
+        );
+
+        Toast.show({
+            message,
+            autoClose: 2500,
+            type: Toast.TYPE.SUCCESS,
+            icon: <Icon name='Feather.Check' />,
+        });
+
+        if (isNew) {
+            Reactium.Routing.history.push(
+                `/admin/content/${params.type}/${object.get('uuid')}`,
+            );
+        }
+    }, []);
+
+    const onValidate = useCallback(async (e) => {
+        await dispatchAsync(e.type, {
+            errors: e.target.get('errors'),
+            values: e.target.value,
+        });
+    }, []);
+
+    const onResize = useCallback((e, d, ref, s) => {
+        if (unMounted()) return;
+
+        ref.classList.remove('resizable');
+
+        const container = refs.get('sidebarContainer');
+        const size = state.get('sidebarSize');
+
+        size.width = container.offsetWidth;
+
+        Reactium.Prefs.set('content-editor-sidebar', size);
+        state.set('sidebarSize', size);
+
+        dispatch('resize', { detail: { size } });
+    }, []);
+
+    const onResized = useCallback((e, d, ref, s) => {
+        if (unMounted()) return;
+
+        ref.classList.add('resizable');
+
+        const container = refs.get('sidebarContainer');
+        let dir = s.width !== 0 && s.width < 0 ? 'right' : 'left';
+        dir = s.width === 0 ? 'reset' : dir;
+
+        let w = container.offsetWidth;
+
+        if (dir !== 'reset') {
+            const max = window.innerWidth / 2;
+            w = w <= iw && dir === 'left' ? iw : w;
+            w = w <= iw && dir === 'right' ? min : w;
+            w = w >= max ? max : w;
+        } else {
+            const v = Math.abs(w - iw);
+            w = v <= 2 ? min : iw;
+        }
+
+        const size = state.get('sidebarSize');
+        size.width = w;
+
+        Reactium.Prefs.set('content-editor-sidebar', size);
+        state.set('sidebarSize', size);
+
+        dispatch('resized', { detail: { size } });
+    }, []);
+
+    const unMounted = () => !refs.get('container');
+
+    const regions = useMemo(() => {
+        if (!isType) return [];
+
+        return Array.from(Object.values(state.get('type.regions', {})));
+    }, [state.get('type')]);
+
+    const elements = useMemo(() => {
+        if (!isType) return {};
+
+        if (!state.get('type.fields')) return {};
+
+        const fields = new FieldRegistry(
+            Object.values(_.clone(state.get('type.fields'))),
+        );
+
+        fields.remove('publisher');
+
+        runHookSync('content-editor-elements', { fields });
+
+        return fields.regions;
+    }, [state.get('type')]);
+
+    useEffect(onChangeUUID, [params]);
+
+    useEffect(onParamTypeChange, [params, types]);
+
+    useEffect(initialValue, [isReady, state.get('obj')]);
+
+    useAsyncEffect(retrieve, [params, isReady]);
+
+    useAsyncEffect(onReady, [isReady]);
+
+    useEffect(defaultValue, [elements, isNew, isReady, state.get('obj')]);
+
+    state.extend('cx', cx);
+
+    state.extend('clearError', clearError);
+
+    state.extend('dispatch', dispatch);
+
+    state.extend('dispatchAsync', dispatchAsync);
+
+    state.extend('runHook', runHook);
+
+    state.extend('runHookSync', runHookSync);
+
+    state.extend('getAttribute', (...args) => op.get(props, ...args));
+
+    state.extend('hasElements', hasElements);
+
+    state.extend('unMounted', unMounted);
+
+    state.extend('update', () => {
+        state.set('updated', Date.now());
+        return state;
+    });
+
+    state.extend('isValid', isValid);
+
+    state.extend('setError', setError);
+
+    state.extend('setValue', setValue);
+
+    state.extend('disable', () => {
+        state.set('disabled', true);
+        return state;
+    });
+
+    state.extend('enable', () => {
+        state.set('disabled', false);
+        return state;
+    });
+
+    state.extend('submit', () => {
+        state.Form.submit();
+        return state;
+    });
+
+    state.extend('retrieve', retrieve);
+
+    state.isNew = isNew;
+
+    state.isReady = isReady;
+
+    state.isType = isType;
+
+    state.elements = elements;
+
+    state.regions = regions;
+
+    state.types = types;
+
+    state.props = props;
+
+    state.refs = refs;
+
+    const render = () => {
+        return !isReady ? (
+            <Spinner className={cx('spinner')} />
+        ) : (
+            <Form
+                ref={setForm}
+                onChange={onChange}
+                onSubmit={onSubmit}
+                onComplete={onComplete}
+                onValidate={onValidate}
+                onBeforeSubmit={onBeforeSubmit}
+            >
+                <Helmet>
+                    <title>
+                        {String(title).replace('%type', op.get(params, 'type'))}
+                    </title>
+                </Helmet>
+                {state.Form && (
+                    <div
+                        ref={(elm) => refs.set('container', elm)}
+                        className={cn(cx(), cx(state.get('type')), className)}
+                    >
+                        {regions.map((region, i) =>
+                            String(region.id).startsWith('sidebar') ? (
+                                <ResizeWrap
+                                    key={`region-${i}`}
+                                    className={cn(cx('column'), 'resizable')}
+                                    size={
+                                        state.get('sidebarSize') ||
+                                        initialSidebarWidth()
+                                    }
+                                    onResizeStop={onResized}
+                                    onResize={onResize}
+                                >
+                                    <div
+                                        className={cx('sidebar-placeholder')}
+                                        ref={(elm) =>
+                                            refs.set('sidebarContainer', elm)
+                                        }
+                                    />
+                                    <div
+                                        className={cn(
+                                            cx('sidebar'),
+                                            cx(`sidebar-${region.id}`),
+                                        )}
+                                    >
+                                        {op
+                                            .get(elements, [region.id], [])
+                                            .map(({ Component, ...item }) => (
+                                                <div
+                                                    key={item.fieldId}
+                                                    className={cn(
+                                                        cx('sidebar-element'),
+                                                        cx(
+                                                            `sidebar-element-${item.fieldId}`,
+                                                        ),
+                                                    )}
+                                                >
+                                                    <Component
+                                                        {...item}
+                                                        params={params}
+                                                        key={item.fieldId}
+                                                        editor={state}
+                                                    />
+                                                </div>
+                                            ))}
+                                    </div>
+                                </ResizeWrap>
+                            ) : (
+                                <div
+                                    key={`region-${i}`}
+                                    className={cn(cx('column'))}
+                                >
+                                    <div
+                                        className={cn(
+                                            cx(region.id),
+                                            `content-editor-${region.id}`,
+                                        )}
+                                    >
+                                        {op
+                                            .get(elements, [region.id], [])
+                                            .map(({ Component, ...item }) => (
+                                                <div
+                                                    key={item.fieldId}
+                                                    className={cn(
+                                                        cx('element'),
+                                                        cx(
+                                                            `element-${item.fieldId}`,
+                                                        ),
+                                                    )}
+                                                >
+                                                    <Component
+                                                        {...item}
+                                                        params={params}
+                                                        editor={state}
+                                                    />
+                                                </div>
+                                            ))}
+                                    </div>
+                                </div>
+                            ),
+                        )}
+                    </div>
+                )}
+            </Form>
+        );
+    };
+
+    return render();
+};
+
+ContentEditor.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+};
+
+ContentEditor.defaultProps = {
+    namespace: 'admin-content-editor',
+    title: __('Content Editor / %type'),
+};
+
+const ResizeWrap = forwardRef(
+    ({ children, className, size, onResizeStop, onResize }, ref) => {
+        const [winSize, setSize] = useState(window ? window.innerWidth : 0);
+
+        const onWindowResize = useCallback(() => {
+            setSize(window.innerWidth);
+        }, [window]);
+
+        useEffect(() => {
+            if (!window) return;
+            window.addEventListener('resize', onWindowResize);
+            return () => {
+                window.removeEventListener('resize', onWindowResize);
+            };
+        }, [window]);
+
+        return winSize <= 990 ? (
+            <div className={className} children={children} ref={ref} />
+        ) : (
+            <Resizable
+                ref={ref}
+                size={size}
+                minWidth={min}
+                maxWidth={window.innerWidth / 2}
+                children={children}
+                className={className}
+                handleStyles={{ right: { width: 25 } }}
+                onResizeStop={onResizeStop}
+                onResize={onResize}
+                enable={{
+                    top: false,
+                    right: false,
+                    bottom: false,
+                    left: true,
+                    topRight: false,
+                    bottomRight: false,
+                    bottomLeft: false,
+                    topLeft: false,
+                }}
+                handleClasses={{
+                    top: 'handle-top',
+                    topRight: 'handle-top-right',
+                    topLeft: 'handle-top-left',
+                    bottom: 'handle-bottom',
+                    bottomRight: 'handle-bottom-right',
+                    bottomLeft: 'handle-bottom-left',
+                    left: 'handle-left',
+                    right: 'handle-right',
+                }}
+            />
+        );
+    },
+);
+
+class FieldRegistry {
+    constructor(fields) {
+        this.__fields = Array.from(fields || []);
+    }
+
+    get list() {
+        return _.compact(
+            this.__fields.map((item) => {
+                try {
+                    const { component } = Reactium.Content.Editor.get(
+                        item.fieldType,
+                    );
+                    if (component && !item.Component) {
+                        item.Component = component;
+                    }
+                    return item.Component ? item : null;
+                } catch (error) {
+                    console.error(error);
+                    return null;
+                }
+            }),
+        );
+    }
+
+    get regions() {
+        return _.chain(this.list).compact().groupBy('region').value();
+    }
+
+    get isField() {
+        return (fieldId) => !!_.findWhere(this.list, { fieldId });
+    }
+
+    get add() {
+        return (params, uniq = true) => {
+            const { index = -1, ...field } = params;
+
+            if (uniq && this.isField(op.get(params, 'fieldId'))) return;
+
+            if (index < 0) this.__fields.push(field);
+            else this.__fields.splice(index, 0, field);
+
+            return this;
+        };
+    }
+
+    get replace() {
+        return (params) => {
+            const fieldId = op.get(params, 'fieldId');
+            const index = _.findIndex(this.__fields, { fieldId });
+            if (index < 0) return;
+
+            this.__fields.splice(index, 1, params);
+
+            return this;
+        };
+    }
+
+    get remove() {
+        return (fieldId) => {
+            const index = _.findIndex(this.__fields, { fieldId });
+
+            if (index < 0) return;
+
+            this.__fields.splice(index, 1);
+
+            return this;
+        };
+    }
+}
+
+export const NewContentButton = () => {
+    const params = useRouteParams();
+    const type = op.get(params, 'type');
+
+    return (
+        type &&
+        params && (
+            <Button
+                outline
+                size='xs'
+                color='primary'
+                appearance='pill'
+                className='mr-xs-24'
+                onClick={() => Reactium.Content.newObject(type)}
+            >
+                <Icon name='Feather.Plus' size={18} />
+                <span className='hide-xs show-md ml-xs-12'>
+                    {__('New %type').replace(/%type/gi, type)}
+                </span>
+            </Button>
+        )
+    );
+};
+
+const initialSidebarWidth = () => {
+    const size = Reactium.Prefs.get('content-editor-sidebar') || {
+        width: iw,
+    };
+
+    const max =
+        window.innerWidth > 990 ? window.innerWidth / 2 : window.innerWidth;
+
+    let w = op.get(size, 'width', iw);
+    w = w < min ? min : w;
+    w = w > max ? max : w;
+
+    size.width = w;
+
+    return size;
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/reactium-hooks.js
new file mode 100644
index 00000000..13bc84bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/reactium-hooks.js
@@ -0,0 +1,73 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin Editor
+ * -----------------------------------------------------------------------------
+ */
+
+import './sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { ElementDialog } from './ElementDialog';
+import { ContentEditor, NewContentButton } from './index';
+
+(async () => {
+    await Reactium.Plugin.register('ContentEditor');
+    Reactium.Component.register('ContentEditor', ContentEditor);
+    Reactium.Component.register('ElementDialog', ElementDialog);
+
+    Reactium.Zone.addComponent({
+        order: -1000,
+        component: ContentEditor,
+        id: 'ADMIN-CONTENT-EDITOR',
+        zone: ['admin-content-editor'],
+    });
+
+    Reactium.Zone.addComponent({
+        id: 'ADMIN-CONTENT-ACTIONS',
+        component: NewContentButton,
+        order: 100, // don't change this - Cam
+        zone: ['admin-logo', 'admin-content-actions'],
+    });
+
+    Reactium.Hook.register('blueprints', async (Blueprint) => {
+        [
+            {
+                ID: 'Content-Editor',
+                description: 'Content editor',
+                sections: {
+                    sidebar: {
+                        zones: ['admin-sidebar'],
+                        meta: {},
+                    },
+                    main: {
+                        zones: ['admin-header', 'admin-content-editor'],
+                        meta: {},
+                    },
+                },
+                meta: {
+                    admin: true,
+                    builtIn: true,
+                    namespace: 'admin-page',
+                },
+            },
+            {
+                ID: 'Content',
+                description: 'Content List',
+                sections: {
+                    sidebar: {
+                        zones: ['admin-sidebar'],
+                        meta: {},
+                    },
+                    main: {
+                        zones: ['admin-header', 'admin-content-list'],
+                        meta: {},
+                    },
+                },
+                meta: {
+                    admin: true,
+                    builtIn: true,
+                    namespace: 'admin-page',
+                },
+            },
+        ].forEach((bp) => Blueprint.register(bp.ID, bp));
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/sdk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/sdk.js
new file mode 100644
index 00000000..3c25b20a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/Editor/sdk.js
@@ -0,0 +1,448 @@
+import _ from 'underscore';
+import op from 'object-path';
+import { Button } from 'reactium-ui';
+import Reactium, { __, Registry } from '@atomic-reactor/reactium-core/sdk';
+
+Reactium.Cache.set('content', {});
+Reactium.Enums.cache.content = 10000;
+const ENUMS = {
+    TITLE_LENGTH: 4,
+    REQUIRED: ['title'],
+    ERROR: {
+        TITLE_LENGTH: __('title paramater must be 4 characters or more'),
+        REQUIRED: __('is a required parameter'),
+        STRING: __('%key must be of type String'),
+        UUID: __('uuid is a required parameter'),
+    },
+};
+
+class SDK {
+    constructor() {
+        this.__pagination = {};
+        this.__listComponents = new Registry('ContentList', 'id');
+        this.__editorComponents = new Registry('ContentEditor', 'id');
+
+        Reactium.Cache.subscribe('content-filters', ({ op }) => {
+            if (['set', 'del'].includes(op)) this.filterCleanse();
+        });
+    }
+
+    get Editor() {
+        return this.__editorComponents;
+    }
+
+    get ListComponents() {
+        return this.__listComponents;
+    }
+
+    get pagination() {
+        return this.__pagination;
+    }
+
+    get data() {
+        return _.clone(Reactium.Cache.get('content', {}));
+    }
+
+    get filterCleanse() {
+        return () => {
+            let cleansed = false;
+            const filters = this.filters;
+            Object.keys(filters).forEach((ns) => {
+                const fields = Object.keys(filters[ns]);
+                fields.forEach((field) => {
+                    const value = op.get(filters, [ns, field]);
+                    if (_.isArray(value) && value.length < 1) {
+                        op.del(filters, [ns, field]);
+                        cleansed = true;
+                    }
+                });
+            });
+
+            if (cleansed) Reactium.Cache.set('content-filters', filters);
+        };
+    }
+
+    get filterOptions() {
+        const opt = {
+            status: Object.values(Reactium.Content.STATUS),
+        };
+
+        return (type, ns) => {
+            ns = ns || 'admin-content-filter-options';
+
+            // @reactium hook.content-filters Object collection of content filters grouped by the field
+            Reactium.Hook.runSync(ns, opt);
+
+            if (type) {
+                Reactium.Hook.runSync(`${ns}-${type}`, opt);
+            }
+
+            return opt;
+        };
+    }
+
+    get filters() {
+        let items = Reactium.Cache.get('content-filters');
+        items = !items ? {} : items;
+        return _.clone(items);
+    }
+
+    get filtersByType() {
+        return (type) => _.clone(op.get(this.filters, type, {}));
+    }
+
+    get isFilter() {
+        return ({ field, type, value }) =>
+            Array.from(op.get(this.filters, [type, field], [])).includes(value);
+    }
+
+    get isFiltered() {
+        return (type) => {
+            let values = false;
+
+            const filters = this.filters;
+            Object.keys(filters).forEach((ns) => {
+                if (values === true || type !== ns) return;
+
+                const fields = Object.keys(filters[ns]);
+                fields.forEach((field) => {
+                    const value = op.get(filters, [ns, field]);
+                    values = _.isArray(value) && value.length > 0;
+                });
+            });
+
+            return values;
+        };
+    }
+
+    get toggleFilter() {
+        return ({ field, type, value }) => {
+            const filtered = this.isFilter({ field, type, value });
+            if (filtered) this.removeFilter({ field, type, value });
+            else this.addFilter({ field, type, value });
+        };
+    }
+
+    get addFilter() {
+        return ({ field, type, value }) => {
+            const filters = this.filters;
+
+            const current = op.get(filters, [type, field], []);
+            current.push(value);
+
+            op.set(filters, [type, field], _.uniq(current));
+
+            Reactium.Cache.set('content-filters', filters);
+
+            return this;
+        };
+    }
+
+    get removeFilter() {
+        return ({ field, type, value }) => {
+            const values = _.isString(value) ? [value] : _.uniq(value);
+
+            let filters = this.filters;
+
+            values.forEach((v) => {
+                let current = op.get(filters, [type, field], []) || [];
+                current = _.without(current, v);
+                op.set(filters, [type, field], current);
+            });
+
+            Reactium.Cache.set('content-filters', filters);
+            return this;
+        };
+    }
+
+    get clearFilter() {
+        return ({ type }) => {
+            const filters = this.filters;
+            op.del(filters, type);
+            Reactium.Cache.set('content-filters', filters);
+            return this;
+        };
+    }
+
+    get save() {
+        const isError = (req) => () =>
+            _.isArray(op.get(req.context, 'error.message'));
+
+        const getError = (req) => () => {
+            let msgs = op.get(req.context, 'error.message', []);
+            msgs = _.isArray(msgs) ? msgs : [];
+            return msgs.join('.\n');
+        };
+
+        const setError = (req) => (msg, key) => {
+            let msgs = op.get(req.context, 'error.message', []);
+            msgs = _.isArray(msgs) ? msgs : [];
+            msgs.push(msg);
+
+            op.set(req.context, 'error.message', msgs);
+            if (key) op.set(req.context.errors, key, msg);
+        };
+
+        const validate = async (req) => {
+            req.context.errors = {};
+            req.context.error.message = null;
+
+            let required = op.get(req.context, 'required', []);
+
+            if (!required.includes('title')) required.push('title');
+            if (!required.includes('type')) required.push('type');
+
+            required = _.uniq(required);
+
+            required.forEach((key) => {
+                const val = op.get(req.object, key);
+
+                if (!val) {
+                    req.context.error.set(
+                        `[${key}:String] ${ENUMS.ERROR.REQUIRED}`,
+                        key,
+                    );
+                }
+            });
+
+            const type = op.get(req.object, 'type');
+            if (type && !_.isString(type)) {
+                req.context.error.set(
+                    String(ENUMS.ERROR.STRING).replace(/%key/gi, 'type'),
+                );
+            }
+
+            const prom = [Reactium.Hook.run('content-validate', req)];
+
+            if (type) {
+                prom.push(Reactium.Hook.run(`content-validate-${type}`, req));
+            }
+
+            return Promise.all(prom);
+        };
+
+        return async (obj, skipValidation = false) => {
+            obj = this.utils.serialize(obj);
+
+            const req = {
+                object: obj,
+                context: {},
+            };
+
+            req.context.errors = {};
+            req.context.isError = isError(req);
+            req.context.required = ENUMS.REQUIRED;
+
+            req.context.error = {
+                message: null,
+                set: setError(req),
+                get: getError(req),
+            };
+
+            const type = op.get(req.object, 'type');
+
+            await Promise.all([
+                Reactium.Hook.run('content-before-save', req),
+                Reactium.Hook.run(`content-before-save-${type}`, req),
+            ]);
+
+            if (skipValidation !== true) {
+                await validate(req);
+            }
+
+            if (req.context.isError()) {
+                throw new Error(req.context.error.get());
+            }
+
+            await Promise.all([
+                Reactium.Hook.run('content-save', req),
+                Reactium.Hook.run(`content-save-${type}`, req),
+            ]);
+
+            try {
+                const newObj = await Reactium.Cloud.run(
+                    'content-save',
+                    req.object,
+                );
+                if (!_.isError(newObj)) {
+                    const cached = Reactium.Cache.get('content') || {
+                        [type]: {},
+                    };
+                    op.set(cached, [type, newObj.get('uuid')], newObj.toJSON());
+                    Reactium.Cache.set('content', cached);
+                }
+
+                return newObj;
+            } catch (err) {
+                return new Error(err.message);
+            }
+        };
+    }
+
+    get fetch() {
+        return (params = {}) => {
+            const type = op.get(params, 'type');
+            if (!type) {
+                throw new Error(
+                    'Reactium.Content.fetch() type is a required parameter',
+                );
+            }
+
+            const page = Number(op.get(params, 'page', 1));
+
+            const cacheKey = `content_${type}_${page}`;
+
+            const refresh = op.get(params, 'refresh');
+
+            if (refresh === true) Reactium.Cache.del(cacheKey);
+
+            const request =
+                Reactium.Cache.get(cacheKey) ||
+                Reactium.Cloud.run('content-list', params).then(
+                    ({ results, ...pagination }) => {
+                        op.set(this.__pagination, type, pagination);
+                        results.forEach((item) => this.utils.store(type, item));
+                        return Object.values(op.get(this.data, type, {}));
+                    },
+                );
+
+            Reactium.Cache.set(cacheKey, request, Reactium.Enums.cache.content);
+
+            return request;
+        };
+    }
+
+    get retrieve() {
+        return async (uuid) => {
+            if (!uuid) {
+                throw new Error(
+                    `Reactium.Content.retrive() ${ENUMS.ERROR.UUID}`,
+                );
+            }
+
+            let params = _.isString(uuid) ? { uuid } : uuid;
+
+            await Reactium.Hook.run('content-retrieve', params);
+
+            return Reactium.Cloud.run('content-retrieve', params);
+        };
+    }
+
+    get delete() {
+        return async ({ type, uuid }) => {
+            // required fields
+            Object.entries({ type, uuid }).forEach(([k, v]) => {
+                if (!v) {
+                    throw new Error(
+                        `Reactium.Content.setStatus({ status, type, uuid }) ${k} ${ENUMS.ERROR.REQUIRED}`,
+                    );
+                }
+            });
+
+            // Fetch the object to destroy
+            const obj = await this.retrieve(uuid);
+            obj.set('status', status);
+
+            return obj
+                .destroy()
+                .then((result) => {
+                    const ck = `content.${type}`;
+                    const cache = Reactium.Cache.get(ck);
+                    if (cache && op.get(cache, uuid)) {
+                        this.utils.store(type, { uuid }, true);
+                    }
+                    return result;
+                })
+                .catch((err) => {
+                    throw new Error(err.message);
+                });
+        };
+    }
+
+    get setStatus() {
+        return async ({ status, type, uuid }) => {
+            // required fields
+            Object.entries({ status, type, uuid }).forEach(([k, v]) => {
+                if (!v) {
+                    throw new Error(
+                        `Reactium.Content.setStatus({ status, type, uuid }) ${k} ${ENUMS.ERROR.REQUIRED}`,
+                    );
+                }
+            });
+
+            // Fetch the object and update the status
+            const obj = await this.retrieve(uuid);
+            obj.set('status', status);
+
+            return obj
+                .save()
+                .then((result) => {
+                    const ck = `content.${type}`;
+                    const cache = Reactium.Cache.get(ck);
+                    if (cache && op.get(cache, uuid)) {
+                        op.set(cache, [uuid, 'status'], status);
+                        op.set(cache, [uuid, 'updatedAt'], moment().toString());
+                        this.utils.store(type, cache[uuid]);
+                    }
+
+                    return result;
+                })
+                .catch((err) => {
+                    throw new Error(err.message);
+                });
+        };
+    }
+
+    get utils() {
+        return {
+            serialize: (obj) => (op.get(obj, 'id') ? obj.toJSON() : obj),
+
+            store: (type, item, remove = false) => {
+                if (!type) {
+                    throw new Error(
+                        'Reactium.Content.store() type is a required parameter',
+                    );
+                }
+                if (item) {
+                    item = _.isFunction(item.toJSON) ? item.toJSON() : item;
+
+                    const data = this.data;
+
+                    if (remove === true) {
+                        op.del(data, [type, item.uuid]);
+                    } else {
+                        op.set(data, [type, item.uuid], item);
+                    }
+
+                    Reactium.Cache.set('content', data);
+                }
+
+                return this;
+            },
+        };
+    }
+
+    newObject(type) {
+        Reactium.Cache.set('reset', `/admin/content/${type}/new`);
+        Reactium.Routing.history.push('/admin/reset');
+    }
+}
+
+Reactium.Content = new SDK();
+
+Reactium.Content.STATUS = {
+    DRAFT: { label: 'DRAFT', value: 'DRAFT' },
+    PENDING: { label: 'PENDING', value: 'PENDING' },
+    PUBLISHED: { label: 'PUBLISHED', value: 'PUBLISHED' },
+    DELETED: { label: 'DELETED', value: 'DELETED' },
+};
+
+Reactium.Content.COLOR = {
+    REMOVE: Button.ENUMS.COLOR.DANGER,
+    DRAFT: Button.ENUMS.COLOR.TERTIARY,
+    DELETED: Button.ENUMS.COLOR.DANGER,
+    PENDING: Button.ENUMS.COLOR.WARNING,
+    PUBLISHED: Button.ENUMS.COLOR.SUCCESS,
+};
+
+export default Reactium.Content;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/domain.js
new file mode 100644
index 00000000..e40e083e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/domain.js
@@ -0,0 +1,9 @@
+/**
+ * -----------------------------------------------------------------------------
+ * DDD Domain Empty - Change name to place domain artifacts in this directory
+ * in a different domain.
+ * -----------------------------------------------------------------------------
+ */
+module.exports = {
+    name: 'Empty',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/index.js
new file mode 100644
index 00000000..08cce4bc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/Empty/index.js
@@ -0,0 +1,28 @@
+import PropTypes from 'prop-types';
+import { useSyncState } from '@atomic-reactor/reactium-core/sdk';
+import React, { forwardRef, useImperativeHandle } from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Empty
+ * -----------------------------------------------------------------------------
+ */
+let Empty = ({ className }, ref) => {
+    const state = useSyncState({});
+
+    useImperativeHandle(ref, () => state);
+
+    return <div className={className}>Empty</div>;
+};
+
+Empty = forwardRef(Empty);
+
+Empty.propTypes = {
+    className: PropTypes.string,
+};
+
+Empty.defaultProps = {
+    className: '',
+};
+
+export default Empty;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/index.js
new file mode 100644
index 00000000..ffb7230e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/index.js
@@ -0,0 +1,235 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import Empty from './Empty';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Spinner } from 'reactium-ui';
+import { ListItem } from '../ListItem';
+import { useRouteParams } from 'reactium-admin-core';
+import React, { useCallback, useEffect } from 'react';
+
+import Reactium, {
+    __,
+    cxFactory,
+    useHookComponent,
+    useStateEffect,
+    useSyncState,
+    Zone,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ContentList = ({ className, limit: initialLimit, namespace, title }) => {
+    const params = useRouteParams();
+
+    const Helmet = useHookComponent('Helmet');
+
+    const [data, fetch] = useHookComponent('useContent')(
+        op.get(params, 'type'),
+        false,
+    );
+
+    const state = useSyncState({
+        filtered: false,
+        limit: initialLimit,
+        page: Number(op.get(params, 'page', 1)),
+        pages: 1,
+        search: '',
+        type: op.get(params, 'type'),
+        updated: null,
+    });
+
+    const filter = () => {
+        if (!data || data === false) return;
+        const { limit, page, search, type } = state.get();
+
+        // apply search
+        const matcher = (item) => {
+            let match = String(op.get(item, 'title', ''))
+                .toLowerCase()
+                .includes(search);
+
+            match = !match
+                ? String(op.get(item, 'slug', ''))
+                      .toLowerCase()
+                      .includes(search)
+                : match;
+
+            return match;
+        };
+
+        let results = Array.from(data).filter(matcher);
+
+        // apply filters
+        let filters = op.get(Reactium.Content.filters, type, {});
+
+        if (Reactium.Content.isFiltered(type)) {
+            results = results.filter((item) => {
+                let valid = true;
+
+                Object.entries(filters).forEach(([field, values]) => {
+                    if (valid === false) return;
+                    let value = op.get(item, field);
+
+                    switch (field) {
+                        case 'user':
+                            value = op.get(item, field)
+                                ? item.user.objectId
+                                : null;
+                            break;
+                    }
+
+                    valid = _.flatten(values).includes(value);
+                });
+
+                return valid;
+            });
+        }
+
+        // remove deleted records from list if it's not a filter
+        if (
+            !Reactium.Content.isFilter({
+                field: 'status',
+                type,
+                value: Reactium.Content.STATUS.DELETED.value,
+            })
+        ) {
+            results = results.filter(
+                (item) =>
+                    op.get(item, 'status') !==
+                    Reactium.Content.STATUS.DELETED.value,
+            );
+        }
+
+        const items = _.chunk(results, limit)[page - 1] || [];
+
+        state.set({
+            filtered: items,
+            pages: Math.ceil(results.length / limit),
+        });
+    };
+
+    const onSearch = useCallback((e) => {
+        state.set('search', String(e.value || '').toLowerCase(), true);
+        state.set('updated', Date.now());
+    }, []);
+
+    const isEmpty = useCallback(() => {
+        return Boolean(data !== false && Object.values(data).length < 1);
+    }, [data]);
+
+    const cx = cxFactory(namespace);
+
+    useStateEffect(
+        {
+            [cx('search')]: onSearch,
+        },
+        [],
+    );
+
+    useEffect(() => {
+        const path = op.get(Reactium.Routing.currentRoute, 'location.pathname');
+        if (!String(path).startsWith('/admin/content')) return;
+
+        const page = op.get(params, 'page', 1);
+        const type = op.get(params, 'type');
+        const curr = state.get('type');
+
+        state.set({ page, type });
+
+        if (type !== curr) fetch({ page, type });
+    }, [params]);
+
+    useEffect(() => {
+        const type = state.get('type');
+
+        return Reactium.Cache.subscribe(
+            `content-filters.${type}`,
+            async ({ op }) => {
+                if (['set', 'del'].includes(op)) {
+                    state.set('updated', Date.now());
+                }
+            },
+        );
+    }, [state.get('type')]);
+
+    useEffect(() => filter(), [data]);
+
+    useEffect(() => filter(), [state.get('updated')]);
+
+    const render = () => {
+        const { filtered, type } = state.get();
+
+        state.extend('cx', cx);
+        state.extend('filter', filter);
+        state.extend('isEmpty', isEmpty);
+
+        const handle = {
+            cx,
+            type,
+            'data-zone-ns': cx(),
+            path: `/admin/content/${type}`,
+            registry: Reactium.Content.ListComponent,
+        };
+
+        return filtered === false ? (
+            <Spinner className={cx('spinner')} />
+        ) : (
+            <div className={cn({ [cx()]: true, [className]: !!className })}>
+                <Helmet>
+                    <title>
+                        {String(title).replace('%type', state.get('type'))}
+                    </title>
+                </Helmet>
+                <div className={cx('content')}>
+                    {isEmpty() ? (
+                        <Empty />
+                    ) : (
+                        <>
+                            <Zone
+                                zone={cx('top')}
+                                data-zone-ns={cx()}
+                                data-handle={handle}
+                            />
+                            {filtered.map((item) => (
+                                <ListItem
+                                    cx={cx}
+                                    {...item}
+                                    {...handle}
+                                    handle={state}
+                                    key={`${item.uuid}.${Date.now()}`}
+                                    registry={Reactium.Content.ListComponents}
+                                />
+                            ))}
+                            <Zone
+                                zone={cx('bottom')}
+                                data-zone-ns={cx()}
+                                data-handle={handle}
+                            />
+                        </>
+                    )}
+                </div>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+ContentList.propTypes = {
+    className: PropTypes.string,
+    limit: PropTypes.number,
+    namespace: PropTypes.string,
+    title: PropTypes.string,
+};
+
+ContentList.defaultProps = {
+    limit: 50,
+    namespace: 'admin-content-list',
+    title: __('Content / %type'),
+};
+
+const ContentListShim = () => {
+    const params = useRouteParams();
+    return !op.get(params, 'type') ? null : <ContentList {...params} />;
+};
+
+export { ContentListShim, ContentListShim as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/reactium-hooks.js
new file mode 100644
index 00000000..d3d6ae69
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/reactium-hooks.js
@@ -0,0 +1,86 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin List
+ * -----------------------------------------------------------------------------
+ */
+
+import Component from './index';
+import { Helmet } from 'react-helmet';
+import { SearchBar } from '../SearchBar';
+import { useContent } from './useContent';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { SearchFilters, SearchFilterOptions } from '../SearchBar/SearchFilters';
+
+import {
+    ListItemDelete,
+    ListItemMeta,
+    ListItemStatus,
+    ListItemTitle,
+} from '../ListItem';
+
+(async () => {
+    await Reactium.Plugin.register(
+        'ContentList',
+        Reactium.Enums.priority.lowest,
+    );
+
+    Reactium.Component.register('Helmet', Helmet);
+
+    Reactium.Component.register('useContent', useContent);
+
+    Reactium.Zone.addComponent({
+        order: -1000,
+        component: Component,
+        zone: ['admin-content-list'],
+        id: 'ADMIN-CONTENT-LIST',
+    });
+
+    Reactium.Zone.addComponent({
+        order: 100,
+        component: SearchBar,
+        zone: ['admin-content-list-top'],
+        id: 'ADMIN-CONTENT-LIST-SEARCH',
+    });
+
+    Reactium.Zone.addComponent({
+        order: 100,
+        component: SearchFilters,
+        id: 'ADMIN-CONTENT-LIST-SEARCH-FILTERS',
+        zone: ['admin-content-list-search-actions'],
+    });
+
+    Reactium.Zone.addComponent({
+        order: 20,
+        component: SearchFilterOptions,
+        id: 'ADMIN-CONTENT-LIST-SEARCH-FILTERS',
+        zone: ['admin-content-list-search-filter-menu'],
+    });
+
+    Reactium.Content.ListComponents.register('ADMIN-CONTENT-LIST-TITLE', {
+        order: 60,
+        Component: ListItemTitle,
+        id: 'ADMIN-CONTENT-LIST-TITLE',
+        zones: ['admin-content-list-item-center'],
+    });
+
+    Reactium.Content.ListComponents.register('ADMIN-CONTENT-LIST-META', {
+        order: 65,
+        Component: ListItemMeta,
+        id: 'ADMIN-CONTENT-LIST-META',
+        zones: ['admin-content-list-item-center'],
+    });
+
+    Reactium.Content.ListComponents.register('ADMIN-CONTENT-LIST-DELETE', {
+        order: 70,
+        Component: ListItemDelete,
+        id: 'ADMIN-CONTENT-LIST-DELETE',
+        zones: ['admin-content-list-item-right'],
+    });
+
+    Reactium.Content.ListComponents.register('ADMIN-CONTENT-LIST-STATUS', {
+        order: 75,
+        Component: ListItemStatus,
+        id: 'ADMIN-CONTENT-LIST-STATUS',
+        zones: ['admin-content-list-item-right'],
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/useContent.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/useContent.js
new file mode 100644
index 00000000..2a3196e5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/List/useContent.js
@@ -0,0 +1,45 @@
+import op from 'object-path';
+import { useState } from 'react';
+import Reactium, { useAsyncEffect } from '@atomic-reactor/reactium-core/sdk';
+
+export const useContent = (type, defaultValue = []) => {
+    const [page, setPage] = useState(1);
+    const [updated, update] = useState();
+    const [content, setContent] = useState(defaultValue);
+
+    const fetch = (params = {}) => Reactium.Content.fetch(params);
+
+    const refresh = () => fetch({ page, type, refresh: true });
+
+    useAsyncEffect(
+        async (mounted) =>
+            Reactium.Cache.subscribe(
+                `content.${type}`,
+                async ({ op: oper, value }) => {
+                    if (['set', 'del'].includes(oper)) {
+                        const changed = op.get(value, type);
+                        if (mounted()) setContent(Object.values(changed));
+                        update(Date.now());
+                    }
+                },
+            ),
+        [type, updated],
+    );
+
+    useAsyncEffect(
+        async (mounted) => {
+            const results = await fetch({ page, type });
+            const pages = op.get(
+                Reactium.Content.pagination,
+                [type, 'pages'],
+                1,
+            );
+
+            if (mounted()) setContent(results);
+            if (page < pages) setPage(page + 1);
+        },
+        [page, type],
+    );
+
+    return [content, refresh];
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/index.js
new file mode 100644
index 00000000..c8568aa5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/index.js
@@ -0,0 +1,441 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import moment from 'moment';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Link } from 'react-router-dom';
+import { Button, Icon } from 'reactium-ui';
+import React, { forwardRef, useEffect, useMemo, useState } from 'react';
+
+import Reactium, {
+    __,
+    useDispatcher,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: ListItem
+ * -----------------------------------------------------------------------------
+ */
+
+const updatedObj = (obj) => {
+    const { type, uuid } = obj;
+    const ck = `content.${type}.${uuid}`;
+    const cached = Reactium.Cache.get(ck);
+
+    if (cached) {
+        const cupd = cached.updatedAt;
+        const upd = obj.updatedAt;
+
+        if (moment(cupd).isAfter(moment(upd))) {
+            return { ...obj, ...cached };
+        }
+    }
+
+    return obj;
+};
+
+export const ListItemIcon = ({ cx, meta, path, idField, ...props }) => {
+    return (
+        <Link
+            className={cn(cx('icon'), 'ico')}
+            to={`${path}/${op.get(props, idField)}`}
+        >
+            <Icon name={op.get(meta, 'icon', 'Feather.Typewriter')} />
+            <Icon name='Linear.Pencil2' />
+        </Link>
+    );
+};
+
+export const ListItemTitle = (props) => {
+    let p;
+
+    switch (op.get(props, 'data-zone-ns')) {
+        case 'admin-content-type-list':
+            p = 'meta.label';
+            break;
+
+        default:
+            p = 'title';
+    }
+
+    return <div className={props.cx('item-title')}>{op.get(props, p)}</div>;
+};
+
+export const ListItemMeta = (props) => {
+    const slug = useMemo(() => {
+        let s;
+
+        switch (op.get(props, 'data-zone-ns')) {
+            case 'admin-content-type-list':
+                s = 'machineName';
+                break;
+
+            default:
+                s = 'slug';
+        }
+
+        return String(op.get(props, s)).toLowerCase();
+    }, []);
+
+    return (
+        <div className='small'>
+            {slug}
+            {' - '}
+            {props.createdAt === props.updatedAt
+                ? __('created')
+                : __('updated')}{' '}
+            {moment(new Date(props.updatedAt)).fromNow()}
+        </div>
+    );
+};
+
+export const ListItemCount = (props) => {
+    const count = _.compact(op.get(props, 'slugs', [])).length;
+    return (
+        <Button
+            outline
+            size={Button.ENUMS.SIZE.XS}
+            className='px-xs-12 mx-xs-12'
+            color={Button.ENUMS.COLOR.TERTIARY}
+            style={{ height: 26, minWidth: 44 }}
+            appearance={Button.ENUMS.APPEARANCE.PILL}
+            title={String(__('%n records')).replace(/%n/gi, count)}
+            onClick={() =>
+                Reactium.Routing.history.push(
+                    `/admin/content/${props.machineName}/page/1`,
+                )
+            }
+        >
+            {count}
+        </Button>
+    );
+};
+
+export const ListItemAdd = ({ type }) => (
+    <Button
+        style={{ height: 26 }}
+        title={__('Create New')}
+        className={cn('px-xs-12')}
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.primary}
+        appearance={Button.ENUMS.APPEARANCE.PILL}
+        onClick={() => Reactium.Content.newObject(type)}
+        children={<Icon name='Feather.Plus' size={16} />}
+    />
+);
+
+export const ListItemDelete = (props) => {
+    const refs = useRefs();
+
+    let { dispatch, handle, machineName, status, title, type, uuid } = props;
+
+    const state = useSyncState({
+        uuid: props.uuid,
+        status: 'READY',
+        confirmInput: null,
+        confirmMatch: __('purge content'),
+    });
+
+    const ConfirmBox = useHookComponent('ConfirmBox');
+
+    const isStatus = (str) =>
+        Boolean(
+            String(str).toUpperCase() ===
+                String(state.get('status')).toUpperCase(),
+        );
+
+    const tooltip =
+        status !== Reactium.Content.STATUS.DELETED.value
+            ? String(__('Delete %title')).replace(
+                  /%title/gi,
+                  title || machineName,
+              )
+            : String(__('Purge %title')).replace(
+                  /%title/gi,
+                  title || machineName,
+              );
+
+    const tip = {
+        title: tooltip,
+        type: 'button',
+        'data-align': 'left',
+        'data-tooltip': tooltip,
+        'data-vertical-align': 'middle',
+    };
+
+    const onClick = () => {
+        const evt =
+            op.get(props, 'data-zone-ns') === 'admin-content-type-list'
+                ? 'content-type-delete'
+                : status !== Reactium.Content.STATUS.DELETED.value
+                ? 'content-delete'
+                : 'content-purge';
+
+        if (handle) {
+            handle.dispatch(evt, {
+                detail: props,
+            });
+        } else if (dispatch) {
+            dispatch(evt, { detail: props });
+        }
+    };
+
+    const onDelete = async (e) => {
+        if (isStatus('PENDING')) return;
+
+        if (e.detail.uuid !== uuid) return;
+
+        const { Toast } = Reactium.State.Tools;
+
+        state.set('status', 'PENDING');
+
+        state.set('confirmInput', null);
+
+        let icon, message, result, toastType;
+
+        const isPurge = Boolean(
+            props.status === Reactium.Content.STATUS.DELETED.value,
+        );
+
+        try {
+            result = !isPurge
+                ? await Reactium.Content.setStatus({
+                      type,
+                      uuid,
+                      status: Reactium.Content.STATUS.DELETED.value,
+                  })
+                : await Reactium.Content.delete({
+                      type,
+                      uuid,
+                  });
+
+            icon = 'Feather.Check';
+
+            toastType = Toast.TYPE.SUCCESS;
+
+            message = isPurge
+                ? __('Purged %title').replace(/%title/gi, title)
+                : __('Deleted %title').replace(/%title/gi, title);
+        } catch (err) {
+            icon = 'Feather.X';
+
+            toastType = Toast.TYPE.ERROR;
+
+            message = _isPurge
+                ? _('Unable to purge %title').replace(/%title/gi, title)
+                : _('Unable to delete %title').replace(/%title/gi, title);
+
+            console.log(err);
+        }
+
+        Toast.show({
+            message,
+            autoClose: 2500,
+            type: toastType,
+            icon: <Icon name={icon} />,
+        });
+
+        state.set('status', 'READY');
+
+        return result;
+    };
+
+    const onPurge = (e) => {
+        if (e.detail.uuid !== uuid) return;
+
+        state.set('status', 'READY');
+        state.set('confirmInput', null, false);
+
+        const cancel = () => {
+            Reactium.State.Tools.Modal.dismiss();
+        };
+
+        const confirm = () => {
+            const i = String(state.get('confirmInput')).trim().toLowerCase();
+
+            const m = String(state.get('confirmMatch')).trim().toLowerCase();
+
+            if (i === m) {
+                onDelete(e);
+                Reactium.State.Tools.Modal.dismiss();
+            } else {
+                const input = refs.get('confirmed');
+                if (input) input.select();
+            }
+        };
+
+        return Reactium.State.Tools.Modal.show(
+            <ConfirmBox
+                key={e.detail.uuid}
+                onCancel={cancel}
+                onConfirm={confirm}
+                title={__('Purge Content')}
+                message={
+                    <ConfirmMessage
+                        state={state}
+                        ref={(elm) => refs.set('confirmed', elm)}
+                    />
+                }
+            />,
+        ).then(() => {
+            const input = refs.get('confirmed');
+            if (input) input.focus();
+        });
+    };
+
+    useEffect(() => {
+        if (!handle) return;
+
+        handle.addEventListener('content-delete', onDelete);
+        handle.addEventListener('content-purge', onPurge);
+        return () => {
+            handle.removeEventListener('content-delete', onDelete);
+            handle.removeEventListener('content-purge', onPurge);
+        };
+    }, [handle]);
+
+    return (
+        <div className={isStatus('PENDING') ? 'delete-visible' : 'delete'}>
+            {isStatus('PENDING') ? (
+                <button disabled {...tip}>
+                    <Icon name={'Linear.Sync'} className='spin' />
+                </button>
+            ) : (
+                <button {...tip} onClick={onClick}>
+                    <Icon
+                        name={
+                            status === Reactium.Content.STATUS.DELETED.value
+                                ? 'Linear.Recycle'
+                                : 'Feather.Trash2'
+                        }
+                    />
+                </button>
+            )}
+        </div>
+    );
+};
+
+const ConfirmMessage = forwardRef(({ state, ...props }, ref) => (
+    <div className='form-group'>
+        <div className='mb-xs-12'>
+            {__('Enter')} "{state.get('confirmMatch')}" {__('below')}
+        </div>
+        <input
+            ref={ref}
+            {...props}
+            type='text'
+            className='text-center'
+            placeholder={state.get('confirmMatch')}
+            onChange={(e) => state.set('confirmInput', e.target.value, false)}
+        />
+        <small>{__('Purging content cannot be undone')}</small>
+    </div>
+));
+
+export const ListItemStatus = ({ status, handle }) => {
+    const onClick = () => {
+        const value = String(status).toUpperCase();
+        const field = 'status';
+        const type = handle.get('type');
+
+        Reactium.Content.toggleFilter({ field, type, value });
+    };
+
+    const color = op.get(Reactium.Content.COLOR, status);
+
+    const tip = {
+        title: String(status).toLowerCase(),
+        'data-align': 'left',
+        'data-tooltip': String(status).toLowerCase(),
+        'data-vertical-align': 'middle',
+    };
+
+    return (
+        <Button
+            {...tip}
+            color={color}
+            onClick={onClick}
+            size={Button.ENUMS.SIZE.XS}
+            appearance={Button.ENUMS.APPEARANCE.PILL}
+            style={{ width: 16, height: 16, padding: 0 }}
+        />
+    );
+};
+
+export const ListItem = ({ registry, ...initialProps }) => {
+    const props = updatedObj(initialProps);
+
+    const dispatch = useDispatcher({ props });
+
+    const { className, idField, path, zone } = props;
+
+    const [components, setComponents] = useState(registry.list);
+
+    const filter = (str) => {
+        const z = String(props.cx(`${zone}-${str}`)).toLowerCase();
+        return _.sortBy(
+            components.filter((item) => item.zones.includes(z)),
+            'order',
+        );
+    };
+
+    useEffect(
+        () =>
+            registry.subscribe(() => {
+                setComponents(registry.list);
+            }),
+        [],
+    );
+
+    return (
+        <div className={cn(props.cx(zone), className)}>
+            {filter('left').map(({ Component }, i) => (
+                <Component
+                    key={`${zone}-left-${i}`}
+                    dispatch={dispatch}
+                    {...props}
+                />
+            ))}
+
+            <Link
+                to={`${path}/${op.get(props, idField)}`}
+                className={props.cx('item-info')}
+            >
+                {filter('center').map(({ Component }, i) => (
+                    <Component
+                        key={`${zone}-center-${i}`}
+                        dispatch={dispatch}
+                        {...props}
+                    />
+                ))}
+            </Link>
+
+            <div className={props.cx('item-actions')}>
+                {filter('right').map(({ Component }, i) => (
+                    <div
+                        key={`${zone}-right-${i}`}
+                        className={props.cx('item-actions-child')}
+                    >
+                        <Component dispatch={dispatch} {...props} />
+                    </div>
+                ))}
+            </div>
+        </div>
+    );
+};
+
+ListItem.propTypes = {
+    className: PropTypes.string,
+    idField: PropTypes.string,
+    path: PropTypes.string,
+    zone: PropTypes.string,
+};
+
+ListItem.defaultProps = {
+    idField: 'uuid',
+    zone: 'item',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/readme.md b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/readme.md
new file mode 100644
index 00000000..5366b931
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/ListItem/readme.md
@@ -0,0 +1,41 @@
+Used to filter the content list results.
+
+### Event Object
+
+| Property  | Type   | Description                         |
+| --------- | ------ | ----------------------------------- |
+| field     | String | `Content` Object field to filter on |
+| namespace | String | The admin zone namespace            |
+| value     | Any    | The filter value to apply           |
+
+### Usage
+
+You can dispatch the `list-filter` event from your component:
+
+```
+// MyStatusComponent.js
+
+import React from 'react';
+import Reactium, { useDispatcher, useStateEffect } from '@atomic-reactor/reactium-core/sdk';
+
+export const MyStatusComponent = () => {
+    const dispatch = useDispatcher();
+
+    const handler = e => value => {
+        const field = 'status';
+        const namespace = 'admin-content-list-filter';
+        dispatch('list-filter', { field, namespace, value });
+    };
+
+    useStateEffect({
+        'list-filter': console.log,
+    });
+
+    return Object.values(Reactium.Content.STATUS).map((status, i) => (
+        <button key={`stat-${i}`} onClick={handler(status.value)}>
+            {status.label}
+        </button>
+    ));
+};
+
+```
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/SearchFilters.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/SearchFilters.js
new file mode 100644
index 00000000..d8c1721f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/SearchFilters.js
@@ -0,0 +1,252 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import pluralize from 'pluralize';
+import React, { useCallback, useEffect, useMemo } from 'react';
+import { Button, Icon } from 'reactium-ui';
+
+import Reactium, {
+    __,
+    useIsContainer,
+    useRefs,
+    useRouting,
+    useSyncState,
+    Zone,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const SearchFilters = (props) => {
+    const { cx } = props;
+
+    const refs = useRefs();
+
+    const routing = useRouting();
+
+    const isContainer = useIsContainer();
+
+    const state = useSyncState({
+        route: routing.get('active.location.pathname'),
+        type: routing.get('active.params.type'),
+        updated: null,
+        visible: false,
+        props,
+    });
+
+    const visible = useCallback(() => state.get('visible'), []);
+
+    const collapse = useCallback(() => state.set('visible', false), []);
+
+    const dismiss = useCallback((e) => {
+        const container = refs.get('container');
+
+        if (!visible()) return;
+        if (isContainer(e.target, container)) return;
+
+        collapse();
+    }, []);
+
+    const expand = useCallback(() => state.set('visible', true), []);
+
+    const toggleFilter = useCallback(
+        ({ field, value }) =>
+            (e) => {
+                collapse();
+                const type = state.get('type');
+                Reactium.Content.toggleFilter({ field, type, value });
+            },
+        [state.get('type')],
+    );
+
+    const toggleMenu = useCallback(() => state.set('visible', !visible()), []);
+
+    useEffect(() => {
+        const type = routing.get('active.params.type');
+        state.set('type', type);
+    }, [routing.get('active.params.type')]);
+
+    useEffect(() => {
+        const type = state.get('type');
+
+        return Reactium.Cache.subscribe(
+            `content-filters.${type}`,
+            async ({ op }) => {
+                if (['set', 'del'].includes(op)) {
+                    state.set('updated', Date.now());
+                }
+            },
+        );
+    }, [state.get('type')]);
+
+    useEffect(() => {
+        window.addEventListener('mousedown', dismiss);
+        window.addEventListener('touchstart', dismiss);
+
+        return () => {
+            window.removeEventListener('mousedown', dismiss);
+            window.removeEventListener('touchstart', dismiss);
+        };
+    }, []);
+
+    state.refs = refs;
+
+    state.extend('collapse', collapse);
+    state.extend('cx', cx);
+    state.extend('dismiss', dismiss);
+    state.extend('expand', expand);
+    state.extend('toggleFilter', toggleFilter);
+    state.extend('toggleMenu', toggleMenu);
+    state.extend('visible', visible);
+
+    return (
+        <div
+            className={cx('filters')}
+            ref={(elm) => refs.set('container', elm)}
+        >
+            <Filters {...state.get()} />
+            <div
+                className={cn(cx('filters-menu'), {
+                    visible: visible(),
+                })}
+            >
+                <Zone zone={cx('filter-menu')} state={state} />
+            </div>
+            <Button
+                onClick={toggleMenu}
+                className='go ml-xs-4'
+                size={Button.ENUMS.SIZE.XS}
+                color={Button.ENUMS.COLOR.CLEAR}
+            >
+                <Icon name='Linear.Funnel' size={14} />
+            </Button>
+        </div>
+    );
+};
+
+export const SearchFilterOptions = ({ state }) => {
+    const { collapse, cx, toggleFilter } = state;
+
+    const clear = useCallback(() => {
+        Reactium.Content.clearFilter({
+            type: state.get('type'),
+        });
+
+        collapse();
+    }, [state.get('type')]);
+
+    const color = useCallback(
+        (k) => op.get(Reactium.Content.COLOR, k, Reactium.Content.COLOR.DRAFT),
+        [],
+    );
+
+    const options = useMemo(
+        () => Object.entries(Reactium.Content.filterOptions(state.get('type'))),
+        [state.get('type]')],
+    );
+
+    return (
+        <>
+            {Reactium.Content.isFiltered(state.get('type')) && (
+                <div className={cx('filters-menu-group')}>
+                    <button className={cx('filters-menu-item')} onClick={clear}>
+                        <span className={cn('ico', 'btn-danger')}>
+                            <Icon name='Feather.X' size={8} />
+                        </span>
+                        {__('Clear Filters').toUpperCase()}
+                    </button>
+                </div>
+            )}
+
+            <div className={cx('filters-menu-group')}>
+                <button
+                    className={cx('filters-menu-item')}
+                    onClick={toggleFilter({
+                        field: 'user',
+                        value: Reactium.User.current().objectId,
+                    })}
+                >
+                    <Icon size={11} name='Linear.User' />
+                    {__('My %types')
+                        .replace(/%types/gi, pluralize(state.get('type')))
+                        .toUpperCase()}
+                </button>
+            </div>
+
+            {options.map(([field, values]) => (
+                <div className={cx('filters-menu-group')} key={field}>
+                    {values.map(({ label, value }, i) => {
+                        const clr = `btn-${color(value)}`;
+
+                        return (
+                            <button
+                                key={`${field}-${i}`}
+                                className={cx('filters-menu-item')}
+                                onClick={toggleFilter({ field, value })}
+                            >
+                                {field === 'status' && (
+                                    <span className={cn('ico', clr)} />
+                                )}
+                                {label}
+                            </button>
+                        );
+                    })}
+                </div>
+            ))}
+        </>
+    );
+};
+
+const Filters = ({ route, type }) => {
+    const components = [];
+
+    if (String(route).startsWith('/admin/content')) {
+        if (type && Reactium.Content.isFiltered(type)) {
+            Object.entries(Reactium.Content.filtersByType(type)).forEach(
+                ([field, values]) => {
+                    if (!values) return;
+                    if (!_.isArray(values)) return;
+                    values.forEach((value) =>
+                        components.push({ field, value }),
+                    );
+                },
+            );
+        }
+    }
+
+    const onClick = (field, value) => () =>
+        Reactium.Content.removeFilter({ field, type, value });
+
+    const userLabel = () => {
+        const user = Reactium.User.current(true);
+        let name = user.get('fname');
+        name = !name ? user.get('lname') : name;
+        name = !name ? user.get('email') : name;
+
+        return name;
+    };
+
+    const render = () => {
+        return components.map(({ field, value }, i) => {
+            const color = op.get(
+                Reactium.Content.COLOR,
+                value,
+                Reactium.Content.COLOR.REMOVE,
+            );
+
+            const label = field === 'user' ? userLabel() : value;
+
+            return (
+                <Button
+                    color={color}
+                    className='filter'
+                    key={`${field}-${i}`}
+                    size={Button.ENUMS.SIZE.XS}
+                    onClick={onClick(field, value)}
+                >
+                    {label}
+                    <Icon name='Feather.X' size={14} />
+                </Button>
+            );
+        });
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/index.js
new file mode 100644
index 00000000..b21018ee
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SearchBar/index.js
@@ -0,0 +1,136 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Button, Icon } from 'reactium-ui';
+import React, { useCallback, useState } from 'react';
+import {
+    __,
+    cxFactory,
+    useDispatcher,
+    useRefs,
+    Zone,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Search
+ * -----------------------------------------------------------------------------
+ */
+
+export const SearchBarSubmitButton = ({ submit }) => (
+    <Button
+        className='go'
+        onClick={submit}
+        children={__('go')}
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.TERTIARY}
+    />
+);
+
+export const SearchBar = ({
+    className,
+    namespace,
+    onSubmit,
+    value: defaultValue,
+    ...props
+}) => {
+    const refs = useRefs();
+
+    const cx = cxFactory(`${op.get(props, 'data-zone-ns')}-${namespace}`);
+
+    const [value, setValue] = useState(defaultValue);
+
+    const dispatch = useDispatcher({ props });
+
+    const isValue = useCallback(() => String(value).length > 0, [value]);
+
+    const clear = useCallback(() => {
+        const input = refs.get('input');
+        input.value = '';
+        input.focus();
+
+        dispatch(cx('clear'));
+        setValue('');
+        submit();
+    }, []);
+
+    const submit = useCallback(
+        (v) => {
+            v = typeof v !== 'string' ? value : v;
+            if (typeof onSubmit === 'function') return onSubmit({ value: v });
+            dispatch(cx(), { value: v });
+        },
+        [value],
+    );
+
+    const onChange = useCallback((e) => {
+        dispatch(cx('change'), { details: e });
+        setValue(e.target.value);
+        submit(e.target.value);
+    }, []);
+
+    const onKeyUp = useCallback(
+        (e) => {
+            if (e.keyCode !== 13) return;
+            submit();
+        },
+        [value],
+    );
+
+    const handle = {
+        'data-parent': props,
+        clear,
+        cx,
+        dispatch,
+        isValue,
+        refs,
+        setValue,
+        submit,
+        value,
+    };
+
+    return (
+        <div className={cn(cx(), className)}>
+            {isValue() ? (
+                <Button
+                    onClick={clear}
+                    className='clear'
+                    size={Button.ENUMS.SIZE.XS}
+                    color={Button.ENUMS.COLOR.DANGER}
+                    appearance={Button.ENUMS.APPEARANCE.CIRCLE}
+                >
+                    <Icon name='Feather.X' size={13} />
+                </Button>
+            ) : (
+                <Icon className='search' name='Feather.Search' size={18} />
+            )}
+            <input
+                {...props}
+                type='text'
+                onKeyUp={onKeyUp}
+                onChange={onChange}
+                defaultValue={value}
+                style={{ marginBottom: 0 }}
+                ref={(elm) => refs.set('input', elm)}
+            />
+            <div className={cx('actions')}>
+                <Zone zone={cx('actions')} {...handle} />
+            </div>
+        </div>
+    );
+};
+
+SearchBar.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    onSubmit: PropTypes.func,
+    placeholder: PropTypes.string,
+    value: PropTypes.string,
+};
+
+SearchBar.defaultProps = {
+    className: 'form-group',
+    namespace: 'search',
+    placeholder: __('search'),
+    value: '',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/index.js
new file mode 100644
index 00000000..587443a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/index.js
@@ -0,0 +1,33 @@
+import React from 'react';
+import op from 'object-path';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export default () => {
+    const MenuItem = useHookComponent('MenuItem');
+    const [types] = useHookComponent('useContentTypes')();
+
+    return (
+        <>
+            <MenuItem
+                exact={false}
+                route='/admin/types'
+                add='/admin/type/new'
+                icon='Linear.Typewriter'
+                label={__('Content Types')}
+            />
+            {types.map((item) => (
+                <MenuItem
+                    exact={false}
+                    label={item.meta.label}
+                    key={`content-${item.uuid}`}
+                    route={`/admin/content/${item.type}/page/1`}
+                    add={() => Reactium.Content.newObject(item.type)}
+                    icon={op.get(item.meta, 'icon', 'Linear.Document2')}
+                />
+            ))}
+        </>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/reactium-hooks.js
new file mode 100644
index 00000000..e9316950
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/SidebarWidget/reactium-hooks.js
@@ -0,0 +1,16 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin SidebarWidget
+ * -----------------------------------------------------------------------------
+ */
+
+import Component from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    Reactium.Zone.addComponent({
+        component: Component,
+        zone: ['admin-sidebar-menu'],
+        order: 300,
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/index.js
new file mode 100644
index 00000000..5f5c8259
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/index.js
@@ -0,0 +1,110 @@
+import _ from 'underscore';
+import { Icon } from 'reactium-ui';
+import React, { forwardRef } from 'react';
+import Reactium, {
+    __,
+    useDispatcher,
+    useEventEffect,
+    useHookComponent,
+    useRefs,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: TypeDelete
+ * -----------------------------------------------------------------------------
+ */
+const DEBUG = true;
+
+const Message = forwardRef(({ detail, ...props }, ref) => (
+    <div className='form-group'>
+        <div className='mb-xs-12'>
+            {__('Enter')} "{detail.machineName}" {__('below')}
+        </div>
+        <input
+            ref={ref}
+            type='text'
+            className='text-center'
+            placeholder={detail.machineName}
+            {...props}
+        />
+        <small>{__('Deleting a content type cannot be undone')}</small>
+    </div>
+));
+
+let TypeDelete = () => {
+    const refs = useRefs();
+
+    const dispatch = useDispatcher({ props: {} });
+
+    const [types] = useHookComponent('useContentTypes')();
+
+    const ConfirmBox = useHookComponent('ConfirmBox');
+
+    const cancel = () => Reactium.State.Tools.Modal.hide();
+
+    const confirm = async (item) => {
+        const confirmed = refs.get('confirmed');
+        if (confirmed.value !== item.machineName) {
+            confirmed.focus();
+            return;
+        }
+
+        const i = _.findIndex(types, { uuid: item.uuid });
+
+        const newTypes = Array.from(types);
+        newTypes.splice(i, 1);
+
+        Reactium.Cache.set('content-types', newTypes);
+
+        Reactium.State.Tools.Modal.dismiss();
+
+        if (DEBUG !== true) await Reactium.ContentType.delete(item.uuid);
+
+        dispatch('content-type-deleted', { detail: item });
+    };
+
+    const onDelete = (e) => {
+        const { Toast } = Reactium.State.Tools;
+
+        const message = __('%name content type deleted').replace(
+            /%name/gi,
+            e.detail.meta.label,
+        );
+
+        Toast.show({
+            message,
+            autoClose: 2500,
+            type: Toast.TYPE.SUCCESS,
+            icon: <Icon name='Feather.Check' />,
+        });
+    };
+
+    const showModal = (e) => {
+        Reactium.State.Tools.Modal.show(
+            <ConfirmBox
+                onCancel={cancel}
+                onConfirm={() => confirm(e.detail)}
+                title={__('Delete Content Type')}
+                message={
+                    <Message
+                        detail={e.detail}
+                        ref={(elm) => refs.set('confirmed', elm)}
+                    />
+                }
+            />,
+        ).then(() => {
+            const input = refs.get('confirmed');
+            if (input) input.focus();
+        });
+    };
+
+    useEventEffect(Reactium.State, {
+        'content-type-delete': showModal,
+        'content-type-deleted': onDelete,
+    });
+
+    return null;
+};
+
+export default TypeDelete;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/reactium-hooks.js
new file mode 100644
index 00000000..d3158f62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeDelete/reactium-hooks.js
@@ -0,0 +1,19 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin TypeDelete
+ * -----------------------------------------------------------------------------
+ */
+
+import Component from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    Reactium.Component.register('ContnetTypeDeleteBox', Component);
+
+    Reactium.Zone.addComponent({
+        order: 1000,
+        component: Component,
+        zone: ['admin-content-types', 'admin-content-type-editor'],
+        id: 'ADMIN-CONTENT-TYPE-DELETE-BOX',
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/.gitkeep b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/.gitkeep
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/.gitkeep
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/.gitkeep
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Breadcrumbs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Breadcrumbs/index.js
new file mode 100644
index 00000000..dd3b2a80
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Breadcrumbs/index.js
@@ -0,0 +1,66 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useState, useEffect } from 'react';
+import { Button, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useAsyncEffect,
+} from '@atomic-reactor/reactium-core/sdk';
+import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
+
+export default () => {
+    const { id, path } = useRouteParams(['id']);
+
+    const [type, setType] = useState();
+    const [types, setTypes] = useState();
+    const [updated, update] = useState();
+
+    const visible = String(path).startsWith('/admin/type');
+    const getTypes = () => Reactium.ContentType.types();
+
+    // Get content types
+    useAsyncEffect(
+        async (mounted) => {
+            const results = await getTypes();
+            if (mounted()) setTypes(results);
+            return Reactium.Cache.subscribe('content-types', async ({ op }) => {
+                if (['set', 'del'].includes(op) && mounted() === true) {
+                    update(Date.now());
+                }
+            });
+        },
+        [updated],
+    );
+
+    // Get content type from `id`
+    useEffect(() => {
+        if (!visible) return;
+        const t = _.findWhere(types, { uuid: id }) || {};
+        setType(op.get(t, 'meta.label'));
+    }, [id, types]);
+
+    return (
+        visible && (
+            <ul className='ar-breadcrumbs'>
+                <li>
+                    <Button
+                        className='px-0'
+                        color='clear'
+                        size='sm'
+                        to='/admin/types'
+                        type='link'
+                    >
+                        <Icon name='Linear.Typewriter' className='mr-xs-12' />
+                        {__('Content Types')}
+                    </Button>
+                </li>
+                {id && <li className='uppercase'>{type || __('New')}</li>}
+                {id && type && (
+                    <li className='hide-xs show-md'>
+                        {id === 'new' ? __('NEW') : id}
+                    </li>
+                )}
+            </ul>
+        )
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/enums.js
new file mode 100644
index 00000000..78565e02
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/enums.js
@@ -0,0 +1,104 @@
+import _ from 'underscore';
+import op from 'object-path';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
+
+const enums = {
+    capabilities: ({ collection, ctRef, machineName, type }) => {
+        if (!collection || !ctRef.current || !machineName || !type) return;
+
+        return [
+            {
+                capability: `${collection}.create`.toLowerCase(),
+                title: __('%type: Create content').replace('%type', type),
+                tooltip: __(
+                    'Able to create content of type %type (%machineName)',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.retrieve`.toLowerCase(),
+                title: __('%type: Retrieve content').replace('%type', type),
+                tooltip: __(
+                    'Able to retrieve content of type %type (%machineName), if content ACL permits.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.update`.toLowerCase(),
+                title: __('%type: Update content').replace('%type', type),
+                tooltip: __(
+                    'Able to update any content of type %type (%machineName), if content ACL permits.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.delete`.toLowerCase(),
+                title: __('%type: Delete content').replace('%type', type),
+                tooltip: __(
+                    'Able to delete content of type %type (%machineName), if content ACL permits.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.retrieveany`.toLowerCase(),
+                title: __('%type: Retrieve any content (Caution)').replace(
+                    '%type',
+                    type,
+                ),
+                tooltip: __(
+                    'Able to retrieve any content of type %type (%machineName), even if not owned by user.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.updateany`.toLowerCase(),
+                title: __('%type: Update any content (Caution)').replace(
+                    '%type',
+                    type,
+                ),
+                tooltip: __(
+                    'Able to update any content of type %type (%machineName), even if not owned by user.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.deleteany`.toLowerCase(),
+                title: __('%type: Delete any content (Caution)').replace(
+                    '%type',
+                    type,
+                ),
+                tooltip: __(
+                    'Able to delete any content of type %type (%machineName), even if not owned by user.',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.publish`.toLowerCase(),
+                title: __('%type: Publish Content').replace('%type', type),
+                tooltip: __(
+                    'Able to publish content of type %type (%machineName.)',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+            {
+                capability: `${collection}.unpublish`.toLowerCase(),
+                title: __('%type: Unpublish Content').replace('%type', type),
+                tooltip: __(
+                    'Able to unpublish content of type %type (%machineName.)',
+                )
+                    .replace('%type', type)
+                    .replace('%machineName', machineName),
+            },
+        ];
+    },
+};
+
+export default enums;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/index.js
new file mode 100644
index 00000000..c567b79d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Capabilities/index.js
@@ -0,0 +1,54 @@
+import ENUMS from './enums';
+import op from 'object-path';
+import React, { useState } from 'react';
+import Reactium, {
+    useAsyncEffect,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const CTCapabilityEditor = (props) => {
+    const CapabilityEditor = useHookComponent('CapabilityEditor');
+
+    const [defaultCapabilities, setDefaults] = useState(
+        ENUMS.capabilities(props),
+    );
+
+    const { useCapabilitySettings } = Reactium;
+    const [capabilities] = useCapabilitySettings(
+        `content-type-${op.get(props, 'type')}`,
+        defaultCapabilities,
+    );
+
+    useAsyncEffect(
+        async (isMounted) => {
+            if (!props.type) return;
+
+            const caps = ENUMS.capabilities(props);
+            const { type, collection, machineName, ctRef } = props;
+
+            await Reactium.Hook.run(
+                'content-type-capabilities',
+                caps,
+                type,
+                collection,
+                machineName,
+                ctRef.current,
+            );
+
+            if (!isMounted()) return;
+
+            setDefaults(caps);
+        },
+        [props.type],
+    );
+
+    return (
+        <div className='admin-content-region admin-content-region-type'>
+            {capabilities && capabilities.length > 0 && (
+                <CapabilityEditor capabilities={capabilities} />
+            )}
+        </div>
+    );
+};
+
+export default CTCapabilityEditor;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/Dialog/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/_reactium-style-organism-cte-dialog.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/Dialog/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/_reactium-style-organism-cte-dialog.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/index.js
new file mode 100644
index 00000000..3419d717
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/index.js
@@ -0,0 +1,156 @@
+import React, { useRef } from 'react';
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+import { Dialog, Icon, Button } from 'reactium-ui';
+import PropTypes from 'prop-types';
+import cn from 'classnames';
+import op from 'object-path';
+
+const Header = (props) => {
+    const inputRef = useRef();
+    const { id, singular, icon: FieldIcon, DragHandle } = props;
+    const CTE = useHandle('CTE');
+    const error = CTE.getFormErrors(id);
+
+    const saved = CTE.get('contentType');
+    const fieldSaved =
+        op.get(saved, ['fields', id, 'saved']) ||
+        (singular && op.get(props, 'defaultValues.fieldName'));
+
+    const savedProps = fieldSaved
+        ? {
+              readOnly: true,
+          }
+        : {
+              onTouchStart: () => inputRef.current.select(),
+              onClick: () => inputRef.current.select(),
+          };
+
+    const render = () => (
+        <div className='fieldtype-header'>
+            <div className='fieldtype-header-icon'>
+                <FieldIcon />
+            </div>
+            <div
+                className={cn('fieldtype-header-name', {
+                    error: op.get(error, 'fieldName'),
+                })}
+            >
+                <input
+                    ref={inputRef}
+                    type={'text'}
+                    name='fieldName'
+                    placeholder={__('Field Name')}
+                    {...savedProps}
+                    className={cn('fieldtype-header-name-input', {
+                        disabled: fieldSaved,
+                    })}
+                />
+                {!fieldSaved && (
+                    <Button
+                        className='fieldtype-header-name-icon'
+                        {...savedProps}
+                    >
+                        <span className='sr-only'>{__('Edit')}</span>
+                        <Icon.Linear.Pencil />
+                    </Button>
+                )}
+            </div>
+            <DragHandle />
+        </div>
+    );
+
+    return render();
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldTypeDialog
+ * -----------------------------------------------------------------------------
+ */
+const FieldTypeDialog = (props) => {
+    const dialogRef = useRef();
+    const CTE = useHandle('CTE');
+    // const tools = useHandle('AdminTools');
+    // const Modal = op.get(tools, 'Modal');
+    const ConfirmBox = useHookComponent('ConfirmBox');
+    const removeField = op.get(CTE, 'removeField', () => {});
+    const isNew = op.get(CTE, 'isNew', () => true);
+    const { id, type, dialogProps, children } = props;
+    const header = { elements: [<Header key={`${id}-header`} {...props} />] };
+
+    const pref = isNew()
+        ? {}
+        : {
+              pref: `field-type-dialog.${id}`,
+          };
+
+    const doRemoveField = () => removeField(id);
+
+    const onConfirm = () => {
+        doRemoveField();
+        Reactium.State.Tools.Modal.hide();
+    };
+
+    const showModal = () =>
+        Reactium.State.Tools.Modal.show(
+            <ConfirmBox
+                message={__(
+                    'Are you sure? This may be a destructive operation on save.',
+                )}
+                onCancel={() => {
+                    dialogRef.current.show();
+                    Reactium.State.Tools.Modal.hide();
+                }}
+                onConfirm={onConfirm}
+                title={__('Delete Field')}
+            />,
+        );
+
+    const onDismiss = CTE.get(['contentType', 'fields', id])
+        ? showModal
+        : doRemoveField;
+
+    return (
+        <Dialog
+            ref={dialogRef}
+            {...dialogProps}
+            {...pref}
+            dismissable={true}
+            header={header}
+            className={cn('fieldtype', `fieldtype-${type}`)}
+            onDismiss={onDismiss}
+        >
+            {children}
+            <div className='form-group'>
+                {op.get(props, 'showHelpText') && (
+                    <label>
+                        <input
+                            type='text'
+                            name='helpText'
+                            placeholder={__('Help Text')}
+                        />
+                    </label>
+                )}
+            </div>
+        </Dialog>
+    );
+};
+
+FieldTypeDialog.propTypes = {
+    // uuid/v4
+    id: PropTypes.string.isRequired,
+    type: PropTypes.string.isRequired,
+    icon: PropTypes.elementType.isRequired,
+    dialogProps: PropTypes.shape(Dialog.propTypes),
+    showHelpText: PropTypes.bool,
+};
+
+FieldTypeDialog.defaultProps = {
+    showHelpText: true,
+};
+
+export default FieldTypeDialog;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/_reactium-style-organisms-admin-cte-fieldtype.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/_reactium-style-organisms-admin-cte-fieldtype.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/index.js
new file mode 100644
index 00000000..d1db37bf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/index.js
@@ -0,0 +1,144 @@
+import React, { useRef, useEffect, useState } from 'react';
+import Reactium, {
+    useHookComponent,
+    useHandle,
+} from '@atomic-reactor/reactium-core/sdk';
+import op from 'object-path';
+import cn from 'classnames';
+import _ from 'underscore';
+import { Draggable } from 'react-beautiful-dnd';
+import PropTypes from 'prop-types';
+
+const DragHandle = (props) => (
+    <div
+        className='fieldtype-draggable'
+        tabIndex={0}
+        {...props.dragHandleProps}
+    >
+        <span className='sr-only'>Drag handle</span>
+    </div>
+);
+
+const FieldType = (props) => {
+    const id = op.get(props, 'id');
+    const index = op.get(props, 'index', 0);
+    const type = op.get(props, 'type', 'text');
+    const [value, setValue] = useState({});
+    const fieldTypeComponent = op.get(
+        props,
+        'fieldTypeComponent',
+        `FieldType${type}`,
+    );
+
+    const formRef = useRef();
+    const { EventForm } = useHookComponent('ReactiumUI');
+    const Type = useHookComponent(fieldTypeComponent, false);
+    const CTE = useHandle('CTE');
+
+    const validator = (id, type) => async (validated) => {
+        await Reactium.Hook.run('field-type-validator', {
+            id,
+            type,
+            validated,
+        });
+
+        return validated;
+    };
+
+    const onChange = (id, type, ref) => async (e) => {
+        if (e.value) {
+            const value = e.value;
+
+            await Reactium.Hook.run(`field-type-form-change-${id}`, {
+                value,
+                id,
+                type,
+                ref,
+                target: e.target,
+            });
+
+            setValue(value);
+        }
+    };
+
+    useEffect(() => {
+        const hooks = [
+            Reactium.Hook.register(
+                'content-type-validate-fields',
+                async (context) => {
+                    if (formRef.current) {
+                        context[id] = await formRef.current.validate();
+                    }
+                },
+            ),
+        ];
+
+        const ival = setInterval(() => {
+            if (formRef.current) {
+                clearInterval(ival);
+                // allow control from parent
+                CTE.addFormRef(id, () => formRef.current);
+                const value = CTE.get(['contentType', 'fields', id], {});
+
+                formRef.current.setValue(value);
+            }
+        }, 1);
+
+        return () => {
+            hooks.forEach((id) => Reactium.Hook.unregister(id));
+            CTE.removeFormRef(id);
+        };
+    }, [id]);
+
+    const required = _.uniq(
+        _.compact(op.get(props, 'required', []).concat('fieldName')),
+    );
+
+    if (!id || !Type) return null;
+
+    return (
+        <Draggable draggableId={id} index={index}>
+            {({ innerRef, draggableProps, dragHandleProps }) => (
+                <EventForm
+                    key={id}
+                    value={value}
+                    ref={formRef}
+                    required={required}
+                    throttleChanges={false}
+                    validator={validator(id, type)}
+                    onChange={onChange(id, type, formRef)}
+                >
+                    <div
+                        ref={innerRef}
+                        {...draggableProps}
+                        className={cn(
+                            'field-type-wrapper',
+                            `field-type-wrapper-${type
+                                .toLowerCase()
+                                .replace(/\s+/g, '-')}`,
+                        )}
+                    >
+                        <Type
+                            {...props}
+                            dragHandleProps={dragHandleProps}
+                            DragHandle={() => (
+                                <DragHandle dragHandleProps={dragHandleProps} />
+                            )}
+                            formRef={formRef}
+                        />
+                    </div>
+                </EventForm>
+            )}
+        </Draggable>
+    );
+};
+
+FieldType.propTypes = {
+    required: PropTypes.array,
+};
+
+FieldType.defaultProps = {
+    required: ['fieldName'],
+};
+
+export default FieldType;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Fields/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/_reactium-style-organisms-admin-cte-fields.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Fields/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/_reactium-style-organisms-admin-cte-fields.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/index.js
new file mode 100644
index 00000000..47b80bd0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/index.js
@@ -0,0 +1,238 @@
+import React from 'react';
+import { Button, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useSyncHandle,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+import { Droppable } from 'react-beautiful-dnd';
+import cn from 'classnames';
+import op from 'object-path';
+import _ from 'underscore';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Fields
+ * -----------------------------------------------------------------------------
+ */
+const noop = () => {};
+const Fields = (props) => {
+    const CTE = useSyncHandle('CTE');
+    const ui = CTE.get('contentType', {});
+
+    const FieldType = useHookComponent('FieldType');
+
+    const region = op.get(props, 'region.id', 'default');
+    const regionLabel = op.get(props, 'region.label');
+    const regionSlug = op.get(props, 'region.slug', 'default');
+
+    const regions = op.get(ui, 'regions', {});
+    const fields = _.compact(
+        op.get(ui, ['regionFields', region], []).map((fieldId) => {
+            return op.get(ui, ['fields', fieldId]);
+        }),
+    );
+
+    const isEmpty = fields.length < 1;
+
+    const onRegionLabelChange = op.get(props, 'onRegionLabelChange', noop);
+    const onRemoveRegion = op.get(props, 'onRemoveRegion', noop);
+    const deleteLabel = __('Remove Field Region');
+    const immutable = op.has(ui, ['requiredRegions', region]);
+
+    const fieldTypes = _.indexBy(
+        Object.values(Reactium.ContentType.FieldType.list),
+        'type',
+    );
+
+    Reactium.Hook.runSync('content-type-field-type-list', fieldTypes);
+
+    const renderRegion = () => {
+        if (region === 'default' && isEmpty) {
+            return (
+                <div className='empty-message'>
+                    <span>
+                        {__(
+                            'Compose the new Content Type Schema by adding elements from the toolbar here.',
+                        )}
+                    </span>
+                </div>
+            );
+        }
+        return fields.map((field, index) => {
+            const type = op.get(fieldTypes, [field.fieldType], {});
+
+            return (
+                <FieldType
+                    {...type}
+                    id={field.fieldId}
+                    key={field.fieldId}
+                    index={index}
+                    fieldTypeComponent={type.component}
+                />
+            );
+        });
+    };
+
+    return (
+        <Droppable droppableId={region}>
+            {({ droppableProps, innerRef, placeholder }) => (
+                <div
+                    className={cn('types-fields', {
+                        'types-fields-empty': isEmpty,
+                    })}
+                    {...droppableProps}
+                    ref={innerRef}
+                >
+                    <div
+                        className={cn({
+                            'field-drop': true,
+                            active: CTE.isActiveRegion(region),
+                        })}
+                        onClick={() => CTE.setActiveRegion(region)}
+                    >
+                        {typeof regionLabel !== 'undefined' && (
+                            <div className='region-label'>
+                                <div
+                                    className={cn('input-group', {
+                                        error:
+                                            regionLabel.length < 1 ||
+                                            Object.values(regions).find(
+                                                (reg) =>
+                                                    reg.id !== region &&
+                                                    reg.slug === regionSlug,
+                                            ),
+                                    })}
+                                >
+                                    <input
+                                        type='text'
+                                        value={regionLabel}
+                                        placeholder={__('Region Label')}
+                                        onChange={(e) =>
+                                            onRegionLabelChange(e.target.value)
+                                        }
+                                    />
+                                    <Button
+                                        data-tooltip={deleteLabel}
+                                        style={{ width: 50, height: 50 }}
+                                        color={
+                                            immutable
+                                                ? Button.ENUMS.COLOR.TERTIARY
+                                                : Button.ENUMS.COLOR.DANGER
+                                        }
+                                        onClick={onRemoveRegion}
+                                        disabled={immutable}
+                                    >
+                                        <span className='sr-only'>
+                                            {deleteLabel}
+                                        </span>
+                                        <Icon.Feather.X />
+                                    </Button>
+                                </div>
+                            </div>
+                        )}
+                        {
+                            // <div>region: {region}</div>
+                        }
+                        <div>{renderRegion()}</div>
+                        {placeholder}
+                    </div>
+                </div>
+            )}
+        </Droppable>
+    );
+};
+
+export default Fields;
+
+/*
+{
+  "b018bed7-ac03-4ad6-a1d4-19f9ed6f8ec0": {
+    "fieldName": "Price",
+    "defaultValue": null,
+    "min": null,
+    "max": null,
+    "slider": null,
+    "required": true,
+    "helpText": null,
+    "fieldId": "b018bed7-ac03-4ad6-a1d4-19f9ed6f8ec0",
+    "fieldType": "Number",
+    "region": "default"
+  },
+  "5778df1e-9242-46f1-bbeb-b7eea5dd17b0": {
+    "fieldName": "Previous Price",
+    "defaultValue": null,
+    "min": null,
+    "max": null,
+    "slider": null,
+    "required": null,
+    "helpText": null,
+    "fieldId": "5778df1e-9242-46f1-bbeb-b7eea5dd17b0",
+    "fieldType": "Number",
+    "region": "default"
+  },
+  "cf109851-631e-48be-b1ca-e366c34a1d88": {
+    "fieldName": "Stock",
+    "defaultValue": null,
+    "min": null,
+    "max": null,
+    "slider": null,
+    "required": null,
+    "helpText": null,
+    "fieldId": "cf109851-631e-48be-b1ca-e366c34a1d88",
+    "fieldType": "Number",
+    "region": "default"
+  },
+  "a8e66091-ffd2-49c8-864c-93f3c7651004": {
+    "fieldName": "Sizes",
+    "placeholder": null,
+    "multiple": true,
+    "options": [
+      {
+        "label": "xs",
+        "value": "xs"
+      },
+      {
+        "label": "sm",
+        "value": "sm"
+      },
+      {
+        "label": "md",
+        "value": "md"
+      },
+      {
+        "label": "lg",
+        "value": "lg"
+      },
+      {
+        "label": "xl",
+        "value": "xl"
+      },
+      {
+        "label": "xxl",
+        "value": "xxl"
+      }
+    ],
+    "fieldId": "a8e66091-ffd2-49c8-864c-93f3c7651004",
+    "fieldType": "Select",
+    "region": "default"
+  },
+  "df9b64cb-5e33-43ff-91e8-6972fc599525": {
+    "fieldName": "Images",
+    "max": null,
+    "type": "IMAGE",
+    "required": null,
+    "fieldId": "df9b64cb-5e33-43ff-91e8-6972fc599525",
+    "fieldType": "Media",
+    "region": "default"
+  },
+  "publisher": {
+    "fieldName": "Publish",
+    "statuses": "DRAFT,PUBLISHED",
+    "simple": true,
+    "fieldId": "publisher",
+    "fieldType": "Publisher",
+    "region": "sidebar"
+  }
+}
+*/
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/HeaderWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/HeaderWidget/index.js
new file mode 100644
index 00000000..3589c278
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/HeaderWidget/index.js
@@ -0,0 +1,28 @@
+import React from 'react';
+import ENUMS from '../enums';
+import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
+import { Button, Icon } from 'reactium-ui';
+
+export default () => {
+    const { path } = useRouteParams();
+    const visible = String(path).startsWith('/admin/type');
+
+    return (
+        visible && (
+            <Button
+                appearance='pill'
+                className='mr-xs-24'
+                color='primary'
+                outline
+                size='xs'
+                to='/admin/type/new'
+                type={Button.ENUMS.TYPE.LINK}>
+                <Icon name='Feather.Plus' size={18} />
+                <span className='hide-xs show-md ml-sm-12'>
+                    {' '}
+                    {ENUMS.TEXT.ADD}
+                </span>
+            </Button>
+        )
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/IconPicker/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/_reactium-style-organisms-admin-cte-iconpicker.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/IconPicker/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/_reactium-style-organisms-admin-cte-iconpicker.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/index.js
new file mode 100644
index 00000000..261df01d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/index.js
@@ -0,0 +1,126 @@
+import React, { useRef, useEffect, useState } from 'react';
+import { Icon, Button } from 'reactium-ui';
+import {
+    useHookComponent,
+    useIsContainer,
+    useHandle,
+} from '@atomic-reactor/reactium-core/sdk';
+import op from 'object-path';
+import _ from 'underscore';
+import Enums from '../enums';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: IconPicker
+ * -----------------------------------------------------------------------------
+ */
+const CTIconPicker = (props) => {
+    const pickerRef = useRef();
+
+    const defaultIcon = Enums.DEFAULT_ICON;
+    const containerRef = useRef();
+    const CTE = useHandle('CTE');
+
+    const currentIcon =
+        props.value || CTE.get('contentType.meta.icon', defaultIcon);
+    const [state, setState] = useState({
+        icon: currentIcon,
+        showPicker: false,
+    });
+
+    const update = (updates) => {
+        const newState = {
+            ...state,
+            ...updates,
+        };
+
+        setState(newState);
+    };
+
+    const IconPicker = useHookComponent('IconPicker');
+
+    const onButtonClick = () => {
+        update({
+            showPicker: !state.showPicker,
+        });
+    };
+
+    const onIconChange = (e) => {
+        const { value } = e.target;
+        const [icon] = _.flatten([value]);
+
+        if (icon && icon !== state.icon && op.has(Icon, icon)) {
+            update({
+                showPicker: false,
+                icon,
+            });
+            CTE.set('contentType.meta.icon', icon);
+        }
+    };
+
+    const isContainer = useIsContainer();
+
+    const _search = (value) => pickerRef.current.setSearch(value);
+    const search = _.throttle(_search, 100);
+
+    const autoHidePanel = (e) => {
+        const container = containerRef.current;
+        if (!container || isContainer(e.target, container)) return;
+        update({ showPicker: false });
+    };
+
+    // auto hide
+    useEffect(() => {
+        if (typeof window === 'undefined') return;
+        window.addEventListener('mousedown', autoHidePanel);
+        window.addEventListener('touchstart', autoHidePanel);
+
+        return () => {
+            window.removeEventListener('mousedown', autoHidePanel);
+            window.removeEventListener('touchstart', autoHidePanel);
+        };
+    });
+
+    useEffect(() => {
+        update({ icon: currentIcon });
+    }, [currentIcon]);
+
+    return (
+        <div className='type-icon'>
+            <input
+                type='hidden'
+                name={props.name}
+                value={state.icon || defaultIcon}
+            />
+            <Button
+                size={Button.ENUMS.SIZE.SM}
+                color={Button.ENUMS.COLOR.PRIMARY}
+                style={{ width: '40px' }}
+                onClick={onButtonClick}
+            >
+                <Icon name={state.icon} />
+            </Button>
+            {state.showPicker && (
+                <div className='type-icon-picker' ref={containerRef}>
+                    <div className='rte-icons-search'>
+                        <div className='form-group'>
+                            <input
+                                type='search'
+                                placeholder='search'
+                                onFocus={(e) => e.target.select()}
+                                onChange={(e) => search(e.target.value)}
+                            />
+                        </div>
+                    </div>
+                    <IconPicker onChange={onIconChange} ref={pickerRef} />
+                </div>
+            )}
+        </div>
+    );
+};
+
+CTIconPicker.defaultProps = {
+    name: 'meta.icon',
+};
+
+export default CTIconPicker;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/Editor.js
new file mode 100644
index 00000000..4a35ae3d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/Editor.js
@@ -0,0 +1,109 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import { ListInput } from '../FieldTypeObject/ListInput';
+import {
+    __,
+    useHookComponent,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const Editor = (props) => {
+    const { editor, fieldName, placeholder, required = false } = props;
+
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormRegister, FormError } = useHookComponent('ReactiumUI');
+
+    const state = useSyncState({
+        values: op.get(editor.Form.value, fieldName, []),
+    });
+
+    const inputProps = {
+        defaultValue: op.get(props, 'defaultValue', null) || null,
+        name: fieldName,
+        placeholder,
+    };
+
+    if (!inputProps.defaultValue) delete inputProps.defaultValue;
+
+    const className = cn('form-group');
+
+    const onChange = (e) => {
+        state.set('values', e.value);
+        editor.Form.setValue(fieldName, e.value);
+    };
+
+    const onSubmit = (e) => {
+        const fieldName =
+            String(props.fieldName).startsWith('data.') ||
+            String(props.fieldName).startsWith('meta.')
+                ? props.fieldName
+                : `data.${props.fieldName}`;
+
+        const values = state.get('values') || [];
+
+        op.set(e.value, fieldName, values);
+    };
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        const v = values[fieldName];
+
+        if (!err && required === true && !v) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (!err && Array.isArray(v) && v.length < 1) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+        };
+    }, [editor]);
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='p-xs-20'>
+                    <div className={className}>
+                        <ListInput
+                            {...props}
+                            onChange={onChange}
+                            value={state.get('values') || []}
+                        />
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/FieldType.js
new file mode 100644
index 00000000..a9495484
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/FieldType.js
@@ -0,0 +1,105 @@
+import op from 'object-path';
+import React, { useEffect } from 'react';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldType
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const currRequired = () => {
+        let checked = false;
+
+        if (props.formRef.current) {
+            const values = props.formRef.current.getValue();
+            checked = values.required || checked;
+        }
+
+        return checked;
+    };
+
+    const [state, setState] = useDerivedState({
+        required: currRequired(),
+    });
+
+    const { DragHandle } = props;
+    const { Toggle } = useHookComponent('ReactiumUI');
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    const onBeforeSave = ({ fieldId, fieldValue }) => {
+        if (fieldId === id) {
+            op.set(fieldValue, 'required', state.required || false);
+        }
+    };
+
+    const onFormChange = ({ value }) => {
+        if (value) setState({ required: op.get(value, 'required', false) });
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.register(
+                `field-type-form-change-${id}`,
+                onFormChange,
+            ),
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad);
+
+    const render = () => {
+        return (
+            <FieldTypeDialog {...props} showHelpText={false}>
+                <div className={cx()}>
+                    <div className='row'>
+                        <div className='col-xs-12'>
+                            <div className='form-group'>
+                                <input
+                                    type='text'
+                                    name='placeholder'
+                                    placeholder={__('Placeholder')}
+                                />
+                            </div>
+                        </div>
+                        <div className='col-xs-12'>
+                            <div className='mt-xs-20'>
+                                <Toggle
+                                    value={true}
+                                    name='required'
+                                    defaultChecked={state.required}
+                                    label={
+                                        <>
+                                            <strong>{__('Required:')}</strong>{' '}
+                                            <em>
+                                                {String(
+                                                    state.required || false,
+                                                )}
+                                            </em>
+                                        </>
+                                    }
+                                />
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </FieldTypeDialog>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/reactium-hooks.js
new file mode 100644
index 00000000..d7bbab44
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeArray/reactium-hooks.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Array';
+
+const Ico = () => (
+    <span
+        children='[ ]'
+        style={{ color: '#999999', fontSize: 18, whiteSpace: 'nowrap' }}
+    />
+);
+
+const fieldType = {
+    icon: Ico,
+    label: __('Array Field'),
+    component: 'FieldTypeArray',
+    tooltip: __('Adds an Array field type'),
+    order: Reactium.Enums.priority.neutral + 1,
+};
+
+Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.Component.register(fieldType.component, FieldType);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/Editor.js
new file mode 100644
index 00000000..b9f7148f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/Editor.js
@@ -0,0 +1,50 @@
+import op from 'object-path';
+import React, { useCallback, useEffect } from 'react';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+const Editor = (props) => {
+    const { editor, options, fieldName } = props;
+
+    const { Checkbox } = useHookComponent('ReactiumUI');
+
+    const onSubmit = useCallback((e) => {
+        const fieldName =
+            String(props.fieldName).startsWith('data.') ||
+            String(props.fieldName).startsWith('meta.')
+                ? props.fieldName
+                : `data.${props.fieldName}`;
+
+        let value = op.get(e.value, fieldName, false);
+        value = value === null ? false : value;
+
+        op.set(e.value, fieldName, value || false);
+    }, []);
+
+    const defaultChecked = op.get(
+        editor.Form.value,
+        fieldName,
+        editor.isNew ? options.defaultChecked : false,
+    );
+
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+        };
+    }, [editor]);
+
+    return (
+        <div className='field-type-boolean'>
+            <div className='ar-dialog-header'>
+                <Checkbox
+                    name={fieldName}
+                    className='block'
+                    defaultChecked={defaultChecked}
+                    label={op.get(options, 'label', fieldName)}
+                />
+            </div>
+        </div>
+    );
+};
+
+export { Editor, Editor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/FieldType.js
new file mode 100644
index 00000000..f7f9b13e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/FieldType.js
@@ -0,0 +1,90 @@
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import {
+    __,
+    useHandle,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRefs();
+
+    const Editor = useHandle('CTE');
+
+    const { Toggle } = useHookComponent('ReactiumUI');
+
+    const val = id
+        ? op.get(
+              Editor.getValue(),
+              ['contentType', 'fields', id, 'options'],
+              {},
+          )
+        : {};
+
+    const state = useSyncState({
+        options: {
+            defaultChecked: op.get(val, 'defaultChecked', false),
+            label: op.get(val, 'label', ''),
+        },
+    });
+
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
+
+    const onBeforeSave = (params) => {
+        const { fieldId } = params;
+        if (fieldId !== id) return;
+        op.set(params, 'fieldValue.options', state.get('options'));
+    };
+
+    const onChange = (e) =>
+        state.set('options.defaultChecked', e.target.checked);
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad, [Object.values(refs.get())]);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='form-group'>
+                <label>
+                    Label:
+                    <input
+                        type='text'
+                        value={state.get('options.label', '')}
+                        onChange={(e) =>
+                            state.set('options.label', e.target.value)
+                        }
+                    />
+                </label>
+            </div>
+            <div>
+                <Toggle
+                    onChange={onChange}
+                    defaultChecked={state.get('options.defaultChecked')}
+                    label={
+                        <>
+                            <strong>{__('Default:')}</strong>{' '}
+                            <em>
+                                {String(
+                                    state.get('options.defaultChecked', false),
+                                )}
+                            </em>
+                        </>
+                    }
+                />
+            </div>
+        </FieldTypeDialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/_reactium-style-organisms-ftboolean.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/_reactium-style-organisms-ftboolean.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/reactium-hooks.js
new file mode 100644
index 00000000..0433d8e6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/reactium-hooks.js
@@ -0,0 +1,30 @@
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Boolean';
+
+const Ico = () => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    return <Icon name='Feather.CheckSquare' />;
+};
+
+const fieldType = {
+    icon: Ico,
+    showHelpText: false,
+    label: __('Boolean Field'),
+    component: 'FieldTypeBoolean',
+    order: Reactium.Enums.priority.neutral - 10,
+    tooltip: __('Adds a boolean field to your content type.'),
+};
+
+(async () => {
+    await Reactium.Plugin.register(`CTE-${ID}`);
+
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/Editor.js
new file mode 100644
index 00000000..cd1a870a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/Editor.js
@@ -0,0 +1,113 @@
+import _ from 'underscore';
+import moment from 'moment';
+import cn from 'classnames';
+import React, { useCallback, useEffect } from 'react';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+const formatDate = (d) => {
+    if (typeof d === 'string') {
+        d = new Date(d);
+    }
+    return d ? moment(d).format('L') : null;
+};
+
+const Editor = (props) => {
+    const { editor, fieldName } = props;
+
+    const { max, min, required } = props.options;
+
+    const { DatePicker, FormError, FormRegister } =
+        useHookComponent('ReactiumUI');
+
+    const ElementDialog = useHookComponent('ElementDialog');
+
+    const value = editor.Form ? editor.Form.value[fieldName] : null;
+
+    const onSelectDate = useCallback((e) => {
+        const selected = _.compact(e.selected || []);
+        const date = selected.length > 0 ? _.first(selected) : null;
+        editor.setValue(fieldName, formatDate(date));
+    }, []);
+
+    const onSubmit = (e) => {
+        let v = editor.Form.value[fieldName];
+
+        // console.log(v);
+    };
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+            '%max': max,
+            '%min': min,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        let v = values[fieldName];
+
+        if (!err && !v && required === true) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        v = moment(v, 'L');
+
+        if (!err && !v.isValid()) {
+            err = parseError(__('%fieldName invalid date'));
+        }
+
+        if (!err && min && v.isBefore(moment(min, 'L'))) {
+            err = parseError(__('%fieldName date must be on or after %min'));
+        }
+
+        if (!err && min && v.isAfter(moment(max, 'L'))) {
+            err = parseError(__('%fieldName date must be on or before %max'));
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    const errorText = editor.Form.error(fieldName);
+    const className = cn('form-group', { error: !!errorText });
+
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+            editor.removeEventListener('validate', validate);
+        };
+    }, []);
+
+    return !editor.Form ? null : (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='field-type-date p-xs-20'>
+                    <div className={className}>
+                        <DatePicker
+                            value={value}
+                            readOnly={Boolean(min || max)}
+                            onChange={onSelectDate}
+                            aria-invalid={!!errorText}
+                            maxDate={max ? moment(max, 'L').toDate() : null}
+                            minDate={min ? moment(min, 'L').toDate() : null}
+                        />
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
+
+export { Editor, Editor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/FieldType.js
new file mode 100644
index 00000000..e89cfdc0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/FieldType.js
@@ -0,0 +1,119 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import {
+    __,
+    useHandle,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRefs();
+
+    const Editor = useHandle('CTE');
+
+    const val = id
+        ? op.get(
+              Editor.getValue(),
+              ['contentType', 'fields', id, 'options'],
+              {},
+          )
+        : {};
+
+    const state = useSyncState({ options: { ...val } });
+
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
+
+    const { Toggle, DatePicker } = useHookComponent('ReactiumUI');
+
+    const onSelectDate = (e) => {
+        let { id: ID, selected = [] } = e;
+
+        ID = String(ID).replace('calendar-', '').substr(0, 3);
+
+        selected = _.compact(selected);
+
+        const date = selected.length > 0 ? _.first(selected) : null;
+
+        state.set(`options.${ID}`, date);
+    };
+
+    const onChange = (e) => state.set('options.required', e.target.checked);
+
+    const onBeforeSave = (params) => {
+        const { fieldId } = params;
+        if (fieldId !== id) return;
+        op.set(params, 'fieldValue.options', state.get('options'));
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad, [Object.values(refs.get())]);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='field-type-date'>
+                <div className='row'>
+                    <div className='col-xs-12 col-md-6 pr-md-6 mb-xs-12 mb-md-0'>
+                        <div className='form-group'>
+                            <label className='block'>
+                                {__('Minimum Date')}:
+                                <DatePicker
+                                    readOnly
+                                    id='minDate'
+                                    align='right'
+                                    onChange={onSelectDate}
+                                    value={state.get('options.min')}
+                                    ref={(elm) => refs.set('min', elm)}
+                                />
+                            </label>
+                        </div>
+                    </div>
+                    <div className='col-xs-12 col-md-6 pl-md-6'>
+                        <div className='form-group'>
+                            <label className='block'>
+                                {__('Maximum Date')}:
+                                <DatePicker
+                                    readOnly
+                                    id='maxDate'
+                                    align='right'
+                                    onChange={onSelectDate}
+                                    value={state.get('options.max')}
+                                    ref={(elm) => refs.set('max', elm)}
+                                />
+                            </label>
+                        </div>
+                    </div>
+                </div>
+                <div className='mt-xs-20'>
+                    <Toggle
+                        onChange={onChange}
+                        defaultChecked={state.get('options.required')}
+                        label={
+                            <>
+                                <strong>{__('Required:')}</strong>{' '}
+                                <em>
+                                    {String(
+                                        state.get('options.required', false),
+                                    )}
+                                </em>
+                            </>
+                        }
+                    />
+                </div>
+            </div>
+        </FieldTypeDialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/_reactium-style-organisms-ftdate.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/_reactium-style-organisms-ftdate.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/reactium-hooks.js
new file mode 100644
index 00000000..90c0d045
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/reactium-hooks.js
@@ -0,0 +1,30 @@
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Date';
+
+const Ico = () => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    return <Icon name='Feather.Calendar' />;
+};
+
+const fieldType = {
+    icon: Ico,
+    showHelpText: false,
+    label: __('Date Field'),
+    component: 'FieldTypeDate',
+    order: Reactium.Enums.priority.neutral - 3,
+    tooltip: __('Adds a date field to your content type.'),
+};
+
+(async () => {
+    await Reactium.Plugin.register(`CTE-${ID}`);
+
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/_reactium-style-organisms-ftnumber.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/_reactium-style-organisms-ftnumber.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/index.js
new file mode 100644
index 00000000..be4803d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/index.js
@@ -0,0 +1,209 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+import React, { useEffect, useRef } from 'react';
+import { Dialog, Checkbox, Slider } from 'reactium-ui';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldTypeNumber
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { DragHandle } = props;
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='field-type-number'>
+                <div className={'input-group'}>
+                    <label className={'default-value'}>
+                        <span className='sr-only'>{__('Default Value')}</span>
+                        <input
+                            type='number'
+                            name='defaultValue'
+                            placeholder={__('Default Value')}
+                        />
+                    </label>
+                    <label className={'min-max'}>
+                        <span className='sr-only'>{__('Min')}</span>
+                        <input
+                            type='number'
+                            name='min'
+                            placeholder={__('Min')}
+                        />
+                    </label>
+                    <label className={'min-max'}>
+                        <span className='sr-only'>{__('Max')}</span>
+                        <input
+                            type='number'
+                            name='max'
+                            placeholder={__('Max')}
+                        />
+                    </label>
+                    <div className='checks'>
+                        <Checkbox
+                            name='slider'
+                            label={__('Slider')}
+                            labelAlign='right'
+                            value={true}
+                        />
+                        <Checkbox
+                            name='required'
+                            label={__('Required')}
+                            labelAlign='right'
+                            value={true}
+                        />
+                    </div>
+                </div>
+            </div>
+        </FieldTypeDialog>
+    );
+};
+
+const NumberSlider = (props) => {
+    const { defaultValue, editor, fieldName } = props;
+    const min = Number(op.get(props, 'min', 0));
+    const max = Number(op.get(props, 'max', 100));
+
+    const median = (arr) => {
+        const mid = Math.floor(arr.length / 2),
+            nums = [...arr].sort((a, b) => a - b);
+        return arr.length % 2 !== 0
+            ? nums[mid]
+            : (nums[mid - 1] + nums[mid]) / 2;
+    };
+
+    const value = editor.isNew ? defaultValue : editor.Form.value[fieldName];
+
+    const _onChange = (e) => editor.setValue(fieldName, Number(e.value));
+
+    const onChange = _.throttle(_onChange, 250, { trailing: true });
+    const ticks = [min, median([min, max]), max];
+
+    return !editor.Form ? null : (
+        <div className='pt-xs-20 px-xs-12'>
+            <Slider
+                snap
+                max={max}
+                min={min}
+                ticks={ticks}
+                name={fieldName}
+                onChange={onChange}
+                value={Number(value)}
+            />
+        </div>
+    );
+};
+
+export const Editor = (props) => {
+    const {
+        defaultValue,
+        editor,
+        fieldName,
+        max,
+        min,
+        placeholder,
+        required,
+        slider = false,
+    } = props;
+
+    const inputRef = useRef();
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormError, FormRegister } = useHookComponent('ReactiumUI');
+
+    const inputProps = {
+        defaultValue,
+        max: max ? Number(max) : max,
+        min: min ? Number(min) : min,
+        name: fieldName,
+        placeholder,
+        ref: inputRef,
+        type: 'number',
+    };
+
+    const { errors } = editor;
+    const errorText = op.get(errors, [fieldName, 'message']);
+    const className = cn('form-group', { error: !!errorText });
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+            '%max': max,
+            '%min': min,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        const v = values[fieldName];
+
+        if (!err && !v && required === true) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (!err && v && min && Number(v) < Number(min)) {
+            err = parseError(__('%fieldName minimum value %min'));
+        }
+
+        if (!err && v && max && Number(v) > Number(max)) {
+            err = parseError(__('%fieldName maximum value %max'));
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='p-xs-20'>
+                    <div className={className}>
+                        {slider && min && max ? (
+                            <NumberSlider {...props} />
+                        ) : (
+                            <label>
+                                <span className='sr-only'>
+                                    {placeholder || fieldName}
+                                </span>
+
+                                <input {...inputProps} />
+                            </label>
+                        )}
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
+
+export const Comparison = (props) => {
+    const field = op.get(props, 'field', {});
+    const value = op.get(props, 'value');
+    const { fieldName: title } = field;
+
+    return (
+        <Dialog header={{ title }} collapsible={false}>
+            <div className='p-xs-20' style={{ minHeight: '60px' }}>
+                {value ? value : null}
+            </div>
+        </Dialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/reactium-hooks.js
new file mode 100644
index 00000000..21406fb7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/reactium-hooks.js
@@ -0,0 +1,25 @@
+import React from 'react';
+import { Editor, FieldType, Comparison } from '.';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Number';
+const fieldType = {
+    label: __('Number Field'),
+    icon: () => <small style={{ whiteSpace: 'nowrap' }}>1 2 3</small>,
+    tooltip: __('Adds a number field to your content type.'),
+    component: 'FieldTypeNumber',
+    order: Reactium.Enums.priority.neutral - 3,
+};
+
+(async () => {
+    Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+        Reactium.Component.register(fieldType.component, FieldType);
+        Reactium.Content.Editor.register(ID, { component: Editor });
+        Reactium.ContentType.FieldType.register(ID, fieldType);
+
+        // TODO: Fix Content SDK revisions
+        // Reactium.Content.Comparison.register(ID, {
+        //     component: Comparison,
+        // });
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/Editor.js
new file mode 100644
index 00000000..3c1820d1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/Editor.js
@@ -0,0 +1,135 @@
+import _ from 'underscore';
+import op from 'object-path';
+import { ListInput } from './ListInput';
+import { PointerInput } from './PointerInput';
+import React, { useCallback, useEffect, useMemo } from 'react';
+import { useRefs, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+export const Editor = (props) => {
+    const refs = useRefs({ arrays: {} });
+    const { editor, fieldName } = props;
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormRegister, Toggle } = useHookComponent('ReactiumUI');
+
+    const options = useMemo(
+        () => _.sortBy(Object.values(props.options), 'index'),
+        [props.options],
+    );
+
+    const onPointerChange = (key) => (e) => {
+        const value = _.isArray(e.value) ? _.first(e.value) : e.value;
+        editor.Form.setValue(`${fieldName}.${key}`, value);
+    };
+
+    const onSubmit = useCallback((e) => {
+        const lists = refs.get('arrays') || {};
+        Object.entries(lists).forEach(([k, elm]) => {
+            const fieldName = String(props.fieldName).startsWith('meta.')
+                ? props.fieldName
+                : `data.${props.fieldName}.${k}`;
+
+            op.set(e.value, fieldName, elm.value);
+        });
+    }, []);
+
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+        };
+    }, [editor]);
+
+    return options.map((item) => {
+        const { key, placeholder, type, value: defaultValue } = item;
+
+        const name = `${fieldName}.${key}`;
+
+        const id = `${fieldName}-${key}-input`;
+
+        const v = editor.isNew
+            ? defaultValue
+            : op.get(editor.Form.value, [fieldName, key], null);
+
+        return (
+            <ElementDialog
+                {...props}
+                key={`${id}-dialog`}
+                fieldName={`${fieldName} / ${key}`}
+            >
+                <FormRegister>
+                    <div className='p-xs-20'>
+                        <div
+                            className='form-group'
+                            style={{ position: 'relative' }}
+                        >
+                            {type === 'string' && (
+                                <textarea
+                                    id={id}
+                                    name={name}
+                                    defaultValue={v || ''}
+                                    placeholder={placeholder}
+                                />
+                            )}
+                            {type === 'number' && (
+                                <div className='flex-sm-middle'>
+                                    <label
+                                        className='col-xs-12 col-sm-10'
+                                        htmlFor={id}
+                                        style={{ fontWeight: 400 }}
+                                    >
+                                        {placeholder}
+                                    </label>
+                                    <div className='col-xs-12 col-sm-2 mt-xs-8 mt-sm-0'>
+                                        <input
+                                            id={id}
+                                            name={name}
+                                            type='number'
+                                            defaultValue={v || ''}
+                                            style={{
+                                                width: '100%',
+                                                textAlign: 'right',
+                                            }}
+                                        />
+                                    </div>
+                                </div>
+                            )}
+                            {type === 'array' && (
+                                <ListInput
+                                    {...item}
+                                    value={v}
+                                    editor={editor}
+                                    fieldName={fieldName}
+                                    ref={(elm) =>
+                                        refs.set(`arrays.${key}`, elm)
+                                    }
+                                />
+                            )}
+                            {type === 'boolean' && (
+                                <Toggle
+                                    name={name}
+                                    value={true}
+                                    defaultChecked={v}
+                                    label={placeholder}
+                                />
+                            )}
+                        </div>
+                        {type === 'pointer' && (
+                            <PointerInput
+                                {...item}
+                                {...props}
+                                value={v}
+                                fieldName={name}
+                                onChange={onPointerChange(key)}
+                                collection={op.get(props, [
+                                    'options',
+                                    key,
+                                    'value',
+                                ])}
+                            />
+                        )}
+                    </div>
+                </FormRegister>
+            </ElementDialog>
+        );
+    });
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/FieldType.js
new file mode 100644
index 00000000..5faccd61
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/FieldType.js
@@ -0,0 +1,312 @@
+import cn from 'classnames';
+import op from 'object-path';
+import camelcase from 'camelcase';
+import React, { useEffect, useRef, useState } from 'react';
+import { Draggable, DragDropContext, Droppable } from 'react-beautiful-dnd';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const options = (opt) =>
+    Object.entries(opt).map(([key, value]) => ({
+        key,
+        value,
+    }));
+
+const types = (arr) => {
+    Reactium.Hook.runSync('cte-object-types', arr);
+    arr.sort();
+    return arr;
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldType
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRef({});
+
+    const [state, setState] = useDerivedState({
+        options: {},
+        type: null,
+        types: types(['number', 'string', 'array', 'boolean', 'pointer']),
+    });
+
+    const { DragHandle } = props;
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    const onAddClick = () => {
+        let placeholder = op.get(refs.current, 'placeholder').value;
+        let value = op.get(refs.current, 'value').value;
+        let type = op.get(refs.current, 'type').value;
+        let key = op.get(refs.current, 'key').value;
+
+        if (!key) return;
+
+        key = camelcase(key);
+
+        const { options = {} } = state;
+
+        const index = Object.keys(options).length;
+
+        op.set(options, key, { index, key, placeholder, type, value });
+
+        refs.current.key.value = null;
+        refs.current.value.value = null;
+        refs.current.placeholder.value = null;
+        refs.current.type.focus();
+
+        setState({ options });
+    };
+
+    const onBeforeSave = ({ fieldId, fieldValue }) => {
+        if (fieldId === id) op.set(fieldValue, 'options', state.options);
+    };
+
+    const onChange = (e) => {
+        const { options = {} } = state;
+        const { value } = e.currentTarget;
+        const { field, key } = e.currentTarget.dataset;
+        op.set(options, [key, field], value);
+        setState({ options });
+    };
+
+    const onDelete = (key) => {
+        let { options = {} } = state;
+        op.del(options, key);
+
+        Object.keys(options).forEach((key, i) =>
+            op.set(options, [key, 'index'], i),
+        );
+
+        setState({ options });
+    };
+
+    const onDragEnd = (e) => {
+        const { options } = state;
+
+        const index = {
+            current: op.get(e, 'destination.index', undefined),
+            previous: op.get(e, 'source.index'),
+        };
+
+        if (index.current === undefined || index.current === index.previous)
+            return;
+
+        const keys = Object.keys(options);
+        const key = keys[index.previous];
+        keys.splice(index.previous, 1);
+        keys.splice(index.current, 0, key);
+
+        const newOptions = keys.reduce((obj, k, i) => {
+            op.set(obj, k, op.get(options, k));
+            op.set(obj, [k, 'index'], i);
+            return obj;
+        }, {});
+
+        setState({ options: newOptions });
+    };
+
+    const onEnterPress = (e) => {
+        if (e.which === 13) {
+            e.preventDefault();
+            onAddClick();
+        }
+    };
+
+    const onFormChange = ({ value }) => {
+        if (value) setState({ options: op.get(value, 'options', {}) });
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.register(
+                `field-type-form-change-${id}`,
+                onFormChange,
+            ),
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    const onTypeChange = (e) => setState({ type: e.target.value });
+
+    useEffect(onLoad);
+
+    return (
+        <FieldTypeDialog {...props} showHelpText={false}>
+            <div className={cx()}>
+                <div className='input-group'>
+                    <select
+                        ref={(elm) => op.set(refs.current, 'type', elm)}
+                        onChange={onTypeChange}
+                    >
+                        <option value='null'>{__('Type')}</option>
+                        {state.types.map((type, i) => (
+                            <option key={`type-${i}`}>{type}</option>
+                        ))}
+                    </select>
+                    <input
+                        type='text'
+                        ref={(elm) => op.set(refs.current, 'key', elm)}
+                        placeholder={__('Property')}
+                        onKeyDown={onEnterPress}
+                    />
+                    <input
+                        type='text'
+                        ref={(elm) => op.set(refs.current, 'placeholder', elm)}
+                        placeholder={__('Placeholder')}
+                        onKeyDown={onEnterPress}
+                    />
+                    <input
+                        type='text'
+                        onKeyDown={onEnterPress}
+                        ref={(elm) => op.set(refs.current, 'value', elm)}
+                        placeholder={
+                            state.type !== 'pointer'
+                                ? __('Default value')
+                                : __('Collection')
+                        }
+                    />
+                    <Button
+                        color={Button.ENUMS.COLOR.TERTIARY}
+                        onClick={onAddClick}
+                        className='add-btn'
+                        style={{ padding: 0, height: 41, flexShrink: 0 }}
+                    >
+                        <Icon
+                            name='Feather.Plus'
+                            size={22}
+                            className='hide-xs show-md'
+                        />
+                        <span className='hide-md'>{__('Add Item')}</span>
+                    </Button>
+                </div>
+                <DragDropContext onDragEnd={onDragEnd}>
+                    <Droppable droppableId={cx('droppable')}>
+                        {(provided) => (
+                            <ul
+                                {...provided.droppableProps}
+                                ref={provided.innerRef}
+                                className={cx('list')}
+                            >
+                                {options(state.options).map(
+                                    ({ key, value }, i) => (
+                                        <ListItem
+                                            k={key}
+                                            index={i}
+                                            value={value}
+                                            key={`key-${key}`}
+                                            onChange={onChange}
+                                            onDelete={onDelete}
+                                            types={state.types}
+                                        />
+                                    ),
+                                )}
+                                {provided.placeholder}
+                            </ul>
+                        )}
+                    </Droppable>
+                </DragDropContext>
+            </div>
+        </FieldTypeDialog>
+    );
+};
+
+const ListItem = (props) => {
+    const { onChange, onDelete, index, k: key, types, value } = props;
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    const [type, setType] = useState(op.get(value, 'type'));
+
+    const onTypeChange = (e) => {
+        setType(e.target.value);
+        onChange(e);
+    };
+
+    return (
+        <Draggable draggableId={key} index={index}>
+            {(provided, snapshot) => (
+                <li
+                    {...provided.draggableProps}
+                    {...provided.dragHandleProps}
+                    ref={provided.innerRef}
+                    className={cn('list-item', {
+                        dragging: snapshot.isDragging,
+                    })}
+                >
+                    <div className='input-group'>
+                        <select
+                            data-key={key}
+                            data-field='type'
+                            onChange={onTypeChange}
+                            value={op.get(value, 'type', 'null')}
+                        >
+                            <option value='null'>{__('Type')}</option>
+                            {types.map((type, i) => (
+                                <option key={`type-${i}`}>{type}</option>
+                            ))}
+                        </select>
+
+                        <input
+                            readOnly
+                            value={key}
+                            type='text'
+                            placeholder={__('Property')}
+                        />
+
+                        <input
+                            type='text'
+                            data-key={key}
+                            data-field='placeholder'
+                            placeholder={__('Placeholder')}
+                            value={op.get(value, 'placeholder') || ''}
+                            onChange={onChange}
+                        />
+
+                        <input
+                            type='text'
+                            data-key={key}
+                            data-field='value'
+                            onChange={onChange}
+                            value={op.get(value, 'value') || ''}
+                            placeholder={
+                                type !== 'pointer'
+                                    ? __('Default value')
+                                    : __('Collection')
+                            }
+                        />
+
+                        <Button
+                            className='del-btn'
+                            onClick={() => onDelete(key)}
+                            color={Button.ENUMS.COLOR.DANGER}
+                            style={{ padding: 0, height: 41 }}
+                        >
+                            <Icon
+                                className='hide-xs show-md'
+                                name='Feather.X'
+                                size={22}
+                            />
+                            <span className='hide-md'>
+                                {__('Delete %key').replace(/\%key/gi, key)}
+                            </span>
+                        </Button>
+                    </div>
+                    <div className='drag-handle' />
+                </li>
+            )}
+        </Draggable>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/ListInput.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/ListInput.js
new file mode 100644
index 00000000..2478eb0e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/ListInput.js
@@ -0,0 +1,231 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import { Draggable, DragDropContext, Droppable } from 'react-beautiful-dnd';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+
+import Reactium, {
+    useRefs,
+    useSyncState,
+    useDispatcher,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ListInput = forwardRef((props, ref) => {
+    const refs = useRefs();
+
+    const { placeholder, value: defaultValue } = props;
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    const state = useSyncState({
+        value: defaultValue || [],
+    });
+
+    const dispatch = useDispatcher({ props, state });
+
+    const values = useMemo(
+        () => state.get('value') || [],
+        [state.get('value')],
+    );
+
+    const onDragEnd = (e) => {
+        if (!e) return;
+        if (!e.source) return;
+        if (!e.destination) return;
+
+        let vals = Array.from(values);
+
+        const insert = e.destination.index;
+        const curr = e.source.index;
+        const item = vals[curr];
+
+        vals.splice(curr, 1);
+        vals.splice(insert, 0, item);
+
+        state.set('value', vals);
+    };
+
+    const onDragStart = () => {
+        const vals = state.get('value');
+        state.set('value', vals);
+    };
+
+    const onInputChange =
+        (i, emit = false) =>
+        (e) => {
+            const vals = Array.from(values);
+            vals[i] = e.target.value;
+
+            state.set('value', vals, emit);
+        };
+
+    const onAdd = (e) => {
+        if (e.type === 'keyup' && e.which !== 13) return;
+        const input = refs.get('add');
+        const val = input.value;
+
+        input.value = '';
+        input.focus();
+
+        if (String(val).length < 1) return;
+
+        let vals = Array.from(values);
+        vals.push(val);
+
+        state.set('value', _.chain(vals).compact().uniq().value());
+    };
+
+    const onDelete = (index) => () => {
+        let vals = Array.from(values);
+        vals.splice(index, 1);
+        state.set('value', vals);
+    };
+
+    state.value = values;
+
+    state.extend('dispatch', dispatch);
+
+    useEffect(() => {
+        const prev = JSON.stringify(state.previous) || '{}';
+
+        state.value = state.get('value');
+        state.previous = state.value;
+
+        dispatch('change', { previous: JSON.parse(prev), value: state.value });
+    }, [state.get('value')]);
+
+    useImperativeHandle(ref, () => state);
+
+    return (
+        <div className='ar-input-list'>
+            <div className='input-group'>
+                <input
+                    type='text'
+                    onKeyUp={onAdd}
+                    className='mb-xs-0'
+                    placeholder={placeholder}
+                    style={{ marginBottom: 0 }}
+                    ref={(elm) => refs.set('add', elm)}
+                />
+                <Button
+                    onClick={onAdd}
+                    className='add-btn'
+                    color={Button.ENUMS.COLOR.TERTIARY}
+                    style={{
+                        width: 41,
+                        height: 42,
+                        padding: 0,
+                        flexShrink: 0,
+                    }}
+                >
+                    <Icon size={22} name='Feather.Plus' />
+                </Button>
+            </div>
+            {values.length > 0 && (
+                <DragDropContext
+                    onDragEnd={onDragEnd}
+                    onBeforeDragStart={onDragStart}
+                >
+                    <Droppable droppableId={cx('droppable')}>
+                        {(provided) => (
+                            <ul
+                                tabIndex={-1}
+                                className={cx('list')}
+                                ref={provided.innerRef}
+                                {...provided.droppableProps}
+                            >
+                                {values.map((item, index) => (
+                                    <Draggable
+                                        tabIndex={-1}
+                                        index={index}
+                                        key={`input-${index}`}
+                                        draggableId={`input-${index}`}
+                                    >
+                                        {(provided, snapshot) => (
+                                            <ListItem
+                                                refs={refs}
+                                                value={item}
+                                                index={index}
+                                                provided={provided}
+                                                snapshot={snapshot}
+                                                onDelete={onDelete}
+                                                placeholder={placeholder}
+                                                onInputChange={onInputChange}
+                                            />
+                                        )}
+                                    </Draggable>
+                                ))}
+                                {provided.placeholder}
+                            </ul>
+                        )}
+                    </Droppable>
+                </DragDropContext>
+            )}
+        </div>
+    );
+});
+
+const ListItem = ({
+    index,
+    onInputChange,
+    onDelete,
+    placeholder,
+    provided,
+    refs,
+    snapshot,
+    value,
+}) => {
+    const id = uuid();
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    return (
+        <li
+            key={`item-${id}`}
+            ref={provided.innerRef}
+            {...provided.draggableProps}
+            {...provided.dragHandleProps}
+            tabIndex={-1}
+            className={cn('list-item', {
+                dragging: snapshot.isDragging,
+            })}
+        >
+            <div className='input-group' tabIndex={-1}>
+                <input
+                    type='text'
+                    style={{
+                        marginBottom: 0,
+                    }}
+                    defaultValue={value}
+                    onBlur={onInputChange(index, true)}
+                    onChange={onInputChange(index)}
+                    placeholder={placeholder}
+                    ref={(elm) => refs.set(`input${id}`, elm)}
+                />
+                <Button
+                    className='add-btn'
+                    onClick={onDelete(index)}
+                    color={Button.ENUMS.COLOR.DANGER}
+                    style={{
+                        width: 41,
+                        height: 42,
+                        padding: 0,
+                        flexShrink: 0,
+                    }}
+                >
+                    <Icon size={22} name='Feather.X' />
+                </Button>
+            </div>
+            <div className='drag-handle' />
+        </li>
+    );
+};
+
+export { ListInput, ListInput as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/PointerInput.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/PointerInput.js
new file mode 100644
index 00000000..669fe2c6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/PointerInput.js
@@ -0,0 +1,228 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
+
+import Reactium, {
+    useRefs,
+    useSyncState,
+    useDispatcher,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const PointerInput = forwardRef((props, ref) => {
+    const { collection, fieldName, value: defaultValue = null } = props;
+
+    const refs = useRefs();
+
+    const state = useSyncState({
+        search: {},
+        searchString: null,
+        value: defaultValue,
+        previous: null,
+    });
+
+    const value = state.get('value');
+
+    const dispatch = useDispatcher({ props, state });
+
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    const removePointer = () => {
+        state.set('value', null);
+
+        _.defer(() => {
+            const input = refs.get('input');
+            if (!input) return;
+            input.select();
+        });
+    };
+
+    const onCollectionSearch = (e) => searchCollection(e.target.value);
+
+    const onCollectionSelect = (e) => state.set('value', e.value);
+
+    const _searchCollection = async (search) => {
+        const ref = refs.get('results');
+
+        if (!search || (search && String(search).length < 1)) {
+            state.set('search', null, false);
+            state.set('search', {}, false);
+            ref.set('results', []);
+
+            return;
+        }
+
+        state.set('searchString', search, false);
+
+        if (String(search).length < 2) return;
+
+        const { results } = await Reactium.Cloud.run(
+            'content-editor-collection-search',
+            {
+                collection,
+                search,
+            },
+        );
+
+        state.set('search.results', results, false);
+
+        ref.set('results', results);
+    };
+
+    const searchCollection = _.throttle(_searchCollection, 500);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    state.value = value;
+
+    state.extend('dispatch', dispatch);
+
+    useEffect(() => {
+        state.value = state.get('value');
+        dispatch('change', { value: state.value });
+    }, [state.get('value')]);
+
+    useImperativeHandle(ref, () => state);
+
+    return !value ? (
+        <>
+            <div className='form-group my-xs-0'>
+                <input
+                    type='text'
+                    key='input'
+                    className='pl-xs-32 mb-xs-0'
+                    onChange={onCollectionSearch}
+                    placeholder={props.placeholder}
+                    ref={(elm) => refs.set('input', elm)}
+                    defaultValue={state.get('searchString')}
+                />
+                <span
+                    style={{
+                        left: 12,
+                        top: '50%',
+                        color: 'grey',
+                        position: 'absolute',
+                        transform: 'translateY(-50%)',
+                    }}
+                >
+                    <Icon size={14} name='Feather.Search' />
+                </span>
+            </div>
+            <PointerSearchResults
+                {...props}
+                onSelect={onCollectionSelect}
+                value={state.get('search.results')}
+                ref={(elm) => refs.set('results', elm)}
+            />
+        </>
+    ) : (
+        <div className='input-group' style={{ position: 'relative' }}>
+            <input
+                disabled
+                type='text'
+                key='label'
+                className='mb-xs-0'
+                defaultValue={op.get(value, 'label')}
+                style={{
+                    marginBottom: 0,
+                    paddingLeft: op.get(value, 'image') ? 44 : null,
+                }}
+            />
+            <Button
+                onClick={removePointer}
+                color={Button.ENUMS.COLOR.DANGER}
+                style={{
+                    width: 41,
+                    height: 42,
+                    padding: 0,
+                    flexShrink: 0,
+                }}
+            >
+                <Icon size={22} name='Feather.X' />
+            </Button>
+            {op.get(value, 'image') && (
+                <div
+                    style={{
+                        backgroundImage: `url('${value.image}')`,
+                    }}
+                    className={cx('collection-select-thumb')}
+                />
+            )}
+            <input type='hidden' name={fieldName} defaultValue={value} />
+        </div>
+    );
+});
+
+const PointerSearchResults = forwardRef((props, ref) => {
+    const state = useSyncState({
+        results: op.get(props, 'value', []),
+    });
+
+    const results = state.get('results');
+
+    const dispatch = useDispatcher({ props, state });
+
+    const _onSelect = (item) => () => {
+        const { onSelect } = props;
+        if (!_.isFunction(onSelect)) return;
+
+        const value = {
+            ...item,
+            className: props.collection,
+        };
+
+        state.set('value', null, false);
+        state.set('value', value, false);
+        dispatch('select', { value });
+    };
+
+    const onSelect = _.throttle(_onSelect, 1000, { trailing: false });
+
+    state.results = results;
+
+    state.extend('dispatch', dispatch);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    useEffect(() => {
+        state.results = state.get('results');
+    }, [state.get('results')]);
+
+    useEffect(() => {
+        if (_.isFunction(props.onSelect)) {
+            state.addEventListener('select', props.onSelect);
+        }
+        return () => {
+            if (_.isFunction(props.onSelect)) {
+                state.removeEventListener('select', props.onSelect);
+            }
+        };
+    }, [props.onSelect]);
+
+    useImperativeHandle(ref, () => state);
+
+    return results.length > 0 ? (
+        <div className={cx('collection-list')}>
+            {results.map((item) => (
+                <button
+                    type='button'
+                    key={item.objectId}
+                    onClick={onSelect(item)}
+                    className={cx('collection-list-item')}
+                >
+                    {op.get(item, 'image') && (
+                        <div
+                            style={{
+                                backgroundImage: `url('${item.image}')`,
+                            }}
+                            className={cx('collection-list-item-thumb')}
+                        />
+                    )}
+                    {item.label}
+                </button>
+            ))}
+        </div>
+    ) : null;
+});
+
+export { PointerInput, PointerInput as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/_reactium-style-organisms-ftobject.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/_reactium-style-organisms-ftobject.scss
new file mode 100644
index 00000000..c87e286c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/_reactium-style-organisms-ftobject.scss
@@ -0,0 +1,217 @@
+.object {
+    &-cte {
+        .input-group {
+            flex-direction: column;
+
+            .add-btn,
+            .del-btn {
+                min-width: 41px;
+                width: 100%;
+                flex-shrink: 0;
+
+                @include breakpoint(xs-only) {
+                    border-radius: 2px;
+                }
+                @include breakpoint(sm-only) {
+                    border-radius: 2px;
+                }
+            }
+
+            > *:not(:last-child) {
+                margin-bottom: 16px;
+            }
+
+            @include breakpoint(lg) {
+                select {
+                    min-width: 200px;
+                }
+            }
+
+            @include breakpoint(md) {
+                flex-direction: row;
+                flex-wrap: wrap;
+                border-right: 1px solid $input-color-border;
+                margin-right: -1px;
+
+                .add-btn,
+                .del-btn {
+                    width: 41px;
+                }
+
+                > *:not(:last-child) {
+                    margin-bottom: 0;
+                }
+
+                select {
+                    border: 1px solid $input-color-border;
+                    height: 41px;
+                    flex-grow: 0;
+                    min-width: 120px;
+
+                    &:not(:last-child) {
+                        margin-right: -1px;
+                    }
+                }
+            }
+
+            @include breakpoint(xs-only) {
+                input,
+                select,
+                textarea {
+                    border: px solid $input-color-border;
+                    border-radius: 2px;
+                }
+            }
+
+            @include breakpoint(sm-only) {
+                input,
+                select,
+                textarea {
+                    border: 1px solid $input-color-border;
+                    border-radius: 2px;
+                }
+            }
+        }
+
+        &-list {
+            border-top: 1px solid $color-grey-light;
+            margin: 16px 0 0 0;
+            padding: 0;
+
+            list-style: none;
+
+            &:empty {
+                display: none;
+            }
+
+            li {
+                list-style: none;
+            }
+
+            li.list-item {
+                position: relative;
+                border: none;
+                margin-top: 16px;
+
+                .drag-handle {
+                    position: absolute;
+                    left: -18px;
+                    top: 50%;
+                    width: 18px;
+                    height: 100%;
+                    opacity: 0;
+                    transform: translateY(-50%);
+                    background-color: $color-light;
+                    transition: background-color 0.2s ease-in-out;
+
+                    &:after {
+                        content: '';
+                        width: 4px;
+                        height: 14px;
+                        left: 50%;
+                        top: 50%;
+                        position: absolute;
+                        transform: translateX(-50%) translateY(-50%);
+                        border-left: 1px solid lighten($color-primary, 20%);
+                        border-right: 1px solid lighten($color-primary, 20%);
+                    }
+                }
+
+                &:hover {
+                    .drag-handle {
+                        opacity: 1;
+                    }
+                }
+
+                &.dragging {
+                    box-shadow: $shadow-image;
+                    background-color: $color-light;
+                    padding: 14px 14px 226px 14px;
+
+                    @include breakpoint(md) {
+                        padding: 4px 4px 45px 4px;
+                    }
+
+                    .drag-handle {
+                        opacity: 1;
+                        background-color: lighten($color-grey-light, 2%);
+                        border-radius: 4px 0px 0px 4px;
+                    }
+                }
+            }
+        }
+
+        &-collection {
+            position: relative;
+
+            &-select-thumb {
+                top: 50%;
+                left: 5px;
+                width: 32px;
+                height: 32px;
+                position: absolute;
+                border-radius: 2px;
+                background-size: cover;
+                transform: translateY(-50%);
+            }
+
+            &-list {
+                margin-top: 16px;
+                padding-top: 16px;
+                border-top: 1px solid $input-color-border;
+
+                &-item {
+                    width: 100%;
+                    padding: 4px;
+                    display: flex;
+                    cursor: pointer;
+                    border-radius: 2px;
+                    align-items: center;
+                    background-color: #fcfcfc;
+                    border: 1px solid transparent;
+
+                    &:focus,
+                    &:hover {
+                        background-color: $color-light;
+                        border: 1px solid $color-primary;
+                        box-shadow: 0 0 4px rgba($color-primary, 0.6);
+                    }
+
+                    &:not(:first-child) {
+                        margin-top: 10px;
+                    }
+
+                    &-thumb {
+                        width: 32px;
+                        height: 32px;
+                        border-radius: 2px;
+                        background-size: cover;
+                        margin-right: 10px;
+                    }
+                }
+            }
+        }
+    }
+
+    &-editor {
+        @extend .row;
+        color: $color-text-dark;
+        padding: 16px;
+        position: relative;
+
+        * {
+            position: relative;
+        }
+
+        select {
+            color: inherit;
+        }
+
+        .ar-spinner {
+            transform: translateX(-50%) translateY(-50%) scale(0.4);
+            position: absolute;
+            top: 50%;
+            left: 50%;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/reactium-hooks.js
new file mode 100644
index 00000000..15e75ddd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/reactium-hooks.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Object';
+
+const Ico = () => (
+    <span
+        children='{ }'
+        style={{ color: '#999999', fontSize: 18, whiteSpace: 'nowrap' }}
+    />
+);
+
+const fieldType = {
+    icon: Ico,
+    label: __('Object Field'),
+    component: 'FieldTypeObject',
+    tooltip: __('Adds an Object field type'),
+    order: Reactium.Enums.priority.neutral + 2,
+};
+
+Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/Editor.js
new file mode 100644
index 00000000..4fc6c57d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/Editor.js
@@ -0,0 +1,99 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import { PointerInput } from '../FieldTypeObject/PointerInput';
+import {
+    __,
+    useHookComponent,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const Editor = (props) => {
+    const { editor, fieldName, required = false } = props;
+
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormRegister, FormError } = useHookComponent('ReactiumUI');
+
+    const state = useSyncState({
+        value: op.get(editor.Form.value, fieldName),
+    });
+
+    const onChange = (e) => {
+        const value = _.isArray(e.value) ? _.first(e.value) : e.value;
+        state.set('value', value);
+        editor.Form.setValue(fieldName, value);
+    };
+
+    const onSubmit = (e) => {
+        const fieldName =
+            String(props.fieldName).startsWith('data.') ||
+            String(props.fieldName).startsWith('meta.')
+                ? props.fieldName
+                : `data.${props.fieldName}`;
+
+        const values = state.get('value') || [];
+
+        op.set(e.value, fieldName, values);
+    };
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        const v = values[fieldName];
+
+        if (!err && required === true && !v) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (!err && Array.isArray(v) && v.length < 1) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+        };
+    }, [editor]);
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='p-xs-20'>
+                    <div className='form-group'>
+                        <PointerInput
+                            {...props}
+                            onChange={onChange}
+                            value={state.get('value')}
+                        />
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/FieldType.js
new file mode 100644
index 00000000..dccc9e2a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/FieldType.js
@@ -0,0 +1,114 @@
+import op from 'object-path';
+import React, { useEffect } from 'react';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldType
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const currRequired = () => {
+        let checked = false;
+
+        if (props.formRef.current) {
+            const values = props.formRef.current.getValue();
+            checked = values.required || checked;
+        }
+
+        return checked;
+    };
+
+    const [state, setState] = useDerivedState({
+        required: currRequired(),
+    });
+
+    const { DragHandle } = props;
+    const { Toggle } = useHookComponent('ReactiumUI');
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    const onBeforeSave = ({ fieldId, fieldValue }) => {
+        if (fieldId === id) {
+            op.set(fieldValue, 'required', state.required || false);
+        }
+    };
+
+    const onFormChange = ({ value }) => {
+        if (value) setState({ required: op.get(value, 'required', false) });
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.register(
+                `field-type-form-change-${id}`,
+                onFormChange,
+            ),
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad);
+
+    const render = () => {
+        return (
+            <FieldTypeDialog {...props} showHelpText={false}>
+                <div className={cx()}>
+                    <div className='row'>
+                        <div className='col-xs-12 mb-xs-20'>
+                            <div className='form-group'>
+                                <input
+                                    type='text'
+                                    name='collection'
+                                    placeholder={__('Collection')}
+                                />
+                            </div>
+                        </div>
+                        <div className='col-xs-12'>
+                            <div className='form-group'>
+                                <input
+                                    type='text'
+                                    name='placeholder'
+                                    placeholder={__('Placeholder')}
+                                />
+                            </div>
+                        </div>
+                        <div className='col-xs-12'>
+                            <div className='mt-xs-20'>
+                                <Toggle
+                                    value={true}
+                                    name='required'
+                                    defaultChecked={state.required}
+                                    label={
+                                        <>
+                                            <strong>{__('Required:')}</strong>{' '}
+                                            <em>
+                                                {String(
+                                                    state.required || false,
+                                                )}
+                                            </em>
+                                        </>
+                                    }
+                                />
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </FieldTypeDialog>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/reactium-hooks.js
new file mode 100644
index 00000000..48304dd0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePointer/reactium-hooks.js
@@ -0,0 +1,28 @@
+import React from 'react';
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Pointer';
+
+const Ico = () => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    return <Icon name='Linear.PointerUp' />;
+};
+
+const fieldType = {
+    icon: Ico,
+    label: __('Pointer Field'),
+    component: 'FieldTypePointer',
+    tooltip: __('Adds an Pointer field type'),
+    order: Reactium.Enums.priority.neutral,
+};
+
+Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.Component.register(fieldType.component, FieldType);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/index.js
new file mode 100644
index 00000000..8429f5bf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/index.js
@@ -0,0 +1,27 @@
+import React, { useMemo } from 'react';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Button, FormError, Icon } from 'reactium-ui';
+
+export const Editor = ({ editor }) => {
+    const onClick = () => editor.submit();
+
+    const disabled = useMemo(
+        () => editor.get('disabled'),
+        [editor.get('disabled')],
+    );
+
+    return (
+        <div className={editor.cx('sidebar-element-publish-box')}>
+            <FormError name='submit' />
+            <Button
+                block
+                disabled={disabled}
+                onClick={onClick}
+                size={Button.ENUMS.SIZE.MD}
+            >
+                <Icon name='Linear.CloudUpload' size={30} />
+                <span className='hide-xs show-sm ml-xs-12'>{__('Save')}</span>
+            </Button>
+        </div>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/reactium-hooks.js
new file mode 100644
index 00000000..75858cd9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypePublish/reactium-hooks.js
@@ -0,0 +1,28 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin FieldTypePublish
+ * -----------------------------------------------------------------------------
+ */
+
+import { Editor } from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    await Reactium.Plugin.register('FieldTypePublish');
+    Reactium.Component.register('FieldTypePublish', Editor);
+    Reactium.Content.Editor.register('Publish', { component: Editor });
+
+    Reactium.Hook.registerSync(
+        'content-editor-elements',
+        ({ fields }) => {
+            fields.add({
+                region: 'sidebar',
+                fieldId: 'publish',
+                fieldName: 'publish',
+                fieldType: 'Publish',
+            });
+        },
+        Reactium.Enums.priority.lowest,
+        'ADMIN-CONTENT-PUBLISH',
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/Editor.js
new file mode 100644
index 00000000..9e40aa4e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/Editor.js
@@ -0,0 +1,164 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import React, { useEffect, useMemo } from 'react';
+import {
+    __,
+    useHookComponent,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const Editor = (props) => {
+    const {
+        editor,
+        fieldName,
+        placeholder,
+        required = false,
+        multiple,
+    } = props;
+
+    const options = useMemo(() => {
+        const opts = _.isString(props.options)
+            ? JSON.parse(props.options)
+            : props.options;
+        return Object.values(opts);
+    }, [props.options]);
+
+    const { FormRegister, FormError, Toggle } = useHookComponent('ReactiumUI');
+    const ElementDialog = useHookComponent('ElementDialog');
+
+    const state = useSyncState({
+        values: op.get(editor.Form.value, fieldName, []),
+    });
+
+    const inputProps = {
+        defaultValue: op.get(props, 'defaultValue', null) || null,
+        name: fieldName,
+        placeholder,
+    };
+
+    if (!inputProps.defaultValue) delete inputProps.defaultValue;
+
+    const className = cn('form-group');
+
+    const onChange = (e) => {
+        const value = e.target.value;
+        let values = Array.from(state.get('values'));
+
+        if (e.target.checked) {
+            values.push(value);
+            values = _.uniq(values);
+        } else {
+            values = _.without(values, value);
+        }
+
+        state.set('values', values);
+        editor.Form.setValue(fieldName, values);
+    };
+
+    const onSubmit = (e) => {
+        if (!multiple) return;
+        const fieldName =
+            String(props.fieldName).startsWith('data.') ||
+            String(props.fieldName).startsWith('meta.')
+                ? props.fieldName
+                : `data.${props.fieldName}`;
+
+        const values = state.get('values') || [];
+
+        op.set(e.value, fieldName, values);
+    };
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        const v = values[fieldName];
+
+        if (!err && required === true && !v) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (!err && multiple && Array.isArray(v) && v.length < 1) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    useEffect(() => {
+        if (!multiple) return;
+        editor.addEventListener('submit', onSubmit);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+        };
+    }, [editor]);
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='p-xs-20'>
+                    <div className={className}>
+                        {!multiple ? (
+                            <label>
+                                <select {...inputProps}>
+                                    <option value={null}>
+                                        {placeholder || __('Select')}
+                                    </option>
+                                    {options.map(({ label, value }, i) => (
+                                        <option
+                                            key={`option-${i}`}
+                                            value={value}
+                                        >
+                                            {label}
+                                        </option>
+                                    ))}
+                                </select>
+                            </label>
+                        ) : (
+                            <div className='row' style={{ width: '100%' }}>
+                                {options.map(({ label, value }, i) => (
+                                    <div
+                                        key={`${inputProps.name}-checkbox-${i}`}
+                                        className='col-xs-12 py-xs-8'
+                                    >
+                                        <Toggle
+                                            label={label}
+                                            labelAlign='left'
+                                            value={value}
+                                            onChange={onChange}
+                                            checked={state
+                                                .get('values')
+                                                .includes(value)}
+                                        />
+                                    </div>
+                                ))}
+                            </div>
+                        )}
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/FieldType.js
new file mode 100644
index 00000000..2d1793ec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/FieldType.js
@@ -0,0 +1,355 @@
+import { v4 as uuid } from 'uuid';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import React, { useEffect, useRef } from 'react';
+import { Draggable, DragDropContext, Droppable } from 'react-beautiful-dnd';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const options = (opt) => {
+    opt = _.isString(opt) ? JSON.parse(opt) : opt;
+    return Object.entries(opt).map(([key, value]) => ({
+        key,
+        value,
+    }));
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldType
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRef({
+        options: null,
+    });
+
+    const currOptions = () => {
+        let opt;
+
+        if (props.formRef.current) {
+            const values = props.formRef.current.getValue();
+            if (op.get(values, 'options')) {
+                opt = values.options;
+            }
+        }
+
+        if (!opt) {
+            opt = {};
+        }
+
+        opt = _.isString(opt) ? JSON.parse(opt) : opt;
+        return opt;
+    };
+
+    const currMultiple = () => {
+        let checked = false;
+
+        if (props.formRef.current) {
+            const values = props.formRef.current.getValue();
+            checked = values.multiple || checked;
+        }
+
+        return checked;
+    };
+
+    const currRequired = () => {
+        let checked = false;
+
+        if (props.formRef.current) {
+            const values = props.formRef.current.getValue();
+            checked = values.required || checked;
+        }
+
+        return checked;
+    };
+
+    const [state, setState] = useDerivedState({
+        options: currOptions(),
+        required: currRequired(),
+        multiple: currMultiple(),
+    });
+
+    const { DragHandle } = props;
+    const { Button, Checkbox, Icon } = useHookComponent('ReactiumUI');
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    const cx = Reactium.Utils.cxFactory('object-cte');
+
+    const onAddClick = () => {
+        let label = op.get(refs.current, 'label').value;
+        let value = op.get(refs.current, 'value').value;
+        let key = uuid();
+
+        const { options = {} } = state;
+
+        const index = Object.keys(options).length;
+
+        op.set(options, key, { index, key, label, value });
+
+        refs.current.value.value = null;
+        refs.current.label.value = null;
+        refs.current.label.focus();
+
+        setState({ options });
+        refs.current.options.value = JSON.stringify(options);
+    };
+
+    const onBeforeSave = ({ fieldId, fieldValue }) => {
+        if (fieldId === id) {
+            op.set(fieldValue, 'options', JSON.stringify(state.options));
+            op.set(fieldValue, 'multiple', state.multiple || false);
+            op.set(fieldValue, 'required', state.required || false);
+        }
+    };
+
+    const onChange = (e) => {
+        const { options = {} } = state;
+        const { value } = e.currentTarget;
+        const { field, key } = e.currentTarget.dataset;
+        op.set(options, [key, field], value);
+        setState({ options });
+    };
+
+    const onDelete = (key) => {
+        let { options = {} } = state;
+        op.del(options, key);
+
+        Object.keys(options).forEach((key, i) =>
+            op.set(options, [key, 'index'], i),
+        );
+
+        setState({ options });
+    };
+
+    const onDragEnd = (e) => {
+        const { options } = state;
+
+        const index = {
+            current: op.get(e, 'destination.index', undefined),
+            previous: op.get(e, 'source.index'),
+        };
+
+        if (index.current === undefined || index.current === index.previous)
+            return;
+
+        const keys = Object.keys(options);
+        const key = keys[index.previous];
+        keys.splice(index.previous, 1);
+        keys.splice(index.current, 0, key);
+
+        const newOptions = keys.reduce((obj, k, i) => {
+            op.set(obj, k, op.get(options, k));
+            op.set(obj, [k, 'index'], i);
+            return obj;
+        }, {});
+
+        setState({ options: newOptions });
+    };
+
+    const onEnterPress = (e) => {
+        if (e.which === 13) {
+            e.preventDefault();
+            onAddClick();
+        }
+    };
+
+    const onFormChange = ({ value }) => {
+        if (value) {
+            let opts = op.get(value, 'options', {});
+            opts = _.isString(opts) ? JSON.parse(opts) : opts;
+
+            const multiple = op.get(value, 'multiple', false);
+            const required = op.get(value, 'required', false);
+            setState({ options: opts, multiple, required });
+        }
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.register(
+                `field-type-form-change-${id}`,
+                onFormChange,
+            ),
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad);
+
+    const render = () => {
+        const opts = options(state.options);
+        return (
+            <FieldTypeDialog {...props} showHelpText={false}>
+                <input
+                    type='hidden'
+                    name='options'
+                    ref={(elm) => {
+                        refs.current['options'] = elm;
+                    }}
+                />
+                <div className={cx()}>
+                    <div className='flex mb-xs-20'>
+                        <div className='input-group flex-grow'>
+                            <input
+                                type='text'
+                                name='placeholder'
+                                placeholder={__('Placeholder')}
+                            />
+                            <input
+                                type='text'
+                                name='defaultValue'
+                                placeholder={__('Default Value')}
+                            />
+                        </div>
+                        <div
+                            className='pl-xs-0 pl-md-20 flex'
+                            style={{ flexShrink: 0 }}
+                        >
+                            <Checkbox
+                                value={true}
+                                name='multiple'
+                                labelAlign='right'
+                                className='mr-xs-20'
+                                label={__('Multiple')}
+                                defaultChecked={state.multiple}
+                            />
+
+                            <Checkbox
+                                value={true}
+                                name='required'
+                                labelAlign='right'
+                                label={__('Required')}
+                                defaultChecked={state.required}
+                            />
+                        </div>
+                    </div>
+
+                    <div className='mb-xs-8'>
+                        <h4>Selections:</h4>
+                    </div>
+                    <div className='input-group'>
+                        <input
+                            type='text'
+                            onKeyDown={onEnterPress}
+                            placeholder={__('Label')}
+                            ref={(elm) => op.set(refs.current, 'label', elm)}
+                        />
+                        <input
+                            type='text'
+                            onKeyDown={onEnterPress}
+                            placeholder={__('Value')}
+                            ref={(elm) => op.set(refs.current, 'value', elm)}
+                        />
+                        <Button
+                            color={Button.ENUMS.COLOR.TERTIARY}
+                            onClick={onAddClick}
+                            className='add-btn'
+                            style={{ padding: 0, height: 41, flexShrink: 0 }}
+                        >
+                            <Icon
+                                name='Feather.Plus'
+                                size={22}
+                                className='hide-xs show-md'
+                            />
+                            <span className='hide-md'>{__('Add Item')}</span>
+                        </Button>
+                    </div>
+                    {opts.length > 0 && (
+                        <DragDropContext onDragEnd={onDragEnd}>
+                            <Droppable droppableId={cx('droppable')}>
+                                {(provided) => (
+                                    <ul
+                                        {...provided.droppableProps}
+                                        ref={provided.innerRef}
+                                        className={cx('list')}
+                                    >
+                                        {opts.map(({ key, value }, i) => (
+                                            <ListItem
+                                                k={key}
+                                                index={i}
+                                                value={value}
+                                                key={`key-${key}`}
+                                                onChange={onChange}
+                                                onDelete={onDelete}
+                                                types={state.types}
+                                            />
+                                        ))}
+                                        {provided.placeholder}
+                                    </ul>
+                                )}
+                            </Droppable>
+                        </DragDropContext>
+                    )}
+                </div>
+            </FieldTypeDialog>
+        );
+    };
+
+    return render();
+};
+
+const ListItem = (props) => {
+    const { onChange, onDelete, index, k: key, value } = props;
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    return (
+        <Draggable draggableId={key} index={index}>
+            {(provided, snapshot) => (
+                <li
+                    {...provided.draggableProps}
+                    {...provided.dragHandleProps}
+                    ref={provided.innerRef}
+                    className={cn('list-item', {
+                        dragging: snapshot.isDragging,
+                    })}
+                >
+                    <div className='input-group'>
+                        <input
+                            type='text'
+                            data-key={key}
+                            data-field='label'
+                            onChange={onChange}
+                            placeholder={__('Label')}
+                            value={op.get(value, 'label') || ''}
+                        />
+
+                        <input
+                            type='text'
+                            data-key={key}
+                            data-field='value'
+                            onChange={onChange}
+                            placeholder={__('Value')}
+                            value={op.get(value, 'value') || ''}
+                        />
+
+                        <Button
+                            className='del-btn'
+                            onClick={() => onDelete(key)}
+                            color={Button.ENUMS.COLOR.DANGER}
+                            style={{ padding: 0, height: 41 }}
+                        >
+                            <Icon
+                                className='hide-xs show-md'
+                                name='Feather.X'
+                                size={22}
+                            />
+                        </Button>
+                    </div>
+                    <div className='drag-handle' />
+                </li>
+            )}
+        </Draggable>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/_reactium-style-organisms-ftselect.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/_reactium-style-organisms-ftselect.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/reactium-hooks.js
new file mode 100644
index 00000000..f2c685d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/reactium-hooks.js
@@ -0,0 +1,28 @@
+import React from 'react';
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'Select';
+
+const Ico = () => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    return <Icon name='Linear.ChevronDownSquare' />;
+};
+
+const fieldType = {
+    icon: Ico,
+    label: __('Select Field'),
+    component: 'FieldTypeSelect',
+    tooltip: __('Adds a select element'),
+    order: Reactium.Enums.priority.highest + 1,
+};
+
+Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/index.js
new file mode 100644
index 00000000..27e75111
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/index.js
@@ -0,0 +1,44 @@
+import op from 'object-path';
+import React from 'react';
+import Reactium, { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldTypeStatus
+ * -----------------------------------------------------------------------------
+ */
+export const Editor = ({ className, ...props }) => {
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormError, FormRegister } = useHookComponent('ReactiumUI');
+
+    return (
+        <ElementDialog {...props}>
+            <div className='p-xs-20'>
+                <div className={className}>
+                    <FormRegister>
+                        <select
+                            name={props.fieldId}
+                            defaultValue={props.defaultValue}
+                        >
+                            {Object.values(Reactium.Content.STATUS).map(
+                                ({ label, value }) => (
+                                    <option
+                                        value={value}
+                                        key={`status-${value}`}
+                                    >
+                                        {String(label).toLowerCase()}
+                                    </option>
+                                ),
+                            )}
+                        </select>
+                    </FormRegister>
+                    <FormError name='status' />
+                </div>
+            </div>
+        </ElementDialog>
+    );
+};
+
+Editor.defaultProps = {
+    className: 'form-group',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/reactium-hooks.js
new file mode 100644
index 00000000..9d09e892
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeStatus/reactium-hooks.js
@@ -0,0 +1,30 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin FieldTypeStatus
+ * -----------------------------------------------------------------------------
+ */
+
+import { Editor } from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    await Reactium.Plugin.register('FieldTypeStatus');
+    Reactium.Component.register('FieldTypeStatus', Editor);
+    Reactium.Content.Editor.register('Status', { component: Editor });
+
+    Reactium.Hook.registerSync(
+        'content-editor-elements',
+        ({ fields }) => {
+            fields.add({
+                index: 0,
+                region: 'sidebar',
+                fieldId: 'status',
+                fieldName: 'status',
+                fieldType: 'Status',
+                defaultValue: 'DRAFT',
+            });
+        },
+        Reactium.Enums.priority.highest,
+        'ADMIN-CONTENT-STATUS',
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/_reactium-style-organisms-fttext.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/_reactium-style-organisms-fttext.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/index.js
new file mode 100644
index 00000000..e1c67ad9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/index.js
@@ -0,0 +1,216 @@
+import op from 'object-path';
+import { Checkbox, Dialog } from 'reactium-ui';
+import React, { useEffect, useRef } from 'react';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: FieldTypeText
+ * -----------------------------------------------------------------------------
+ */
+export const FieldType = (props) => {
+    const { DragHandle } = props;
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='field-type-text'>
+                <div className='input-group'>
+                    <label className='default-value'>
+                        <span className='sr-only'>{__('Default Value')}</span>
+                        <input
+                            type='text'
+                            name='defaultValue'
+                            placeholder={__('Default Value')}
+                        />
+                    </label>
+                </div>
+                <div className='input-group'>
+                    <label className='placeholder'>
+                        <span className='sr-only'>{__('Placeholder')}</span>
+                        <input
+                            type='text'
+                            name='placeholder'
+                            placeholder={__('Placeholder')}
+                        />
+                    </label>
+                </div>
+                <div className='input-group'>
+                    <label className='pattern'>
+                        <span className='sr-only'>{__('Pattern')}</span>
+                        <input
+                            type='text'
+                            name='pattern'
+                            placeholder={__('Pattern')}
+                        />
+                    </label>
+                </div>
+                <div className='input-group'>
+                    <label className='min-max'>
+                        <span className='sr-only'>{__('Min Characters')}</span>
+                        <input
+                            type='number'
+                            name='min'
+                            placeholder={__('Min Characters')}
+                        />
+                    </label>
+                    <label className='min-max'>
+                        <span className='sr-only'>{__('Max Characters')}</span>
+                        <input
+                            type='number'
+                            name='max'
+                            placeholder={__('Max Characters')}
+                        />
+                    </label>
+                    <label className='min-max'>
+                        <span className='sr-only'>{__('Rows')}</span>
+                        <input
+                            type='number'
+                            name='rows'
+                            placeholder={__('Rows')}
+                        />
+                    </label>
+                    <div className='checks pl-xs-0 pl-md-20'>
+                        <Checkbox
+                            name='multiline'
+                            label={__('Multiline')}
+                            labelAlign='right'
+                            value={true}
+                        />
+
+                        <Checkbox
+                            name='required'
+                            label={__('Required')}
+                            labelAlign='right'
+                            value={true}
+                        />
+                    </div>
+                </div>
+            </div>
+        </FieldTypeDialog>
+    );
+};
+
+export const Editor = (props) => {
+    let {
+        defaultValue,
+        editor,
+        fieldName,
+        max,
+        min,
+        multiline,
+        pattern,
+        placeholder,
+        required,
+        rows = 2,
+    } = props;
+
+    defaultValue = [null, 'null'].includes(defaultValue) ? '' : defaultValue;
+
+    const inputRef = useRef();
+    const ElementDialog = useHookComponent('ElementDialog');
+    const { FormError, FormRegister } = useHookComponent('ReactiumUI');
+
+    const inputProps = {
+        defaultValue,
+        maxLength: max,
+        minLength: min,
+        name: fieldName,
+        pattern,
+        placeholder,
+        ref: inputRef,
+    };
+
+    if (multiline === true) op.set(inputProps, 'rows', rows);
+
+    const parseError = (str) => {
+        const replacers = {
+            '%fieldName': fieldName,
+            '%max': max,
+            '%min': min,
+        };
+
+        str = String(str);
+
+        Object.entries(replacers).forEach(([s, v]) => {
+            str = str.replace(new RegExp(s, 'gi'), v);
+        });
+
+        return str;
+    };
+
+    const validate = ({ values }) => {
+        let err;
+
+        const v = values[fieldName];
+
+        if (required === true && !v) {
+            err = parseError(__('%fieldName is required'));
+        }
+
+        if (v && min && !err) {
+            if (String(v).length < Number(min)) {
+                err = parseError(
+                    __('%fieldName minimum character count is %min'),
+                );
+            }
+        }
+
+        if (v && max && !err) {
+            if (String(v).length > Number(max)) {
+                err = parseError(
+                    __('%fieldName maximum character count is %max'),
+                );
+            }
+        }
+
+        if (err) editor.setError(fieldName, err);
+    };
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <div className='p-xs-20'>
+                    <div className='form-group'>
+                        <label>
+                            <span className='sr-only'>
+                                {placeholder || fieldName}
+                            </span>
+                            {multiline === true ? (
+                                <textarea {...inputProps} />
+                            ) : (
+                                <input {...inputProps} type='text' />
+                            )}
+                        </label>
+                        <FormError name={fieldName} />
+                    </div>
+                </div>
+            </ElementDialog>
+        </FormRegister>
+    );
+};
+
+export const QuickEditor = () => {
+    return 'Text QuickEditor';
+};
+
+export const Comparison = (props) => {
+    const field = op.get(props, 'field', {});
+    const value = op.get(props, 'value');
+    const { fieldName: title } = field;
+
+    return (
+        <Dialog header={{ title }} collapsible={false}>
+            <div className='p-xs-20' style={{ minHeight: '60px' }}>
+                {value ? value : null}
+            </div>
+        </Dialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/reactium-hooks.js
new file mode 100644
index 00000000..fb4a7b29
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/reactium-hooks.js
@@ -0,0 +1,25 @@
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+import { Editor, FieldType } from '.';
+
+const ID = 'Text';
+
+const fieldType = {
+    label: __('Text Field'),
+    icon: Icon.Feather.Type,
+    tooltip: __('Adds a text field to your content type.'),
+    component: 'FieldTypeText',
+    order: Reactium.Enums.priority.neutral - 1,
+};
+
+(() => {
+    Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+        Reactium.ContentType.FieldType.register(ID, fieldType);
+        Reactium.Component.register(fieldType.component, FieldType);
+        Reactium.Content.Editor.register(ID, { component: Editor });
+
+        // TODO: Fix Content Quickstart and Revisions
+        // Reactium.Content.QuickEditor.register(ID, { component: QuickEditor });
+        // Reactium.Content.Comparison.register(ID, { component: Comparison });
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/index.js
new file mode 100644
index 00000000..333d4719
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/index.js
@@ -0,0 +1,135 @@
+import cn from 'classnames';
+import React, { useCallback, useMemo, useState } from 'react';
+import { __, useEventEffect, useRefs } from '@atomic-reactor/reactium-core/sdk';
+import { Button, FormError, FormRegister, Icon } from 'reactium-ui';
+
+export const slugify = (str) =>
+    !str
+        ? ''
+        : String(str)
+              .replace(/[^a-z0-9]/gi, '-')
+              .toLowerCase();
+
+export const Editor = ({ editor }) => {
+    const refs = useRefs();
+
+    const className = cn('form-group');
+    const type = editor.get('params.type');
+
+    const [autoGen, setAuthGen] = useState(editor.isNew);
+    const [readOnly, setReadOnly] = useState(true);
+
+    const titleProps = useMemo(
+        () => ({
+            type: 'text',
+            name: 'title',
+            placeholder: String(__('%type Title')).replace('%type', type),
+        }),
+        [type],
+    );
+
+    const slugProps = useMemo(
+        () => ({
+            readOnly,
+            name: 'slug',
+            type: 'text',
+            placeholder: __('slug'),
+        }),
+        [readOnly],
+    );
+
+    const buttonStyle = useMemo(
+        () => ({
+            position: 'absolute',
+            right: 0,
+            bottom: 0,
+            height: 32,
+            width: 32,
+            padding: 0,
+        }),
+        [],
+    );
+
+    const genSlug = useCallback((e) => {
+        const elm = refs.get('slug');
+        if (!autoGen || !elm) return;
+        const { value } = e.target;
+        elm.value = slugify(value);
+    }, []);
+
+    const onBlur = useCallback(() => {
+        const elm = refs.get('slug');
+        if (!elm) return;
+        let currentSlug = slugify(elm.value);
+        elm.value = currentSlug;
+        setReadOnly(true);
+        if (String(currentSlug).length > 0 && autoGen !== false) {
+            setAuthGen(false);
+        }
+    }, []);
+
+    const onSlugChange = useCallback((e) => {
+        const value = e.target.value;
+        e.target.value = slugify(value);
+        const len = String(e.target.value).length;
+
+        if (len < 1) setAuthGen(true);
+        if (len > 0 && autoGen !== false) setAuthGen(false);
+    }, []);
+
+    const enable = useCallback(() => {
+        const elm = refs.get('slug');
+        if (!elm) return;
+        setReadOnly(false);
+        elm.select();
+    }, []);
+
+    const onValidate = useCallback((e) => {
+        const { slug, title } = e.values;
+
+        if (!title) e.target.setError('title', __('enter the title'));
+        if (!slug) e.target.setError('slug', __('enter a slug'));
+    }, []);
+
+    useEventEffect(editor.Form, {
+        validate: onValidate,
+    });
+
+    return (
+        <FormRegister>
+            <div className={className}>
+                <label>
+                    <span className='sr-only'>{titleProps.placeholder}</span>
+                    <input
+                        {...titleProps}
+                        className='input-lg'
+                        data-focus
+                        onChange={genSlug}
+                        onBlur={onBlur}
+                    />
+                </label>
+                <FormError name={titleProps.name} />
+                <label>
+                    <span className='sr-only'>{slugProps.placeholder}</span>
+                    <Button
+                        size='xs'
+                        color='clear'
+                        onClick={enable}
+                        style={buttonStyle}
+                    >
+                        <Icon name='Feather.Edit2' size={16} />
+                    </Button>
+                    <input
+                        {...slugProps}
+                        onBlur={onBlur}
+                        className='input-sm'
+                        onKeyUp={onSlugChange}
+                        style={{ paddingRight: 32 }}
+                        ref={(elm) => refs.set('slug', elm)}
+                    />
+                </label>
+                <FormError name={slugProps.name} />
+            </div>
+        </FormRegister>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/reactium-hooks.js
new file mode 100644
index 00000000..3a1efd23
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeTitle/reactium-hooks.js
@@ -0,0 +1,29 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin FieldTypeTitle
+ * -----------------------------------------------------------------------------
+ */
+
+import { Editor } from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+(async () => {
+    await Reactium.Plugin.register('FieldTypeTitle');
+    Reactium.Component.register('FieldTypeTitle', Editor);
+    Reactium.Content.Editor.register('Title', { component: Editor });
+
+    Reactium.Hook.registerSync(
+        'content-editor-elements',
+        ({ fields }) => {
+            fields.add({
+                index: 0,
+                region: 'default',
+                fieldId: 'title',
+                fieldName: 'title',
+                fieldType: 'Title',
+            });
+        },
+        Reactium.Enums.priority.highest,
+        'ADMIN-CONTENT-TITLE',
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Comparison.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Comparison.js
new file mode 100644
index 00000000..f6d62c52
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Comparison.js
@@ -0,0 +1,18 @@
+import React from 'react';
+import op from 'object-path';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+export default (props) => {
+    const field = op.get(props, 'field', {});
+    const value = op.get(props, 'value');
+    const { fieldName: title } = field;
+    const { Dialog } = useHookComponent('ReactiumUI');
+
+    return (
+        <Dialog header={{ title }} collapsible={false}>
+            <div className='p-xs-20' style={{ minHeight: '60px' }}>
+                {value ? value : null}
+            </div>
+        </Dialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/ListItem.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/ListItem.js
new file mode 100644
index 00000000..9472c3b0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/ListItem.js
@@ -0,0 +1,138 @@
+import cn from 'classnames';
+import op from 'object-path';
+import React, { useEffect, useRef, useState } from 'react';
+import Reactium, {
+    __,
+    useHookComponent,
+    useIsContainer,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const getToast = () => Reactium.State.Tools.Toast;
+
+const ListItem = (props) => {
+    const refs = useRef({}).current;
+    const { onChange, onDelete, onUnDelete, onKeyUp, placeholder, route } =
+        props;
+    const [deleted, setDeleted] = useState(op.get(props, 'delete', false));
+    const { Button, Carousel, Icon, Slide, Toast } =
+        useHookComponent('ReactiumUI');
+
+    const buttonStyle = {
+        width: 41,
+        height: 41,
+        padding: 0,
+    };
+
+    const enable = () => {
+        refs.carousel.jumpTo(1);
+        refs.input.removeAttribute('readOnly');
+        refs.input.focus();
+    };
+
+    const disable = ({ target }) => {
+        if (isContainer(target, refs.container)) return;
+
+        refs.carousel.jumpTo(deleted ? 2 : 0);
+        refs.input.setAttribute('readOnly', true);
+    };
+
+    const unDelete = () => {
+        enable();
+        setDeleted(false);
+        onUnDelete(props);
+    };
+
+    const remove = () => {
+        refs.input.setAttribute('readOnly', true);
+        refs.carousel.jumpTo(2);
+
+        const Toast = getToast();
+        Toast.show({
+            type: Toast.TYPE.INFO,
+            message: __('%route marked for deletion').replace(
+                /\%route/gi,
+                route,
+            ),
+            icon: 'Feather.Check',
+            autoClose: 3000,
+        });
+
+        setDeleted(true);
+        onDelete(props);
+    };
+
+    const isContainer = useIsContainer();
+
+    useEffect(() => {
+        if (!refs.container) return;
+
+        window.addEventListener('mousedown', disable);
+        window.addEventListener('touchstart', disable);
+
+        return () => {
+            window.removeEventListener('mousedown', disable);
+            window.removeEventListener('touchstart', disable);
+        };
+    }, [
+        refs.container,
+        op.get(refs, 'carousel.state.active'),
+        Object.values(props),
+    ]);
+
+    return (
+        <li
+            className={cn('input-group', { deleted })}
+            ref={(elm) => op.set(refs, 'container', elm)}
+        >
+            <input
+                type='text'
+                onKeyDown={onKeyUp}
+                onChange={(e) => onChange(e.target.value, props)}
+                placeholder={placeholder}
+                ref={(elm) => op.set(refs, 'input', elm)}
+                readOnly
+                value={route}
+            />
+            <div
+                className='edit-toggle'
+                ref={(elm) => op.set(refs, 'carousel-container', elm)}
+            >
+                <Carousel
+                    active={deleted ? 2 : 0}
+                    ref={(elm) => op.set(refs, 'carousel', elm)}
+                    animationSpeed={0.25}
+                >
+                    <Slide>
+                        <Button
+                            color={Button.ENUMS.COLOR.TERTIARY}
+                            onClick={enable}
+                            style={buttonStyle}
+                        >
+                            <Icon name='Feather.Edit2' size={18} />
+                        </Button>
+                    </Slide>
+                    <Slide>
+                        <Button
+                            color={Button.ENUMS.COLOR.DANGER}
+                            onClick={remove}
+                            style={buttonStyle}
+                        >
+                            <Icon name='Feather.X' size={20} />
+                        </Button>
+                    </Slide>
+                    <Slide>
+                        <Button
+                            color={Button.ENUMS.COLOR.DANGER}
+                            onClick={unDelete}
+                            style={buttonStyle}
+                        >
+                            <Icon name='Feather.RotateCcw' size={20} />
+                        </Button>
+                    </Slide>
+                </Carousel>
+            </div>
+        </li>
+    );
+};
+
+export { ListItem, ListItem as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/enums.js
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/index.js
new file mode 100644
index 00000000..0a5667a0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/Editor/index.js
@@ -0,0 +1,429 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import op from 'object-path';
+import slugify from 'slugify';
+import ListItem from './ListItem';
+import React, { useEffect, useRef, useState } from 'react';
+
+import Reactium, {
+    __,
+    useAsyncEffect,
+    useHookComponent,
+    useStatus,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const getToast = () => Reactium.State.Tools.Toast;
+
+export default (props) => {
+    // prettier-ignore
+    const { Alert, Button, Dropdown, Icon, Spinner, Toast } = useHookComponent('ReactiumUI');
+    const ElementDialog = useHookComponent('ElementDialog');
+
+    const {
+        editor,
+        fieldName,
+        placeholder,
+        required = false,
+        app = 'site',
+    } = props;
+
+    const prefix = props.prefix === 'null' ? null : props.prefix;
+
+    const refs = useRef({}).current;
+
+    const { errors } = editor;
+
+    const cx = Reactium.Utils.cxFactory('editor-urls');
+
+    // status
+    const [status, setStatus, isStatus] = useStatus();
+
+    // taxonomy
+    const [tax, setTax] = useState(prefix);
+    const [taxonomies, setTaxonomies] = useState([]);
+
+    // prettier-ignore
+    const [isError, setError] = useState(op.has(errors, [fieldName, 'message']));
+    const [URLS, setNewURLS] = useState({});
+    const [errorText, setNewErrorText] = useState(
+        op.get(errors, [fieldName, 'message']),
+    );
+
+    const setErrorText = (...newErrorText) => {
+        if (editor.unMounted()) return;
+        setNewErrorText(_.compact(Array.from(newErrorText)).join(' '));
+    };
+
+    const setURLS = (newURLS) => {
+        if (editor.unMounted()) return;
+        setNewURLS(newURLS);
+    };
+
+    const isRoute = (route) => {
+        const routes = Reactium.Routing.get();
+
+        return (
+            !!_.findWhere(routes, { path: route }) ||
+            !!_.findWhere(Object.values(URLS), { route })
+        );
+    };
+
+    const isSaved = () => {
+        return op.get(editor.value, 'objectId') !== undefined;
+    };
+
+    const hasTaxonomy = () => {
+        if (!editor) return;
+
+        if (prefix === 'null' || !prefix) return;
+
+        const selected = _.reject(
+            Reactium.Cache.get(`editor.taxonomy.${prefix}.selected`, []),
+            { deleted: true },
+        );
+        if (!selected) return;
+        if (selected.length < 1) return;
+
+        return true;
+    };
+
+    const taxonomy = () => {
+        if (!prefix) return;
+
+        // exit if no selected taxonomy
+        if (!taxonomies || taxonomies.length < 1) return;
+
+        return taxonomies.map(({ slug }) => ({
+            label: `/${slug}`,
+            value: slug,
+        }));
+    };
+
+    const addURL = (route) => {
+        route = route || refs.add.value;
+
+        if (!route) return;
+
+        if (tax !== prefix) {
+            route = `${tax}/${route}`;
+            route = String(route).replace(/\/\/+/g, '/');
+        }
+
+        if (isRoute(route)) {
+            const Toast = getToast();
+            Toast.show({
+                type: Toast.TYPE.ERROR,
+                message: __('%route already exists').replace(
+                    /\%route/gi,
+                    route,
+                ),
+                icon: 'Feather.AlertOctagon',
+                autoClose: 3000,
+            });
+            setError(true);
+            return;
+        }
+        const collection = op.get(editor.contentType, 'collection');
+        const type = op.get(editor.contentType, 'machineName');
+        const meta = {
+            app,
+            contentId: isSaved() ? editor.value.objectId : undefined,
+            collection,
+            type,
+        };
+
+        let newURLS = { ...URLS };
+        const objectId = Date.now();
+        op.set(newURLS, objectId, {
+            meta,
+            objectId,
+            pending: true,
+            route,
+            blueprint: collection,
+        });
+        setURLS(newURLS);
+        setError(null);
+
+        // Clear the form
+        refs.add.value = '';
+        refs.add.focus();
+    };
+
+    const deleteURL = ({ objectId }) => {
+        const newURLS = { ...URLS };
+        op.set(newURLS, [objectId, 'delete'], true);
+        op.set(newURLS, [objectId, 'pending'], true);
+        setURLS(newURLS);
+    };
+
+    const disabled = () => (prefix !== null ? !hasTaxonomy() : false);
+
+    const unDeleteURL = ({ objectId }) => {
+        const newURLS = { ...URLS };
+        op.del(newURLS, [objectId, 'delete']);
+        op.del(newURLS, [objectId, 'pending']);
+        setURLS(newURLS);
+    };
+
+    const updateURL = (route, obj) => {
+        const { objectId } = obj;
+        const newURLS = { ...URLS };
+        op.del(newURLS, [objectId, 'delete']);
+        op.set(newURLS, [objectId, 'route'], route);
+        op.set(newURLS, [objectId, 'pending'], true);
+        setURLS(newURLS);
+    };
+
+    const load = async () => {
+        if (editor.isNew()) {
+            setStatus(ENUMS.STATUS.READY);
+            setURLS({});
+            return;
+        } else if (isStatus(ENUMS.STATUS.READY)) {
+            setStatus(ENUMS.STATUS.PENDING);
+        }
+
+        if (!isStatus(ENUMS.STATUS.PENDING)) return;
+        setStatus(ENUMS.STATUS.FETCHING);
+
+        const results = await fetch();
+        setStatus(ENUMS.STATUS.COMPLETE);
+
+        if (editor.unMounted()) return;
+
+        setStatus(ENUMS.STATUS.READY);
+        setURLS(results);
+    };
+
+    const fetch = async () => {
+        const collection = op.get(editor.contentType, 'collection');
+        const contentId = op.get(editor.value, 'objectId');
+
+        const { results = {} } = await Reactium.Cloud.run('urls', {
+            collection,
+            contentId,
+        });
+        return results;
+    };
+
+    const normalizeURL = (url) => {
+        if (String(url).length < 1) return url;
+
+        url = url.split(' ').join('-');
+        url = String(url)
+            .toLowerCase()
+            .split('/')
+            .map((str) => slugify(str))
+            .join('/');
+
+        return String(url).substr(0, 1) === '/' ? url : `/${url}`;
+    };
+
+    const onEnter = (e) => {
+        if (e.which === 13) {
+            e.preventDefault();
+            addURL();
+        }
+    };
+
+    const onKeyUp = (e) => {
+        let url = normalizeURL(e.target.value);
+        e.target.value = url;
+    };
+
+    const applyURLS = ({ value }) => {
+        Object.entries(URLS).forEach(([key, URL]) => {
+            if (op.get(URL, 'user')) {
+                try {
+                    URL.user = URL.user.toPointer();
+                    URLS[key] = URL;
+                } catch (err) {}
+            }
+        });
+        op.set(value, String(fieldName).toLowerCase(), URLS);
+    };
+
+    const afterSave = async () => {
+        if (!isStatus(ENUMS.STATUS.FETCHING)) {
+            setStatus(ENUMS.STATUS.FETCHING);
+            const u = await fetch();
+            setStatus(ENUMS.STATUS.COMPLETE);
+            setURLS(u);
+        }
+        setError(false);
+        setErrorText(null);
+    };
+
+    const validate = ({ context }) => {
+        let urls = Object.values(URLS).filter(
+            (url) => op.get(url, 'delete') !== true,
+        );
+
+        if (urls.length > 0 || !required) return context;
+
+        const err = {
+            field: fieldName,
+            focus: refs.add,
+            message: __('URL is a required parameter'),
+            value: urls,
+        };
+
+        context.error[fieldName] = err;
+        context.valid = false;
+        setError(true);
+        setErrorText('Enter a url to this', editor.type);
+
+        return context;
+    };
+
+    const listeners = () => {
+        if (!editor) return;
+
+        editor.addEventListener('content-parse', applyURLS);
+        editor.addEventListener('save-success', afterSave);
+        editor.addEventListener('validate', validate);
+
+        return () => {
+            editor.removeEventListener('content-parse', applyURLS);
+            editor.removeEventListener('save-success', afterSave);
+            editor.removeEventListener('validate', validate);
+        };
+    };
+
+    useAsyncEffect(load, [op.get(editor, 'value.objectId')]);
+
+    // Editor listeners
+    useEffect(listeners);
+
+    // Taxonomy prefix dropdown
+    useEffect(() => {
+        if (!editor) return;
+        if (!hasTaxonomy()) return;
+
+        const tx = taxonomy();
+
+        if (!tx) {
+            if (tax !== prefix) {
+                setTax(prefix);
+            }
+            return;
+        }
+
+        if (tx.length === 1) {
+            if (tax === prefix) setTax(_.first(tx).value);
+        }
+    });
+
+    useEffect(() => {
+        if (!editor) return;
+        if (prefix && disabled()) {
+            setErrorText(
+                __('Select %prefix before adding a URL').replace(
+                    /\%prefix/gi,
+                    prefix,
+                ),
+            );
+        } else {
+            setErrorText();
+        }
+    }, [taxonomies, editor]);
+
+    useEffect(() => {
+        if (prefix === 'null' || !prefix) return;
+        return Reactium.Cache.subscribe(
+            `editor.taxonomy.${prefix}`,
+            ({ op }) => {
+                switch (op) {
+                    case 'set':
+                    case 'del':
+                        setTaxonomies(
+                            _.reject(
+                                Reactium.Cache.get(
+                                    `editor.taxonomy.${prefix}.selected`,
+                                ),
+                                { deleted: true },
+                            ),
+                        );
+                        break;
+                }
+            },
+        );
+    }, [prefix]);
+
+    return (
+        <ElementDialog {...props}>
+            <div className={cx()}>
+                {errorText && (
+                    <Alert
+                        color={Alert.ENUMS.COLOR.DANGER}
+                        icon={<Icon name='Feather.AlertOctagon' />}
+                    >
+                        {errorText}
+                    </Alert>
+                )}
+                {!disabled() && (
+                    <>
+                        <div className={cn('input-group', { error: isError })}>
+                            {hasTaxonomy() && (
+                                <Dropdown
+                                    size='md'
+                                    align='left'
+                                    data={taxonomy()}
+                                    onItemSelect={({ item }) =>
+                                        setTax(item.value)
+                                    }
+                                >
+                                    <button
+                                        type='button'
+                                        data-dropdown-element
+                                        className='dropdown-btn'
+                                    >
+                                        {`/${tax}`}
+                                    </button>
+                                </Dropdown>
+                            )}
+                            <input
+                                type='text'
+                                onKeyUp={onKeyUp}
+                                onKeyDown={onEnter}
+                                placeholder={placeholder}
+                                ref={(elm) => op.set(refs, 'add', elm)}
+                            />
+                            <Button
+                                className='add-btn'
+                                onClick={() => addURL()}
+                                color={Button.ENUMS.COLOR.TERTIARY}
+                                style={{
+                                    width: 41,
+                                    height: 41,
+                                    padding: 0,
+                                    flexShrink: 0,
+                                }}
+                            >
+                                <Icon name='Feather.Plus' size={22} />
+                            </Button>
+                        </div>
+                        <ul className={cx('list')}>
+                            {Object.values(URLS).map((url) => (
+                                <ListItem
+                                    {...url}
+                                    status={status}
+                                    onKeyUp={onKeyUp}
+                                    onChange={updateURL}
+                                    onDelete={deleteURL}
+                                    onUnDelete={unDeleteURL}
+                                    placeholder={placeholder}
+                                    key={`list-item-${url.objectId}`}
+                                />
+                            ))}
+                        </ul>
+                    </>
+                )}
+                {!isStatus([ENUMS.STATUS.READY, ENUMS.STATUS.COMPLETE]) && (
+                    <Spinner />
+                )}
+            </div>
+        </ElementDialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/FieldType.js
new file mode 100644
index 00000000..8e4c4447
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/FieldType.js
@@ -0,0 +1,99 @@
+import op from 'object-path';
+import React, { useState } from 'react';
+import Reactium, {
+    __,
+    useAsyncEffect,
+    useHookComponent,
+    useStatus,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export default (props) => {
+    const { DragHandle } = props;
+    const { Checkbox } = useHookComponent('ReactiumUI');
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog', DragHandle);
+
+    const [taxonomy, setTaxonomy] = useState([]);
+    const [, setStatus, isStatus] = useStatus('init');
+
+    const isTaxonomy = op.has(Reactium, 'Taxonomy.Type.list');
+
+    const load = async (mounted) => {
+        if (!isStatus('init')) return;
+
+        if (!isTaxonomy) {
+            setStatus('ready');
+            return;
+        }
+
+        setStatus('loading');
+
+        const { results } = await Reactium.Taxonomy.Type.list();
+        if (!mounted()) return;
+        const tax = Object.values(results);
+        setStatus('ready');
+        setTaxonomy(tax);
+    };
+
+    useAsyncEffect(load, []);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='field-type-url'>
+                {isStatus('ready') && (
+                    <>
+                        {isTaxonomy && (
+                            <div className='form-group'>
+                                <select name='prefix'>
+                                    <option value='null'>
+                                        {__('Taxonomy Prefix')}
+                                    </option>
+                                    {taxonomy.map(({ slug, name }) => (
+                                        <option
+                                            key={`tax-${slug}`}
+                                            value={slug}
+                                        >
+                                            {name}
+                                        </option>
+                                    ))}
+                                </select>
+                            </div>
+                        )}
+                        <div className='form-group'>
+                            <input
+                                type='text'
+                                name='app'
+                                placeholder={__(
+                                    'Target Application. default: site',
+                                )}
+                            />
+                        </div>
+                        <div className='flex middle'>
+                            <div className='flex-grow'>
+                                <div className='form-group'>
+                                    <label className='placeholder'>
+                                        <span className='sr-only'>
+                                            {__('Placeholder')}
+                                        </span>
+                                        <input
+                                            type='text'
+                                            name='placeholder'
+                                            placeholder={__('Placeholder')}
+                                        />
+                                    </label>
+                                </div>
+                            </div>
+                            <div className='required'>
+                                <Checkbox
+                                    name='required'
+                                    label={__('Required')}
+                                    labelAlign='right'
+                                    value={true}
+                                />
+                            </div>
+                        </div>
+                    </>
+                )}
+            </div>
+        </FieldTypeDialog>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/UrlSelect.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/UrlSelect.js
new file mode 100644
index 00000000..b0cf58ce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/UrlSelect.js
@@ -0,0 +1,297 @@
+import _ from 'underscore';
+import op from 'object-path';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+
+import Reactium, {
+    __,
+    useAsyncEffect,
+    useDerivedState,
+    useEventHandle,
+    useHookComponent,
+    useStatus,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ENUMS = {
+    DEFAULT: {
+        HEADER: {
+            title: 'Select URL',
+        },
+        HOST: _.compact([
+            window.location.protocol,
+            '//',
+            window.location.host,
+        ]).join(''),
+    },
+    STATUS: {
+        LOADING: 'loading',
+        PENDING: 'pending',
+        READY: 'ready',
+    },
+};
+
+let UrlSelect = (props, ref) => {
+    /**
+     * -------------------------------------------------------------------------
+     * References
+     * -------------------------------------------------------------------------
+     */
+    const containerRef = useRef();
+    /**
+     * -------------------------------------------------------------------------
+     * Components
+     * -------------------------------------------------------------------------
+     */
+    const { DataTable, Dialog, Button, Icon, Spinner } =
+        useHookComponent('ReactiumUI');
+
+    /**
+     * -------------------------------------------------------------------------
+     * State
+     * -------------------------------------------------------------------------
+     */
+    const [state, update] = useDerivedState({
+        columns: {
+            route: {
+                label: 'URL',
+                sortType: DataTable.ENUMS.SORT_TYPE.STRING,
+                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
+            },
+            EVENTS: {
+                label: null,
+                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
+                textAlign: DataTable.ENUMS.TEXT_ALIGN.RIGHT,
+                width: 90,
+            },
+        },
+        filter: op.get(props, 'filter'),
+        header: op.get(props, 'header', ENUMS.DEFAULT.HEADER),
+        height: op.get(props, 'height'),
+        search: op.get(props, 'search'),
+        width: op.get(props, 'width'),
+    });
+    const setState = (newState) => {
+        if (unMounted()) return;
+        update(newState);
+    };
+
+    /**
+     * -------------------------------------------------------------------------
+     * Status
+     * -------------------------------------------------------------------------
+     */
+    const [status, setStatus, isStatus] = useStatus(ENUMS.STATUS.PENDING);
+
+    /**
+     * -------------------------------------------------------------------------
+     * Functions
+     * -------------------------------------------------------------------------
+     */
+    const fetchHost = async (refresh = false) => {
+        let host = Reactium.Cache.get('UrlSelect.host');
+
+        if (!host || refresh === true) {
+            host = await Reactium.Setting.get('site.host', ENUMS.DEFAULT.HOST);
+        }
+
+        Reactium.Cache.set('UrlSelect.host', host, 120000);
+        return host;
+    };
+
+    const fetchURLS = async (refresh = false) => {
+        let urls = Reactium.Cache.get('UrlSelect.urls');
+
+        if (!urls || refresh === true) {
+            const { results = {} } = await Reactium.Cloud.run('urls');
+            urls = Object.values(results);
+        }
+
+        Reactium.Cache.set('UrlSelect.urls', urls, 120000);
+        return urls;
+    };
+
+    const initialize = async () => {
+        const unsub = () => {};
+
+        if (status !== ENUMS.STATUS.PENDING) return unsub;
+        setStatus(ENUMS.STATUS.LOADING);
+
+        let [host, urls] = await Promise.all([fetchHost(), fetchURLS()]);
+
+        urls = _.compact(
+            urls.map((item) => {
+                let { route } = item;
+
+                if (!op.get(item, 'meta.contentId')) return null;
+                route = String(route).startsWith('/')
+                    ? `${host}${route}`
+                    : route;
+                op.set(item, 'route', route);
+
+                return {
+                    ...item,
+                    route,
+                    EVENTS: (
+                        <Button
+                            color={Button.ENUMS.COLOR.TERTIARY}
+                            onClick={() => select(item)}
+                            outline
+                            style={{ padding: 0, width: 35, height: 35 }}
+                        >
+                            <Icon name='Feather.Check' size={16} />
+                        </Button>
+                    ),
+                };
+            }),
+        );
+
+        setStatus(ENUMS.STATUS.READY);
+        setState({ host, urls });
+        handle.dispatchEvent(new Event('ready'));
+
+        return unsub;
+    };
+
+    const _filter = () => {
+        let { filter, search, urls = [] } = state;
+
+        urls = typeof filter === 'function' ? urls.filter(filter) : urls;
+
+        if (!search) return urls;
+
+        const s = String(search).toLowerCase();
+        return urls.filter(({ route }) =>
+            String(route).toLowerCase().includes(s),
+        );
+    };
+
+    const select = (item) => {
+        op.set(handle, 'value', item);
+        handle.dispatchEvent(new Event('select'));
+        handle.dispatchEvent(new Event('change'));
+        setHandle(handle);
+    };
+
+    const unMounted = () => !containerRef.current;
+
+    /**
+     * -------------------------------------------------------------------------
+     * Handle
+     * -------------------------------------------------------------------------
+     */
+    const _handle = () => ({
+        select,
+        setState,
+        setStatus,
+        state,
+        status,
+        unMounted,
+        value: null,
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    const _onDismiss = () => handle.dispatchEvent(new Event('dismiss'));
+
+    const _onSearch = (e) => {
+        let search = String(e.target.value);
+        search = search.length < 1 ? null : search;
+        setState({ search });
+    };
+
+    useImperativeHandle(ref, () => handle);
+
+    useAsyncEffect(initialize);
+
+    const render = useCallback(() => {
+        const data = _filter();
+        const { columns, header, height, search } = state;
+
+        return (
+            <Dialog
+                ref={containerRef}
+                collapsible={false}
+                dismissable
+                onDismiss={() => _onDismiss()}
+                header={header || ENUMS.DEFAULT.HEADER}
+            >
+                <div style={{ width: '75vw' }}>
+                    {isStatus(ENUMS.STATUS.READY) && (
+                        <>
+                            <SearchBar
+                                onChange={(e) => _onSearch(e)}
+                                value={search}
+                            />
+                            <DataTable
+                                columns={columns}
+                                data={data}
+                                height={height}
+                                scrollable
+                                sortable
+                                sort={DataTable.ENUMS.SORT.ASC}
+                                sortBy='route'
+                            />
+                        </>
+                    )}
+                    {!isStatus(ENUMS.STATUS.READY) && (
+                        <div className='flex-center py-xs-80'>
+                            <Spinner />
+                        </div>
+                    )}
+                </div>
+            </Dialog>
+        );
+    });
+
+    return render();
+};
+
+UrlSelect = forwardRef(UrlSelect);
+
+UrlSelect.defaultProps = {
+    filter: () => true,
+    height: 'calc(100vh - 200px)',
+    search: null,
+    width: '75vw',
+};
+
+export { UrlSelect, UrlSelect as default };
+
+const SearchBar = ({ onChange = () => {}, value }) => {
+    const { Icon } = useHookComponent('ReactiumUI');
+
+    return (
+        <div className='ar-dialog-content'>
+            <div className='bg-white-dark p-xs-16'>
+                <div className='form-group' style={{ position: 'relative' }}>
+                    <input
+                        onChange={onChange}
+                        placeholder={__('search')}
+                        style={{
+                            borderRadius: 40,
+                            margin: 0,
+                            paddingLeft: 36,
+                        }}
+                        value={value || ''}
+                    />
+                    <Icon
+                        name='Feather.Search'
+                        size={18}
+                        style={{
+                            left: 20,
+                            pointerEvents: 'none',
+                            position: 'absolute',
+                            top: '50%',
+                            transform: 'translateX(-50%) translateY(-50%)',
+                        }}
+                    />
+                </div>
+            </div>
+        </div>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/_reactium-style-organisms-fturl.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/_reactium-style-organisms-fturl.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/index.js
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/reactium-hooks.js
new file mode 100644
index 00000000..c5e22df2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/reactium-hooks.js
@@ -0,0 +1,41 @@
+// import { Editor, FieldType, UrlSelect } from './index';
+// import Reactium, {
+//     __,
+//     useHookComponent,
+// } from '@atomic-reactor/reactium-core/sdk';
+
+// const ID = 'URLS';
+
+// const Ico = () => {
+//     const { Icon } = useHookComponent('ReactiumUI');
+//     return <Icon name='Feather.Link' />;
+// };
+
+// Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+//     const fieldType = {
+//         id: String(ID).toLowerCase(),
+//         label: __('URL Field'),
+//         icon: Ico,
+//         tooltip: __('Adds URLs to a content type.'),
+//         component: 'FieldTypeURL',
+//         order: Reactium.Enums.priority.highest,
+//         showHelpText: false,
+//         singular: true,
+//         defaultValues: {
+//             fieldName: __('URLS'),
+//             required: true,
+//         },
+//     };
+
+//     Reactium.Component.register('UrlSelect', UrlSelect);
+
+//     Reactium.Component.register(fieldType.component, FieldType);
+
+// TODO: Fix Content SDK
+// Reactium.Content.Editor.register(ID, { component: Editor });
+
+// TODO: Can't compare because this field type in the editor doesn't use the
+// Reactium.Content.Comparison.register(ID, { component: Comparison });
+
+//     Reactium.ContentType.FieldType.register(ID, fieldType);
+// });
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/_reactium-style-organisms-admin-cte-tools.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/_reactium-style-organisms-admin-cte-tools.scss
new file mode 100644
index 00000000..90fe7dad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/_reactium-style-organisms-admin-cte-tools.scss
@@ -0,0 +1,113 @@
+$size-types-tool: 45px;
+
+.types-tools {
+    display: flex;
+    flex-direction: column;
+    width: $size-types-tool;
+    background: $color-light;
+    z-index: map-get($z-indexes, EVENTS);
+    box-shadow: 0 0 2px 1px rgba($color-black, 0.05);
+
+    button {
+        padding: 0;
+        width: 100%;
+        min-height: $size-types-tool;
+
+        &:focus {
+            outline: 1px solid $color-grey;
+        }
+
+        &:hover {
+            background-color: lighten($color-grey-light, 1%);
+        }
+
+        svg {
+            flex-shrink: 0;
+            width: 20px;
+            height: 20px;
+        }
+    }
+
+    &-drag-handle {
+        position: relative;
+        background: $color-primary;
+        height: 21px;
+        opacity: .8;
+        padding: 0;
+        cursor: grab;
+
+        &:hover {
+            opacity: 1;
+        }
+
+        &:before, &:after {
+            display: block;
+            content: '';
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            width: 18px;
+
+            border-top: 1px solid white;
+        }
+        &:before {
+            height: 2px;
+            transform: translateX(-50%) translateY(-100%);
+        }
+        &:after {
+            transform: translateX(-50%) translateY(50%);
+        }
+    }
+}
+
+.add-region-icon {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 30px;
+    height: 20px;
+
+    &:before {
+        display: block;
+        content: ' ';
+        width: 20px;
+        height: 20px;
+        border: 1px dashed $color-grey;
+    }
+}
+
+.react-draggable-dragging {
+    .types-tools {
+        &-drag-handle {
+            cursor: grabbing;
+        }
+    }
+}
+
+.tools-paging {
+    display: flex;
+    align-items: center;
+    height: 20px;
+    background: $color-primary;
+
+    button {
+        &.tools-paging-left, &.tools-paging-right {
+            min-height: 10px;
+            height: 20px;
+            flex: 0 0 50%;
+            border-radius: 0;
+
+            svg {
+                width: 12px;
+                height: 12px;
+            }
+
+            &:focus, &:hover, &:active {
+                background: $color-white;
+                svg {
+                    fill: $color-primary;
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/index.js
new file mode 100644
index 00000000..0585797b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/index.js
@@ -0,0 +1,132 @@
+import React, { useState } from 'react';
+import Reactium, { __, useHandle } from '@atomic-reactor/reactium-core/sdk';
+import { Icon, Button } from 'reactium-ui';
+import op from 'object-path';
+import Draggable from 'react-draggable';
+import _ from 'underscore';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Tools
+ * -----------------------------------------------------------------------------
+ */
+const ToolsPage = ({ page = 1, numPages, setPage }) => {
+    return (
+        <div className='tools-paging'>
+            <Button
+                className='tools-paging-left'
+                disabled={page === 1}
+                onClick={() => setPage(page - 1)}
+            >
+                <span className='sr-only'>{__('Previous Tools Page')}</span>
+                <Icon name='Feather.ArrowLeft' />
+            </Button>
+            <Button
+                className='tools-paging-right'
+                disabled={page === numPages}
+                onClick={() => setPage(page + 1)}
+            >
+                <span className='sr-only'>{__('Next Tools Page')}</span>
+                <Icon name='Feather.ArrowRight' />
+            </Button>
+        </div>
+    );
+};
+
+const PAGE_LENGTH = 9;
+const Tools = () => {
+    const position = Reactium.Prefs.get('types-tools-drag-handle.position', {
+        x: 0,
+        y: 0,
+    });
+
+    const fieldTypes = Reactium.ContentType.FieldType.list;
+
+    Reactium.Hook.runSync('content-type-field-type-tools', fieldTypes);
+
+    const tools = _.chain(fieldTypes)
+        .sortBy('order')
+        .chunk(PAGE_LENGTH)
+        .value();
+
+    const [page, _setPage] = useState(
+        Reactium.Prefs.get('types-tools-drag-handle.page', 1),
+    );
+    const chunk = op.get(tools, page - 1, []);
+    const setPage = (page = 1) => {
+        page = Math.max(1, Math.min(chunk.length, page));
+        Reactium.Prefs.set('types-tools-drag-handle.page', page);
+        _setPage(page);
+    };
+
+    const onStop = (mouseEvent, { x, y }) => {
+        Reactium.Prefs.set('types-tools-drag-handle.position', { x, y });
+    };
+
+    const { addField, addRegion } = useHandle('CTE');
+
+    const renderTools = () => {
+        return chunk.map((type) => {
+            const tooltip = op.get(
+                type,
+                'tooltip',
+                __(
+                    'Click to add %type field type to your content type.',
+                ).replace(
+                    '%type',
+                    op.get(type, 'label', op.get(type, 'type').toLowerCase()),
+                ),
+            );
+
+            const Icon = op.get(type, 'icon');
+            return (
+                <Button
+                    color={Button.ENUMS.COLOR.CLEAR}
+                    key={op.get(type, 'type')}
+                    data-tooltip={tooltip}
+                    data-align='left'
+                    data-vertical-align='middle'
+                    onClick={() => addField(op.get(type, 'type'))}
+                >
+                    <span className={'sr-only'}>{tooltip}</span>
+                    <Icon />
+                </Button>
+            );
+        });
+    };
+
+    const addRegionLabel = __('Add Region');
+    return (
+        <Draggable
+            handle='.types-tools-drag-handle'
+            onStop={onStop}
+            defaultPosition={position}
+        >
+            <div className={'types-tools'}>
+                {tools.length > 1 && (
+                    <ToolsPage
+                        page={page}
+                        numPages={chunk.length}
+                        setPage={setPage}
+                    />
+                )}
+                <Button
+                    color={Button.ENUMS.COLOR.CLEAR}
+                    data-tooltip={addRegionLabel}
+                    data-align='left'
+                    data-vertical-align='middle'
+                    onClick={() => addRegion()}
+                >
+                    <span className={'sr-only'}>{addRegionLabel}</span>
+                    <div className='add-region-icon'></div>
+                </Button>
+                {renderTools()}
+                <div className='types-tools-drag-handle'></div>
+            </div>
+        </Draggable>
+    );
+};
+
+Tools.defaultProps = {};
+
+export default Tools;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/TypeName/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/_reactium-style-organisms-admin-cte-typename.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/TypeName/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/_reactium-style-organisms-admin-cte-typename.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/index.js
new file mode 100644
index 00000000..7951fa91
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/index.js
@@ -0,0 +1,87 @@
+import React, { useRef, useState } from 'react';
+import { Button, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+    useDispatcher,
+    useStateEffect,
+} from '@atomic-reactor/reactium-core/sdk';
+import op from 'object-path';
+import cn from 'classnames';
+import IconPicker from '../IconPicker';
+
+export default (props) => {
+    const id = op.get(props, 'id', 'new');
+    const error = op.get(props, 'error', false);
+    const isNew = id === 'new';
+    const deleteLabel = isNew ? __('Clear') : __('Delete');
+    const CTE = useHandle('CTE');
+    const ConfirmBox = useHookComponent('ConfirmBox');
+    const dispatch = useDispatcher({ props });
+    useStateEffect({
+        'content-type-deleted': (e) => {
+            Reactium.Routing.history.push('/admin/types');
+        },
+    });
+
+    const onConfirm = () => {
+        CTE.clearDelete();
+        Reactium.State.Tools.Modal.hide();
+    };
+
+    const showModal = () => {
+        console.log({ isNew, id });
+        if (isNew) {
+            Reactium.State.Tools.Modal.show(
+                <ConfirmBox
+                    message={__(
+                        'Are you sure? This is a destructive operation.',
+                    )}
+                    onCancel={() => Reactium.State.Tools.Modal.hide()}
+                    onConfirm={onConfirm}
+                    title={deleteLabel}
+                />,
+            );
+        } else {
+            dispatch('content-type-delete', {
+                details: CTE.get('contentType'),
+            });
+        }
+    };
+
+    const renderNameInput = () => {
+        return (
+            <div className={cn('input-group', { error })}>
+                <IconPicker />
+                <input
+                    type='text'
+                    autoComplete='off'
+                    name='type'
+                    placeholder={__('Content Type Name')}
+                />
+                <Button type='submit'>{__('Save')}</Button>
+            </div>
+        );
+    };
+
+    return (
+        <div className='type-name'>
+            <div className='type-name-header'>
+                <h1 className='h2'>{__('Content Type Editor')}</h1>
+            </div>
+            <div className='type-name-input'>
+                {renderNameInput()}
+                <Button
+                    data-tooltip={deleteLabel}
+                    style={{ width: 50, height: 50 }}
+                    color={Button.ENUMS.COLOR.DANGER}
+                    onClick={showModal}
+                >
+                    <span className='sr-only'>{deleteLabel}</span>
+                    <Icon.Feather.X />
+                </Button>
+            </div>
+        </div>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/_reactium-style-base-admin-cte.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/_reactium-style-base-admin-cte.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/enums.js
new file mode 100644
index 00000000..2ad1474c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/enums.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+
+const Enums = {
+    DEFAULT_ICON: 'Linear.Papers',
+    ZONE: (region = 1) => `types-fields-${region}`,
+    TYPES: {},
+    TEXT: {
+        ADD: __('New Content Type'),
+        EDIT: __('Edit'),
+        TITLE: __('Content Types'),
+    },
+    REQUIRED_REGIONS: {
+        default: {
+            id: 'default',
+            label: __('Default'),
+            slug: 'default',
+            order: Reactium.Enums.priority.highest,
+        },
+        sidebar: {
+            id: 'sidebar',
+            label: __('Sidebar'),
+            slug: 'sidebar',
+            order: Reactium.Enums.priority.lowest,
+        },
+    },
+};
+
+export default Enums;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/index.js
new file mode 100644
index 00000000..c084f5b0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/index.js
@@ -0,0 +1,951 @@
+import React, { useRef, useEffect } from 'react';
+import Enums from './enums';
+import TypeName from './TypeName';
+import Fields from './Fields';
+import Tools from './Tools';
+import cn from 'classnames';
+import op from 'object-path';
+import { DragDropContext } from 'react-beautiful-dnd';
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import CTCapabilityEditor from './Capabilities';
+import Reactium, {
+    __,
+    useAsyncEffect,
+    useHookComponent,
+    useDispatcher,
+    useEventEffect,
+} from '@atomic-reactor/reactium-core/sdk';
+
+import { useRouteParams, useAttachHandle } from 'reactium-admin-core';
+
+const REQUIRED_REGIONS = op.get(Enums, 'REQUIRED_REGIONS', {});
+
+const getToast = () => Reactium.State.Tools.Toast;
+
+export const slugify = (name) => {
+    return !name
+        ? ''
+        : require('slugify')(name, {
+              replacement: '_', // replace spaces with replacement
+              remove: /[^A-Za-z0-9_\s]/g, // regex to remove characters
+              lower: true, // result in lower case
+          });
+};
+
+const Loading = () => {
+    const style = {
+        position: 'absolute',
+        top: 0,
+        left: 0,
+        width: '100%',
+        height: 'calc(100vh - 60px)',
+    };
+    const { Spinner } = useHookComponent('ReactiumUI');
+    return (
+        <div style={{ position: 'relative' }}>
+            <div style={style} className='flex center middle'>
+                <Spinner />
+            </div>
+        </div>
+    );
+};
+
+const EVENT_TYPES = {
+    CLEAR: 'CLEAR',
+    LOAD: 'LOAD',
+    LOADED: 'LOADED',
+    TYPE_CHANGE: 'TYPE_CHANGE',
+    ADD_FIELD: 'ADD_FIELD',
+    REMOVE_FIELD: 'REMOVE_FIELD',
+    MOVE_FIELD: 'MOVE_FIELD',
+    SET_ACTIVE: 'SET_ACTIVE',
+    ADD_REGION: 'ADD_REGION',
+    LABEL_REGION: 'LABEL_REGION',
+    REMOVE_REGION: 'REMOVE_REGION',
+    ERROR: 'ERROR',
+    CLEAR_ERROR: 'CLEAR_ERROR',
+};
+
+const eventHandlers = (e) => {
+    const state = e.target;
+    const EVENT_TYPE = e.type;
+    const detail = e.detail;
+    const ui = state.get('contentType');
+    const fields = { ...op.get(ui, 'fields', {}) };
+    const regions = { ...op.get(ui, 'regions', {}) };
+    const regionFields = { ...op.get(ui, 'regionFields', {}) };
+
+    switch (EVENT_TYPE) {
+        case EVENT_TYPES.CLEAR: {
+            return {
+                regions: { ...REQUIRED_REGIONS },
+                fields: {},
+                meta: {},
+                active: 'default',
+                loading: true,
+                error: {},
+            };
+        }
+        case EVENT_TYPES.ADD_FIELD: {
+            const { region, field } = detail;
+            const { fieldId } = field;
+
+            return {
+                ...ui,
+                fields: {
+                    ...fields,
+                    [fieldId]: field,
+                },
+                regionFields: {
+                    ...regionFields,
+                    [region]: [...op.get(regionFields, [region], []), fieldId],
+                },
+            };
+        }
+
+        case EVENT_TYPES.REMOVE_FIELD: {
+            const { fieldId } = detail;
+            const field = op.get(fields, [fieldId], {});
+            const region = op.get(field, 'region');
+
+            op.set(
+                regionFields,
+                region,
+                op
+                    .get(regionFields, [region], [])
+                    .filter((id) => id !== fieldId),
+            );
+            op.del(fields, [fieldId]);
+
+            return {
+                ...ui,
+                fields,
+                regionFields,
+            };
+        }
+
+        case EVENT_TYPES.LOAD: {
+            const newFields = { ...detail.fields };
+            const regionFields = _.groupBy(Object.values(newFields), 'region');
+            Object.entries(regionFields).forEach(([region, fields]) => {
+                op.set(
+                    regionFields,
+                    region,
+                    fields.map(({ fieldId }) => fieldId),
+                );
+            });
+
+            return {
+                ...detail,
+                regions: {
+                    ...detail.regions,
+                    ...REQUIRED_REGIONS,
+                },
+                fields: newFields,
+                regionFields,
+            };
+        }
+
+        case EVENT_TYPES.LOADED: {
+            return {
+                ...ui,
+                loading: false,
+            };
+        }
+
+        case EVENT_TYPES.TYPE_CHANGE: {
+            return {
+                ...ui,
+                ...detail,
+                meta: {
+                    ...ui.meta,
+                    ...detail.meta,
+                },
+            };
+        }
+
+        case EVENT_TYPES.ADD_REGION: {
+            const { id } = detail.region;
+            return {
+                ...ui,
+                regions: {
+                    ...regions,
+                    [id]: detail.region,
+                },
+                active: id,
+            };
+        }
+
+        case EVENT_TYPES.ADD_REGION: {
+            const id = detail.region;
+            op.del(regions, [id]);
+            const rfs = op.get(regionFields, [id], []);
+            op.set(
+                regionFields,
+                'default',
+                _.compact(op.get(regionFields, 'default', []).concat(rfs)),
+            );
+
+            return {
+                ...ui,
+                regions,
+                regionFields,
+                active: id === ui.active ? 'default' : ui.active,
+            };
+        }
+
+        case EVENT_TYPES.SET_ACTIVE: {
+            return {
+                ...ui,
+                active: detail.region,
+            };
+        }
+
+        case EVENT_TYPES.LABEL_REGION: {
+            const { id, label } = detail;
+
+            return {
+                ...ui,
+                regions: {
+                    ...regions,
+                    [id]: {
+                        ...regions[id],
+                        label,
+                        slug: slugify(label),
+                    },
+                },
+            };
+        }
+
+        case EVENT_TYPES.MOVE_FIELD: {
+            const { fieldId, source, destination } = detail;
+            const rf = { ...regionFields };
+
+            rf[source.region].splice(source.index, 1);
+            if (op.has(rf, [destination.region]))
+                rf[destination.region].splice(destination.index, 0, fieldId);
+            else rf[destination.region] = [fieldId];
+
+            return {
+                ...ui,
+                regionFields: { ...rf },
+            };
+        }
+
+        case EVENT_TYPES.ERROR: {
+            return {
+                ...ui,
+                error: detail.error,
+            };
+        }
+
+        case EVENT_TYPES.CLEAR_ERROR: {
+            return {
+                ...ui,
+                error: {},
+            };
+        }
+    }
+
+    return ui;
+};
+
+/**
+ * Wrapper for naive eventHandlers, which assumes all the fields are behaving.
+ * This reducer does not, and sanitize out any wonky field definition data,
+ * such as undefined or missing field type.
+ * Also cleans up regions of any field ids that don't exist.
+ */
+const sanitizedEventHandlers = (e) => {
+    const ui = eventHandlers(e);
+    const fieldTypes = _.indexBy(
+        Object.values(Reactium.ContentType.FieldType.list),
+        'type',
+    );
+
+    Reactium.Hook.runSync('content-type-field-type-list', fieldTypes);
+
+    // Clean up fields
+    const fields = op.get(ui, 'fields', {});
+    Object.entries(fields).forEach(([fieldId, field]) => {
+        // remove fields missing essential information or of unknown type
+        if (
+            !op.has(field, 'fieldType') ||
+            !op.has(fieldTypes, field.fieldType)
+        ) {
+            op.del(fields, fieldId);
+        }
+    });
+
+    // Clean up fields in regions
+    const regionFields = op.get(ui, 'regionFields', {});
+    Object.entries(regionFields).forEach(([region, ids = []]) => {
+        // remove any fields that don't exist from region
+        op.set(
+            regionFields,
+            region,
+            ids.filter((id) => id in fields),
+        );
+    });
+
+    return ui;
+};
+
+const debug = false;
+const useMapEventHandlers = (state) => {
+    const handler = sanitizedEventHandlers;
+    const eventHandlers = Object.values(EVENT_TYPES).reduce(
+        (eventHandlers, EVENT_TYPE) => {
+            eventHandlers[EVENT_TYPE] = (e) => {
+                debug &&
+                    console.log(
+                        `Event EVENT_TYPE ${EVENT_TYPE}`,
+                        e.ACTION,
+                        `Rerender: ${e.doUpdate}`,
+                    );
+                const contentType = handler(e);
+                state.set(
+                    { ...state.get(), contentType },
+                    undefined,
+                    e.doUpdate,
+                );
+            };
+
+            return eventHandlers;
+        },
+        {},
+    );
+
+    useEventEffect(state, eventHandlers, [state]);
+
+    const dispatcher = useDispatcher({ state, props: {} });
+    return (EVENT_TYPE, detail = {}, doUpdate = true) => {
+        dispatcher(EVENT_TYPE, {
+            detail: { EVENT_TYPE, ...detail },
+            doUpdate,
+        });
+    };
+};
+
+const noop = () => {};
+const getStubRef = () => ({ getValue: () => ({}), setValue: noop });
+const ContentType = (props) => {
+    const params = useRouteParams();
+    const id = op.get(params, 'id', 'new');
+
+    const CTE = useAttachHandle('CTE');
+    CTE.extend('getValue', CTE.get); // legacy handle
+    const dispatch = useMapEventHandlers(CTE);
+    const isLoading = () => CTE.get('contentType.loading', true);
+
+    const load = async (id) => {
+        try {
+            const contentType = await Reactium.ContentType.retrieve(id);
+            const label = op.get(contentType, 'meta.label', contentType.type);
+            op.set(contentType, 'type', label);
+            dispatch(EVENT_TYPES.LOAD, contentType, false);
+        } catch (error) {
+            const Toast = getToast();
+            Toast.show({
+                type: Toast.TYPE.ERROR,
+                message: __('Error loading content type.'),
+                icon: <Icon.Feather.AlertOctagon />,
+                autoClose: 1000,
+            });
+            console.error(error);
+            Reactium.Routing.history.push('/admin/type/new');
+        }
+    };
+
+    useAsyncEffect(async () => {
+        dispatch(EVENT_TYPES.CLEAR, {}, false);
+        if (id !== 'new') {
+            await load(id);
+        }
+
+        dispatch(EVENT_TYPES.LOADED);
+    }, [id]);
+
+    const {
+        Form,
+        FormContext, // New Form Stuff
+        EventForm,
+        Icon,
+    } = useHookComponent('ReactiumUI');
+
+    const fieldTypes = _.indexBy(
+        Object.values(Reactium.ContentType.FieldType.list),
+        'type',
+    );
+
+    Reactium.Hook.runSync('content-type-field-type-list', fieldTypes);
+
+    const _empty = () => ({
+        type: undefined,
+        regions: REQUIRED_REGIONS,
+        fields: {},
+        meta: {},
+    });
+
+    const parentFormRef = useRef();
+    const formsRef = useRef({});
+
+    const types = CTE.get('types');
+    CTE.extend('setTypes', (types) => CTE.set('types', types));
+    const setTypes = CTE.setTypes;
+
+    // Generic State Update to cause rerender
+    const updated = CTE.get('contentType.updated');
+    CTE.extend('update', (types) => CTE.set('contentType.updated', new Date()));
+    const update = CTE.update;
+
+    useAsyncEffect(
+        async (mounted) => {
+            const results = await Reactium.ContentType.types();
+            if (mounted()) setTypes(results);
+
+            return Reactium.Cache.subscribe('content-types', async ({ op }) => {
+                if (['set', 'del'].includes(op) && mounted() === true) {
+                    update(Date.now());
+                }
+            });
+        },
+        [updated],
+    );
+
+    useEffect(() => {
+        if (isLoading()) return;
+
+        Reactium.Hotkeys.register('content-type-save', {
+            callback: saveHotkey,
+            key: 'mod+s',
+            order: Reactium.Enums.priority.lowest,
+            scope: document,
+        });
+
+        return () => {
+            Reactium.Hotkeys.unregister('content-type-save');
+        };
+    }, [isLoading()]);
+
+    if (isLoading()) return <Loading />;
+
+    const setRegionLabel = (regionId) => (label) => {
+        dispatch(EVENT_TYPES.LABEL_REGION, {
+            id: regionId,
+            label,
+        });
+    };
+
+    const getRegions = () => CTE.get('contentType.regions', {});
+
+    const getOrderedRegions = () => {
+        const regions = getRegions();
+        return _.sortBy(
+            Object.values(regions).map((region) => {
+                // TODO: Make these rearrangable
+                const order = op.get(
+                    REQUIRED_REGIONS,
+                    [region.id, 'order'],
+                    op.get(region, 'order', 0),
+                );
+                return {
+                    ...region,
+                    order,
+                };
+            }),
+            'order',
+        );
+    };
+
+    const validator = async (context) => {
+        let { valid, error, value } = context;
+        dispatch(EVENT_TYPES.CLEAR_ERROR);
+
+        const responseContext = await Reactium.Hook.run(
+            'content-type-validate-fields',
+        );
+
+        // type labels that are currently used
+        const taken = types
+            .filter(({ uuid }) => uuid !== id)
+            .reduce((takenLabels, { type, meta }) => {
+                return _.compact(
+                    _.uniq(
+                        takenLabels.concat([
+                            slugify(type),
+                            slugify(op.get(meta, 'label', '')),
+                        ]),
+                    ),
+                );
+            }, []);
+
+        const typeString = op.get(context, 'value.type', '') || '';
+        const typeSlug = slugify(typeString);
+
+        const nameTakenError = __('Type name taken.');
+        if (taken.includes(typeSlug)) {
+            valid = false;
+            op.set(error, 'type.field', 'type');
+            op.set(error, 'type.message', nameTakenError);
+
+            const Toast = getToast();
+            Toast.show({
+                type: Toast.TYPE.ERROR,
+                message: nameTakenError,
+                icon: <Icon.Feather.AlertOctagon />,
+                autoClose: 1000,
+            });
+        }
+
+        const fieldSlugs = {};
+        let savedFields = {};
+        if (CTE.get('contentType.fields')) {
+            savedFields = CTE.get('contentType.fields');
+            savedFields = _.indexBy(
+                Object.values(savedFields).map((field) => ({
+                    id: field.id,
+                    fieldSlug: slugify(field.fieldName),
+                    fieldType: field.fieldType,
+                })),
+                'fieldSlug',
+            );
+        }
+
+        for (const [fieldId, uiFT] of Object.entries(
+            CTE.get('contentType.fields', {}),
+        )) {
+            const ref = getFormRef(fieldId);
+            if (!fieldId || !ref || !ref.setValue) continue;
+
+            const ftContext = op.get(responseContext, fieldId, {
+                valid: true,
+                error: {},
+                value: ref.getValue(),
+            });
+
+            // collect results of fields hook
+            if (!ftContext.valid) {
+                error = {
+                    ...error,
+                    [fieldId]: ftContext.error,
+                };
+
+                ref.setState({
+                    error: ftContext.error,
+                    status: EventForm.ENUMS.ERROR,
+                });
+                valid = false;
+            }
+
+            // Check for duplicate fieldName
+            const fieldName = op.get(ftContext, 'value.fieldName');
+            const fieldType = op.get(uiFT, 'fieldType');
+            const slug = slugify(fieldName).toLowerCase();
+            if (fieldName && slug in fieldSlugs) {
+                const errorMessage = __(
+                    'Duplicate field name %fieldName',
+                ).replace('%fieldName', fieldName);
+                const Toast = getToast();
+                Toast.show({
+                    type: Toast.TYPE.ERROR,
+                    message: errorMessage,
+                    icon: <Icon.Feather.AlertOctagon />,
+                    autoClose: 1000,
+                });
+
+                op.set(error, [fieldId, 'fieldName', 'field'], 'fieldName');
+                op.set(error, [fieldId, 'fieldName', 'message'], errorMessage);
+                valid = false;
+
+                ref.setState({
+                    error: op.get(error, [fieldId, 'fieldName']),
+                    status: EventForm.ENUMS.ERROR,
+                });
+            }
+            fieldSlugs[slug] = fieldId;
+
+            // check to make sure UI version of field type matches saved
+            if (
+                slug &&
+                op.has(savedFields, slug) &&
+                fieldType !== op.get(savedFields, [slug, 'fieldType'])
+            ) {
+                const errorMessage = __(
+                    'Field name %fieldName type exists.',
+                ).replace('%fieldName', fieldName);
+                const Toast = getToast();
+                Toast.show({
+                    type: Toast.TYPE.ERROR,
+                    message: errorMessage,
+                    icon: <Icon.Feather.AlertOctagon />,
+                    autoClose: 2000,
+                });
+
+                op.set(error, [fieldId, 'fieldName', 'field'], 'fieldName');
+                op.set(error, [fieldId, 'fieldName', 'message'], errorMessage);
+                valid = false;
+
+                ref.setState({
+                    error: op.get(error, [fieldId, 'fieldName']),
+                    status: EventForm.ENUMS.ERROR,
+                });
+            }
+        }
+
+        const regionSlugs = Object.values(getRegions()).reduce(
+            (slugs, { id, slug }) => ({ ...slugs, [slug]: id }),
+            {},
+        );
+
+        if (
+            _.compact(Object.keys(regionSlugs)).length !==
+            Object.values(getRegions()).length
+        )
+            valid = false;
+
+        return { error, valid, value };
+    };
+
+    const onError = async (e) => {
+        dispatch(EVENT_TYPES.ERROR, {
+            error: e.error,
+        });
+    };
+
+    const onDragEnd = (result) => {
+        const fieldId = op.get(result, 'draggableId');
+        const sourceIndex = op.get(result, 'source.index');
+        const sourceRegion = op.get(result, 'source.droppableId');
+        const destinationIndex = op.get(result, 'destination.index');
+        const destinationRegion = op.get(result, 'destination.droppableId');
+
+        if (
+            sourceIndex === destinationIndex &&
+            sourceRegion === destinationRegion
+        )
+            return;
+
+        dispatch(EVENT_TYPES.MOVE_FIELD, {
+            fieldId,
+            source: {
+                region: sourceRegion,
+                index: sourceIndex,
+            },
+            destination: {
+                region: destinationRegion,
+                index: destinationIndex,
+            },
+        });
+    };
+
+    const onTypeChange = async (e) => {
+        const value = e.value;
+        dispatch(EVENT_TYPES.TYPE_CHANGE, value, false);
+    };
+
+    const onTypeSubmit = async () => {
+        const value = parentFormRef.current.getValue();
+        op.set(value, 'regions', getRegions());
+
+        op.set(value, 'fields', {});
+        getOrderedRegions().forEach(({ id: region }) => {
+            CTE.get(['contentType', 'regionFields', region], []).forEach(
+                (fieldId) => {
+                    const def = CTE.get(['contentType', 'fields', fieldId], {});
+                    const ref = getFormRef(fieldId);
+                    if (ref) {
+                        const fieldValue = ref.getValue();
+                        const fieldName = op.get(fieldValue, 'fieldName');
+                        const fieldType = op.get(def, 'fieldType');
+
+                        const params = {
+                            fieldValue,
+                            fieldId,
+                            fieldName,
+                            fieldType,
+                            region,
+                        };
+
+                        Reactium.Hook.runSync('content-type-form-save', params);
+
+                        op.set(value, ['fields', fieldId], {
+                            ...params.fieldValue,
+                            fieldId: params.fieldId,
+                            fieldName: params.fieldName,
+                            fieldType: params.fieldType,
+                            region: params.region,
+                            saved: true,
+                        });
+                    }
+                },
+            );
+        });
+
+        try {
+            const contentType = await Reactium.ContentType.save(id, value);
+            const label = op.get(contentType, 'meta.label', contentType.type);
+            op.set(contentType, 'type', label);
+            dispatch(EVENT_TYPES.LOAD, contentType, false);
+
+            // savedRef.current = _cloneContentType(contentType);
+            // ctRef.current = _cloneContentType(contentType);
+            dispatch(EVENT_TYPES.LOADED);
+
+            const Toast = getToast();
+            Toast.show({
+                type: Toast.TYPE.SUCCESS,
+                message: __('Content type saved'),
+                icon: <Icon.Feather.Check />,
+                autoClose: 1000,
+            });
+
+            if (id === 'new' && contentType.uuid) {
+                Reactium.Routing.history.push(
+                    `/admin/type/${contentType.uuid}`,
+                );
+            }
+        } catch (error) {
+            const Toast = getToast();
+            Toast.show({
+                type: Toast.TYPE.ERROR,
+                message: __('Error saving content type.'),
+                icon: <Icon.Feather.AlertOctagon />,
+                autoClose: 1000,
+            });
+            console.error(error);
+        }
+    };
+
+    const renderCapabilityEditor = () => {
+        if (isNew() || isLoading()) return null;
+
+        const { collection, machineName } = CTE.get('contentType', {});
+        const label = CTE.get('contentType.meta.label');
+        return (
+            <CTCapabilityEditor
+                key={`ct-caps-${id}`}
+                type={label}
+                collection={collection}
+                machineName={machineName}
+                ctRef={CTE.get('contentType', {})}
+            />
+        );
+    };
+
+    //
+    // Handle Interface
+    //
+    const addRegion = () => {
+        const id = uuid();
+        const region = { id, label: id, slug: id, order: 0 };
+
+        dispatch(EVENT_TYPES.ADD_REGION, {
+            region,
+        });
+    };
+
+    const removeRegion = (region) => {
+        if (Object.keys(REQUIRED_REGIONS).includes(region)) return;
+
+        dispatch(EVENT_TYPES.REMOVE_REGION, {
+            region,
+        });
+    };
+
+    const setActiveRegion = (region) => {
+        if (region !== CTE.get('contentType.active', 'default')) {
+            dispatch(EVENT_TYPES.SET_ACTIVE, {
+                region,
+            });
+        }
+    };
+
+    const addField = (ft) => {
+        const fields = CTE.get('contentType.fields', {});
+        const fieldsByType = _.groupBy(Object.values(fields), 'fieldType');
+        const activeRegion = CTE.get('contentType.active', 'default');
+        const fieldType = fieldTypes[ft];
+        const region = op.get(fieldType, 'defaultRegion', activeRegion);
+
+        // Only 1 per singular type
+        if (op.get(fieldType, 'singular', false) && op.has(fieldsByType, ft))
+            return;
+
+        const fieldId = op.get(fieldType, 'id', uuid());
+
+        const field = {
+            fieldId,
+            saved: false,
+            fieldType: ft,
+            region,
+            ...op.has(fieldType, 'defaultValues', {}),
+        };
+
+        dispatch(EVENT_TYPES.ADD_FIELD, {
+            region,
+            field,
+        });
+    };
+
+    const removeField = (fieldId) => {
+        dispatch(EVENT_TYPES.REMOVE_FIELD, {
+            fieldId,
+        });
+    };
+
+    const _fieldChangeHandler = (id) => (e) => {
+        if (isLoading()) return;
+
+        if (
+            e.value &&
+            !_.isEqual(e.value, CTE.get(['contentType', 'fields', id]))
+        ) {
+            const fieldPath = ['contentType', 'fields', id];
+            const shouldUpdate = false;
+            CTE.set(
+                fieldPath,
+                { ...CTE.get(fieldPath, {}), ...e.value },
+                shouldUpdate,
+            );
+        }
+    };
+
+    const _subFormHandlers = (id, ref) => {
+        const handlers = {
+            change: _fieldChangeHandler(id),
+        };
+
+        Object.entries(handlers).forEach(([type, cb]) => {
+            ref().addEventListener(type, cb);
+        });
+
+        return () => {
+            Object.entries(handlers).forEach(([type, cb]) => {
+                op.get(ref(), 'removeEventListener', () => {})(type, cb);
+            });
+        };
+    };
+
+    const addFormRef = (id, cb) => {
+        const form = cb();
+        const existing = op.get(formsRef.current, id);
+
+        if (existing) return;
+
+        formsRef.current[id] = {
+            ref: cb,
+            unsub: _subFormHandlers(id, cb),
+        };
+    };
+
+    const removeFormRef = (id) => {
+        if (op.has(formsRef.current, [id])) {
+            const subForm = formsRef.current[id];
+            subForm.unsub();
+        }
+        op.del(formsRef.current, [id]);
+    };
+
+    const getFormRef = (id) =>
+        op.get(formsRef.current, [id, 'ref'], getStubRef)();
+
+    const getFormErrors = (id) => CTE.get(['contentType', 'error', id]);
+
+    const clearDelete = async () => {
+        dispatch(EVENT_TYPES.CLEAR);
+
+        if (id !== 'new') {
+            try {
+                await Reactium.ContentType.delete(id);
+                const Toast = getToast();
+                Toast.show({
+                    type: Toast.TYPE.SUCCESS,
+                    message: __('Content type deleted.'),
+                    icon: <Icon.Feather.Check />,
+                    autoClose: 1000,
+                });
+
+                Reactium.Routing.history.push('/admin/type/new');
+            } catch (error) {
+                const Toast = getToast();
+
+                Toast.show({
+                    type: Toast.TYPE.ERROR,
+                    message: __('Error deleting content type.'),
+                    icon: <Icon.Feather.AlertOctagon />,
+                    autoClose: 1000,
+                });
+                console.error(error);
+                return;
+            }
+        }
+    };
+
+    const isNew = () => id === 'new';
+
+    const isActiveRegion = (region) =>
+        CTE.get('contentType.active', 'default') === region;
+
+    const saveHotkey = (e) => {
+        if (e) e.preventDefault();
+        parentFormRef.current.submit();
+    };
+
+    const _handle = () => ({
+        addRegion,
+        removeRegion,
+        addField,
+        removeField,
+        addFormRef,
+        removeFormRef,
+        getFormRef,
+        getFormErrors,
+        clearDelete,
+        isActiveRegion,
+        isNew,
+        setActiveRegion,
+        dispatch,
+    });
+
+    Object.entries(_handle()).forEach(([key, value]) => CTE.extend(key, value));
+    CTE.EVENT_TYPES = EVENT_TYPES;
+
+    return (
+        <div
+            className={cn(
+                'type-editor',
+                slugify(`type-editor ${id}`).toLowerCase(),
+            )}
+        >
+            <EventForm
+                ref={parentFormRef}
+                onSubmit={onTypeSubmit}
+                onChange={onTypeChange}
+                onError={onError}
+                value={CTE.get('contentType', {})}
+                className={'webform webform-content-type'}
+                required={['type']}
+                validator={validator}
+            >
+                <TypeName id={id} error={CTE.get('contentType.error.type')} />
+            </EventForm>
+
+            <DragDropContext onDragEnd={onDragEnd}>
+                {getOrderedRegions().map((region) => (
+                    <Fields
+                        key={region.id}
+                        onRegionLabelChange={setRegionLabel(region.id)}
+                        onRemoveRegion={() => removeRegion(region.id)}
+                        region={region}
+                    />
+                ))}
+            </DragDropContext>
+            <Tools enums={Enums} />
+            {renderCapabilityEditor()}
+        </div>
+    );
+};
+
+export default ContentType;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/reactium-hooks.js
new file mode 100644
index 00000000..dd1c879a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/reactium-hooks.js
@@ -0,0 +1,99 @@
+import Reactium, { ReactiumSyncState } from '@atomic-reactor/reactium-core/sdk';
+import ContentTypeEditor from './index';
+import Enums from './enums';
+import FieldType from './FieldType';
+import FieldTypeDialog from './FieldType/Dialog';
+import Breadcrumbs from './Breadcrumbs';
+import HeaderWidget from './HeaderWidget';
+
+const CTE = new ReactiumSyncState({
+    ct: {
+        fields: {},
+        regions: Enums.REQUIRED_REGIONS,
+        requiredRegions: Enums.REQUIRED_REGIONS,
+        regionFields: {},
+        active: 'default',
+        error: {},
+        updated: new Date(),
+        types: [],
+    },
+});
+
+const noMerge = () => true;
+Reactium.Hook.registerSync(
+    'use-sync-state-merge-conditions',
+    (noMergeConditions, instance) => {
+        if (instance === CTE) {
+            if (noMergeConditions[noMergeConditions.length - 1] !== noMerge) {
+                noMergeConditions.push(noMerge);
+            }
+        }
+    },
+);
+
+Reactium.Handle.register('CTE', { current: CTE });
+
+const registerPlugin = async () => {
+    // Add ContentType SDK
+    Reactium.ContentType = require('./sdk').default;
+
+    await Reactium.Plugin.register(
+        'ContentType',
+        Reactium.Enums.priority.highest,
+    );
+
+    // Register FieldType Base Components
+    Reactium.Component.register('FieldType', FieldType);
+    Reactium.Component.register('FieldTypeDialog', FieldTypeDialog);
+
+    const permitted = await Reactium.Capability.check(['type-ui.view']);
+
+    if (permitted) {
+        await Reactium.Hook.run('content-type-enums', Enums);
+
+        Reactium.Zone.addComponent({
+            component: Breadcrumbs,
+            order: -1000,
+            zone: ['admin-header'],
+        });
+
+        Reactium.Zone.addComponent({
+            id: 'ADMIN-CONTENT-TYPE-ADD',
+            component: HeaderWidget,
+            order: 2,
+            zone: ['admin-logo'],
+        });
+
+        Reactium.Zone.addComponent({
+            component: ContentTypeEditor,
+            zone: ['admin-content-type-editor'],
+            order: 0,
+            Enums,
+        });
+    }
+};
+registerPlugin();
+
+Reactium.Hook.register('blueprints', async (Blueprint) => {
+    [
+        {
+            ID: 'ContentType',
+            description: 'Content type editor',
+            sections: {
+                sidebar: {
+                    zones: ['admin-sidebar'],
+                    meta: {},
+                },
+                main: {
+                    zones: ['admin-header', 'admin-content-type-editor'],
+                    meta: {},
+                },
+            },
+            meta: {
+                admin: true,
+                builtIn: true,
+                namespace: 'admin-page',
+            },
+        },
+    ].forEach((bp) => Blueprint.register(bp.ID, bp));
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/sdk/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/sdk/index.js
new file mode 100644
index 00000000..315573c1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeEditor/sdk/index.js
@@ -0,0 +1,146 @@
+import Reactium, { Registry } from '@atomic-reactor/reactium-core/sdk';
+import op from 'object-path';
+import _ from 'underscore';
+
+Reactium.Enums.cache.types = 10000;
+
+const ContentType = { FieldType: {} };
+
+/**
+ * @api {Function} ContentType.types() ContentType.types()
+ * @apiDescription Get list of content types with the type name, uuid, and label from Actinium
+ * @apiName ContentType.types
+ * @apiGroup Reactium.ContentType
+ * @apiParam {Boolean} refresh Retrieve a fresh list of ContentType objects.
+ * @apiParam {Boolean} schema Include the Collection schema object.
+ */
+ContentType.types = async (params = {}, debug) => {
+    const refresh = op.get(params, 'refresh');
+
+    if (debug) console.log('ContentType.types', refresh, debug);
+
+    let request = refresh !== true && Reactium.Cache.get('content-types');
+
+    if (request) return request;
+
+    request = Reactium.Cloud.run('types', params).then((response) =>
+        op.get(response, 'types', []),
+    );
+
+    Reactium.Cache.set(
+        'content-types',
+        request,
+        Reactium.Enums.cache.types,
+        () => {
+            if (debug) console.log('content-types cache delete');
+        },
+    );
+
+    return request;
+};
+
+/**
+ * @api {Function} ContentType.save(id,type) ContentType.save()
+ * @apiDescription Save a content type definition.
+ * @apiParam {String} id 'new' or the uuid of the type.
+ * @apiParam {Object} type object containing the `type` label, `fields` object, `regions` object, and `meta` object for a content type.
+ * @apiParam type {String} type unique label of content type. On initial save, this will be used to generate the machineName and label of the type. On subsequent
+ updates, only the label will be modified, and the machineName will remain the same.
+ * @apiParam type {Object} regions indexed by region id, this object contains multiple region objects,
+ each with the same id ('default' by default), a label, and a slug. Each field
+ in the `fields` has a `region` property with the id of the region to which it belongs.
+ * @apiParam type {Object} fields indexed by fieldId (an uuid), this object contains 1 or more objects that describe
+ the configuration for one "field type" in the content type. The only required properties in each object are
+ `fieldId`, which matches the index, a string `fieldType` which identifies a supported
+ Actinium field type, a string `region`id ("default" region id by default), and
+ a unique `fieldName` which will ultimately be the name of the field in the content schema.
+ * @apiParam type {Object} [meta] largely free-form metadata object associated with this content type.
+ Actinium will use this to store the current label of the type.
+ * @apiName ContentType.save
+ * @apiGroup Reactium.ContentType
+ */
+ContentType.save = async (id, type = {}) => {
+    if (id === 'new') return Reactium.Cloud.run('type-create', type);
+    const response = await Reactium.Cloud.run('type-update', {
+        uuid: id,
+        ...type,
+    });
+
+    Reactium.Cache.del('content-types');
+    Reactium.Cache.del('contentTypeRetrieve');
+    return response;
+};
+
+/**
+ * @api {Function} ContentType.retrieve(options) ContentType.retrieve()
+ * @apiDescription Retrieve configuration for one content type. You must provide either the uuid or the machineName.
+ * @apiParam {Mixed} options string uuid or Object containing
+ * @apiParam (options) {String} [uuid] UUID of content type
+ * @apiParam (options) {String} [machineName] the machine name of the existing content type
+ * @apiParam (options) {String} [namespace] optional namespace. Will be used to derive the uuid from the machine name if
+ the uuid is not known. By default, the current APIs content namespace will be used, and this will not be needed.
+ * @apiName ContentType.retrieve
+ * @apiGroup Reactium.ContentType
+ */
+ContentType.retrieve = async (options) => {
+    let requestOptions = {};
+
+    if (typeof options === 'string') requestOptions.uuid = options;
+    if (typeof options === 'object') requestOptions = options;
+
+    const { refresh } = requestOptions;
+    const cacheKey = `contentTypeRetrieve.${JSON.stringify(
+        _.sortBy(Object.entries(requestOptions), ([k]) => k),
+    )}`;
+
+    if (refresh === true) Reactium.Cache.del(cacheKey);
+
+    const cached = Reactium.Cache.get(cacheKey);
+    if (cached) return cached;
+
+    const contentType = await Reactium.Cloud.run(
+        'type-retrieve',
+        requestOptions,
+    );
+
+    const response = {
+        ...contentType,
+        fields: op.get(contentType, 'fields', {}),
+    };
+
+    Reactium.Cache.set(cacheKey, response, 30000);
+
+    return response;
+};
+
+/**
+ * @api {Function} ContentType.delete(options) ContentType.delete()
+ * @apiDescription Delete a content type configuration. Note that this will not delete the content or its schema,
+ only the content type configuration.
+ * @apiParam {Mixed} options string uuid or Object containing
+ * @apiParam (options) {String} [uuid] UUID of content type
+ * @apiParam (options) {String} [machineName] the machine name of the existing content type
+ * @apiParam (options) {String} [namespace] optional namespace. Will be used to derive the uuid from the machine name if
+ the uuid is not known. By default, the current APIs content namespace will be used, and this will not be needed.
+ * @apiName ContentType.delete
+ * @apiGroup Reactium.ContentType
+ */
+ContentType.delete = async (options) => {
+    let requestOptions = {};
+
+    if (typeof options === 'string') requestOptions.uuid = options;
+    if (typeof options === 'object') requestOptions = options;
+
+    const response = await Reactium.Cloud.run('type-delete', requestOptions);
+
+    Reactium.Cache.del('content-types');
+    Reactium.Cache.del('contentTypeRetrieve');
+    return response;
+};
+
+ContentType.FieldType = new Registry('FieldType', 'type');
+
+ContentType.ListComponents = new Registry('ContentTypeList', 'id');
+ContentType.ListComponents.mode = Registry.MODES.CLEAN;
+
+export default ContentType;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/IconImg.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/Empty/IconImg.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/IconImg.js
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/Empty/IconImg.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/Empty/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/Empty/index.js
new file mode 100644
index 00000000..070a29ed
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/Empty/index.js
@@ -0,0 +1,35 @@
+import React from 'react';
+import IconImg from './IconImg';
+import { Button } from 'reactium-ui';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Empty
+ * -----------------------------------------------------------------------------
+ */
+const Empty = () => (
+    <div className='admin-content-type-list-empty'>
+        <IconImg />
+        <Button
+            appearance={Button.ENUMS.APPEARANCE.PILL}
+            className='hide-xs show-md'
+            size={Button.ENUMS.SIZE.LG}
+            type={Button.ENUMS.TYPE.LINK}
+            to='/admin/type/new'
+        >
+            {__('New Content Type')}
+        </Button>
+        <Button
+            appearance={Button.ENUMS.APPEARANCE.PILL}
+            className='hide-md'
+            size={Button.ENUMS.SIZE.MD}
+            type={Button.ENUMS.TYPE.LINK}
+            to='/admin/type/new'
+        >
+            {__('New Content Type')}
+        </Button>
+    </div>
+);
+
+export { Empty, Empty as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/_reactium-style-organisms-admin-cte-list.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/_reactium-style-organisms-admin-cte-list.scss
new file mode 100644
index 00000000..0429c18d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/_reactium-style-organisms-admin-cte-list.scss
@@ -0,0 +1,349 @@
+$height-admin-content-type-list: calc(100vh - #{$height-admin-header}) !default;
+
+.admin-content-list,
+.admin-content-type-list {
+    padding-top: $height-admin-header;
+    min-height: 100vh;
+    max-width: 100vw;
+    overflow-x: hidden;
+    width: 100%;
+
+    &-spinner {
+        height: 100vh;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    &-empty {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+
+        svg {
+            width: 80vw;
+            height: 80vw;
+            min-width: 280px;
+            min-height: 280px;
+
+            @include breakpoint(sm) {
+                width: 25vw;
+                height: 25vw;
+                min-width: 350px;
+                min-height: 350px;
+            }
+
+            @include breakpoint(md) {
+                width: 30vw;
+                height: 30vw;
+            }
+        }
+    }
+
+    &-content {
+        display: block;
+        padding: $padding-admin-content-zone;
+    }
+
+    &-item {
+        position: relative;
+        color: $color-gray;
+        margin-bottom: $padding-admin-content-zone;
+        box-shadow: $shadow-image;
+        width: 100%;
+        display: flex;
+        align-items: center;
+        background-color: $color-text-light;
+        border-radius: 4px;
+        padding-right: 20px;
+
+        a:hover {
+            text-decoration: none;
+        }
+
+        &-title {
+            margin-bottom: 4px;
+            transition: all 0.25s ease-in-out;
+        }
+
+        &-info {
+            font-size: 16px;
+            flex-grow: 1;
+            padding: 20px;
+            font-weight: 500;
+
+            .small {
+                font-weight: normal;
+                color: $color-gray !important;
+            }
+        }
+
+        &-actions {
+            flex-shrink: 0;
+            display: flex;
+            align-items: center;
+            justify-content: flex-end;
+
+            &-child {
+                margin-left: 6px;
+            }
+        }
+
+        .ico {
+            width: 48px;
+            height: 71px;
+            overflow: hidden;
+            position: relative;
+
+            svg {
+                top: 50%;
+                left: calc(50% + 10px);
+                position: absolute;
+                transform: translate(-50%, -50%);
+                transition: all 0.25s ease-in-out;
+
+                &:last-child {
+                    left: 100px;
+                    opacity: 0;
+                }
+            }
+        }
+
+        .delete,
+        .delete-visible {
+            height: 71px;
+            padding-left: 20px;
+
+            button {
+                color: $color-gray;
+                background-color: $color-light;
+                border: none;
+                height: 100%;
+
+                svg {
+                    fill: currentColor;
+                    flex-shrink: 0;
+                }
+
+                &:hover {
+                    cursor: pointer;
+                }
+            }
+        }
+
+        .delete {
+            display: none;
+
+            button {
+                color: $color-danger;
+            }
+        }
+
+        &:hover {
+            text-decoration: none;
+            color: $color-primary;
+
+            .delete {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+            }
+
+            .ico {
+                svg {
+                    &:first-child {
+                        left: -100px;
+                        opacity: 0;
+                    }
+
+                    &:last-child {
+                        left: calc(50% + 10px);
+                        opacity: 1;
+                    }
+                }
+            }
+        }
+    }
+
+    &-icon {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 20px;
+
+        svg {
+            width: 28px;
+            height: 28px;
+            flex-shrink: 0;
+            fill: currentColor;
+        }
+    }
+
+    &-edit {
+        position: absolute;
+        top: 8px;
+        right: 8px;
+    }
+
+    &-label {
+        font-weight: 500;
+    }
+
+    &-search {
+        position: relative;
+        color: $color-gray;
+        margin-bottom: 28px;
+
+        input {
+            padding-left: 40px;
+            padding-right: 62px;
+            margin: 0;
+        }
+
+        .ar-icon.search {
+            top: 50%;
+            left: 12px;
+            position: absolute;
+            transform: translateY(-50%);
+        }
+
+        &-actions {
+            display: flex;
+            align-items: center;
+            position: absolute;
+            top: 50%;
+            right: 1px;
+            margin: 0;
+            padding: 4px 5px 4px 6px;
+            height: calc(100% - 4px);
+            transform: translateY(-50%);
+            background-color: $color-white;
+            flex-wrap: nowrap;
+            z-index: 11;
+
+            button.go {
+                width: 30px;
+                height: 100%;
+                padding: 0;
+            }
+
+            button.filter {
+                height: 100%;
+                margin-left: 4px;
+                padding: 0 3px 0 8px;
+
+                .ar-icon {
+                    margin-left: 4px;
+                }
+            }
+        }
+
+        &-filters {
+            height: 100%;
+            display: flex;
+            align-items: stretch;
+            position: relative;
+
+            &-menu {
+                display: none;
+                position: absolute;
+                right: -6px;
+                bottom: -5px;
+                font-size: 10px;
+                padding-top: 1px;
+                margin-top: 4px;
+                line-height: 14px;
+                transform: translateY(100%);
+                background-color: $color-white;
+                border: 1px solid $input-color-border;
+                box-shadow: 0 1px 4px 4px rgba($color-black, 0.05);
+
+                &.visible {
+                    display: block;
+                }
+
+                &-item {
+                    width: 100%;
+                    border: none;
+                    display: flex;
+                    flex-wrap: nowrap;
+                    padding: 8px 20px 8px 12px;
+                    white-space: nowrap;
+                    align-items: center;
+                    font-size: inherit;
+                    background-color: $color-white;
+
+                    &:not(:last-child) {
+                        border-bottom: 1px solid
+                            lighten($input-color-border, 15%);
+                    }
+
+                    &:hover,
+                    &:focus,
+                    &:active,
+                    &.active {
+                        background-color: darken($color-white, 1%);
+                    }
+
+                    .ico {
+                        width: 14px;
+                        height: 14px;
+                        padding: 0;
+                        margin-right: 8px;
+                        border-radius: 100%;
+                        border: 2px solid $color-white;
+
+                        &.btn-danger {
+                            svg {
+                                width: 8px;
+                                height: 8px;
+                                margin-right: 0;
+                                margin-left: 0;
+                            }
+                        }
+                    }
+
+                    .ar-icon {
+                        margin-left: 2px;
+                        margin-right: 10px;
+                    }
+                }
+
+                &-group {
+                    &:not(:last-child) {
+                        border-bottom: 2px solid
+                            lighten($input-color-border, 15%);
+                    }
+                }
+            }
+        }
+
+        button.clear {
+            position: absolute;
+            top: 50%;
+            left: 12px;
+            width: 20px;
+            height: 20px;
+            padding: 0;
+            margin: 0;
+            transform: translateY(-50%);
+            z-index: 10;
+        }
+    }
+}
+
+.spin {
+    animation: spin 1s infinite linear;
+}
+
+@keyframes spin {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/enums.js
new file mode 100644
index 00000000..d7dd4ed0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/enums.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+
+const Enums = {
+    DEFAULT_ICON: 'Linear.Papers',
+    TEXT: {
+        ADD: __('New Content Type'),
+        EDIT: __('Edit'),
+        TITLE: __('Content Types'),
+    },
+};
+
+export default Enums;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/index.js
new file mode 100644
index 00000000..60169bd5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/index.js
@@ -0,0 +1,100 @@
+import cn from 'classnames';
+import Empty from './Empty';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { ListItem } from '../ListItem';
+import { Spinner } from 'reactium-ui';
+import React, { useCallback, useState } from 'react';
+import Reactium, {
+    __,
+    cxFactory,
+    useHookComponent,
+    useStateEffect,
+    Zone,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ContentTypeList = ({ className, namespace, title }) => {
+    const Helmet = useHookComponent('Helmet');
+
+    const [types] = useHookComponent('useContentTypes')(false);
+
+    const [search, setSearch] = useState('');
+
+    const filter = useCallback(() => {
+        const matcher = (item) => {
+            let match = String(op.get(item, 'meta.label', ''))
+                .toLowerCase()
+                .startsWith(search);
+
+            match = !match
+                ? String(op.get(item, 'machineName', ''))
+                      .toLowerCase()
+                      .startsWith(search)
+                : match;
+            return match;
+        };
+
+        return types.filter(matcher);
+    }, [types, search]);
+
+    const onSearch = useCallback((e) => {
+        setSearch(String(e.value || '').toLowerCase());
+    }, []);
+
+    const isEmpty = useCallback(
+        () => Boolean(types !== false && types.length < 1),
+        [types],
+    );
+
+    const cx = cxFactory(namespace);
+
+    useStateEffect(
+        {
+            [cx('search')]: onSearch,
+        },
+        [],
+    );
+
+    return types === false ? (
+        <Spinner className={cx('spinner')} />
+    ) : (
+        <div className={cn({ [cx()]: true, [className]: !!className })}>
+            <Helmet>
+                <title>{title}</title>
+            </Helmet>
+            <div className={cx('content')}>
+                {isEmpty() ? (
+                    <Empty />
+                ) : (
+                    <>
+                        <Zone zone={cx('top')} data-zone-ns={cx()} />
+                        {filter().map((item) => (
+                            <ListItem
+                                cx={cx}
+                                {...item}
+                                key={item.uuid}
+                                path='/admin/type'
+                                data-zone-ns={cx()}
+                                registry={Reactium.ContentType.ListComponents}
+                            />
+                        ))}
+                        <Zone zone={cx('bottom')} data-zone-ns={cx()} />
+                    </>
+                )}
+            </div>
+        </div>
+    );
+};
+
+ContentTypeList.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    title: PropTypes.string,
+};
+
+ContentTypeList.defaultProps = {
+    namespace: 'admin-content-type-list',
+    title: __('Content Types'),
+};
+
+export default ContentTypeList;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/reactium-hooks.js
new file mode 100644
index 00000000..16de5a66
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/reactium-hooks.js
@@ -0,0 +1,126 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin TypeList
+ * -----------------------------------------------------------------------------
+ */
+
+import {
+    ListItemAdd,
+    ListItemCount,
+    ListItemDelete,
+    ListItemIcon,
+    ListItemMeta,
+    ListItemTitle,
+} from '../ListItem';
+
+import Component from './index';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { useContentTypes } from './useContentTypes';
+import { SearchBar } from '../SearchBar';
+
+(async () => {
+    await Reactium.Plugin.register(
+        'ContentTypeList',
+        Reactium.Enums.priority.lowest,
+    );
+
+    Reactium.Component.register('useContentTypes', useContentTypes);
+
+    Reactium.Hook.register('blueprints', async (Blueprint) => {
+        const bp = {
+            ID: 'ContentTypes',
+            description: 'Content types',
+            sections: {
+                sidebar: {
+                    zones: ['admin-sidebar'],
+                    meta: {},
+                },
+                main: {
+                    zones: ['admin-header', 'admin-content-types'],
+                    meta: {},
+                },
+            },
+            meta: {
+                admin: true,
+                builtIn: true,
+                namespace: 'admin-page',
+            },
+        };
+
+        Blueprint.register(bp.ID, bp);
+    });
+
+    Reactium.Zone.addComponent({
+        order: -1000,
+        component: Component,
+        zone: ['admin-content-types'],
+        id: 'ADMIN-CONTENT-TYPE-LIST',
+    });
+
+    Reactium.Zone.addComponent({
+        order: 100,
+        component: SearchBar,
+        zone: ['admin-content-type-list-top'],
+        id: 'ADMIN-CONTENT-TYPE-LIST-SEARCH',
+    });
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-ICON',
+        {
+            order: 50,
+            Component: ListItemIcon,
+            id: 'ADMIN-CONTENT-TYPE-LIST-ICON',
+            zones: ['admin-content-type-list-item-left'],
+        },
+    );
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-TITLE',
+        {
+            order: 60,
+            Component: ListItemTitle,
+            id: 'ADMIN-CONTENT-TYPE-LIST-TITLE',
+            zones: ['admin-content-type-list-item-center'],
+        },
+    );
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-META',
+        {
+            order: 65,
+            Component: ListItemMeta,
+            id: 'ADMIN-CONTENT-TYPE-LIST-META',
+            zones: ['admin-content-type-list-item-center'],
+        },
+    );
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-DELETE',
+        {
+            order: 70,
+            Component: ListItemDelete,
+            id: 'ADMIN-CONTENT-TYPE-LIST-DELETE',
+            zones: ['admin-content-type-list-item-right'],
+        },
+    );
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-COUNT',
+        {
+            order: 75,
+            Component: ListItemCount,
+            id: 'ADMIN-CONTENT-TYPE-LIST-COUNT',
+            zones: ['admin-content-type-list-item-right'],
+        },
+    );
+
+    Reactium.ContentType.ListComponents.register(
+        'ADMIN-CONTENT-TYPE-LIST-ADD',
+        {
+            order: 85,
+            Component: ListItemAdd,
+            id: 'ADMIN-CONTENT-TYPE-LIST-ADD',
+            zones: ['admin-content-type-list-item-right'],
+        },
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/useContentTypes.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/useContentTypes.js
new file mode 100644
index 00000000..1743513b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Content/TypeList/useContentTypes.js
@@ -0,0 +1,28 @@
+import { useState } from 'react';
+import Reactium, { useAsyncEffect } from '@atomic-reactor/reactium-core/sdk';
+
+export const useContentTypes = (defaultValue = []) => {
+    const [updated, update] = useState();
+    const [types, setTypes] = useState(defaultValue);
+
+    const fetch = (params = {}) => Reactium.ContentType.types(params);
+
+    const refresh = () => fetch({ refresh: true });
+
+    useAsyncEffect(
+        async (mounted) => {
+            const results = await fetch();
+
+            if (mounted()) setTypes(results);
+
+            return Reactium.Cache.subscribe('content-types', async ({ op }) => {
+                if (['set', 'del'].includes(op) && mounted() === true) {
+                    update(Date.now());
+                }
+            });
+        },
+        [updated],
+    );
+
+    return [types, refresh];
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/Breadcrumbs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/Breadcrumbs/index.js
index fc696e27..4731e918 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/Breadcrumbs/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/Breadcrumbs/index.js
@@ -1,11 +1,12 @@
 import React from 'react';
-import { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
+import { useDoesMatchPath } from 'reactium-admin-core';
 
-export default ({ route }) => {
-    const path = route.path;
-    const paths = ['', '/', '/admin'];
-    const visible = paths.includes(path);
+export default () => {
+    const visible = useDoesMatchPath((path) =>
+        ['', '/', '/admin'].includes(path),
+    );
 
     return (
         visible && (
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/SidebarWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/SidebarWidget/index.js
index 5b912c95..dc80527f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/SidebarWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/SidebarWidget/index.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 import MenuItem from 'reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem';
 
 export default () => (
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/_style.scss
deleted file mode 100644
index b029cd4f..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/_style.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.style {
-
-}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/index.js
index acf8dde8..7668440d 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/index.js
@@ -3,7 +3,10 @@ import cn from 'classnames';
 import op from 'object-path';
 import PropTypes from 'prop-types';
 
-import Reactium, { useDerivedState, useEventHandle } from 'reactium-core/sdk';
+import Reactium, {
+    useDerivedState,
+    useEventHandle,
+} from '@atomic-reactor/reactium-core/sdk';
 
 import React, {
     forwardRef,
@@ -46,7 +49,7 @@ let WelcomeWidget = (
         status: ENUMS.STATUS.PENDING,
     });
 
-    const setState = newState => {
+    const setState = (newState) => {
         if (unMounted()) return;
         update(newState);
     };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/reactium-hooks.js
index 17e2907c..8405febc 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/WelcomeWidget/reactium-hooks.js
@@ -5,7 +5,7 @@
  */
 
 import Widget from './index';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const WIDGET_ID = 'DASHBOARD_WELCOME_WIDGET';
 Reactium.Plugin.register(WIDGET_ID).then(() => {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/_reactium-style-organisms-admin-dashboard.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/_reactium-style-organisms-admin-dashboard.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/actions.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/actions.js
deleted file mode 100644
index 1d0f2750..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/actions.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import domain from './domain';
-import op from 'object-path';
-import deps from 'dependencies';
-
-export default {
-    load: () => async (dispatch, getState) => {
-        const getCurrent = () => op.get(getState(), [domain.name], {});
-
-        const setState = (id, update = {}) =>
-            dispatch({
-                type: deps().actionTypes.DOMAIN_UPDATE,
-                domain: domain.name,
-                update: {
-                    [id]: {
-                        ...op.get(getCurrent(), id, {}),
-                        ...update,
-                    },
-                },
-            });
-
-        const getStateById = id => op.get(getCurrent(), id, {});
-
-        await Reactium.Hook.run('dashboard-data-load', getStateById, setState);
-
-        return getCurrent();
-    },
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/domain.js
index 3f221c65..58c9d3ae 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/domain.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/domain.js
@@ -1,3 +1,3 @@
-export default {
+module.exports = {
     name: 'Dashboard',
 };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/index.js
index 65cb1f0d..ca98094b 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/index.js
@@ -4,9 +4,13 @@ import op from 'object-path';
 import PropTypes from 'prop-types';
 import domain from './domain';
 
-import Reactium, { __, Zone, useHookComponent } from 'reactium-core/sdk';
+import Reactium, {
+    __,
+    Zone,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
 
-import { useReduxState } from '@atomic-reactor/use-select';
+// import { useReduxState } from '@atomic-reactor/use-select';
 
 import React, { useEffect, useRef, useState } from 'react';
 
@@ -21,11 +25,15 @@ const ENUMS = {
  * Hook Component: Dashboard
  * -----------------------------------------------------------------------------
  */
-let Dashboard = props => {
+let Dashboard = (props) => {
     const { title, namespace } = props;
     const Helmet = useHookComponent('Helmet');
     const cx = Reactium.Utils.cxFactory(namespace);
-    const [data, setData] = useReduxState(domain.name);
+
+    // TODO: Update using Reactium.State
+    // const [data, setData] = useReduxState(domain.name);
+    const data = {},
+        setData = () => {};
 
     return (
         <div className={cx()}>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reactium-hooks.js
index 12e68595..458935f9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reactium-hooks.js
@@ -1,10 +1,8 @@
 import SDK from './sdk';
-import React from 'react';
 import Dashboard from './index';
-import actions from './actions';
 import Breadcrumbs from './Breadcrumbs';
-import Reactium from 'reactium-core/sdk';
 import SidebarWidget from './SidebarWidget';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const AdminDashboardPlugin = async () => {
     await Reactium.Plugin.register(
@@ -34,13 +32,6 @@ const AdminDashboardPlugin = async () => {
     });
 
     Reactium.Dashboard = SDK;
-
-    Reactium.Hook.register('blueprint-load', async (params, context) => {
-        const { dispatch, getState, route, blueprint } = params;
-        if (blueprint.ID === 'Admin' || route.path === '/admin') {
-            context.data = await actions.load()(dispatch, getState);
-        }
-    });
 };
 
 AdminDashboardPlugin();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reducers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reducers.js
deleted file mode 100644
index bedfb9fa..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/reducers.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import deps from 'dependencies';
-import domain from './domain';
-
-export default (state = {}, action) => {
-    switch (action.type) {
-        case deps().actionTypes.DOMAIN_UPDATE: {
-            if (action.domain === domain.name) {
-                return {
-                    ...state,
-                    ...action.update,
-                };
-            }
-            return state;
-        }
-
-        default:
-            return state;
-    }
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/sdk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/sdk.js
index f5628fca..09ab7423 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/sdk.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/sdk.js
@@ -1,3 +1,3 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 export default Reactium.Utils.registryFactory('Dashboard');
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/state.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/state.js
deleted file mode 100644
index ff8b4c56..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Dashboard/state.js
+++ /dev/null
@@ -1 +0,0 @@
-export default {};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/_reactium-style-organisms-admin-login.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Login/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Login/_reactium-style-organisms-admin-login.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enhancer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enhancer.js
deleted file mode 100644
index c01b0d62..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enhancer.js
+++ /dev/null
@@ -1,123 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import { matchPath } from 'react-router';
-import op from 'object-path';
-
-const defaultLoginRoute = '/login';
-Reactium.Hook.register(
-    'route-unauthorized',
-    async context => (context.loginRoute = defaultLoginRoute),
-    Reactium.Enums.priority.highest,
-);
-
-const redirectLogin = async history => {
-    const context = await Reactium.Hook.run('route-unauthorized');
-    const path = op.get(context, 'loginRoute', defaultLoginRoute);
-    window.location.href = path;
-};
-
-const defaultAdminRoots = ['/', '/admin'];
-Reactium.Hook.register(
-    'routes-admin-root',
-    async context => (context.adminRoots = defaultAdminRoots),
-    Reactium.Enums.priority.highest,
-);
-
-const enforceBlueprintCaps = (store, history, loginPath) => async location => {
-    const routes = Reactium.Routing.get();
-
-    const { route, match } =
-        routes
-            .filter(route => route.path)
-            .map(route => {
-                let match = matchPath(location.pathname, route);
-                return { route, match };
-            })
-            .filter(route => route.match)
-            .find(({ match }) => {
-                return match.isExact;
-            }) || {};
-
-    if (match) {
-        const pathname = op.get(route, 'path', '/');
-        const blueprint = op.get(route, 'blueprint', {});
-        const routeConfig = op.get(route, 'routeConfig', {});
-
-        if (blueprint && routeConfig) {
-            const capabilities = op.get(routeConfig, 'capabilities', []);
-
-            // restricted route
-            if (pathname !== loginPath && capabilities.length > 0) {
-                const permitted = await Reactium.Capability.check(capabilities);
-
-                // permitted, proceed
-                if (permitted) return;
-
-                const adminRootContext = await Reactium.Hook.run(
-                    'routes-admin-root',
-                );
-                const adminRoots =
-                    op.get(adminRootContext, 'adminRoots', defaultAdminRoots) ||
-                    defaultAdminRoots;
-                const [adminRoot] = adminRoots;
-
-                if (adminRoots.includes(pathname))
-                    await redirectLogin(history, loginPath);
-                else history.push(adminRoot);
-            }
-        }
-    }
-};
-
-export default (enhancers = [], isServer = false) => {
-    return [
-        {
-            name: 'route-observer',
-            order: 1000,
-            enhancer: isServer
-                ? _ => _
-                : storeCreator => (...args) => {
-                      const store = storeCreator(...args);
-
-                      Reactium.Hook.register(
-                          'history-create',
-                          async ({ history }) => {
-                              const context = await Reactium.Hook.run(
-                                  'route-unauthorized',
-                              );
-                              const loginPath = op.get(
-                                  context,
-                                  'loginRoute',
-                                  defaultLoginRoute,
-                              );
-
-                              Reactium.Hook.register(
-                                  'user.after.logout',
-                                  async () => {
-                                      await redirectLogin(history, loginPath);
-                                  },
-                              );
-
-                              enforceBlueprintCaps(
-                                  store,
-                                  history,
-                                  loginPath,
-                              )(window.location);
-                              history.listen(
-                                  enforceBlueprintCaps(
-                                      store,
-                                      history,
-                                      loginPath,
-                                  ),
-                              );
-
-                              return Promise.resolve();
-                          },
-                          Reactium.Enums.priority.high,
-                      );
-
-                      return store;
-                  },
-        },
-        ...enhancers,
-    ];
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enums.js
index f2151ea1..5a540fb2 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enums.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/enums.js
@@ -1,4 +1,4 @@
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     STATUS: {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/index.js
index 0ebac7f1..8cf301bf 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/index.js
@@ -3,8 +3,12 @@ import ENUMS from './enums';
 import op from 'object-path';
 import { Redirect, Link } from 'react-router-dom';
 import React, { useEffect, useRef, useState } from 'react';
-import { Button, Spinner, WebForm } from '@atomic-reactor/reactium-ui';
-import Reactium, { __, useHandle, useHookComponent } from 'reactium-core/sdk';
+import { Button, Spinner, WebForm } from 'reactium-ui';
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
 
 /**
  * -----------------------------------------------------------------------------
@@ -13,12 +17,12 @@ import Reactium, { __, useHandle, useHookComponent } from 'reactium-core/sdk';
  */
 const Login = ({ className, forgot, redirect, signup, ...props }) => {
     const Helmet = useHookComponent('Helmet');
-
     const Logo = useHookComponent('Logo');
-
-    const tools = useHandle('AdminTools');
-
-    const Modal = op.get(tools, 'Modal');
+    const setLoading = op.get(
+        window,
+        'LoadingRef.current.setVisible',
+        () => {},
+    );
 
     const stateRef = useRef({
         username: '',
@@ -52,14 +56,14 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
         setState({ ...value, error: {}, status: ENUMS.STATUS.SUBMITTING });
 
         return Reactium.User.auth(username, password)
-            .then(user => {
+            .then((user) => {
                 setState({ status: ENUMS.STATUS.SUCCESS });
                 setTimeout(
                     () => setState({ status: ENUMS.STATUS.COMPLETE }),
                     1000,
                 );
             })
-            .catch(err => {
+            .catch((err) => {
                 const error = {
                     field: 'password',
                     message: ENUMS.TEXT.ERROR.INVALID,
@@ -69,7 +73,7 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
             });
     };
 
-    const onChange = e => {
+    const onChange = (e) => {
         const { name, value } = e.target;
         setState({ [name]: value });
     };
@@ -109,7 +113,8 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
                         onError={onError}
                         value={{ username, password }}
                         required={['username', 'password']}
-                        showError={false}>
+                        showError={false}
+                    >
                         <div className='flex center mb-xs-40'>
                             <Link to='/'>
                                 <Logo width={80} height={80} />
@@ -119,7 +124,8 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
                             className={cn({
                                 'form-group': true,
                                 error: op.get(error, 'field') === 'username',
-                            })}>
+                            })}
+                        >
                             <input
                                 type='text'
                                 placeholder={ENUMS.TEXT.LABEL.USERNAME}
@@ -137,7 +143,8 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
                             className={cn({
                                 'form-group': true,
                                 error: op.get(error, 'field') === 'password',
-                            })}>
+                            })}
+                        >
                             <input
                                 type='password'
                                 placeholder={ENUMS.TEXT.LABEL.PASSWORD}
@@ -158,7 +165,8 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
                                 size='lg'
                                 type='submit'
                                 appearance='pill'
-                                disabled={status === ENUMS.STATUS.SUBMITTING}>
+                                disabled={status === ENUMS.STATUS.SUBMITTING}
+                            >
                                 {status === ENUMS.STATUS.SUBMITTING ? (
                                     <>{ENUMS.TEXT.BUTTON.SIGNING_IN}...</>
                                 ) : (
@@ -172,11 +180,6 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
                                     {ENUMS.TEXT.LABEL.FORGOT}
                                 </Link>
                             </div>
-                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-right pl-xs-0 pl-sm-8 mt-xs-16'>
-                                <Link to={signup}>
-                                    {ENUMS.TEXT.LABEL.CREATE}
-                                </Link>
-                            </div>
                         </div>
                     </WebForm>
                 </main>
@@ -187,11 +190,7 @@ const Login = ({ className, forgot, redirect, signup, ...props }) => {
     useEffect(() => {
         const { status } = stateRef.current;
         if (status === ENUMS.STATUS.SUCCESS) {
-            Modal.show(
-                <div className='modal-spinner'>
-                    <Spinner />
-                </div>,
-            );
+            setLoading(true);
         }
     }, [op.get(stateRef.current, 'status')]);
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/reactium-hooks.js
index 82a94f8c..24c6b197 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Login/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Login/reactium-hooks.js
@@ -1,5 +1,28 @@
 import Login from './index';
-import Reactium from 'reactium-core/sdk';
+import Reactium, { ComponentEvent } from '@atomic-reactor/reactium-core/sdk';
+
+import op from 'object-path';
+
+Reactium.Hook.register(
+    'sdk-init',
+    async (Reactium) => {
+        Reactium.State.addEventListener('LOGIN_NEEDED', (e) => {
+            const route = Reactium.Routing.currentRoute;
+            if (op.get(route, 'match.match.path') !== '/login') {
+                Reactium.Routing.history.push('/login');
+            }
+        });
+    },
+    Reactium.Enums.priority.normal,
+    'REACTIUM_STATE_LISTENER',
+);
+
+Reactium.Hook.register('app-ready', async () => {
+    const valid = await Reactium.User.hasValidSession();
+    if (!valid) {
+        Reactium.State.dispatchEvent(new ComponentEvent('LOGIN_NEEDED'));
+    }
+});
 
 Reactium.Plugin.register('AdminLogin').then(() => {
     Reactium.Zone.addComponent({
@@ -9,3 +32,32 @@ Reactium.Plugin.register('AdminLogin').then(() => {
         order: -1000,
     });
 });
+
+const blueprint = {
+    ID: 'Login',
+    description: 'Login blueprint',
+    sections: {
+        main: { zones: ['login'], meta: {} },
+        tools: { zones: ['admin-tools'] },
+    },
+    meta: { admin: true, builtIn: true },
+    order: 100,
+};
+
+Reactium.Hook.register(
+    'routes-init',
+    async () => {
+        Reactium.Routing.register({
+            exact: true,
+            path: '/login',
+            component: 'Blueprint',
+            blueprintId: 'Login',
+            blueprint,
+        });
+    },
+    Reactium.Enums.priority.highest - 1,
+);
+
+Reactium.Hook.register('blueprints', async (Blueprint) => {
+    Blueprint.register('Login', blueprint);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/SidebarWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/SidebarWidget/index.js
index 3003b7d4..d8cf1ccd 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/SidebarWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/SidebarWidget/index.js
@@ -1,52 +1,38 @@
-import _ from 'underscore';
-import React, { useEffect, useState } from 'react';
-import op from 'object-path';
+import React from 'react';
 import Reactium, {
-    useDerivedState,
-    useHandle,
+    __,
     useHookComponent,
-} from 'reactium-core/sdk';
-
-const noop = {
-    dismiss: () => {},
-    show: () => {},
-};
+} from '@atomic-reactor/reactium-core/sdk';
 
 const Widget = () => {
-    const ConfirmBox = useHookComponent('ConfirmBox');
     const MenuItem = useHookComponent('MenuItem');
+    const ConfirmBox = useHookComponent('ConfirmBox');
 
-    const tools = useHandle('AdminTools');
-    const Modal = op.get(tools, 'Modal');
+    const cancel = () => Reactium.State.Tools.Modal.hide();
 
     const confirm = () => {
+        Reactium.State.Tools.Modal.dismiss();
         Reactium.Routing.history.replace('/logout');
-        Modal.dismiss();
     };
 
-    const showModal = () => {
-        Modal.show(
+    const showModal = () =>
+        Reactium.State.Tools.Modal.show(
             <ConfirmBox
-                message='Are you sure?'
-                onCancel={() => Modal.hide()}
-                onConfirm={() => confirm()}
-                title='Sign Out'
+                onCancel={cancel}
+                onConfirm={confirm}
+                title={__('Sign Out')}
+                message={__('Are you sure?')}
             />,
         );
-    };
 
-    const render = () => (
-        <>
-            <MenuItem
-                label='Sign Out'
-                onClick={showModal}
-                icon='Linear.PowerSwitch'
-                isActive={() => false}
-            />
-        </>
+    return (
+        <MenuItem
+            onClick={showModal}
+            label={__('Sign Out')}
+            isActive={() => false}
+            icon='Linear.PowerSwitch'
+        />
     );
-
-    return !Modal ? null : render();
 };
 
 export default Widget;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/index.js
index 573308fa..fa7ec95e 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/index.js
@@ -1,5 +1,5 @@
 import React, { useEffect, useRef, useState } from 'react';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     STATUS: {
@@ -13,7 +13,7 @@ const ENUMS = {
  * Functional Component: Login
  * -----------------------------------------------------------------------------
  */
-const Logout = ({ className, redirect, ...props }) => {
+const Logout = ({ redirect }) => {
     const stateRef = useRef({
         status: ENUMS.STATUS.READY,
     });
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/reactium-hooks.js
index 58d82db3..0f8e6e53 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/reactium-hooks.js
@@ -1,5 +1,5 @@
 import Logout from './index';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import SidebarWidget from './SidebarWidget';
 
 Reactium.Plugin.register('AdminLogout').then(() => {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/route.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/route.js
new file mode 100644
index 00000000..fa9cb198
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Logout/route.js
@@ -0,0 +1,8 @@
+import Logout from './index';
+
+export default {
+    id: 'Logout',
+    exact: true,
+    path: ['/logout'],
+    component: Logout,
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js
deleted file mode 100644
index b6aca172..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js
+++ /dev/null
@@ -1,155 +0,0 @@
-import React from 'react';
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import Toolbar from './Toolbar';
-import ReactPlayer from 'react-player';
-import SlideContent from './carousel/SlideContent';
-import { TypeIcon } from '../../../../MediaPicker';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, { useHandle, useHookComponent } from 'reactium-core/sdk';
-
-const Multiple = ({ selection, handle, media }) => {
-    const { cx, nav, remove, removeAll } = handle;
-
-    const { Button, DataTable, Icon } = useHookComponent('ReactiumUI');
-
-    const columns = () => {
-        const output = {
-            thumb: {
-                width: '200px',
-            },
-            link: {
-                verticalAlign: 'middle',
-            },
-            delete: {
-                width: '120px',
-                textAlign: 'right',
-                verticalAlign: 'middle',
-            },
-        };
-
-        Reactium.Hook.runSync('media-field-data-table-columns', output);
-
-        return output;
-    };
-
-    const data = () =>
-        _.compact(
-            selection.map(({ objectId }) => {
-                const item = op.get(media.data, objectId);
-                if (!item) return null;
-
-                const thumbnail = op.get(item, 'thumbnail')
-                    ? url(item, 'thumbnail')
-                    : null;
-
-                const relURL = url(item, 'relative');
-                op.set(item, 'url', relURL);
-
-                op.set(
-                    item,
-                    'link',
-                    <a href={relURL} target='_blank' children={relURL} />,
-                );
-
-                op.set(
-                    item,
-                    'delete',
-                    <>
-                        <ContentButton file={item} handle={handle} />
-                        <DeleteButton onClick={() => remove(objectId)} />
-                    </>,
-                );
-
-                op.set(
-                    item,
-                    'thumb',
-                    <Thumbnail {...item} thumbnail={thumbnail} />,
-                );
-
-                return item;
-            }),
-        );
-
-    return (
-        <div className={cn(cx('thumbs'), 'multiple')}>
-            <Toolbar nav={nav}>
-                <div className='delete-all-container'>
-                    <Button
-                        className='delete-btn'
-                        color={Button.ENUMS.COLOR.DANGER}
-                        onClick={() => removeAll()}
-                        outline>
-                        <Icon name='Feather.X' />
-                    </Button>
-                </div>
-            </Toolbar>
-            <div className='table'>
-                <Scrollbars>
-                    <DataTable columns={columns()} data={data()} />
-                </Scrollbars>
-            </div>
-        </div>
-    );
-};
-
-const ContentButton = ({ handle, file, ...props }) => {
-    const tools = useHandle('AdminTools');
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-
-    const showEditor = () => {
-        const Modal = op.get(tools, 'Modal');
-        Modal.show(<SlideContent handle={handle} file={file} {...props} />);
-    };
-
-    return (
-        <Button
-            color={Button.ENUMS.COLOR.CLEAR}
-            className='content-btn mr-xs-8'
-            onClick={showEditor}
-            {...props}>
-            <Icon name='Feather.Feather' />
-        </Button>
-    );
-};
-
-const DeleteButton = props => {
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-    return (
-        <Button
-            color={Button.ENUMS.COLOR.DANGER}
-            className='delete-btn'
-            {...props}>
-            <Icon name='Feather.X' />
-        </Button>
-    );
-};
-
-const Thumbnail = ({ thumbnail, type, url }) =>
-    type === 'VIDEO' ? (
-        <div className='thumb'>
-            <ReactPlayer controls url={url} width={200} height={100} />
-        </div>
-    ) : (
-        <div
-            className='thumb'
-            style={{ backgroundImage: thumbnail ? `url(${thumbnail})` : null }}>
-            {!thumbnail && <TypeIcon type={type} />}
-        </div>
-    );
-
-const url = (item, which) => {
-    switch (which) {
-        case 'thumbnail':
-            return Reactium.Media.url(op.get(item, 'thumbnail'));
-
-        case 'relative':
-            return op.get(item, 'url');
-
-        default:
-            return op.get(item, 'redirect.url', op.get(item, 'url'));
-    }
-};
-
-export { Multiple, Multiple as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js
deleted file mode 100644
index 4d26f9f4..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js
+++ /dev/null
@@ -1,244 +0,0 @@
-import _ from 'underscore';
-import op from 'object-path';
-import useLocalState from '../useLocalState';
-import DirectoryPicker from '../DirectoryPicker';
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useMemo,
-} from 'react';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, {
-    __,
-    useEventHandle,
-    useHookComponent,
-} from 'reactium-core/sdk';
-import { useStore } from '@atomic-reactor/use-select';
-
-export default forwardRef((props, ref) => {
-    const store = useStore();
-
-    const {
-        active,
-        browseFiles,
-        cx,
-        directories,
-        isActive,
-        back,
-        nav,
-        refs,
-    } = props.handle;
-
-    const Uploads = useHookComponent('MediaUploads');
-    const { Alert, Button, Icon } = useHookComponent('ReactiumUI');
-
-    const defaultColor = Alert.ENUMS.COLOR.PRIMARY;
-    const defaultIcon = useMemo(() => 'Feather.HelpCircle');
-    const defaultMessage = useMemo(() =>
-        __('Select directory and file to upload'),
-    );
-
-    // -------------------------------------------------------------------------
-    // State
-    // -------------------------------------------------------------------------
-    const [state, setState, getState] = useLocalState({
-        color: defaultColor,
-        directory: null,
-        icon: defaultIcon,
-        message: defaultMessage,
-        uploads: op.get(store.getState(), 'Media.uploads'),
-        pending: null,
-        watch: {},
-    });
-
-    // -------------------------------------------------------------------------
-    // Internal interface
-    // -------------------------------------------------------------------------
-    const add = (added = {}) => {
-        const { watch = {} } = state;
-        Object.entries(added).forEach(([key, value]) =>
-            op.set(watch, key, value),
-        );
-        setState({ watch });
-    };
-
-    const hasUploads = () => {
-        const uploads = getState('uploads');
-        if (!uploads) return false;
-        return Object.keys(uploads).length > 0;
-    };
-
-    const onWorkerMessage = (...args) => {
-        const worker = args[0];
-        const { type, ...e } = worker;
-
-        if (type !== 'status') return;
-
-        const status = op.get(e.params, 'status');
-        const MediaPicker = refs.get('library.picker');
-
-        if (!MediaPicker) return;
-
-        const UPLOADER = op.get(e.params, 'UPLOADER');
-        if (UPLOADER !== MediaPicker.ID) return;
-
-        if (status === 'complete') {
-            const ID = op.get(e.params, 'ID');
-
-            const { directory, objectId, url } = e.params.result;
-
-            const media = Reactium.Cache.get('editor.media');
-            if (media) {
-                let { data = {}, directories = [] } = media;
-
-                directories.push(directory);
-                directories = _.uniq(directories);
-                directories.sort();
-
-                op.set(data, objectId, e.params.result);
-                op.set(data, 'directories', directories);
-                op.set(media, 'data', data);
-
-                Reactium.Cache.set('editor.media', media);
-            }
-
-            _.defer(() => select({ ID, objectId, url }));
-        }
-    };
-
-    const reset = () => {
-        if (isActive(props.id)) return;
-        setState({ uploads: null, directory: null });
-    };
-
-    const select = async ({ ID, ...item }) => {
-        const watch = getState('watch', {});
-        props.handle.add(item);
-        op.del(watch, ID);
-
-        setState('watch', watch);
-
-        if (Object.keys(watch).length < 1) {
-            await nav('thumb', 'left');
-            Reactium.Media.clear();
-        }
-    };
-
-    const setDirectory = directory => setState('directory', directory);
-
-    const setError = (message, pending = null, icon = 'Feather.AlertOctagon') =>
-        setState({
-            color: Alert.ENUMS.COLOR.DANGER,
-            icon,
-            message,
-            pending,
-        });
-
-    // -------------------------------------------------------------------------
-    // External interface
-    // -------------------------------------------------------------------------
-    const _handle = () => ({
-        add,
-        setDirectory,
-        setError,
-        value: { directory: getState('directory') },
-    });
-
-    const [handle, setHandle] = useEventHandle(_handle());
-
-    useImperativeHandle(ref, () => handle, [state.directory]);
-
-    // -------------------------------------------------------------------------
-    // Side effects
-    // -------------------------------------------------------------------------
-
-    // reset on inactive
-    useEffect(reset, [active]);
-
-    // update hande on directory change
-    useEffect(() => {
-        op.set(handle, 'value.directory', state.directory);
-        setHandle(handle);
-    }, [state.directory]);
-
-    // upload pending files
-    useEffect(() => {
-        if (!getState('directory')) return;
-        if (!getState('pending')) return;
-        add(Reactium.Media.upload(state.pending, state.directory));
-        setState('pending', null);
-    }, [state.directory]);
-
-    // uploads subscription
-    useEffect(() => {
-        return store.subscribe(() => {
-            const uploads = op.get(store.getState(), 'Media.uploads');
-            setState('uploads', uploads);
-        });
-    }, []);
-
-    // Regsiter media-worker hook
-    useEffect(() => {
-        const mw = Reactium.Hook.registerSync('media-worker', onWorkerMessage);
-        return () => {
-            Reactium.Hook.unregister(mw);
-        };
-    }, []);
-
-    // -------------------------------------------------------------------------
-    // Render
-    // -------------------------------------------------------------------------
-    return isActive(props.id) ? (
-        <div className={cx('upload')}>
-            <div className='p-xs-40 block'>
-                <Message state={state} />
-                <DirectoryPicker
-                    defaultValue={state.directory}
-                    directories={directories}
-                    onChange={({ value }) => setState('directory', value)}
-                />
-            </div>
-            <div className='content'>
-                {hasUploads() && (
-                    <div className='list'>
-                        <Scrollbars>
-                            <Uploads uploads={getState('uploads')} />
-                            <div style={{ height: '50vh' }} />
-                        </Scrollbars>
-                    </div>
-                )}
-                <div className='dropbox'>
-                    <div className={cx('label-dnd')}>{__('Drag and Drop')}</div>
-                    <div className={cx('label-or')}>{__('or')}</div>
-                    <div className={cx('btn-container')}>
-                        <Button
-                            appearance={Button.ENUMS.APPEARANCE.PILL}
-                            color={Button.ENUMS.COLOR.PRIMARY}
-                            onClick={browseFiles}
-                            size={Button.ENUMS.SIZE.MD}>
-                            {__('Upload A File')}
-                        </Button>
-                    </div>
-                </div>
-            </div>
-            <span className='back-btn'>
-                <Button color={Button.ENUMS.COLOR.CLEAR} onClick={back}>
-                    <Icon name='Feather.X' />
-                </Button>
-            </span>
-        </div>
-    ) : null;
-});
-
-const Message = ({ state = {} }) => {
-    const { Alert, Icon } = useHookComponent('ReactiumUI');
-
-    return op.get(state, 'message') ? (
-        <div className='block mb-xs-24'>
-            <Alert icon={<Icon name={state.icon} />} color={state.color}>
-                {state.message}
-            </Alert>
-        </div>
-    ) : null;
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Editor.js
new file mode 100644
index 00000000..e322fd99
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Editor.js
@@ -0,0 +1,143 @@
+import _ from 'underscore';
+import op from 'object-path';
+import { Uploader } from './Uploader';
+import React, { useCallback, useEffect, useMemo } from 'react';
+
+import Reactium, {
+    __,
+    useSyncState,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const Editor = (props) => {
+    let {
+        allExtensions,
+        autoUpload,
+        editor,
+        ext = [],
+        fieldName,
+        params,
+        placeholder,
+        required,
+        buttonLabel,
+        maxFiles,
+        maxFileSize,
+        serialize,
+    } = props;
+
+    const state = useSyncState();
+
+    const ElementDialog = useHookComponent('ElementDialog');
+
+    const { FormRegister, FormError } = useHookComponent('ReactiumUI');
+
+    const vkey = useMemo(() => {
+        return fieldName === 'file' ||
+            String(fieldName).startsWith('meta') ||
+            String(fieldName).startsWith('data')
+            ? fieldName
+            : `data.${fieldName}`;
+    }, [fieldName]);
+
+    const cx = Reactium.Utils.cxFactory('ar-field-type-file');
+
+    const uploaderProps = (() => {
+        let acceptedFileTypes = allExtensions === true ? [] : ext;
+        acceptedFileTypes = _.chain(acceptedFileTypes)
+            .flatten()
+            .compact()
+            .value();
+
+        let value = op.get(editor, ['Form', 'value', fieldName], []);
+        value = !_.isArray(value) ? [value] : value;
+        value = _.compact(value);
+
+        return {
+            acceptedFileTypes,
+            autoUpload,
+            buttonLabel,
+            editor,
+            fieldName,
+            maxFiles,
+            maxFileSize,
+            params,
+            placeholder,
+            serialize,
+            value,
+            vkey,
+        };
+    })();
+
+    const onFileUploadAdded = useCallback(() => {
+        editor.clearError(fieldName);
+        editor.disable();
+    }, [editor]);
+
+    const onUploaded = useCallback(
+        (e) => {
+            editor.setValue(fieldName, e.value);
+            editor.enable();
+        },
+        [editor, fieldName, vkey],
+    );
+
+    const parseError = useCallback(
+        (str) => {
+            const replacers = {
+                '%fieldName': fieldName,
+            };
+
+            str = String(str);
+
+            Object.entries(replacers).forEach(([s, v]) => {
+                str = str.replace(new RegExp(s, 'gi'), v);
+            });
+
+            return str;
+        },
+        [fieldName],
+    );
+
+    const validate = useCallback(
+        ({ values }) => {
+            let err;
+
+            const v = values[fieldName];
+
+            if (
+                (required === true && !v) ||
+                (required && Array.isArray(v) && v.length < 1)
+            ) {
+                err = parseError(__('%fieldName is required'));
+            }
+
+            if (err) editor.setError(fieldName, err, true);
+        },
+        [editor, fieldName, required],
+    );
+
+    useEffect(() => {
+        editor.addEventListener('validate', validate);
+        return () => {
+            editor.removeEventListener('validate', validate);
+        };
+    }, [editor]);
+
+    state.extend('cx', cx);
+
+    return (
+        <FormRegister>
+            <ElementDialog {...props}>
+                <FormError name={fieldName} />
+                <Uploader
+                    {...uploaderProps}
+                    onUploaded={onUploaded}
+                    onFileUploadAdded={onFileUploadAdded}
+                    ref={(elm) => editor.refs.set(`uploader.${fieldName}`, elm)}
+                />
+            </ElementDialog>
+        </FormRegister>
+    );
+};
+
+export default Editor;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/FieldType.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/FieldType.js
new file mode 100644
index 00000000..c482687d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/FieldType.js
@@ -0,0 +1,314 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useMemo } from 'react';
+import { fileExtensions } from './fileExtensions';
+
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRefs({ ext: [], groups: {} });
+
+    const Editor = useHandle('CTE');
+
+    const val = id
+        ? op.get(Editor.getValue(), ['contentType', 'fields', id], {})
+        : {};
+
+    const state = useSyncState({ ...val, groups: {}, unchecking: {} });
+
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
+
+    const { Checkbox, Toggle } = useHookComponent('ReactiumUI');
+
+    const labelStyle = useMemo(
+        () => ({
+            textAlign: 'left',
+        }),
+        [],
+    );
+
+    const extensions = useMemo(() => {
+        let ext = Array.from(fileExtensions);
+        Reactium.Hook.runSync('cte-file-extensions', { ext });
+        return _.groupBy(ext, 'type');
+    }, [fileExtensions]);
+
+    const toggle = (type) => (e) => {
+        if (state.get(['unchecking', type])) return;
+
+        _.where(refs.get('ext'), { type }).forEach(({ elm }) =>
+            e.target.checked === true ? elm.check() : elm.uncheck(),
+        );
+    };
+
+    const uncheckGroup = (group) => (e) => {
+        if (e.target.checked) return;
+
+        if (state.get(['unchecking', group])) return;
+
+        const elm = refs.get(`group.${group}`);
+        if (elm.checked !== true) return;
+
+        state.set(
+            ['unchecking', group],
+            setTimeout(() => state.set(['unchecking', group], null), 500),
+            false,
+        );
+
+        elm.uncheck();
+    };
+
+    const onChange = (e) => state.set(e.target.name, e.target.checked);
+
+    const render = () => {
+        refs.set('ext', []);
+        return (
+            <FieldTypeDialog {...props}>
+                <div className='field-type-file'>
+                    <div className='row'>
+                        <div className='col-xs-12 col-md-6 pr-md-8'>
+                            <div className='form-group'>
+                                <label>
+                                    <span style={{ fontWeight: 600 }}>
+                                        {__('Max Files')}:
+                                    </span>
+
+                                    <input
+                                        min={1}
+                                        type='number'
+                                        name='maxFiles'
+                                        placeholder={1}
+                                        defaultValue={1}
+                                        className='mb-xs-0'
+                                    />
+                                </label>
+                            </div>
+                        </div>
+                        <div className='col-xs-12 col-md-6 pl-xs-0 pl-md-8'>
+                            <div className='form-group'>
+                                <label>
+                                    <span style={{ fontWeight: 600 }}>
+                                        {__('Max File Size')}:
+                                    </span>
+                                    <div className='form-group'>
+                                        <input
+                                            min={1}
+                                            type='number'
+                                            name='maxFileSize'
+                                            placeholder='512'
+                                            defaultValue={512}
+                                            className='mb-xs-0 pr-xs-40'
+                                        />
+                                        <span className='input-note'>mb</span>
+                                    </div>
+                                </label>
+                            </div>
+                        </div>
+                        <div className='col-xs-12 col-md-6 pl-xs-0 pr-md-8 mt-xs-16'>
+                            <div className='form-group'>
+                                <label>
+                                    <span
+                                        style={{
+                                            fontWeight: 600,
+                                            height: 24,
+                                        }}
+                                    >
+                                        {__('Dropzone Label')}:
+                                    </span>
+                                    <textarea
+                                        rows={2}
+                                        name='placeholder'
+                                        placeholder={__('Drag & Drop File')}
+                                        defaultValue={__('Drag & Drop File')}
+                                    />
+                                </label>
+                            </div>
+                        </div>
+                        <div className='col-xs-12 col-md-6 pl-xs-0 pl-md-8 mt-xs-16'>
+                            <div className='form-group'>
+                                <label>
+                                    <span style={{ fontWeight: 600 }}>
+                                        {__('Browse Button Label')}:
+                                    </span>
+                                    <textarea
+                                        rows={2}
+                                        name='buttonLabel'
+                                        placeholder={__('Select File')}
+                                        defaultValue={__('Select File')}
+                                    />
+                                </label>
+                            </div>
+                        </div>
+
+                        <div className='col-xs-12 mt-xs-16'>
+                            <div className='form-group'>
+                                <label>
+                                    <span style={{ fontWeight: 600 }}>
+                                        {__('Help Text')}:
+                                    </span>
+                                    <textarea
+                                        rows={4}
+                                        name='helpText'
+                                        placeholder={__(
+                                            'markdown or plain text only',
+                                        )}
+                                    />
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div className='row'>
+                        <div className='col-xs-12 col-md-6 pr-xs-0 pr-md-12 mt-xs-20'>
+                            <Toggle
+                                value={true}
+                                name='required'
+                                onChange={onChange}
+                                defaultChecked={state.get('required') || false}
+                                label={
+                                    <>
+                                        <strong>{__('Required')}:</strong>{' '}
+                                        <em>
+                                            {String(
+                                                state.get('required') || false,
+                                            )}
+                                        </em>
+                                    </>
+                                }
+                            />
+                        </div>
+
+                        <div className='col-xs-12 col-md-6 pl-xs-0 pl-md-12 mt-xs-20'>
+                            <Toggle
+                                value={true}
+                                name='autoUpload'
+                                onChange={onChange}
+                                defaultChecked={
+                                    state.get('autoUpload') || false
+                                }
+                                label={
+                                    <>
+                                        <strong>
+                                            {__('Automatic Upload')}:
+                                        </strong>{' '}
+                                        <em>
+                                            {String(
+                                                state.get('autoUpload') ||
+                                                    false,
+                                            )}
+                                        </em>
+                                    </>
+                                }
+                            />
+                        </div>
+                    </div>
+
+                    <div className='row'>
+                        <div className='col-xs-12 col-md-6 pr-xs-0 pr-md-12 mt-xs-20'>
+                            <Toggle
+                                value={true}
+                                name='serialize'
+                                onChange={onChange}
+                                defaultChecked={state.get('serialze') || true}
+                                label={
+                                    <>
+                                        <strong>
+                                            {__('Serialize File Names')}:
+                                        </strong>{' '}
+                                        <em>
+                                            {String(
+                                                state.get('serialize') || false,
+                                            )}
+                                        </em>
+                                    </>
+                                }
+                            />
+                        </div>
+
+                        <div className='col-xs-12 col-md-6 pl-xs-0 pl-md-12 mt-xs-20'>
+                            <Toggle
+                                value={true}
+                                onChange={onChange}
+                                name='allExtensions'
+                                defaultChecked={state.get('allExtensions')}
+                                label={
+                                    <>
+                                        <strong>
+                                            {__('All File Extensions')}:
+                                        </strong>{' '}
+                                        <em>
+                                            {String(
+                                                state.get('allExtensions') ||
+                                                    false,
+                                            )}
+                                        </em>
+                                    </>
+                                }
+                            />
+                        </div>
+                    </div>
+                    <div
+                        style={{
+                            flexWrap: 'wrap',
+                            display: state.get('allExtensions') ? 'none' : null,
+                        }}
+                        className='flex-sm flex-sm-stretch wrap mt-xs-40'
+                    >
+                        {Object.entries(extensions).map(([k, v]) => (
+                            <div
+                                key={k}
+                                className='flex-grow'
+                                style={{ minWidth: 200 }}
+                            >
+                                <div className='mb-xs-20 strong'>
+                                    <Checkbox
+                                        label={k}
+                                        labelAlign='right'
+                                        labelStyle={labelStyle}
+                                        onChange={toggle(k)}
+                                        ref={(elm) =>
+                                            refs.set(`group.${k}`, elm)
+                                        }
+                                    />
+                                </div>
+                                {_.pluck(v, 'value').map((ext, i) => (
+                                    <div
+                                        className='mb-xs-8 pr-xs-20'
+                                        key={`ext-${i}`}
+                                    >
+                                        <Checkbox
+                                            name='ext'
+                                            value={ext}
+                                            label={ext}
+                                            labelAlign='right'
+                                            labelStyle={labelStyle}
+                                            onChange={uncheckGroup(k)}
+                                            ref={(elm) => {
+                                                if (elm) {
+                                                    refs.get('ext').push({
+                                                        elm,
+                                                        type: k,
+                                                    });
+                                                }
+                                            }}
+                                        />
+                                    </div>
+                                ))}
+                            </div>
+                        ))}
+                    </div>
+                </div>
+            </FieldTypeDialog>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/Dropfile.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/Dropfile.js
new file mode 100644
index 00000000..ec408b1e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/Dropfile.js
@@ -0,0 +1,388 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import { v4 as UUID } from 'uuid';
+import PropTypes from 'prop-types';
+import DND from 'drag-and-drop-files';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+
+import Reactium, {
+    __,
+    useRefs,
+    useSyncState,
+    useDispatcher,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const _onFileRead = (file) =>
+    new Promise((res, rej) => {
+        const reader = new FileReader();
+        reader.onload = (e) => res(e.target.result);
+        reader.onerror = (e) => rej(e);
+        reader.readAsDataURL(file);
+    });
+
+// ** NOTE ** The onChange is pulled out on purpose
+let Dropfile = ({ onChange, ...props }, ref) => {
+    const prop = (...args) => op.get(props, ...args);
+
+    const refs = useRefs();
+
+    const acceptedFileTypes = useMemo(
+        () => prop('acceptedFileTypes'),
+        [prop('acceptedFileTypes')],
+    );
+    const excludedFileTypes = useMemo(
+        () => prop('excludedFileTypes'),
+        [prop('excludedFileTypes')],
+    );
+    const className = useMemo(() => prop('className'), [prop('className')]);
+    const clickable = useMemo(() => prop('clickable'), [prop('clickable')]);
+    const count = useMemo(() => prop('count'), [prop('count')]);
+    const disabled = useMemo(() => prop('disabled'), [prop('disabled')]);
+    const maxFiles = useMemo(() => prop('maxFiles'), [prop('maxFiles')]);
+    const maxFileSize = useMemo(
+        () => prop('maxFileSize'),
+        [prop('maxFileSize')],
+    );
+    const namespace = useMemo(() => prop('namespace'), [prop('namespace')]);
+    const style = useMemo(() => prop('style'), [prop('style')]);
+
+    const state = useSyncState({
+        acceptedFileTypes,
+        className,
+        clickable,
+        count,
+        disabled,
+        excludedFileTypes,
+        prev: null,
+        init: false,
+        maxFiles,
+        maxFileSize,
+        value: [],
+    });
+
+    const _dispatch = useDispatcher({ props, state });
+
+    const dispatch = (...args) => {
+        _dispatch(...args);
+        return state;
+    };
+
+    const cx = useMemo(() => Reactium.Utils.cxFactory(namespace), [namespace]);
+
+    const browse = useCallback(() => {
+        if (isDisabled()) return;
+
+        const elm = refs.get('input');
+        if (!elm) return;
+        elm.addEventListener('cancel', _onCancel);
+        elm.click();
+    }, []);
+
+    const clear = useCallback(() => {
+        state.set('value', null, false);
+        state.set({ value: [], count: 0 });
+        return state;
+    }, []);
+
+    const disable = useCallback(() => state.set('disabled', true), []);
+
+    const enable = useCallback(() => state.set('disabled', false), []);
+
+    const forceRender = useCallback(() => state.set('updated', Date.now()), []);
+
+    const isDisabled = useCallback(
+        () => state.get('disabled'),
+        [state.get('disabled')],
+    );
+
+    const isClickable = useCallback(() => state.get('clickable') && !isMaxed());
+
+    const isEnabled = useCallback(() => !isDisabled(), []);
+
+    const isInit = useCallback(() => state.get('init'), []);
+
+    const isMaxed = useCallback(() => {
+        const { maxFiles, count = 0 } = state.get();
+        return maxFiles && maxFiles > 0 && count === maxFiles;
+    }, []);
+
+    const removeFiles = (ids) => {
+        ids = _.chain([ids]).flatten().uniq().value();
+        let value = Array.from(state.get('value') || []);
+
+        const indices = _.without(
+            ids
+                .map((ID) => _.findIndex(value, { ID }))
+                .sort()
+                .reverse(),
+            -1,
+        );
+
+        indices.forEach((idx) => {
+            const file = value.splice(idx, 1);
+            dispatch('file-removed', { detail: { file } });
+        });
+
+        let count = state.get('count') || 0;
+        count -= indices.length;
+        count = Math.max(0, count);
+
+        state.set({ count, value });
+    };
+
+    const _onCancel = (e) => {
+        e.target.removeEventListener('cancel', _onCancel);
+        dispatch('cancel');
+    };
+
+    const _onClick = (e) => {
+        if (!isClickable()) return;
+        e.target.blur();
+        browse();
+    };
+
+    const _onFileAdded = async (files) => {
+        if (isDisabled()) return;
+
+        files = Array.isArray(files) ? files : [files];
+
+        const detail = { valid: true, errors: [] };
+
+        files.forEach((file) => dispatch('validate', { detail, file }));
+
+        if (detail.valid !== true) {
+            dispatch('error', { detail });
+            return;
+        }
+
+        let value = state.get('value');
+        value = value || [];
+        value = Array.from(value);
+
+        const added = [];
+
+        for (let file of files) {
+            file.ID = UUID();
+            file.dataURL = await _onFileRead(file);
+            file._name = file.name;
+            file.metadata = { size: file.size };
+
+            added.push(file);
+            value.push(file);
+        }
+
+        let count = state.get('count') || 0;
+        count += added.length;
+
+        state.set({ value, count });
+
+        dispatch('file-added', { added, files: Array.from(value) });
+    };
+
+    const _onInit = () => {
+        if (isInit()) return;
+        const container = refs.get('container');
+        if (!container) return;
+        DND(container, _onFileAdded);
+        state.set('init', true, false);
+        dispatch('initialize');
+
+        state.addEventListener('validate', _onValidate);
+    };
+
+    const _onInputChange = (e) => _onFileAdded(Array.from(e.target.files));
+
+    const _onPropsChange = () => {
+        state.props = { onChange, ...props };
+    };
+
+    const _onValueChange = () => {
+        const { previous, value } = state.get();
+
+        state.value = value || [];
+
+        if (_.isEqual(previous, value)) return;
+
+        if (previous) {
+            const detail = { previous };
+            state.addEventListener('change', onChange);
+            dispatch('change', { value, detail });
+            state.removeEventListener('change', onChange);
+        }
+
+        state.set('previous', value, false);
+
+        forceRender();
+    };
+
+    const _onValidate = (e) => {
+        if (e.detail.valid === false) return;
+
+        const file = e.file;
+
+        let {
+            acceptedFileTypes = [],
+            excludedFileTypes = [],
+            maxFileSize,
+        } = state.get();
+
+        if (isMaxed()) {
+            const error = new Error(
+                String(__('maxFiles reached %count')).replace(
+                    /%count/gi,
+                    state.get('maxFiles'),
+                ),
+            );
+
+            e.detail.valid = false;
+            e.detail.errors.push(error);
+
+            return;
+        }
+
+        // File extension check: acceptedFileTypes
+        if (acceptedFileTypes.length > 0) {
+            if (e.detail.valid === false) return;
+
+            const ext = String(file.name).toLowerCase().split('.').pop();
+
+            if (!acceptedFileTypes.includes(ext)) {
+                e.detail.valid = false;
+                e.detail.errors.push(
+                    String(__('%file invalid file type .%ext'))
+                        .replace(/%file/gi, file.name)
+                        .replace(/%ext/gi, ext),
+                );
+            }
+        }
+
+        // File extension check: excludedFileTypes
+        if (excludedFileTypes.length > 0) {
+            if (e.detail.valid === false) return;
+
+            const ext = String(file.name).toLowerCase().split('.').pop();
+
+            if (excludedFileTypes.includes(ext)) {
+                e.detail.valid = false;
+                e.detail.errors.push(
+                    String(__('%file invalid file type .%ext'))
+                        .replace(/%file/gi, file.name)
+                        .replace(/%ext/gi, ext),
+                );
+            }
+        }
+
+        // Max file size
+        if (maxFileSize) {
+            const max = maxFileSize * 1048576;
+            if (file.size > max) {
+                e.detail.valid = false;
+                e.detail.errors.push(
+                    String(__('maxFileSize %sizemb exceeded')).replace(
+                        /%size/gi,
+                        maxFileSize,
+                    ),
+                );
+            }
+        }
+    };
+
+    state.props = { onChange, ...props };
+    state.value = state.get('value', []);
+
+    state.extend('cx', cx);
+    state.extend('initialized', isInit);
+    state.extend('browse', browse);
+    state.extend('clear', clear);
+    state.extend('disable', disable);
+    state.extend('enable', enable);
+    state.extend('disabled', isDisabled);
+    state.extend('enabled', isEnabled);
+    state.extend('dispatch', dispatch);
+    state.extend('rerender', forceRender);
+    state.extend('removeFile', removeFiles);
+    state.extend('removeFiles', removeFiles);
+    state.extend('update', forceRender);
+
+    useImperativeHandle(ref, () => state);
+
+    useEffect(_onValueChange, [state.get('value')]);
+
+    useEffect(_onPropsChange, [props]);
+
+    useEffect(_onInit);
+
+    useEffect(() => {
+        if (state.get('count') !== count) state.set('count', count);
+    }, [count]);
+
+    return (
+        <div
+            style={style}
+            onClick={_onClick}
+            ref={(elm) => refs.set('container', elm)}
+            className={cn(
+                cx(),
+                state.get('className'),
+                { clickable: isClickable() },
+                Dropfile.defaultProps.namespace,
+            )}
+        >
+            <input
+                multiple
+                type='file'
+                tabIndex={-1}
+                onChange={_onInputChange}
+                ref={(elm) => refs.set('input', elm)}
+            />
+            {prop('children')}
+        </div>
+    );
+};
+
+Dropfile = forwardRef(Dropfile);
+
+Dropfile.propTypes = {
+    acceptedFileTypes: PropTypes.array,
+    className: PropTypes.string,
+    clickable: PropTypes.bool,
+    count: PropTypes.number,
+    disabled: PropTypes.bool,
+    excludedFileTypes: PropTypes.array,
+    maxFiles: PropTypes.number,
+    maxFileSize: PropTypes.number, // MB
+    namespace: PropTypes.string,
+    style: PropTypes.object,
+    onCancel: PropTypes.func,
+    onChange: PropTypes.func,
+    onError: PropTypes.func,
+    onFileAdded: PropTypes.func,
+    onFileRemoved: PropTypes.func,
+    onInitialize: PropTypes.func,
+};
+
+Dropfile.defaultProps = {
+    acceptedFileTypes: [],
+    clickable: true,
+    count: 0,
+    disabled: false,
+    excludedFileTypes: [],
+    namespace: 'ar-dropfile',
+    style: {},
+    onCancel: _.noop,
+    onChange: _.noop,
+    onError: _.noop,
+    onFileAdded: _.noop,
+    onFileRemoved: _.noop,
+    onInitialize: _.noop,
+};
+
+export { Dropfile, Dropfile as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPlaceholder.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPlaceholder.js
new file mode 100644
index 00000000..0874fdf9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPlaceholder.js
@@ -0,0 +1,63 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import React, { useMemo } from 'react';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+const Ico = (props) => {
+    const { Icon } = useHookComponent('ReactiumUI');
+
+    return typeof op.get(props, 'icon') === 'string' ? (
+        <Icon name={props.icon} size={96} />
+    ) : (
+        props.icon
+    );
+};
+
+export const UploaderPlaceholder = ({
+    children,
+    count,
+    buttonLabel,
+    maxFiles,
+    namespace,
+    empty,
+    uploader,
+    ...props
+}) => {
+    const { Button } = useHookComponent('ReactiumUI');
+
+    const cx = useMemo(() => Reactium.Utils.cxFactory(namespace), [namespace]);
+
+    const visible = useMemo(() => Boolean(count < maxFiles), [count, maxFiles]);
+
+    const btnSize = empty ? Button.ENUMS.SIZE.MD : Button.ENUMS.SIZE.SM;
+
+    const btnAppearance = empty ? Button.ENUMS.APPEARANCE.PILL : null;
+
+    return !visible ? null : (
+        <div className={cn(cx('box-placeholder'), { empty })}>
+            {empty && <Ico {...props} />}
+            <div className='placeholder'>{children}</div>
+            <Button
+                size={btnSize}
+                children={buttonLabel}
+                onClick={uploader.browse}
+                appearance={btnAppearance}
+            />
+        </div>
+    );
+};
+
+UploaderPlaceholder.propTypes = {
+    buttonLabel: PropTypes.node,
+    children: PropTypes.node,
+    icon: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
+    namespace: PropTypes.string,
+    empty: PropTypes.bool,
+};
+
+UploaderPlaceholder.defaultProps = {
+    buttonLabel: __('Select File'),
+    icon: 'Linear.CloudUpload',
+    namespace: 'ar-field-type-file',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreview.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreview.js
new file mode 100644
index 00000000..91ac7f85
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreview.js
@@ -0,0 +1,251 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { fileExtensions } from '../fileExtensions';
+import { Draggable, DragDropContext, Droppable } from 'react-beautiful-dnd';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+
+import Reactium, {
+    useHookComponent,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const fileSize = (x) => {
+    const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+
+    let l = 0,
+        n = parseInt(x, 10) || 0;
+
+    while (n >= 1024 && ++l) {
+        n = n / 1024;
+    }
+
+    return n.toFixed(n < 10 && l > 0 ? 1 : 0) + ' ' + units[l];
+};
+
+export const UploaderPreview = forwardRef((props, ref) => {
+    const { count, namespace, fieldName, files, serialize, uploader, uploads } =
+        props;
+
+    const state = useSyncState({
+        uploading: [],
+    });
+
+    const Zone = useHookComponent('Zone');
+
+    const cx = useMemo(() => Reactium.Utils.cxFactory(namespace), [namespace]);
+
+    const visible = useMemo(() => count > 0, [count]);
+
+    const getType = useCallback((name) => {
+        const value = String(name).toLowerCase().split('.').pop();
+        const { type } = _.findWhere(fileExtensions, { value });
+        return type;
+    }, []);
+
+    const uploading = (FILEID) =>
+        Array.from(state.get('uploading') || []).includes(FILEID);
+
+    const upload = (FILEIDS) => {
+        const _uploading = Array.from(state.get('uploading') || []);
+
+        FILEIDS = _.chain([FILEIDS]).flatten().compact().uniq().value();
+
+        FILEIDS.forEach((FILEID) => _uploading.push(FILEID));
+
+        state.set('uploading', _uploading);
+
+        return state;
+    };
+
+    const zoneProps = useMemo(
+        () => ({
+            count,
+            cx,
+            fieldName,
+            files,
+            namespace,
+            serialize,
+            uploader,
+            uploads,
+            visible,
+        }),
+        [props],
+    );
+
+    const onDragEnd = (e) => {
+        if (!e) return;
+        if (!e.source) return;
+        if (!e.destination) return;
+
+        const from = e.source.index;
+        const to = e.destination.index;
+
+        uploader.move({ from, to });
+    };
+
+    state.extend('uploading', upload);
+
+    uploader.extend('getType', getType);
+
+    uploader.extend('uploading', uploading);
+
+    useImperativeHandle(ref, () => state);
+
+    const FileListItem = ({ item, provided }) => {
+        const p = provided
+            ? {
+                  ...provided.draggableProps,
+                  ...provided.dragHandleProps,
+              }
+            : {};
+
+        return !item ? null : (
+            <li
+                {...p}
+                ref={provided ? provided.innerRef : null}
+                className={cn(
+                    cx('list-item'),
+                    getType(op.get(item, '_name', item.name)),
+                )}
+            >
+                <div className={cn(cx('list-item-col'), 'thumb')}>
+                    <Zone
+                        {...zoneProps}
+                        zone='media-editor-file-item-thumbnail'
+                        file={{
+                            name: op.get(item, '_name', item.name),
+                            dataURL: item.upload
+                                ? item.upload.dataURL
+                                : op.get(item, '_url', item.url),
+                        }}
+                    />
+                    {provided && <div className='drag-handle' />}
+                </div>
+                <div className={cn(cx('list-item-col'), 'info')}>
+                    <Zone
+                        file={item}
+                        {...zoneProps}
+                        zone='media-editor-file-item-info'
+                    />
+                </div>
+                <div className={cn(cx('list-item-col'), 'action')}>
+                    <Zone
+                        file={item}
+                        {...zoneProps}
+                        zone='media-editor-file-item-action'
+                    />
+                </div>
+            </li>
+        );
+    };
+
+    return !visible ? null : (
+        <div className={cx('list')}>
+            <Zone {...zoneProps} zone={'media-editor-preview-top'} />
+            <Zone
+                {...zoneProps}
+                zone={`media-editor-preview-top-${uploader.getAttribute(
+                    'fieldName',
+                )}`}
+            />
+
+            {uploads.map((item, i) => (
+                <div
+                    key={cx(`list-item-${i}-${uploading(item.ID)}`)}
+                    className={cn(cx('list-item'), getType(item.name))}
+                >
+                    <div className={cn(cx('list-item-col'))}>
+                        <Zone
+                            file={item}
+                            {...zoneProps}
+                            zone='media-editor-upload-item-thumbnail'
+                        />
+                    </div>
+                    <div className={cn(cx('list-item-col'), 'info')}>
+                        <Zone
+                            file={item}
+                            {...zoneProps}
+                            zone='media-editor-upload-item-info'
+                        />
+                    </div>
+                    <div className={cn(cx('list-item-col'), 'action')}>
+                        <Zone
+                            file={item}
+                            {...zoneProps}
+                            zone='media-editor-upload-item-action'
+                        />
+                    </div>
+                </div>
+            ))}
+
+            {files.length > 1 ? (
+                <DragDropContext onDragEnd={onDragEnd}>
+                    <Droppable droppableId={cx('droppable')}>
+                        {(provided) => (
+                            <ul
+                                tabIndex={-1}
+                                ref={provided.innerRef}
+                                {...provided.droppableProps}
+                            >
+                                {files.map((item, index) => (
+                                    <Draggable
+                                        index={index}
+                                        tabIndex={-1}
+                                        key={`file-${index}`}
+                                        draggableId={`file-${index}`}
+                                    >
+                                        {(provided, snapshot) => (
+                                            <FileListItem
+                                                item={item}
+                                                provided={provided}
+                                                snapshot={snapshot}
+                                            />
+                                        )}
+                                    </Draggable>
+                                ))}
+                                {provided.placeholder}
+                            </ul>
+                        )}
+                    </Droppable>
+                </DragDropContext>
+            ) : (
+                <ul>
+                    {files.map((item, index) => (
+                        <FileListItem item={item} key={`file-${index}`} />
+                    ))}
+                </ul>
+            )}
+
+            <Zone {...zoneProps} zone={'media-editor-preview-bottom'} />
+
+            <Zone
+                {...zoneProps}
+                zone={`media-editor-preview-bottom-${uploader.getAttribute(
+                    'fieldName',
+                )}`}
+            />
+        </div>
+    );
+});
+
+UploaderPreview.propTypes = {
+    files: PropTypes.array,
+    namespace: PropTypes.string,
+    uploads: PropTypes.array,
+};
+
+UploaderPreview.defaultProps = {
+    files: [],
+    namespace: 'ar-field-type-file-preview',
+    uploads: [],
+};
+
+export default UploaderPreview;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewAction.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewAction.js
new file mode 100644
index 00000000..473f782d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewAction.js
@@ -0,0 +1,48 @@
+import React from 'react';
+import cn from 'classnames';
+import op from 'object-path';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+export const UploaderPreviewAction = ({ file, uploader, zone }) => {
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    return zone === 'media-editor-upload-item-action' ? (
+        <Button
+            disabled={uploader.uploading(file.ID)}
+            type={Button.ENUMS.TYPE.BUTTON}
+            onClick={(e) => {
+                e.preventDefault();
+                e.stopPropagation();
+                e.target.blur();
+                uploader.removeUpload(item);
+            }}
+            color={
+                !uploader.uploading(file.ID)
+                    ? Button.ENUMS.COLOR.DANGER
+                    : Button.ENUMS.COLOR.CLEAR
+            }
+        >
+            <Icon
+                className={cn({ spin: uploader.uploading(file.ID) })}
+                name={
+                    !uploader.uploading(file.ID) ? 'Feather.X' : 'Linear.Sync'
+                }
+            />
+        </Button>
+    ) : (
+        <Button
+            type={Button.ENUMS.TYPE.BUTTON}
+            color={Button.ENUMS.COLOR.DANGER}
+            onClick={(e) => {
+                e.preventDefault();
+                e.stopPropagation();
+                e.target.blur();
+                uploader.removeFile(op.get(file, 'metadata.ID'));
+            }}
+        >
+            <Icon name='Feather.X' />
+        </Button>
+    );
+};
+
+export default UploaderPreviewAction;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewInfo.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewInfo.js
new file mode 100644
index 00000000..fc73ac35
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewInfo.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import op from 'object-path';
+import { fileSize } from './UploaderPreview';
+
+export const UploaderPreviewInfo = ({ file, serialize }) => {
+    const ID = op.get(file, 'ID', op.get(file, 'metadata.ID'));
+
+    const name = op.get(file, 'name', op.get(file, '_name'));
+
+    const ext = String(name).split('.').pop();
+
+    const fileName = serialize ? [ID, ext].join('.') : name;
+
+    const s = op.get(file, 'size', op.get(file, 'metadata.size', 0));
+
+    const size = s && s > 0 ? fileSize(s) : null;
+
+    return !ID ? null : (
+        <>
+            {fileName && <div>{fileName}</div>}
+            {size && <small>{size}</small>}
+        </>
+    );
+};
+
+export default UploaderPreviewInfo;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewThumbnail.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewThumbnail.js
new file mode 100644
index 00000000..c42f8ae8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/UploaderPreviewThumbnail.js
@@ -0,0 +1,58 @@
+import _ from 'underscore';
+import React from 'react';
+import { fileExtensions } from '../fileExtensions';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+export const UploaderPreviewThumbnail = ({ className, file }) => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    const ext = String(file.name).toLowerCase().split('.').pop();
+    let { type } = _.findWhere(fileExtensions, { value: ext });
+
+    switch (type) {
+        case 'image':
+            return (
+                <div
+                    className={className}
+                    style={{ backgroundImage: `url(${file.dataURL})` }}
+                />
+            );
+
+        case 'archive':
+            return (
+                <div
+                    className={className}
+                    children={<Icon name='Linear.Cube' />}
+                />
+            );
+
+        case 'audio':
+            return (
+                <div
+                    className={className}
+                    children={<Icon name='Linear.Mic' />}
+                />
+            );
+
+        case 'video':
+            return (
+                <div
+                    className={className}
+                    children={<Icon name='Linear.ClapboardPlay' />}
+                />
+            );
+
+        default:
+            return (
+                <div
+                    className={className}
+                    children={<Icon name='Linear.Document2' />}
+                />
+            );
+    }
+};
+
+UploaderPreviewThumbnail.defaultProps = {
+    className: 'media-list-thumb',
+};
+
+export default UploaderPreviewThumbnail;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/_reactium-style-organisms.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/_reactium-style-organisms.scss
new file mode 100644
index 00000000..1426535d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/_reactium-style-organisms.scss
@@ -0,0 +1,257 @@
+$ar-field-type-file-thumb-size: 40px !default;
+
+.ar-dropfile {
+    z-index: 5;
+    height: 100%;
+    padding: 20px;
+    position: relative;
+
+    > input[type='file'] {
+        width: 0%;
+        height: 0%;
+        opacity: 0;
+        top: -100vh;
+        left: -100vw;
+        position: absolute;
+    }
+}
+
+.ar-field-type-file {
+    padding: 20px;
+    z-index: 5;
+    position: relative;
+
+    &-box-placeholder {
+        width: 100%;
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        user-select: none;
+        color: $color-gray;
+
+        border: 3px dashed $color-grey-light;
+        padding: 2px;
+        margin-bottom: 20px;
+
+        .placeholder {
+            flex-grow: 1;
+            padding-left: 8px;
+        }
+
+        .browse {
+            border-radius: 2px;
+        }
+
+        &.empty {
+            height: 60vw;
+            margin-bottom: 0;
+            text-align: center;
+            align-items: center;
+            flex-direction: column;
+            justify-content: center;
+
+            @include breakpoint(sm) {
+                height: 400px;
+            }
+
+            @include breakpoint(md) {
+                height: 480px;
+            }
+
+            .placeholder {
+                flex-grow: 0;
+                padding-left: 0;
+                margin: 4px 0 28px 0;
+            }
+
+            .browse {
+                margin-top: 32px;
+            }
+        }
+    }
+
+    &-preview-list {
+        &:empty {
+            display: none;
+        }
+
+        ul {
+            margin: 0;
+            padding: 0;
+            list-style: none;
+
+            &:empty {
+                display: none;
+            }
+        }
+
+        &-item {
+            width: 100%;
+            display: flex;
+            align-items: stretch;
+            position: relative;
+            border: none;
+
+            &:nth-child(odd) {
+                background-color: $color-white-dark;
+            }
+
+            &-col {
+                display: flex;
+                position: relative;
+                align-items: center;
+
+                &.info {
+                    display: flex;
+                    flex-grow: 1;
+                    flex-shrink: 1;
+                    flex-direction: column;
+                    align-items: flex-start;
+                    justify-content: center;
+                    font-weight: 500;
+                    font-size: 12px;
+                    overflow: hidden;
+                    white-space: nowrap;
+                    padding: 0 8px;
+
+                    small,
+                    .small {
+                        margin-top: -4px;
+                        font-style: normal;
+                        font-weight: normal;
+                    }
+                }
+
+                &.action {
+                    button {
+                        padding: 0;
+                        width: $ar-field-type-file-thumb-size;
+                        height: $ar-field-type-file-thumb-size;
+                    }
+                }
+
+                &:first-child {
+                    padding: 4px;
+                    flex-grow: 0;
+                    flex-shrink: 0;
+                    justify-content: center;
+                }
+
+                &:last-child {
+                    padding: 4px;
+                    flex-grow: 0;
+                    flex-shrink: 0;
+                    justify-content: center;
+                }
+            }
+
+            .media-list-thumb {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+
+                background-size: cover;
+                background-repeat: no-repeat;
+                background-position: top center;
+
+                overflow: hidden;
+                border-radius: 2px;
+                width: $ar-field-type-file-thumb-size;
+                height: $ar-field-type-file-thumb-size;
+            }
+
+            .drag-handle {
+                position: absolute;
+                left: -18px;
+                top: 50%;
+                width: 18px;
+                height: 100%;
+                opacity: 0;
+                transform: translateY(-50%);
+                background-color: $color-light;
+                transition: background-color 0.2s ease-in-out;
+                &:empty {
+                    display: block;
+                }
+
+                &:after {
+                    content: '';
+                    width: 4px;
+                    height: 14px;
+                    left: 50%;
+                    top: 50%;
+                    position: absolute;
+                    transform: translateX(-50%) translateY(-50%);
+                    border-left: 1px solid lighten($color-primary, 20%);
+                    border-right: 1px solid lighten($color-primary, 20%);
+                }
+            }
+
+            &:hover {
+                .drag-handle {
+                    opacity: 1;
+                }
+            }
+        }
+    }
+}
+
+.admin-content-editor-sidebar {
+    .ar-field-type-file {
+        &-box-placeholder {
+            &.empty {
+                height: auto;
+                padding: 20px 20px 40px 20px;
+
+                @include breakpoint(sm) {
+                    height: auto;
+                }
+
+                @include breakpoint(md) {
+                    height: auto;
+                }
+            }
+        }
+
+        &-preview-list {
+            &-item {
+                &.image {
+                    position: relative;
+                    border-radius: 2px;
+                    padding-bottom: 8px;
+                    flex-direction: column;
+                    border: 1px solid $color-grey-light;
+                }
+            }
+        }
+
+        &-preview-list-item {
+            &.image {
+                .ar-field-type-file-preview-list-item-col {
+                    .media-list-thumb {
+                        width: 100%;
+                        height: 320px;
+                        margin: 4px 0 4px 0;
+                        background-size: auto 320px;
+                        background-repeat: no-repeat;
+                    }
+
+                    &.info {
+                        display: flex;
+                        padding-top: 8px;
+                        align-items: center;
+                        flex-direction: column;
+                        border-top: 1px solid $color-grey-light;
+                    }
+
+                    &.action {
+                        top: 4px;
+                        right: 4px;
+                        position: absolute;
+                        z-index: map-get($z-indexes, 'actions');
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/index.js
new file mode 100644
index 00000000..ec5d5be4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/index.js
@@ -0,0 +1,380 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Dropfile } from './Dropfile';
+import { UploaderPreview } from './UploaderPreview';
+import { UploaderPlaceholder } from './UploaderPlaceholder';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+
+import Reactium, {
+    __,
+    useDispatcher,
+    useRefs,
+    useHookComponent,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+export const Uploader = forwardRef((props, ref) => {
+    const {
+        autoUpload,
+        params,
+        parallelUploads,
+        serialize,
+        fieldName,
+        editor,
+        value: defaultValue,
+    } = props;
+
+    const refs = useRefs();
+
+    const state = useSyncState({
+        errors: [],
+        initialValue: defaultValue,
+        uploads: [],
+        uploading: null,
+        value: _.chain([defaultValue || []])
+            .flatten()
+            .compact()
+            .value(),
+    });
+
+    const clear = () => {
+        state.set({ uploads: null });
+        const dz = refs.get('dropzone');
+        if (dz) dz.clear();
+    };
+
+    const browse = useCallback(() => {
+        const dz = refs.get('dropzone');
+        dz.browse();
+        return state;
+    }, []);
+
+    const count = useCallback(() => {
+        const value = state.get('value') || [];
+        const uploads = state.get('uploads') || [];
+        return value.length + uploads.length;
+    }, []);
+
+    const dispatch = useDispatcher({ props, state });
+
+    const empty = useMemo(() => count() < 1);
+
+    const getUploads = useCallback(
+        () => Array.from(state.get('uploads') || []),
+        [],
+    );
+
+    const getValue = useCallback(
+        () =>
+            Array.from(
+                _.chain([state.get('value')])
+                    .flatten()
+                    .compact()
+                    .value(),
+            ),
+        [],
+    );
+
+    const isUploading = useMemo(
+        () => state.get('uploading'),
+        [state.get('uploading')],
+    );
+
+    const move = useCallback(({ from, to }) => {
+        const vals = Array.from(state.get('value'));
+
+        const item = vals[from];
+
+        vals.splice(from, 1);
+        vals.splice(to, 0, item);
+
+        vals.forEach((v, i) => {
+            v.index = i;
+            op.set(v, 'metadata.index', i);
+        });
+
+        state.value = vals;
+        state.set('value', vals);
+    }, []);
+
+    const onError = useCallback((e) => {
+        console.log(state.get('errors'), e);
+    }, []);
+
+    const onFileAdded = useCallback((e) => {
+        if (!validateAddedFiles(e.added)) return;
+
+        const max = op.get(props, 'maxFiles', 1);
+
+        let uploads = max > 1 ? state.get('uploads') || [] : [];
+
+        // Add to uploads array
+        e.added.forEach((item) => {
+            uploads.push(item);
+        });
+
+        uploads = _.compact(Array.from(uploads));
+        if (uploads.length < 1) return;
+
+        dispatch('file-upload-added', { added: e.added, files: e.files });
+
+        state.set('uploads', uploads);
+        if (autoUpload === true) return upload();
+    }, []);
+
+    const removeFile = useCallback((FILEID) => {
+        const value = getValue();
+
+        const idx = _.findIndex(value, (file) =>
+            Boolean(op.get(file, 'metadata.ID') === FILEID),
+        );
+
+        if (idx > -1) {
+            value.splice(idx, 1);
+            state.set('value', value);
+        }
+        return state;
+    }, []);
+
+    const removeUpload = useCallback((upload) => {
+        const uploads = state.get('uploads');
+        const idx = _.findIndex(uploads, { ID: upload.ID });
+        if (idx > -1) {
+            uploads.splice(idx, 1);
+            state.set('uploads', uploads);
+        }
+
+        const dz = refs.get('dropzone');
+        if (dz) dz.removeFile(upload);
+        return state;
+    }, []);
+
+    const _upload = () =>
+        new Promise(async (resolve) => {
+            if (isUploading) return;
+
+            const previews = refs.get('previews');
+
+            state.set('uploading', true, false);
+
+            const output = [];
+
+            let uploads = getUploads();
+
+            while (uploads.length > 0) {
+                let chunk = uploads.splice(0, parallelUploads);
+
+                state.set('uploads', uploads, false);
+
+                previews.uploading(_.pluck(chunk, 'ID'));
+
+                let files = [];
+
+                while (chunk.length > 0) {
+                    const item = chunk.shift();
+                    const name = serialize
+                        ? [item.ID, String(item.name).split('.').pop()].join(
+                              '.',
+                          )
+                        : item.name;
+
+                    const file = new Reactium.File(name, item);
+
+                    const meta = op.get(editor, 'Form.value.meta', {
+                        file: {
+                            [fieldName]: { [item.ID]: { meta: {}, tags: {} } },
+                        },
+                    });
+
+                    op.set(meta, ['file', fieldName, item.ID, 'meta'], {
+                        size: item.size,
+                        fieldName: fieldName,
+                        ID: item.ID,
+                        name,
+                    });
+
+                    op.set(meta, ['file', fieldName, item.ID, 'tags'], {
+                        fieldName: fieldName,
+                        type: params.type,
+                    });
+
+                    files.push(
+                        file.save().then((f) => {
+                            removeUpload(item);
+
+                            f.upload = item;
+
+                            f.metadata = op.get(meta, [
+                                'file',
+                                fieldName,
+                                item.ID,
+                                'meta',
+                            ]);
+                            f.tags = op.get(meta, [
+                                'file',
+                                fieldName,
+                                item.ID,
+                                'tags',
+                            ]);
+
+                            dispatch('uploaded-file', { value: f, fieldName });
+
+                            editor.setValue('meta', meta, false);
+
+                            return f;
+                        }),
+                    );
+                }
+
+                files = await Promise.all(files);
+                files.forEach((item) => output.push(item));
+
+                uploads = getUploads();
+            }
+
+            state.set('uploading', false);
+
+            const value = getValue();
+            output.forEach((item) => value.push(item));
+            state.value = value;
+            state.set('value', value);
+
+            resolve(value);
+        });
+
+    const upload = useMemo(() => _.debounce(_upload, 1000, false), []);
+
+    const validateAddedFiles = (files) => {
+        state.set('errors', []);
+        const detail = { valid: true, errors: [], files };
+
+        dispatch('file-upload-validate', { detail });
+
+        state.set('errors', detail.errors);
+        return op.get(detail, 'valid');
+    };
+
+    state.refs = refs;
+
+    state.attributes = props;
+
+    state.value = state.get('value');
+
+    state.extend('move', move);
+
+    state.extend('clear', clear);
+
+    state.extend('count', count);
+
+    state.extend('browse', browse);
+
+    state.extend('dispatch', dispatch);
+
+    state.extend('removeFile', removeFile);
+
+    state.extend('empty', () => count() < 1);
+
+    state.extend('removeUpload', removeUpload);
+
+    state.extend('getAttribute', (attr) => op.get(props, attr));
+
+    useEffect(
+        (e) => {
+            if (op.get(e, 'path')) return;
+            state.value = getValue();
+            dispatch('uploaded', { value: state.value, fieldName: fieldName });
+        },
+        [state.get('value')],
+    );
+
+    useEffect(() => {
+        const errors = Array.from(state.get('errors') || []);
+        const detail = { errors };
+        if (errors.length > 0) {
+            dispatch('error', { detail });
+            state.set('errors', []);
+        }
+    }, [state.get('errors')]);
+
+    useEffect(() => {
+        state.addEventListener('error', onError);
+        return () => {
+            state.removeEventListener('error', onError);
+        };
+    }, [state]);
+
+    useEffect(() => {
+        if (!editor) return;
+        const val = op.get(editor, `Form.value.${fieldName}`);
+        if (_.isEqual(val, state.get('value'))) return;
+        state.set('value', val);
+    }, [op.get(editor, `Form.value.${fieldName}`)]);
+
+    useImperativeHandle(ref, () => state);
+
+    return (
+        <Dropfile
+            {...props}
+            count={count()}
+            className={cn({ empty })}
+            onFileAdded={onFileAdded}
+            value={state.get('value')}
+            ref={(elm) => refs.set('dropzone', elm)}
+        >
+            <UploaderPlaceholder
+                empty={empty}
+                count={count()}
+                uploader={state}
+                maxFiles={props.maxFiles}
+                namespace={props.namespace}
+                children={props.placeholder}
+                buttonLabel={props.buttonLabel}
+            />
+            <UploaderPreview
+                count={count()}
+                uploader={state}
+                serialize={serialize}
+                maxFiles={props.maxFiles}
+                files={state.get('value')}
+                uploads={state.get('uploads')}
+                namespace={props.namespace + '-preview'}
+                ref={(elm) => refs.set('previews', elm)}
+            />
+        </Dropfile>
+    );
+});
+
+Uploader.propTypes = {
+    acceptedFileTypes: PropTypes.arrayOf(PropTypes.string),
+    autoUpload: PropTypes.bool,
+    buttonLabel: PropTypes.node,
+    clickable: PropTypes.bool,
+    maxFiles: PropTypes.number,
+    maxFileSize: PropTypes.number,
+    namespace: PropTypes.string,
+    parallelUploads: PropTypes.number,
+    placeholder: PropTypes.node,
+    value: PropTypes.array,
+};
+
+Uploader.defaultProps = {
+    acceptedFileTypes: [],
+    autoUpload: false,
+    clickable: false,
+    buttonLabel: PropTypes.node,
+    maxFiles: 1,
+    maxFileSize: 512,
+    namespace: 'ar-field-type-file',
+    parallelUploads: 2,
+    placeholder: __('Drag & Drop File'),
+    value: [],
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/reactium-hooks.js
new file mode 100644
index 00000000..8eac95b1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/reactium-hooks.js
@@ -0,0 +1,35 @@
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { UploaderPreviewInfo } from './UploaderPreviewInfo';
+import { UploaderPreviewAction } from './UploaderPreviewAction';
+import { UploaderPreviewThumbnail } from './UploaderPreviewThumbnail';
+
+(async () => {
+    await Reactium.Plugin.register('UploadPreviewComponents');
+
+    Reactium.Zone.addComponent({
+        order: -1,
+        ID: 'content-media-thumbnail',
+        component: UploaderPreviewThumbnail,
+        zone: [
+            'media-editor-upload-item-thumbnail',
+            'media-editor-file-item-thumbnail',
+        ],
+    });
+
+    Reactium.Zone.addComponent({
+        order: -1,
+        ID: 'content-media-info',
+        component: UploaderPreviewInfo,
+        zone: ['media-editor-upload-item-info', 'media-editor-file-item-info'],
+    });
+
+    Reactium.Zone.addComponent({
+        order: -1,
+        ID: 'content-media-action',
+        component: UploaderPreviewAction,
+        zone: [
+            'media-editor-upload-item-action',
+            'media-editor-file-item-action',
+        ],
+    });
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/_reactium-style-organisms.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/_reactium-style-organisms.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/fileExtensions.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/fileExtensions.js
new file mode 100644
index 00000000..c77d0ece
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/fileExtensions.js
@@ -0,0 +1,32 @@
+export const fileExtensions = [
+    { type: 'image', value: 'jpg' },
+    { type: 'image', value: 'png' },
+    { type: 'image', value: 'gif' },
+    { type: 'image', value: 'webp' },
+    { type: 'image', value: 'svg' },
+    { type: 'video', value: 'mp4' },
+    { type: 'video', value: 'mpg' },
+    { type: 'video', value: 'mov' },
+    { type: 'video', value: 'wmv' },
+    { type: 'video', value: 'avi' },
+    { type: 'audio', value: 'mp3' },
+    { type: 'audio', value: 'wav' },
+    { type: 'audio', value: 'pcm' },
+    { type: 'audio', value: 'aac' },
+    { type: 'audio', value: 'ogg' },
+    { type: 'audio', value: 'wma' },
+    { type: 'document', value: 'pdf' },
+    { type: 'document', value: 'xls' },
+    { type: 'document', value: 'xlsx' },
+    { type: 'document', value: 'doc' },
+    { type: 'document', value: 'docx' },
+    { type: 'document', value: 'ppt' },
+    { type: 'document', value: 'pptx' },
+    { type: 'document', value: 'txt' },
+    { type: 'archive', value: 'zip' },
+    { type: 'archive', value: 'zipx' },
+    { type: 'archive', value: 'rar' },
+    { type: 'archive', value: 'tar.gz' },
+];
+
+export default fileExtensions;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/reactium-hooks.js
new file mode 100644
index 00000000..e5eb2aa4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/reactium-hooks.js
@@ -0,0 +1,31 @@
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
+
+const ID = 'File';
+
+const Ico = () => {
+    const { Icon } = useHookComponent('ReactiumUI');
+    return <Icon name='Linear.Media' />;
+};
+
+const fieldType = {
+    icon: Ico,
+    showHelpText: false,
+    label: __('File'),
+    component: 'FieldTypeFile',
+    order: Reactium.Enums.priority.neutral,
+    tooltip: __('Adds a file uploader filed.'),
+};
+
+(async () => {
+    await Reactium.Plugin.register(`CTE-${ID}`);
+
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/reactium-hooks.js
deleted file mode 100644
index 0ff1ab3f..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/reactium-hooks.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import React from 'react';
-import { Editor } from './Editor';
-import { FieldType } from './FieldType';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Icon } from '@atomic-reactor/reactium-ui';
-
-const ID = 'Media';
-
-const Ico = () => <Icon name='Feather.Image' />;
-
-const fieldType = {
-    icon: Ico,
-    label: __('Media Field'),
-    component: 'FieldTypeMedia',
-    tooltip: __('Media field type'),
-    order: Reactium.Enums.priority.neutral,
-};
-
-Reactium.Plugin.register(`CTE-${ID}`).then(() => {
-    Reactium.Content.Editor.register(ID, { component: Editor });
-    Reactium.Component.register(fieldType.component, FieldType);
-    Reactium.ContentType.FieldType.register(ID, fieldType);
-});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Creator/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Creator/index.js
deleted file mode 100644
index 868c93b5..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Creator/index.js
+++ /dev/null
@@ -1,254 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import slugify from 'slugify';
-import PropTypes from 'prop-types';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import domain from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import React, {
-    forwardRef,
-    useImperativeHandle,
-    useEffect,
-    useRef,
-    useState,
-} from 'react';
-
-import Reactium, {
-    useDerivedState,
-    useHandle,
-    useHookComponent,
-} from 'reactium-core/sdk';
-
-import { useReduxState } from '@atomic-reactor/use-select';
-
-import {
-    Alert,
-    Button,
-    Dialog,
-    Icon,
-    Spinner,
-} from '@atomic-reactor/reactium-ui';
-
-const noop = forwardRef((props, ref) => null);
-
-let FolderInput = (props, ref) => (
-    <div className='pl-xs-16 mb-xs-8'>
-        <label className='input-group' style={{ width: '100%' }}>
-            <span className='blue'>
-                <Icon name='Feather.Folder' className='mr-xs-4' />
-            </span>
-            <input
-                type='text'
-                ref={ref}
-                name='directory'
-                onBlur={e => {
-                    e.target.value = String(
-                        slugify(e.target.value),
-                    ).toLowerCase();
-                }}
-                placeholder={ENUMS.TEXT.FOLDER_CREATOR.DIRECTORY}
-                {...props}
-            />
-        </label>
-    </div>
-);
-
-FolderInput = forwardRef(FolderInput);
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: DirectoryCreator
- * -----------------------------------------------------------------------------
- */
-let DirectoryCreator = ({ children, ...props }, ref) => {
-    const [getState, dispatch] = useReduxState(domain.name);
-
-    const tools = useHandle('AdminTools');
-
-    const Modal = op.get(tools, 'Modal');
-
-    const Toast = op.get(tools, 'Toast');
-
-    const PermissionSelector = useHookComponent('PermissionSelector', noop);
-
-    // Refs
-    const containerRef = useRef();
-    const folderRef = useRef();
-    const permRef = useRef();
-
-    // State
-    const [state, setNewState] = useDerivedState({
-        ...props,
-        data: null,
-        error: null,
-        status: ENUMS.STATUS.READY,
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setNewState(newState);
-    };
-
-    const cname = () => {
-        const { className, namespace } = state;
-        return cn({ [className]: !!className, [namespace]: !!namespace });
-    };
-
-    const footer = () => ({
-        elements: [
-            <Button
-                color='primary'
-                size='sm'
-                onClick={save}
-                style={{ width: 175, marginLeft: 8 }}>
-                {ENUMS.TEXT.FOLDER_CREATOR.SAVE}
-            </Button>,
-        ],
-    });
-
-    const isMounted = () => !unMounted();
-
-    const onSave = e => {
-        const { directory, permissions } = e;
-        const { canRead = [], canWrite = [] } = permissions.state;
-
-        setState({
-            canRead,
-            canWrite,
-            directory,
-            error: null,
-            status: ENUMS.STATUS.PROCESSING,
-        });
-    };
-
-    const onError = e => {
-        const { directory, error, permissions } = e;
-        const { canRead = [], canWrite = [] } = permissions.state;
-
-        setState({
-            canRead,
-            canWrite,
-            directory,
-            error,
-            status: ENUMS.STATUS.READY,
-        });
-    };
-
-    const save = async () => {
-        const { status } = state;
-        if (status === ENUMS.STATUS.PROCESSING) return;
-
-        const permissions = permRef.current;
-        let { value: directory } = folderRef.current;
-
-        if (!directory) return;
-
-        directory = String(slugify(directory)).toLowerCase();
-
-        // Optimistically update the store
-        let { directories = [] } = getState;
-
-        directories.push(directory);
-        directories.sort();
-        directories = _.uniq(directories);
-
-        dispatch({ directories });
-
-        onSave({ directory, permissions });
-
-        Reactium.Cloud.run('directory-save', {
-            directory,
-            permissions: permissions.value,
-        })
-            .then(result => {
-                Toast.show({
-                    icon: 'Feather.Check',
-                    message: `Saved ${directory}`,
-                    type: Toast.TYPE.INFO,
-                });
-                Modal.hide();
-            })
-            .catch(err =>
-                onError({
-                    directory,
-                    permissions,
-                    error: err,
-                }),
-            );
-    };
-
-    const unMounted = () => !containerRef.current;
-
-    // Renderer
-    const render = () => {
-        const { canRead = [], canWrite = [], directory, error, status } = state;
-
-        return (
-            <div ref={containerRef} className={cname()}>
-                <Dialog
-                    collapsible={false}
-                    dismissable={true}
-                    footer={footer()}
-                    header={{ title: ENUMS.TEXT.FOLDER_CREATOR.TITLE }}
-                    onDismiss={() => Modal.hide()}>
-                    <div style={{ position: 'relative', height: 300 }}>
-                        <Scrollbars height={300}>
-                            {error && (
-                                <div className='px-xs-16 py-xs-16 mb-xs-8 bg-red white text-center italic'>
-                                    {op.get(error, 'message')}
-                                </div>
-                            )}
-                            <div className='py-xs-16'>
-                                <FolderInput
-                                    ref={folderRef}
-                                    defaultValue={directory}
-                                />
-                                <PermissionSelector
-                                    canRead={canRead}
-                                    canWrite={canWrite}
-                                    ref={permRef}
-                                />
-                            </div>
-                            {status === ENUMS.STATUS.PROCESSING && (
-                                <div
-                                    className='flex middle center'
-                                    style={{
-                                        position: 'absolute',
-                                        top: 0,
-                                        left: 0,
-                                        width: '100%',
-                                        height: '100%',
-                                        zIndex: 100000,
-                                    }}>
-                                    <Spinner />
-                                </div>
-                            )}
-                        </Scrollbars>
-                    </div>
-                </Dialog>
-            </div>
-        );
-    };
-
-    // Render
-    return render();
-};
-
-DirectoryCreator = forwardRef(DirectoryCreator);
-
-DirectoryCreator.ENUMS = ENUMS;
-
-DirectoryCreator.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-    permissions: PropTypes.object,
-};
-
-DirectoryCreator.defaultProps = {
-    namespace: 'admin-directory-editor',
-    permissions: {},
-};
-
-export { DirectoryCreator as default, FolderInput };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/index.js
deleted file mode 100644
index 7fa5abbd..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/index.js
+++ /dev/null
@@ -1,527 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import DeletePanel from './DeletePanel';
-import EditorPanel from './EditorPanel';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import domain from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain';
-
-import Reactium, {
-    useDerivedState,
-    useEventHandle,
-    useHandle,
-    useRegisterHandle,
-} from 'reactium-core/sdk';
-
-import { useReduxState } from '@atomic-reactor/use-select';
-
-import React, { forwardRef, useEffect, useRef } from 'react';
-
-import {
-    Button,
-    DataTable,
-    Dialog,
-    Icon,
-    Scene,
-    Toggle,
-} from '@atomic-reactor/reactium-ui';
-
-import { Column, Row, SearchBar } from '@atomic-reactor/reactium-ui/DataTable';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: DirectoryEditor
- * -----------------------------------------------------------------------------
- */
-let DirectoryEditor = ({ className, namespace }) => {
-    const [getState, dispatch] = useReduxState(domain.name);
-
-    const tools = useHandle('AdminTools');
-
-    const Modal = op.get(tools, 'Modal');
-
-    const Toast = op.get(tools, 'Toast');
-
-    // Refs
-    const dialogRef = useRef();
-
-    const deleteRef = useRef();
-
-    const editorRef = useRef();
-
-    const sceneRef = useRef();
-
-    const tableRef = useRef();
-
-    // State
-    const [state, setState] = useDerivedState({
-        active: 'list',
-        deleteFiles: false,
-        objectId: null,
-        search: null,
-        selection: [],
-        status: ENUMS.STATUS.INIT,
-    });
-
-    const cname = () =>
-        cn({ [className]: !!className, [namespace]: !!namespace });
-
-    const columns = () => {
-        return {
-            directory: {
-                label: 'Folder',
-                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
-                sortType: DataTable.ENUMS.SORT_TYPE.STRING,
-            },
-            actions: {
-                label: '',
-                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.TOP,
-                textAlign: 'right',
-                width: 200,
-            },
-        };
-    };
-
-    const directoryDelete = ({ directory, content }) => {
-        const updateRedux = () => {
-            let { directories = [] } = getState;
-
-            directories = _.without(directories, directory);
-            directories.sort();
-
-            dispatch({ directories });
-        };
-
-        const updateTable = () => {
-            const { directories = [] } = state;
-            const i = _.findIndex(directories, { directory });
-            if (i > -1) directories.splice(i, 1);
-
-            setState({ directories });
-        };
-
-        const updateFiles = () => {
-            if (content !== true) return;
-
-            const { library = {} } = getState;
-
-            Object.entries(library).forEach(([, files]) => {
-                Object.entries(files).forEach(([id, file]) => {
-                    if (file.directory !== directory) return;
-                    delete files[id];
-                });
-            });
-
-            dispatch({ library });
-        };
-
-        updateTable();
-        updateRedux();
-        updateFiles();
-
-        return Reactium.Cloud.run('directory-delete', {
-            directory,
-            content,
-        }).then(result => {
-            Toast.show({
-                icon: 'Feather.Check',
-                message: `Deleted ${directory}`,
-                type: Toast.TYPE.INFO,
-            });
-
-            return result;
-        });
-    };
-
-    const directorySave = ({ directory, objectId, permissions }) => {
-        const updateRedux = () => {
-            let { directories = [] } = getState;
-
-            directories.push(directory);
-            directories.sort();
-            directories = _.uniq(directories);
-
-            dispatch({ directories });
-        };
-
-        const updateTable = () => {
-            Reactium.Cloud.run('directories', { verbose: true }).then(
-                updateDirectories,
-            );
-        };
-
-        // Optimistically update the store
-        updateRedux();
-
-        // Save to server
-        return Reactium.Cloud.run('directory-save', {
-            directory,
-            objectId,
-            permissions,
-        }).then(result => {
-            Toast.show({
-                icon: 'Feather.Check',
-                message: `Saved ${directory}`,
-                type: Toast.TYPE.INFO,
-            });
-
-            updateTable();
-            return result;
-        });
-    };
-
-    const footer = () => {
-        const { active, deleteFiles, selection = [] } = state;
-
-        const elements = [];
-        const btnStyle = { padding: 0, width: 32, height: 32, marginRight: 8 };
-        const tooltip = {
-            'data-align': 'right',
-            'data-vertical-align': 'middle',
-        };
-
-        if (active === 'list') {
-            if (selection.length > 0) {
-                elements.push(
-                    <Button
-                        {...tooltip}
-                        color='danger'
-                        outline
-                        data-tooltip={ENUMS.TEXT.FOLDER_EDITOR.DELETE_ALL}
-                        style={btnStyle}>
-                        <Icon name='Feather.X' size={20} />
-                    </Button>,
-                );
-            }
-
-            elements.push(
-                <Button
-                    {...tooltip}
-                    color='clear'
-                    data-tooltip={ENUMS.TEXT.FOLDER_CREATOR.TITLE}
-                    style={btnStyle}
-                    onClick={() => navTo('add', { edit: null })}>
-                    <Icon name='Feather.Plus' size={22} />
-                </Button>,
-            );
-        }
-
-        if (active !== 'list') {
-            elements.push(
-                <Button
-                    {...tooltip}
-                    color='clear'
-                    data-tooltip={ENUMS.TEXT.BACK}
-                    onClick={() => sceneRef.current.back()}
-                    style={btnStyle}>
-                    <Icon name='Feather.ChevronLeft' size={22} />
-                </Button>,
-            );
-        }
-
-        if (active === 'add') {
-            elements.push(
-                <div className='flex flex-grow right middle'>
-                    <Button
-                        onClick={() => onSaveClick()}
-                        style={{ width: 175 }}>
-                        {ENUMS.TEXT.FOLDER_CREATOR.SAVE}
-                    </Button>
-                </div>,
-            );
-        }
-
-        if (active === 'delete') {
-            elements.push(
-                <div className='flex flex-grow right middle'>
-                    <Toggle
-                        defaultChecked={deleteFiles}
-                        label='Delete Files?'
-                        onChange={e => onDeleteFilesChange(e)}
-                        value={true}
-                    />
-                </div>,
-            );
-        }
-
-        return {
-            align: 'left',
-            elements,
-        };
-    };
-
-    const navTo = (panel, newState, direction = 'left') => {
-        if (newState) setState(newState);
-
-        sceneRef.current.navTo({
-            panel,
-            direction,
-        });
-    };
-
-    const onDeleteFilesChange = e => {
-        const deleteFiles = e.target.checked;
-        deleteRef.current.setState({ deleteFiles });
-        state.deleteFiles = deleteFiles;
-    };
-
-    const onItemSelect = () => {
-        const { data = [] } = tableRef.current;
-        const selection = data.filter(item => item.selected === true);
-        setState({ selection });
-    };
-
-    const onSaveClick = () => editorRef.current.save();
-
-    const onSceneBeforeChange = e => {
-        const { staged } = e;
-
-        if (staged === 'add') {
-            const { edit } = state;
-            editorRef.current.reset(edit);
-        }
-
-        if (staged === 'delete') {
-            const { item } = state;
-            deleteRef.current.setState({
-                ...item,
-                status: ENUMS.STATUS.READY,
-                table: tableRef.current,
-            });
-        }
-    };
-
-    const onSceneChange = e => {
-        const { active } = e;
-        setState({ active });
-    };
-
-    const updateDirectories = directories => {
-        directories = directories.map(item => {
-            item.actions = <Actions {...item} />;
-            return item;
-        });
-
-        setState({
-            directories,
-            status: ENUMS.STATUS.READY,
-            updated: Date.now(),
-        });
-    };
-
-    const Actions = item => {
-        const size = 32;
-        const margin = 12;
-        const buttons = [];
-        const canRead = [];
-        const canWrite = [];
-        const ACL = op.get(item, 'ACL', {});
-        const { roles, users } = Reactium.Cache.get('acl-targets');
-
-        Object.entries(ACL).forEach(([key, value]) => {
-            if (key === '*') return;
-
-            const { read, write } = value;
-            const isRole = String(key).startsWith('role:');
-
-            if (isRole) {
-                const name = key.split(':').pop();
-                const role = _.findWhere(roles, { name });
-                if (read && !write) canRead.push(role);
-                if (write) canWrite.push(role);
-            } else {
-                const user = _.findWhere(users, { objectId: key });
-                if (read && !write) canRead.push(user);
-                if (write) canWrite.push(user);
-            }
-        });
-
-        buttons.push(
-            <Button
-                key={`edit-directory-${item.objectId}`}
-                size='xs'
-                style={{
-                    padding: 0,
-                    width: size,
-                    height: size,
-                    marginLeft: margin,
-                }}
-                data-tooltip={`${ENUMS.TEXT.FOLDER_EDITOR.EDIT} ${item.directory}`}
-                data-align='left'
-                data-vertical-align='middle'
-                onClick={() =>
-                    navTo('add', {
-                        edit: {
-                            ...item,
-                            canRead: _.pluck(canRead, 'objectId'),
-                            canWrite: _.pluck(canWrite, 'objectId'),
-                            permissions: {
-                                canRead,
-                                canWrite,
-                            },
-                        },
-                    })
-                }>
-                <Icon name='Feather.Edit2' size={16} />
-            </Button>,
-        );
-
-        buttons.push(
-            <Button
-                color='danger'
-                key={`delte-directory-${item.objectId}`}
-                size='xs'
-                style={{
-                    padding: 0,
-                    width: size,
-                    height: size,
-                    marginLeft: margin,
-                }}
-                data-id={item.objectId}
-                data-tooltip={`${ENUMS.TEXT.FOLDER_EDITOR.DELETE} ${item.directory}`}
-                data-align='left'
-                data-vertical-align='middle'
-                onClick={() => navTo('delete', { item })}>
-                <Icon name='Feather.X' size={20} />
-            </Button>,
-        );
-
-        return buttons;
-    };
-
-    const Table = ({ id = 'list' }) => {
-        const { directories = [], search } = state;
-        return (
-            <DataTable
-                columns={columns()}
-                data={directories}
-                header={<TableHeader />}
-                height={214}
-                id={id}
-                multiselect
-                onSelect={onItemSelect}
-                onUnSelect={onItemSelect}
-                ref={tableRef}
-                scrollable
-                search={search}
-                style={{ marginTop: -1 }}
-            />
-        );
-    };
-
-    const TableHeader = () => {
-        const { directories = [] } = state;
-        const { search } = tableRef.current || {};
-        return (
-            <Row className='bg-white-dark'>
-                <Column verticalAlign='middle'>
-                    {directories.length}{' '}
-                    {directories.length === 1
-                        ? ENUMS.TEXT.FOLDER_EDITOR.TITLE[0]
-                        : ENUMS.TEXT.FOLDER_EDITOR.TITLE[1]}
-                </Column>
-                <Column width={200} textAlign='right'>
-                    <SearchBar
-                        defaultValue={search}
-                        placeholder={`${ENUMS.TEXT.SEARCH} ${ENUMS.TEXT.FOLDER_EDITOR.TITLE[1]}`}
-                        onChange={e =>
-                            tableRef.current.setState({
-                                search: e.target.value,
-                            })
-                        }
-                    />
-                </Column>
-            </Row>
-        );
-    };
-
-    // Extern Interface
-    const _handle = () => ({
-        directoryDelete,
-        directorySave,
-        navTo,
-    });
-
-    const [handle, setHandle] = useEventHandle(_handle());
-
-    useRegisterHandle('MediaDirectories', () => handle, [
-        op.get(state, 'directories'),
-        op.get(state, 'status'),
-        tableRef.current,
-    ]);
-
-    // Side Effects
-    useEffect(() => {
-        const { directories, status } = state;
-
-        if (status !== ENUMS.STATUS.INIT) return;
-        if (directories) return;
-
-        // Get directories
-        setState({ status: ENUMS.STATUS.FETCHING });
-
-        Reactium.Cloud.run('directories', { verbose: true }).then(
-            updateDirectories,
-        );
-    }, [
-        op.get(state, 'directories'),
-        op.get(state, 'updated'),
-        op.get(state, 'status'),
-        tableRef.current,
-    ]);
-
-    useEffect(() => {
-        const newHandle = _handle();
-        if (_.isEqual(newHandle, handle)) return;
-        setHandle(newHandle);
-    });
-
-    // Renderer
-    const render = () => {
-        const { active, deleteFiles, edit = {} } = state;
-
-        return (
-            <div className={cname()}>
-                <Dialog
-                    ref={dialogRef}
-                    collapsible={false}
-                    dismissable={true}
-                    footer={footer()}
-                    header={{ title: ENUMS.TEXT.FOLDER_EDITOR.TITLE[1] }}
-                    onDismiss={() => Modal.hide()}>
-                    <Scene
-                        active={active}
-                        height={300}
-                        onChange={e => onSceneChange(e)}
-                        onBeforeChange={e => onSceneBeforeChange(e)}
-                        ref={sceneRef}
-                        width='100%'>
-                        <Table id='list' />
-                        <EditorPanel {...edit} id='add' ref={editorRef} />
-                        <DeletePanel
-                            deleteFiles={deleteFiles}
-                            id='delete'
-                            ref={deleteRef}
-                        />
-                    </Scene>
-                </Dialog>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-DirectoryEditor.ENUMS = ENUMS;
-
-DirectoryEditor.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-};
-
-DirectoryEditor.defaultProps = {
-    namespace: 'media-directory-editor',
-};
-
-export { DirectoryEditor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/HeaderWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/HeaderWidget/index.js
deleted file mode 100644
index b9561911..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/HeaderWidget/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import { __, useHandle } from 'reactium-core/sdk';
-import React, { useEffect, useState } from 'react';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
-
-const SaveButton = () => {
-    const editor = useHandle('MediaEditor', {});
-
-    const [busy, setBusy] = useState(false);
-
-    const onStatus = () => {
-        setBusy(editor.isBusy());
-    };
-
-    useEffect(() => {
-        if (!editor) return;
-        if (Object.keys(editor).length < 1) return;
-
-        editor.addEventListener('STATUS', onStatus);
-        return () => {
-            editor.removeEventListener('STATUS', onStatus);
-        };
-    }, [Object.keys(editor)]);
-
-    const render = () => {
-        const label = busy ? __('Saving...') : __('Save File');
-        const icon = busy ? 'Feather.UploadCloud' : 'Feather.Check';
-        return (
-            <Button
-                appearance='pill'
-                className='mr-xs-24'
-                color={Button.ENUMS.COLOR.PRIMARY}
-                disabled={busy}
-                onClick={e => editor.submit(e)}
-                size={Button.ENUMS.SIZE.XS}
-                type={Button.ENUMS.TYPE.BUTTON}>
-                <Icon name={icon} size={18} />
-                <span
-                    className='hide-xs show-md ml-xs-12'
-                    style={{ minWidth: 56, textAlign: 'left' }}>
-                    {label}
-                </span>
-            </Button>
-        );
-    };
-
-    return render();
-};
-
-export default () => {
-    const { path } = useRouteParams(['path']);
-    const visible = String(path).startsWith('/admin/media/edit');
-    return visible ? <SaveButton /> : null;
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/Sidebar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/Sidebar/index.js
deleted file mode 100644
index b085043e..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/Sidebar/index.js
+++ /dev/null
@@ -1,139 +0,0 @@
-import cn from 'classnames';
-import op from 'object-path';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, { useIsContainer } from 'reactium-core/sdk';
-import { Button, Icon, Collapsible } from '@atomic-reactor/reactium-ui';
-
-import React, {
-    forwardRef,
-    useImperativeHandle,
-    useEffect,
-    useRef,
-    useState,
-} from 'react';
-
-let Sidebar = ({ children, editor }, ref) => {
-    const { cx } = editor;
-
-    const containerRef = useRef();
-    const collapsibleRef = useRef();
-
-    const className = cx('sidebar');
-
-    const isContainer = useIsContainer();
-
-    const hash = op.get(Reactium.Routing, 'history.location.hash', '');
-
-    const [expanded, setExpanded] = useState(String(hash).endsWith('sidebar'));
-
-    const dismiss = e => {
-        if (!containerRef.current || !expanded) return;
-        if (isContainer(e.target, containerRef.current)) return;
-        collapsibleRef.current.collapse();
-    };
-
-    const collapse = () =>
-        collapsibleRef.current && collapsibleRef.current.collapse();
-
-    const expand = () =>
-        collapsibleRef.current && collapsibleRef.current.expand();
-
-    const toggle = () =>
-        collapsibleRef.current && collapsibleRef.current.toggle();
-
-    const _onCollapse = () => collapsibleRef.current && setExpanded(false);
-
-    const _onExpand = () => collapsibleRef.current && setExpanded(true);
-
-    const _onHotkey = e => {
-        if (!containerRef.current) return;
-        e.preventDefault();
-        if (collapsibleRef.current) toggle();
-        containerRef.current.focus();
-    };
-
-    useEffect(() => {
-        if (!collapsibleRef.current) return;
-        Reactium.Hotkeys.register('content-sidebar-toggle', {
-            callback: _onHotkey,
-            key: 'mod+\\',
-            order: Reactium.Enums.priority.lowest,
-            scope: document,
-        });
-
-        return () => {
-            Reactium.Hotkeys.unregister('content-sidebar-toggle');
-        };
-    }, []);
-
-    useEffect(() => {
-        if (typeof window === 'undefined') return;
-
-        window.addEventListener('mousedown', dismiss);
-        window.addEventListener('touchstart', dismiss);
-
-        return () => {
-            window.removeEventListener('mousedown', dismiss);
-            window.removeEventListener('touchstart', dismiss);
-        };
-    }, [containerRef.current, expanded]);
-
-    useEffect(() => {
-        handle.expanded = expanded;
-        editor.dispatch('sidebar-toggled', { expanded });
-        editor.dispatch(`sidebar-${expanded ? 'expanded' : 'collapsed'}`, {
-            expanded,
-        });
-    }, [expanded]);
-
-    // handle
-    const _handle = () => ({
-        collapse,
-        dismiss,
-        expand,
-        expanded,
-        setExpanded,
-        setHandle,
-        toggle,
-    });
-
-    const [handle, setHandle] = useState(_handle());
-
-    useImperativeHandle(ref, () => handle, [handle, expanded]);
-
-    const render = () => {
-        const icon = expanded ? 'Feather.ChevronRight' : 'Feather.ChevronLeft';
-        return (
-            <div
-                tabIndex={0}
-                className={cn(className, { expanded })}
-                ref={containerRef}>
-                <div className={cx('toolbar')}>
-                    <div className={cx('sidebar-toggle')}>
-                        <Button color='clear' onClick={toggle}>
-                            <Icon name={icon} size={20} />
-                        </Button>
-                        <div className='bg' />
-                    </div>
-                </div>
-                <Collapsible
-                    className={cx('collapsible')}
-                    direction='horizontal'
-                    expanded={expanded}
-                    onCollapse={_onCollapse}
-                    onExpand={_onExpand}
-                    ref={collapsibleRef}>
-                    <Scrollbars autoHeight autoHeightMin='calc(100vh - 60px)'>
-                        {children}
-                    </Scrollbars>
-                </Collapsible>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-Sidebar = forwardRef(Sidebar);
-
-export default Sidebar;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Audio/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Audio/index.js
deleted file mode 100644
index 8bc0dd37..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Audio/index.js
+++ /dev/null
@@ -1,121 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import Reactium, { __ } from 'reactium-core/sdk';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import React, { useCallback, useEffect, useState } from 'react';
-
-const Audio = ({ editor, ...props }) => {
-    const { cx, state = {} } = editor;
-    const { value = {} } = state;
-
-    const [initialized, setInitialized] = useState(false);
-    const [style, setStyle] = useState({});
-    const [upload, setUpload] = useState(false);
-    const [url, setUrl] = useState(Reactium.Media.url(value.file));
-    const [imageUrl, setImageUrl] = useState();
-
-    const cancelUpload = () => {
-        editor.cancel();
-        setUrl(Reactium.Media.url(value.file));
-    };
-
-    const _onFileAdded = e => {
-        const { height: maxHeight, width: maxWidth } = e.file;
-        setUpload(true);
-        setStyle({ maxHeight, maxWidth });
-        setUrl(e.file.dataURL);
-    };
-
-    const initialize = () => {
-        if (upload !== false) setUpload(false);
-        if (initialized !== true) setInitialized(true);
-
-        if (!op.get(value, 'thumbnail')) {
-            setImageUrl(null);
-            return;
-        }
-
-        const newImageUrl = Reactium.Media.url(value.thumbnail);
-
-        const Img = new Image();
-
-        Img.onload = e => {
-            const { height: maxHeight, width: maxWidth } = Img;
-            setStyle({ maxHeight, maxWidth });
-            setImageUrl(newImageUrl);
-        };
-
-        Img.src = newImageUrl;
-    };
-
-    const render = useCallback(() => {
-        const deleteProps = {
-            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
-            color: Button.ENUMS.COLOR.DANGER,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: cancelUpload,
-            style: {
-                width: 42,
-                height: 42,
-                padding: 0,
-                marginLeft: 12,
-            },
-        };
-
-        const selectProps = {
-            appearance: Button.ENUMS.APPEARANCE.PILL,
-            color: Button.ENUMS.COLOR.PRIMARY,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: editor.browse,
-            style: {
-                width: 220,
-                marginLeft: upload ? 54 : 0,
-            },
-        };
-
-        return (
-            <>
-                <div className={cx('filename')}>{value.filename}</div>
-                <div className={cx('audio')}>
-                    {imageUrl && <img src={imageUrl} style={style} />}
-                    {!imageUrl && (
-                        <span className={cx('audio-icon')}>
-                            <Icon name='Linear.Mic' size={48} />
-                        </span>
-                    )}
-                    <audio width='100%' height='auto' controls>
-                        <source src={url} type={`audio/${value.ext}`} />
-                        {ENUMS.TEXT.AUDIO_UNSUPPORTED}
-                    </audio>
-                    <div className='flex middle'>
-                        <Button {...selectProps}>{__('Select Audio')}</Button>
-                        {upload && (
-                            <Button {...deleteProps}>
-                                <Icon name='Feather.X' size={18} />
-                            </Button>
-                        )}
-                    </div>
-                </div>
-            </>
-        );
-    });
-
-    useEffect(() => {
-        editor.addEventListener('FILE-ADDED', _onFileAdded);
-
-        return () => {
-            editor.removeEventListener('FILE-ADDED', _onFileAdded);
-        };
-    });
-
-    useEffect(() => {
-        if (initialized === true) return;
-        initialize();
-    }, []);
-
-    return render();
-};
-
-export { Audio, Audio as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/File/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/File/index.js
deleted file mode 100644
index fda0d24b..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/File/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import Reactium, { __ } from 'reactium-core/sdk';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import React, { useCallback, useEffect, useState } from 'react';
-
-const File = ({ editor, ...props }) => {
-    const { cx, state = {} } = editor;
-    const { value = {} } = state;
-
-    const [upload, setUpload] = useState(false);
-    const [url, setUrl] = useState(Reactium.Media.url(value.file));
-
-    const cancelUpload = () => {
-        editor.cancel();
-        setUrl(Reactium.Media.url(value.file));
-    };
-
-    const _onFileAdded = e => {
-        const { height: maxHeight, width: maxWidth } = e.file;
-        setUpload(true);
-        setUrl(e.file.dataURL);
-    };
-
-    const render = useCallback(() => {
-        const deleteProps = {
-            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
-            color: Button.ENUMS.COLOR.DANGER,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: cancelUpload,
-            style: {
-                width: 42,
-                height: 42,
-                padding: 0,
-                marginLeft: 12,
-            },
-        };
-
-        const selectProps = {
-            appearance: Button.ENUMS.APPEARANCE.PILL,
-            color: Button.ENUMS.COLOR.PRIMARY,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: editor.browse,
-            style: {
-                width: 220,
-                marginLeft: upload ? 54 : 0,
-            },
-        };
-
-        return (
-            <>
-                <div className={cx('filename')}>{value.filename}</div>
-                <div className={cx('file')}>
-                    <a href={url} target='_blank' className={cx('file-icon')}>
-                        <Icon name='Linear.FileEmpty' />
-                    </a>
-                    <div className='flex middle'>
-                        <Button {...selectProps}>{__('Select File')}</Button>
-                        {upload && (
-                            <Button {...deleteProps}>
-                                <Icon name='Feather.X' size={18} />
-                            </Button>
-                        )}
-                    </div>
-                </div>
-            </>
-        );
-    });
-
-    useEffect(() => {
-        editor.addEventListener('FILE-ADDED', _onFileAdded);
-
-        return () => {
-            editor.removeEventListener('FILE-ADDED', _onFileAdded);
-        };
-    });
-
-    return render();
-};
-
-export { File, File as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Image/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Image/index.js
deleted file mode 100644
index b7112fb7..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Image/index.js
+++ /dev/null
@@ -1,105 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import React, { useCallback, useEffect, useState } from 'react';
-
-const MediaImage = ({ editor, ...props }) => {
-    const { cx, state = {} } = editor;
-    const { value = {} } = state;
-
-    const [initialized, setInitialized] = useState(false);
-    const [style, setStyle] = useState({});
-    const [upload, setUpload] = useState(false);
-    const [url, setUrl] = useState();
-
-    const cancelUpload = () => {
-        editor.cancel();
-        initialize();
-    };
-
-    const _onFileAdded = e => {
-        const { height: maxHeight, width: maxWidth } = e.file;
-        setUpload(true);
-        setStyle({ maxHeight, maxWidth });
-        setUrl(e.file.dataURL);
-    };
-
-    const initialize = () => {
-        if (upload !== false) setUpload(false);
-        if (initialized !== true) setInitialized(true);
-
-        const imageURL = Reactium.Media.url(value.file);
-
-        const Img = new Image();
-
-        Img.onload = e => {
-            const { height: maxHeight, width: maxWidth } = Img;
-            setStyle({ maxHeight, maxWidth });
-            setUrl(imageURL);
-        };
-
-        Img.src = imageURL;
-    };
-
-    const render = useCallback(() => {
-        const deleteProps = {
-            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
-            color: Button.ENUMS.COLOR.DANGER,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: cancelUpload,
-            style: {
-                width: 42,
-                height: 42,
-                padding: 0,
-                marginLeft: 12,
-            },
-        };
-
-        const selectProps = {
-            appearance: Button.ENUMS.APPEARANCE.PILL,
-            color: Button.ENUMS.COLOR.PRIMARY,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: editor.browse,
-            style: {
-                width: 220,
-                marginLeft: upload ? 54 : 0,
-            },
-        };
-
-        return !url ? null : (
-            <>
-                <div className={cx('filename')}>{value.filename}</div>
-                <div className={cx('image')}>
-                    <img src={url} style={style} />
-                    <div className='flex middle'>
-                        <Button {...selectProps}>{__('Select Image')}</Button>
-                        {upload && (
-                            <Button {...deleteProps}>
-                                <Icon name='Feather.X' size={18} />
-                            </Button>
-                        )}
-                    </div>
-                </div>
-            </>
-        );
-    });
-
-    useEffect(() => {
-        editor.addEventListener('FILE-ADDED', _onFileAdded);
-
-        return () => {
-            editor.removeEventListener('FILE-ADDED', _onFileAdded);
-        };
-    });
-
-    useEffect(() => {
-        if (initialized === true) return;
-        initialize();
-    }, []);
-
-    return render();
-};
-
-export { MediaImage as Image, MediaImage as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js
deleted file mode 100644
index 200141a2..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js
+++ /dev/null
@@ -1,112 +0,0 @@
-import op from 'object-path';
-import copy from 'copy-to-clipboard';
-import React, { useRef } from 'react';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import Reactium, { __, useHandle } from 'reactium-core/sdk';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-
-const ImageCrop = props => {
-    const { editor, field = 'thumbnail', label, options, tooltip } = props;
-
-    const imageRef = useRef();
-
-    const tools = useHandle('AdminTools');
-
-    const Toast = op.get(tools, 'Toast');
-
-    const { setState, state = {} } = editor;
-
-    const onCopyClick = () => {
-        const image = op.get(state.value, field);
-        const url = op.get(
-            state.value,
-            'redirect.url',
-            Reactium.Media.url(image),
-        );
-
-        if (url) {
-            copy(url);
-            Toast.show({
-                icon: 'Linear.ClipboardCheck',
-                message: ENUMS.TEXT.COPIED_TO_CLIPBOARD,
-                type: Toast.TYPE.INFO,
-            });
-        }
-    };
-
-    const onRefreshClick = () => {
-        const file = op.get(state.value, 'file');
-        const objectId = op.get(state.value, 'objectId');
-        const url = op.get(
-            state.value,
-            'redirect.url',
-            Reactium.Media.url(file),
-        );
-
-        if (url && objectId) {
-            return Reactium.Media.crop({ field, objectId, options, url }).then(
-                results => {
-                    const value = { ...state.value };
-                    op.set(value, field, results);
-                    setState({ value });
-
-                    Toast.show({
-                        icon: 'Feather.Image',
-                        message: __('Image updated!'),
-                        type: Toast.TYPE.INFO,
-                    });
-                },
-            );
-        }
-    };
-
-    const render = () => {
-        const image = op.get(state.value, field);
-        const url = image
-            ? Reactium.Media.url(image)
-            : op.get(state.value, 'redirect.url');
-
-        return !url ? null : (
-            <Dialog
-                header={{ title: label }}
-                pref={`admin.dialog.media.editor.${field}`}>
-                <div className='admin-image-crop'>
-                    {url && <img src={url} ref={imageRef} />}
-                    {!url && (
-                        <Icon
-                            name='Feather.Image'
-                            size={56}
-                            className='placeholder'
-                        />
-                    )}
-                    <Button
-                        appearance='pill'
-                        className='refresh'
-                        color='default'
-                        onClick={() => onRefreshClick()}
-                        data-tooltip={tooltip.generate}
-                        size='sm'
-                        type='button'>
-                        {__('Generate')}
-                    </Button>
-                    <div className='actions'>
-                        <Button
-                            color='default'
-                            type='button'
-                            appearance='circle'
-                            onClick={() => onCopyClick()}
-                            data-vertical-align='middle'
-                            data-align='left'
-                            data-tooltip={tooltip.copy}>
-                            <Icon name='Linear.ClipboardDown' size={20} />
-                        </Button>
-                    </div>
-                </div>
-            </Dialog>
-        );
-    };
-
-    return render();
-};
-
-export { ImageCrop, ImageCrop as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Meta/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Meta/index.js
deleted file mode 100644
index 71b224b7..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Meta/index.js
+++ /dev/null
@@ -1,222 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import slugify from 'slugify';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import Reactium, { __ } from 'reactium-core/sdk';
-import React, { forwardRef, useEffect, useRef } from 'react';
-import { Dialog, TagsInput } from '@atomic-reactor/reactium-ui';
-
-const noop = () => {};
-
-const Meta = ({ editor, ...props }) => {
-    const tagsRef = useRef();
-
-    const { directories, state = {} } = editor;
-
-    const applyWatch = fields => {
-        fields.push('value.directory', 'value.url', 'value.filename');
-    };
-
-    const error = op.get(state, 'error', {});
-
-    const file = op.get(state, 'file');
-
-    const focus = () => {
-        if (typeof window === 'undefined') return;
-
-        const focus = op.get(error, 'focus');
-        if (!focus) return;
-
-        const elms = document.getElementsByName(focus);
-        if (elms.length < 1) return;
-
-        const elm = elms[0];
-        if (!elm) return;
-
-        elm.focus();
-    };
-
-    const formCls = field => {
-        const errorFields = op.get(error, 'fields', []);
-        return cn('form-group', { error: errorFields.includes(field) });
-    };
-
-    const ErrorMsg = ({ field }) => {
-        const errorFields = op.get(error, 'fields', []);
-        const idx = errorFields.indexOf(field);
-        return idx > -1 ? (
-            <small>{String(error.errors[idx]).replace('meta.', '')}</small>
-        ) : null;
-    };
-
-    const _onChange = ({ changed }) => {
-        // Update url on directory change
-        if (op.get(changed, 'value.directory')) {
-            const { current, previous } = changed.value.directory;
-            let { url } = state.value;
-
-            url = String(url)
-                .split(`/${previous}/`)
-                .join(`/${current}/`);
-
-            const value = { ...state.value, url };
-
-            editor.setState({ value });
-        }
-
-        // Update filename on url change
-        if (op.get(changed, 'value.url')) {
-            const { current } = changed.value.url;
-            let { filename } = state.value;
-            const newFilename = current.split('/').pop();
-            if (filename === newFilename) return;
-
-            const value = { ...state.value, filename: newFilename };
-            editor.setState({ value });
-        }
-
-        // Update url on filename change
-        if (op.get(changed, 'value.filename')) {
-            const { current } = changed.value.filename;
-            let { url } = state.value;
-
-            const arr = url.split('/');
-            arr.pop();
-
-            url = arr.join('/') + '/' + current;
-            if (state.value === url) return;
-
-            const value = { ...state.value, url };
-            editor.setState({ value });
-        }
-    };
-
-    const render = () => (
-        <>
-            <Dialog
-                header={{ title: __('File Info') }}
-                pref='admin.dialog.media.editor.info'>
-                <div className='p-xs-20'>
-                    <input type='hidden' name='filename' />
-                    <input type='hidden' name='objectId' />
-                    <input type='hidden' name='meta.size' />
-                    <Directory
-                        data={directories}
-                        label={__('Directory:')}
-                        name='directory'
-                    />
-                    <div className={formCls('url')}>
-                        <label>
-                            {__('URL')}:
-                            <input
-                                autoComplete='off'
-                                name='url'
-                                spellCheck={false}
-                                type='text'
-                            />
-                        </label>
-                        <ErrorMsg field='url' />
-                    </div>
-                </div>
-            </Dialog>
-            <Dialog
-                header={{ title: __('Meta') }}
-                pref='admin.dialog.media.editor.meta'>
-                <div className='p-xs-20'>
-                    <div className={formCls('meta.title')}>
-                        <label>
-                            {__('Title')}:
-                            <input
-                                autoComplete='off'
-                                name='meta.title'
-                                type='text'
-                            />
-                        </label>
-                        <ErrorMsg field='meta.title' />
-                    </div>
-                    <div className={formCls('meta.description')}>
-                        <label>
-                            {__('Description')}:
-                            <textarea
-                                autoComplete='off'
-                                name='meta.description'
-                                rows={4}
-                            />
-                        </label>
-                        <ErrorMsg field='meta.description' />
-                    </div>
-                    <Tags editor={editor} />
-                </div>
-            </Dialog>
-        </>
-    );
-
-    useEffect(() => {
-        Reactium.Hook.register('media-watch-fields', applyWatch);
-        editor.addEventListener('DIRTY', _onChange);
-
-        return () => {
-            editor.removeEventListener('DIRTY', _onChange);
-            Reactium.Hook.unregister('media-watch-fields', applyWatch);
-        };
-    });
-
-    return render();
-};
-
-const Directory = ({ data, label, name }) => (
-    <div className='form-group'>
-        <label>
-            {label}
-            <select name={name}>
-                {data &&
-                    data.map((item, i) => (
-                        <option key={`${name}-${i}`}>{item}</option>
-                    ))}
-            </select>
-        </label>
-    </div>
-);
-
-const Tags = ({ editor }) => {
-    const ref = useRef();
-    const { setState = noop, state = {} } = editor;
-    const { value = {} } = state;
-
-    const onChange = e => {
-        const newValue = { ...value };
-        op.set(newValue, 'meta.tags', e.value);
-        setState(newValue);
-    };
-
-    const getTags = () => {
-        let tags = op.get(value, 'meta.tags') || [];
-        if (typeof tags === 'string') {
-            if (String(tags).startsWith('[')) {
-                tags = JSON.parse(tags);
-            } else {
-                tags = tags.split(',');
-            }
-        }
-
-        return tags;
-    };
-
-    return (
-        <>
-            <div className='form-group mb-xs-0'>
-                <label>{__('Tags')}:</label>
-            </div>
-            <TagsInput
-                ref={ref}
-                placeholder={__('Add tag')}
-                name='meta.tags'
-                onChange={e => onChange(e)}
-                value={getTags()}
-            />
-        </>
-    );
-};
-
-export { Meta, Meta as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js
deleted file mode 100644
index 7381a876..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js
+++ /dev/null
@@ -1,491 +0,0 @@
-import axios from 'axios';
-import op from 'object-path';
-import Pick from './scene/Picker';
-import Thumb from './scene/Thumb';
-import Config from './scene/Config';
-import Delete from './scene/Delete';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import Reactium, {
-    __,
-    useHandle,
-    useHookComponent,
-    useRegisterHandle,
-} from 'reactium-core/sdk';
-
-import React, { useEffect, useRef, useState } from 'react';
-
-import { Dialog, Prefs, Scene, Spinner } from '@atomic-reactor/reactium-ui';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: ThumbnailSelect
- * -----------------------------------------------------------------------------
- */
-
-const ThumbnailSelect = initialProps => {
-    const { editor, id, property, ...props } = initialProps;
-
-    // TODO: Create settings option for these values
-    const DEFAULT_OPTIONS = {
-        property,
-        width: 200,
-        height: 200,
-        sizes: {
-            custom: { label: __('custom') },
-            default: { width: 200, height: 200, label: __('default') },
-            xs: { width: 48, height: 48, label: __('x-small') },
-            sm: { width: 72, height: 72, label: __('small') },
-            md: { width: 128, height: 128, label: __('medium') },
-            lg: { width: 240, height: 240, label: __('large') },
-            xl: { width: 400, height: 400, label: __('x-large') },
-        },
-    };
-
-    const [picker, setPicker] = useState();
-
-    // MediaEditor Handle
-    const { data, setState, state } = editor;
-
-    // Internal state
-    const [active, setActive] = useState();
-
-    const [expanded, setExpanded] = useState(
-        Prefs.get(`admin.dialog.media.editor.${property}.expanded`),
-    );
-    const [options, setNewOptions] = useState(DEFAULT_OPTIONS);
-
-    const [size, setSize] = useState('default');
-
-    const [status, setStatus] = useState(ENUMS.STATUS.READY);
-
-    const [thumbnail, setThumbnail] = useState(
-        op.get(state, ['value', property]),
-    );
-
-    const [thumbrendered, setRendered] = useState(false);
-
-    const [title, setTitle] = useState(props.title);
-
-    const elementRef = useRef({
-        image: null,
-        input: {},
-        scene: null,
-    });
-
-    const refs = elementRef.current;
-
-    const tools = useHandle('AdminTools');
-
-    const Toast = op.get(tools, 'Toast');
-
-    const Modal = op.get(tools, 'Modal');
-
-    const MediaPicker = useHookComponent('MediaPicker');
-
-    const deleteThumbnail = () => {
-        Reactium.Cloud.run('media-delete-thumbnail', {
-            objectId: op.get(state, 'value.objectId'),
-            property,
-        });
-
-        const value = { ...state.value };
-        op.del(value, property);
-
-        setRendered(false);
-        setState({ value });
-        setThumbnail(undefined);
-        navTo('pick', 'right');
-    };
-
-    const generateThumb = file =>
-        new Promise(async resolve => {
-            setRendered(false);
-            setStatus(ENUMS.STATUS.PROCESSING);
-
-            const isFile = file.constructor === File;
-            const reader = new FileReader();
-            const readImage = async (ext, data) => {
-                // Render the temp thumbnail
-                console.log(2);
-                renderThumbnail(data);
-
-                // Send to parse and update the object
-                const params = {
-                    ext,
-                    field: op.get(options, 'property'),
-                    objectId: op.get(state, 'value.objectId'),
-                    options: {
-                        width: op.get(options, 'width'),
-                        height: op.get(options, 'height'),
-                    },
-                    url: data,
-                };
-
-                const thm = await Reactium.Cloud.run(
-                    'media-image-crop',
-                    params,
-                );
-
-                if (!thm) {
-                    Toast.show({
-                        icon: 'Feather.AlertOctagon',
-                        message: `Unable to save ${String(
-                            title,
-                        ).toLowerCase()}`,
-                        type: Toast.TYPE.ERROR,
-                    });
-
-                    setStatus(ENUMS.STATUS.READY);
-                    navTo('pick', 'right');
-                    return;
-                }
-
-                Toast.show({
-                    icon: 'Feather.Check',
-                    message: `${__('Updated')} ${String(title).toLowerCase()}!`,
-                    type: Toast.TYPE.INFO,
-                });
-
-                // Preload the image so there's no blink
-                const img = new Image();
-                img.onload = () => {
-                    setThumbnail(thm);
-                    resolve(thm);
-                };
-
-                img.src = Reactium.Media.url(thm);
-            };
-
-            if (isFile) {
-                const ext = file.name.split('.').pop();
-                reader.onload = () => readImage(ext, reader.result);
-                reader.readAsDataURL(file);
-            } else {
-                const ext = op.get(file, 'ext');
-                const url = Reactium.Media.url(file.file);
-                const fetch = await axios.get(url, {
-                    responseType: 'blob',
-                });
-
-                const filedata = op.get(fetch, 'data');
-                reader.onload = () => readImage(ext, reader.result);
-                reader.readAsDataURL(filedata);
-            }
-        });
-
-    const navTo = (panel, direction = 'left', animationSpeed) => {
-        refs.scene.navTo({ animationSpeed, panel, direction });
-    };
-
-    const renderThumbnail = (dataURL, imageElement) => {
-        let width = op.get(imageElement, 'width');
-        let height = op.get(imageElement, 'height');
-
-        const { image } = refs.canvas;
-
-        image.style.opacity = 0;
-        image.style.backgroundImage = 'none';
-        image.style.width = '100%';
-        image.style.height = '100%';
-
-        // navigate to thumbnail
-        navTo('thumb');
-
-        const {
-            width: containerWidth,
-            height: containerHeight,
-        } = image.getBoundingClientRect();
-
-        if (width && height) setOptions({ width, height });
-
-        width =
-            width ||
-            op.get(
-                options,
-                'width',
-                op.get(options, 'sizes.default.width', 200),
-            );
-
-        height =
-            height ||
-            op.get(
-                options,
-                'height',
-                op.get(options, 'sizes.default.height', 200),
-            );
-
-        image.style.backgroundImage = `url('${dataURL}')`;
-        image.style.width = `${width}px`;
-        image.style.height = `${height}px`;
-
-        if (width > containerWidth) {
-            const r = containerWidth / width;
-            const h = height * r;
-            image.style.width = `${containerWidth}px`;
-            image.style.height = `${h}px`;
-        }
-
-        if (height > containerHeight) {
-            const r = containerHeight / height;
-            const w = width * r;
-            image.style.height = `${containerHeight}px`;
-            image.style.width = `${w}px`;
-        }
-
-        image.style.opacity = 1;
-        setRendered(true);
-    };
-
-    const setOptions = newOptions =>
-        setNewOptions({
-            ...options,
-            ...newOptions,
-        });
-
-    const setRef = (elm, ref) => op.set(refs, ref, elm);
-
-    const showPicker = () => {
-        Modal.show(
-            <MediaPicker
-                confirm
-                dismissable
-                filter='image'
-                ref={elm => setPicker(elm)}
-                title={__('Select Image')}
-            />,
-        );
-    };
-
-    const onCollapse = () => {
-        if (active !== 'delete') return;
-        navTo('thumb', 'right', 0.001);
-    };
-
-    const onExpand = () => {
-        if (expanded) return;
-
-        const image = op.get(refs, 'canvas.image');
-        image.style.width = 'auto';
-        image.style.height = '100%';
-
-        onThumbnailUpdate();
-        setExpanded(true);
-    };
-
-    const onFileSelect = e => {
-        const files = e.target.files;
-        if (files.length < 1) return;
-        generateThumb(files[0]).then(() => setStatus(ENUMS.STATUS.READY));
-    };
-
-    const onMediaDismiss = () => {
-        Modal.dismiss();
-    };
-
-    const onMediaSelect = e => {
-        const files = Object.values(e.target.value);
-        if (files.length < 1) return;
-        generateThumb(files[0]).then(() => setStatus(ENUMS.STATUS.READY));
-    };
-
-    const onOptionChange = e => {
-        if (!e.target.dataset.key) return;
-        const value = e.target.value;
-        const key = e.target.dataset.key;
-        setOptions({ [key]: value });
-    };
-
-    const onSceneChange = ({ active: current, previous }) => {
-        switch (previous) {
-            case 'thumb':
-                refs.input.file.type = 'text';
-                refs.input.file.type = 'file';
-                break;
-
-            case 'delete':
-                setTitle(props.title);
-                break;
-        }
-
-        switch (current) {
-            case 'delete':
-                setTitle(`${__('Delete')} ${title}`);
-                break;
-        }
-
-        setActive(current);
-    };
-
-    const onSidebarToggle = e => {
-        const { expanded } = e;
-        if (expanded !== true) return;
-        onThumbnailUpdate(true);
-    };
-
-    const onSizeChange = e => setSize(e.item.value);
-
-    const onThumbnailUpdate = (override = false) => {
-        const image = op.get(refs, 'canvas.image');
-        if (!override && (!image || !thumbnail || thumbrendered)) return;
-
-        image.style.opacity = 0;
-        const thumbURL = Reactium.Media.url(thumbnail);
-        const img = new Image();
-        img.onload = () => {
-            const { sizes } = options;
-            setSize(
-                Object.keys(sizes).reduce((sel, key) => {
-                    const item = sizes[key];
-                    const w = op.get(item, 'width');
-                    const h = op.get(item, 'height');
-
-                    if (w === img.width && h === img.height) {
-                        sel = key;
-                    }
-
-                    return sel;
-                }, 'custom'),
-            );
-
-            setOptions({ width: img.width, height: img.height });
-            renderThumbnail(thumbURL, {
-                width: img.width,
-                height: img.height,
-            });
-        };
-        img.src = thumbURL;
-    };
-
-    const handle = () => ({
-        active,
-        data,
-        deleteThumbnail,
-        id,
-        navTo,
-        onOptionChange,
-        onFileSelect,
-        onSceneChange,
-        onSizeChange,
-        options,
-        property,
-        refs,
-        setOptions,
-        setRef,
-        setSize,
-        setState,
-        setStatus,
-        setThumbnail,
-        showPicker,
-        size,
-        state,
-        status,
-        thumbnail,
-        title,
-    });
-
-    useRegisterHandle(id, handle, [
-        active,
-        options,
-        property,
-        refs,
-        size,
-        status,
-        thumbnail,
-        title,
-    ]);
-
-    // Set active
-    useEffect(() => {
-        if (active) return;
-        const current = thumbnail ? 'thumb' : 'pick';
-        setActive(current);
-    }, [active, thumbnail]);
-
-    // Set size
-    useEffect(() => {
-        const { sizes } = options;
-        const { width, height } = sizes[size];
-        setOptions({ width, height });
-    }, [size]);
-
-    // Thumbnail hide if collapsed
-    useEffect(() => {
-        const image = op.get(refs, 'canvas.image');
-        if (!image || expanded === true) return;
-        image.style.opacity = 0;
-    }, [expanded, op.get(refs, 'canvas.image')]);
-
-    // Thumbnail update
-    useEffect(() => {
-        if (expanded === false || active !== 'thumb') return;
-        onThumbnailUpdate();
-    }, [active, thumbnail]);
-
-    // Picker Ref
-    useEffect(() => {
-        if (!picker) return;
-        const listeners = [
-            [picker, 'change', onMediaSelect],
-            [picker, 'dismiss', onMediaDismiss],
-        ];
-
-        listeners.forEach(([target, event, callback]) =>
-            target.addEventListener(event, callback),
-        );
-
-        return () => {
-            listeners.forEach(([target, event, callback]) =>
-                target.removeEventListener(event, callback),
-            );
-        };
-    }, [picker]);
-
-    useEffect(() => {
-        editor.addEventListener('SIDEBAR-TOGGLED', onSidebarToggle);
-
-        return () => {
-            editor.removeEventListener('SIDEBAR-TOGGLED', onSidebarToggle);
-        };
-    });
-
-    const render = () => (
-        <Dialog
-            onCollapse={e => onCollapse(e)}
-            onExpand={e => onExpand(e)}
-            header={{ title }}
-            pref={`admin.dialog.media.editor.${property}`}>
-            <input
-                hidden
-                onChange={e => onFileSelect(e)}
-                ref={elm => setRef(elm, 'input.file')}
-                type='file'
-                visibility='hidden'
-            />
-            <Scene
-                active={active}
-                width='100%'
-                height={280}
-                onChange={e => onSceneChange(e)}
-                ref={elm => setRef(elm, 'scene')}>
-                <Config {...handle()} id='config' />
-                <Pick {...handle()} id='pick' />
-                <Thumb {...handle()} id='thumb' />
-                <Delete {...handle()} id='delete' />
-            </Scene>
-            {status === ENUMS.STATUS.PROCESSING && (
-                <div className='admin-thumbnail-select-blocker'>
-                    <Spinner />
-                </div>
-            )}
-        </Dialog>
-    );
-
-    return render();
-};
-
-ThumbnailSelect.defaultProps = {
-    property: 'thumbnail',
-    title: __('Thumbnail'),
-};
-
-export { ThumbnailSelect, ThumbnailSelect as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js
deleted file mode 100644
index 389f3dce..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react';
-import op from 'object-path';
-import { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-export default ({ deleteThumbnail, id, navTo, state, ...handle }) => {
-    const render = () => {
-        return (
-            <div id={id} className='admin-thumbnail-select'>
-                <div className='delete-scene'>
-                    <p>{__('Are you sure?')}</p>
-                    <div className='flex'>
-                        <Button
-                            className='mx-xs-12'
-                            color='danger'
-                            size='sm'
-                            style={{ width: 80 }}
-                            onClick={() => navTo('thumb', 'right')}>
-                            {__('No')}
-                        </Button>
-                        <Button
-                            className='mx-xs-12'
-                            color='primary'
-                            size='sm'
-                            style={{ width: 80 }}
-                            onClick={() => deleteThumbnail()}>
-                            {__('Yes')}
-                        </Button>
-                    </div>
-                </div>
-            </div>
-        );
-    };
-
-    return render();
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Video/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Video/index.js
deleted file mode 100644
index b66505b8..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/Video/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import ReactPlayer from 'react-player';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import React, { useCallback, useEffect, useState } from 'react';
-
-const Video = ({ editor }) => {
-    const { cx, state = {} } = editor;
-    const { value = {} } = state;
-
-    const [upload, setUpload] = useState(false);
-    const [url, setUrl] = useState(Reactium.Media.url(value.file));
-
-    const cancelUpload = () => {
-        editor.cancel();
-        setUrl(Reactium.Media.url(value.file));
-    };
-
-    const _onFileAdded = e => {
-        setUpload(true);
-        setUrl(e.file.dataURL);
-    };
-
-    const render = useCallback(() => {
-        const deleteProps = {
-            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
-            color: Button.ENUMS.COLOR.DANGER,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: cancelUpload,
-            style: {
-                width: 42,
-                height: 42,
-                padding: 0,
-                marginLeft: 12,
-            },
-        };
-
-        const selectProps = {
-            appearance: Button.ENUMS.APPEARANCE.PILL,
-            color: Button.ENUMS.COLOR.PRIMARY,
-            size: Button.ENUMS.SIZE.MD,
-            onClick: editor.browse,
-            style: {
-                width: 220,
-                marginLeft: upload ? 54 : 0,
-            },
-        };
-
-        return (
-            <>
-                <div className={cx('filename')}>{value.filename}</div>
-                <div className={cx('video')}>
-                    <ReactPlayer
-                        controls
-                        url={url}
-                        width='100%'
-                        height='100%'
-                    />
-                    <div className='flex middle'>
-                        <Button {...selectProps}>{__('Select Video')}</Button>
-                        {upload && (
-                            <Button {...deleteProps}>
-                                <Icon name='Feather.X' size={18} />
-                            </Button>
-                        )}
-                    </div>
-                </div>
-            </>
-        );
-    });
-
-    useEffect(() => {
-        editor.addEventListener('FILE-ADDED', _onFileAdded);
-
-        return () => {
-            editor.removeEventListener('FILE-ADDED', _onFileAdded);
-        };
-    }, []);
-
-    return render();
-};
-
-export { Video, Video as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/index.js
deleted file mode 100644
index 93c668c4..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/index.js
+++ /dev/null
@@ -1,837 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import ENUMS from '../enums';
-import slugify from 'slugify';
-import Sidebar from './Sidebar';
-import useDirectories from '../Directory/useDirectories';
-
-import React, { useCallback, useEffect, useRef, useState } from 'react';
-
-import Reactium, {
-    __,
-    useAsyncEffect,
-    useDerivedState,
-    useEventHandle,
-    useHookComponent,
-    useRegisterHandle,
-    Zone,
-} from 'reactium-core/sdk';
-
-import {
-    Alert,
-    Dropzone,
-    EventForm,
-    Icon,
-    Spinner,
-    Toast,
-} from '@atomic-reactor/reactium-ui';
-
-const noop = () => {};
-
-ENUMS.DEBUG = false;
-
-const debug = (...args) => {
-    if (ENUMS.DEBUG === true) console.log(...args);
-};
-
-const alertDefault = {
-    color: Alert.ENUMS.COLOR.INFO,
-    icon: 'Feather.Flag',
-};
-
-export class MediaEvent extends CustomEvent {
-    constructor(type, data) {
-        super(type, data);
-
-        op.del(data, 'type');
-        op.del(data, 'target');
-
-        Object.entries(data).forEach(([key, value]) => {
-            if (!this[key]) {
-                try {
-                    this[key] = value;
-                } catch (err) {}
-            } else {
-                key = `__${key}`;
-                this[key] = value;
-            }
-        });
-    }
-}
-
-const Editor = ({
-    className,
-    dropzoneProps,
-    namespace,
-    onError,
-    onFail,
-    onLoad,
-    onStatus,
-    onSubmit,
-    onSuccess,
-    onValidate,
-    params,
-    ...props
-}) => {
-    // Hooks and External Components
-    const Helmet = useHookComponent('Helmet');
-
-    const directories = useDirectories();
-
-    // Refs
-    const alertRef = useRef();
-    const dropzoneRef = useRef();
-    const formRef = useRef();
-    const persist = useRef({});
-
-    // States
-    const defaultState = {
-        ...params,
-        clean: true,
-        dirty: false,
-        initialized: false,
-        status: ENUMS.STATUS.INIT,
-        title: op.get(props, 'title'),
-        value: {},
-    };
-
-    const [alert, setNewAlert] = useState(alertDefault);
-
-    const [errors, setNewErrors] = useState();
-
-    const [, setUpdated] = useState();
-
-    const [prevState, setPrevState] = useDerivedState({
-        ...defaultState,
-        id: null,
-    });
-
-    const [state, update] = useDerivedState({
-        ...defaultState,
-        errors: {},
-        value: {},
-        type: undefined,
-    });
-
-    // Set operations
-    const forceUpdate = () => {
-        if (unMounted()) return;
-        setUpdated(Date.now());
-    };
-
-    const setAlert = newAlert => {
-        if (unMounted()) return;
-        setNewAlert(newAlert);
-        forceUpdate(Date.now());
-    };
-
-    const setErrors = newErrors => {
-        if (unMounted()) return;
-        setNewErrors(newErrors);
-    };
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setPrevState(Object.assign(state));
-        update(newState);
-    };
-
-    // Functions
-    const browse = () => dropzoneRef.current.browseFiles();
-
-    const cancel = () => {
-        const { filename } = persist.current;
-        const value = { ...state.value, filename };
-        setState({ upload: null, value });
-    };
-
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const cname = cn(cx(), className);
-
-    const dispatch = async (eventType, event, callback) => {
-        if (unMounted()) return;
-
-        eventType = String(eventType).toUpperCase();
-
-        // passive dirty events
-        const dirtyEvents = _.pluck(Reactium.Media.DirtyEvent.list, 'id');
-        if (dirtyEvents.includes(String(eventType).toLowerCase())) {
-            if (!_.isEqual(persist.current, state.value)) {
-                setState({ dirty: event, clean: false });
-
-                // NOTE: DONOT await these dispatch calls so that they happen after the current process
-                dispatch('status', { event: 'dirty', ...event });
-                dispatch('dirty', event);
-            } else {
-                setState({ clean: event, dirty: false });
-                await dispatch('status', { event: 'clean', ...event });
-                await dispatch('clean', event);
-                return;
-            }
-        }
-
-        if (op.has(event, 'event')) {
-            op.set(event, 'event', String(event.event).toUpperCase());
-            if (eventType === 'STATUS') {
-                setState({ status: event.event });
-            }
-        }
-
-        const evt = new MediaEvent(eventType, event);
-        handle.dispatchEvent(evt);
-
-        debug(eventType, evt);
-
-        await Reactium.Hook.run(`form-user-${eventType}`, evt, handle);
-        if (unMounted()) return;
-
-        if (eventType === 'STATUS') callback = onStatus;
-        if (typeof callback === 'function') await callback(evt);
-        if (unMounted()) return;
-
-        // passive clean events
-        const scrubEvents = _.pluck(Reactium.Media.ScrubEvent.list, 'id');
-        if (scrubEvents.includes(String(eventType).toLowerCase())) {
-            setState({ clean: event, dirty: false });
-            await dispatch('status', { event: 'clean', ...event });
-            await dispatch('clean', event);
-        }
-    };
-
-    const getData = async objectId => {
-        if (unMounted()) return;
-        setState({ status: ENUMS.STATUS.LOADING, initialized: false });
-
-        if (formRef.current) formRef.current.setValue(null);
-
-        await dispatch('status', { event: ENUMS.STATUS.LOADING, objectId });
-        await dispatch(ENUMS.STATUS.LOADING, { objectId });
-
-        let value = Reactium.Media.selected
-            ? Reactium.Media.selected
-            : await Reactium.Media.retrieve(objectId);
-
-        persist.current = Object.assign(value);
-
-        Reactium.Media.selected = null;
-
-        if (unMounted()) return;
-
-        setState({
-            value,
-            status: ENUMS.STATUS.LOADED,
-            type: String(op.get(value, 'type')).toLowerCase(),
-        });
-
-        await dispatch('status', {
-            event: ENUMS.STATUS.LOADED,
-            objectId,
-            value,
-        });
-
-        await dispatch(ENUMS.STATUS.LOADED, { objectId, value }, onLoad);
-
-        _.defer(async () => {
-            setState({ status: ENUMS.STATUS.READY, initialized: true });
-            await dispatch('status', { event: ENUMS.STATUS.READY });
-            await dispatch('ready', { value });
-        });
-    };
-
-    const _initialize = () => {
-        if (state.status === ENUMS.STATUS.INIT) {
-            getData(state.id);
-        }
-
-        return () => {};
-    };
-
-    const initialize = _.once(_initialize);
-
-    const isBusy = () => {
-        const statuses = [
-            ENUMS.STATUS.INIT,
-            ENUMS.STATUS.LOADING,
-            ENUMS.STATUS.SAVING,
-            ENUMS.STATUS.VALIDATING,
-            ENUMS.STATUS.VALIDATED,
-        ];
-
-        return statuses.includes(String(state.status).toUpperCase());
-    };
-
-    const isClean = () => !isDirty();
-
-    const isDirty = () => state.dirty !== false;
-
-    const isMounted = () => !unMounted();
-
-    const parseErrorMessage = (str, replacers = {}) => {
-        Object.entries(replacers).forEach(([key, value]) => {
-            str = str.split(key).join(value);
-        });
-
-        return str;
-    };
-
-    const save = async value => {
-        const upload = op.get(state, 'upload');
-        if (upload) {
-            op.set(value, 'file', upload);
-        } else {
-            op.del(value, 'file');
-        }
-
-        // Clean up value object:
-        [
-            'capabilities',
-            'createdAt',
-            'fetched',
-            'type',
-            'uuid',
-            'updateAt',
-            'upload',
-            'user',
-        ].forEach(param => op.del(value, param));
-
-        setAlert(alertDefault);
-        setErrors(undefined);
-
-        await dispatch('status', { event: ENUMS.STATUS.VALIDATED, value });
-        await dispatch(ENUMS.STATUS.VALIDATED, { value });
-
-        await dispatch('status', { event: ENUMS.STATUS.SAVING, value });
-        await dispatch(ENUMS.STATUS.SAVING, { value }, onSubmit);
-
-        await Reactium.Hook.run('media-submit', value);
-
-        return Reactium.Media.update(value)
-            .then(async response => {
-                if (_.isError(response)) {
-                    return Promise.reject(response);
-                } else {
-                    return _onSuccess({ media: response });
-                }
-            })
-            .catch(error => _onFail({ error, value }));
-    };
-
-    const saveHotkey = e => {
-        if (e) e.preventDefault();
-        submit();
-    };
-
-    const submit = () => {
-        if (unMounted() || isBusy()) return;
-        formRef.current.submit();
-    };
-
-    const unMounted = () => {
-        if (!formRef.current) return true;
-        if (!formRef.current.form) return true;
-
-        return false;
-    };
-
-    const _onError = async context => {
-        const { error } = context;
-        const errors = Object.values(error);
-
-        const alertObj = {
-            message: <ErrorMessages errors={errors} editor={handle} />,
-            icon: 'Feather.AlertOctagon',
-            color: Alert.ENUMS.COLOR.DANGER,
-        };
-
-        if (isMounted()) {
-            setErrors(errors);
-            setAlert(alertObj);
-        }
-
-        _.defer(async () => {
-            await dispatch('status', { event: ENUMS.STATUS.ERROR, error });
-            await dispatch(ENUMS.STATUS.ERROR, { error }, onError);
-        });
-
-        return context;
-    };
-
-    const _onFail = async e => {
-        const { error, value } = e;
-        if (error) {
-            const alertObj = {
-                color: Alert.ENUMS.COLOR.DANGER,
-                message: (
-                    <ul className={cx('errors')}>
-                        <li>{op.get(error, 'message')}</li>
-                    </ul>
-                ),
-                icon: 'Feather.AlertOctagon',
-            };
-
-            setAlert(alertObj);
-        }
-
-        await dispatch('status', {
-            event: ENUMS.STATUS.FAILED,
-            error,
-            value,
-        });
-        await dispatch(ENUMS.STATUS.FAILED, { error, value }, onFail);
-
-        let message = __('Unable to save %filename');
-        message = String(message).replace(
-            /\%filename/gi,
-            op.get(value, 'filename', 'file'),
-        );
-
-        Toast.show({
-            icon: 'Feather.AlertOctagon',
-            message,
-            type: Toast.TYPE.ERROR,
-        });
-
-        return Promise.resolve(e);
-    };
-
-    const _onFileAdded = async e => {
-        // Already processing an upload?
-        if (state.status === ENUMS.STATUS.PROCESSING) {
-            Toast.show({
-                type: Toast.TYPE.ERROR,
-                icon: 'Feather.AlertOctagon',
-                message: 'Upload in progress',
-            });
-
-            return;
-        }
-
-        const value = { ...state.value };
-
-        // Get the added file
-        const file = e.added[0];
-
-        await dispatch('status', { event: 'before-file-added', file, value });
-        await dispatch('before-file-added', { file, value });
-
-        // Check file size
-        if (file.size > ENUMS.MAX_SIZE) {
-            const error = {
-                color: Alert.ENUMS.COLOR.DANGER,
-                icon: 'Feather.AlertOctagon',
-                message: `File exceeds the max file size of ${ENUMS.MAX_SIZE /
-                    1048576}mb`,
-            };
-
-            setAlert(error);
-
-            await dispatch('status', {
-                error,
-                detail: e,
-                value,
-                event: 'file-error',
-            });
-            await dispatch('file-error', { error, detail: e, value });
-
-            return;
-        }
-
-        // Check file type
-        const { type } = value;
-        const ext = String(
-            String(file.name)
-                .split('.')
-                .pop(),
-        ).toUpperCase();
-
-        if (!ENUMS.TYPE[type].includes(ext)) {
-            const error = {
-                color: Alert.ENUMS.COLOR.DANGER,
-                icon: 'Feather.AlertOctagon',
-                message: `Invalid ${type} file type ${ext}`,
-            };
-
-            setAlert(error);
-
-            await dispatch('status', {
-                error,
-                detail: e,
-                value,
-                event: 'file-error',
-            });
-            await dispatch('file-error', { error, detail: e, value });
-
-            return;
-        }
-
-        // Read file
-        const reader = new FileReader();
-        reader.onload = async () => {
-            op.set(value, 'filename', String(slugify(file.name)).toLowerCase());
-            op.set(value, 'meta.size', file.size);
-            op.set(value, 'ext', ext);
-
-            await dispatch('status', { event: 'file-added', file, value });
-            await dispatch('file-added', { file, value });
-
-            dropzoneRef.current.dropzone.removeAllFiles();
-
-            setState({
-                upload: file,
-                value,
-            });
-        };
-
-        reader.readAsText(file.slice(0, 4));
-    };
-
-    const _onFileError = e => {
-        let { message } = e;
-        message = String(message)
-            .toLowerCase()
-            .includes('file is too big')
-            ? `File exceeds the max file size of ${ENUMS.MAX_SIZE / 1048576}mb`
-            : message;
-
-        const error = {
-            color: Alert.ENUMS.COLOR.DANGER,
-            icon: 'Feather.AlertOctagon',
-            message,
-        };
-
-        setAlert(error);
-
-        dispatch('status', { detail: e, event: 'file-error', error });
-        dispatch('file-error', { error, event: e });
-    };
-
-    const _onFormChange = e => {
-        if (state.status === ENUMS.STATUS.LOADED) return;
-
-        const { value: currentValue } = state;
-        const { value: formValue } = e;
-
-        if (_.isEqual(currentValue, formValue)) return;
-        const value = { ...currentValue, ...formValue };
-        setState({ value });
-    };
-
-    const _onFormSubmit = e => {
-        const value = Object.assign(e.value);
-        return save(value);
-    };
-
-    const _onSuccess = async value => {
-        let message = __('Saved %filename!');
-        message = message.replace(/\%filename/gi, value.filename);
-
-        persist.current = value;
-
-        Toast.show({
-            icon: 'Feather.Check',
-            message,
-            type: Toast.TYPE.INFO,
-        });
-
-        await dispatch('status', {
-            event: ENUMS.STATUS.SAVED,
-            value,
-        });
-
-        await dispatch(ENUMS.STATUS.SAVED, { value }, onSuccess);
-
-        setState({ value, upload: undefined });
-
-        return Promise.resolve(value);
-    };
-
-    const _onValidate = async e => {
-        const { value, ...context } = e;
-
-        await dispatch('status', {
-            event: ENUMS.STATUS.VALIDATING,
-            context,
-            value,
-        });
-        await dispatch(ENUMS.STATUS.VALIDATING, { context, value }, onValidate);
-
-        await Reactium.Hook.run('media-validate', { context, value });
-
-        if (context.valid !== true) _onError(context);
-
-        return { ...context, value };
-    };
-
-    const _onWorkerMessage = async (...args) => {
-        const props = args[0];
-
-        const { type, ...e } = props;
-        if (type !== 'status') return;
-
-        const { params } = e;
-        const progress = op.get(params, 'progress');
-        const result = op.get(params, 'result');
-        const status = op.get(params, 'status');
-
-        await dispatch('status', { event: status, progress });
-        await dispatch(status, { progress });
-
-        if (status === ENUMS.STATUS.COMPLETE) {
-            await _onSuccess(result);
-        }
-    };
-
-    const _handle = () => ({
-        ...params,
-        refs: {
-            alertRef,
-            dropzoneRef,
-            formRef,
-            persist,
-        },
-        alert,
-        browse,
-        cancel,
-        cx,
-        directories,
-        dispatch,
-        errors,
-        forceUpdate,
-        isBusy,
-        isClean,
-        isDirty,
-        isMounted,
-        parseErrorMessage,
-        save,
-        setAlert,
-        setErrors,
-        setState,
-        state,
-        submit,
-        unMounted,
-    });
-
-    const [handle, updateHandle] = useEventHandle(_handle());
-
-    // Initialize
-    useEffect(initialize, [state.id]);
-
-    // Save hotkey
-    useEffect(() => {
-        Reactium.Hotkeys.register('media-save', {
-            callback: saveHotkey,
-            key: 'mod+s',
-            order: Reactium.Enums.priority.lowest,
-            scope: document,
-        });
-
-        return () => {
-            Reactium.Hotkeys.unregister('media-save');
-        };
-    });
-
-    // State change
-    useAsyncEffect(
-        async mounted => {
-            if (state.initialized !== true) return;
-
-            const changed = {};
-            let watch = ['value', 'id', 'objectId', 'upload'];
-
-            await Reactium.Hook.run('media-watch-fields', watch);
-            watch = _.uniq(watch);
-            watch.sort();
-
-            const cstate = op.get(state);
-            const pstate = op.get(prevState);
-
-            watch.forEach(field => {
-                const current = op.get(cstate, field);
-                const previous = op.get(pstate, field);
-
-                if (!_.isEqual(current, previous)) {
-                    op.set(changed, field, { current, previous });
-                }
-            });
-
-            if (Object.keys(changed).length > 0) {
-                if (op.has(changed, 'id')) {
-                    getData(changed.id.current);
-                } else {
-                    if (!mounted()) return;
-                    await dispatch('status', { event: 'change', changed });
-                    await dispatch('change', { changed });
-                }
-            }
-        },
-        [Object.values(state)],
-    );
-
-    // Update on params change
-    useEffect(() => {
-        if (params.id !== handle.id) {
-            setState({
-                id: params.id,
-                initialized: false,
-                status: ENUMS.STATUS.INIT,
-            });
-            _.defer(() => {
-                if (unMounted()) return;
-                _initialize();
-            });
-        }
-    }, [params.id]);
-
-    // Update handle
-    useEffect(() => {
-        updateHandle(_handle());
-    }, [Object.values(state), Object.values(params), alert, errors]);
-
-    // Regsiter media-worker hook
-    useEffect(() => {
-        const workerHook = Reactium.Hook.register(
-            'media-worker',
-            _onWorkerMessage,
-        );
-
-        return () => {
-            Reactium.Hook.unregister(workerHook);
-        };
-    }, []);
-
-    // Register handle
-    // useImperativeHandle(ref, () => handle, [handle]);
-    useRegisterHandle('MediaEditor', () => handle, [handle]);
-
-    const render = useCallback(() => {
-        let { type } = state;
-        type = type ? String(type).toLowerCase() : type;
-
-        const title = op.get(state, 'title');
-        const metaZoneName = type ? cx('meta-' + type) : null;
-
-        return (
-            <Dropzone
-                {...dropzoneProps}
-                className={cx('dropzone')}
-                onError={e => _onFileError(e)}
-                onFileAdded={e => _onFileAdded(e)}
-                ref={dropzoneRef}>
-                <EventForm
-                    className={cname}
-                    onChange={_onFormChange}
-                    onSubmit={_onFormSubmit}
-                    ref={formRef}
-                    validator={_onValidate}
-                    value={state.value}>
-                    <Helmet>
-                        <title>{title}</title>
-                    </Helmet>
-                    {op.get(alert, 'message') && (
-                        <div className={cx('alert')}>
-                            <Alert
-                                dismissable
-                                ref={alertRef}
-                                onHide={() => setAlert(alertDefault)}
-                                color={op.get(alert, 'color')}
-                                icon={
-                                    <Icon
-                                        name={op.get(
-                                            alert,
-                                            'icon',
-                                            'Feather.AlertOctagon',
-                                        )}
-                                    />
-                                }>
-                                {op.get(alert, 'message')}
-                            </Alert>
-                        </div>
-                    )}
-                    <div className={cn(cx('main'), { visible: !!type })}>
-                        {type && <Zone zone={cx(type)} editor={handle} />}
-                    </div>
-                    {!type && <Spinner />}
-                    <Sidebar editor={handle}>
-                        <div className={cx('meta')}>
-                            <Zone zone={cx('meta')} editor={handle} />
-                            {type && (
-                                <Zone zone={metaZoneName} editor={handle} />
-                            )}
-                            <div className={cx('meta-spacer')} />
-                            <div className={cx('sidebar-footer')}>
-                                <Zone
-                                    zone={cx('sidebar-footer')}
-                                    editor={handle}
-                                />
-                            </div>
-                        </div>
-                    </Sidebar>
-                </EventForm>
-            </Dropzone>
-        );
-    });
-
-    return render();
-};
-
-const ErrorMessages = ({ editor, errors }) => {
-    const canFocus = element => typeof element.focus === 'function';
-
-    const jumpTo = (e, element) => {
-        e.preventDefault();
-        element.focus();
-    };
-
-    return (
-        <ul className={editor.cx('errors')}>
-            {errors.map(({ message, field, focus, value = '' }, i) => {
-                const replacers = {
-                    '%fieldName': field,
-                    '%value': value,
-                };
-                message = editor.parseErrorMessage(message, replacers);
-                message = !canFocus(focus) ? (
-                    message
-                ) : (
-                    <a href='#' onClick={e => jumpTo(e, focus)}>
-                        {message}
-                        <Icon
-                            name='Feather.CornerRightDown'
-                            size={12}
-                            className='ml-xs-8'
-                        />
-                    </a>
-                );
-                return <li key={`error-${i}`}>{message}</li>;
-            })}
-        </ul>
-    );
-};
-
-Editor.defaultProps = {
-    dropzoneProps: {
-        config: {
-            chunking: false,
-            clickable: true,
-            maxFiles: 1,
-            maxFilesize: ENUMS.MAX_SIZE / 1048576,
-            previewTemplate: '<span />',
-        },
-        debug: false,
-    },
-    namespace: 'admin-media-editor',
-    onChange: noop,
-    onError: noop,
-    onFail: noop,
-    onLoad: noop,
-    onReady: noop,
-    onStatus: noop,
-    onSubmit: noop,
-    onSuccess: noop,
-    onValidate: noop,
-    title: __('Media Editor'),
-};
-
-export { Editor, Editor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Empty/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Empty/index.js
deleted file mode 100644
index 313cc01b..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Empty/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import React from 'react';
-import cn from 'classnames';
-import ENUMS from '../enums';
-import domain from '../domain';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import { useHandle, useWindowSize, Zone } from 'reactium-core/sdk';
-
-const Empty = ({ Media }) => {
-    Media = Media || useHandle(domain.name);
-
-    const { breakpoint } = useWindowSize();
-
-    const onBrowseClick = e => Media.browseFiles(e);
-
-    const isMobile = () => ['xs', 'sm'].includes(breakpoint);
-
-    const mobile = isMobile();
-
-    return (
-        <div className={cn(Media.cname('library'), 'empty')}>
-            <div className='label'>
-                <Icon name='Linear.CloudUpload' size={mobile ? 96 : 128} />
-                <div className='my-xs-32 my-md-40 hide-xs show-md'>
-                    {ENUMS.TEXT.EMPTY}
-                </div>
-                <Button
-                    color='primary'
-                    appearance='pill'
-                    onClick={onBrowseClick}
-                    size={mobile ? 'md' : 'lg'}>
-                    {ENUMS.TEXT.BROWSE}
-                </Button>
-            </div>
-            <Zone zone='admin-media-empty' />
-        </div>
-    );
-};
-
-export default Empty;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Card/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Card/index.js
deleted file mode 100644
index 172c8177..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Card/index.js
+++ /dev/null
@@ -1,295 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import ReactPlayer from 'react-player';
-import { Link } from 'react-router-dom';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import Reactium, {
-    useDerivedState,
-    useEventHandle,
-    useHookComponent,
-    Zone,
-} from 'reactium-core/sdk';
-
-import React, { useEffect, useRef } from 'react';
-
-const CardActions = props => {
-    const { refs } = props;
-
-    const containerRef = useRef();
-
-    const components = Reactium.Zone.getZoneComponents('media-actions');
-
-    const [state, setNewState] = useDerivedState({
-        components,
-        expanded: false,
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setNewState(newState);
-    };
-
-    const cname = () =>
-        cn('media-actions', {
-            expanded: state.expanded,
-            collapsed: !state.expanded,
-        });
-
-    const collapse = () => setState({ expanded: false });
-
-    const expand = () => setState({ expanded: true });
-
-    const toggle = () => setState({ expanded: !state.expanded });
-
-    const unMounted = () => !containerRef.current;
-
-    const _handle = () => ({
-        collapse,
-        expand,
-        setState,
-        state,
-        toggle,
-    });
-
-    const [handle, setHandle] = useEventHandle(_handle());
-
-    // Set ref
-    useEffect(() => {
-        op.set(refs, 'actions.current', handle);
-    });
-
-    // Update handle
-    useEffect(() => {
-        const newHandle = _handle();
-        if (!_.isEqual(newHandle, handle)) {
-            setHandle(newHandle);
-        }
-    }, Object.values(state));
-
-    return _.isEmpty(state.components) ? null : (
-        <div className={cname()} ref={containerRef}>
-            <Scrollbars>
-                <div className='container'>
-                    <Zone zone='media-actions' {...props} />
-                </div>
-            </Scrollbars>
-        </div>
-    );
-};
-
-const CardInfo = ({ editURL, redirect = {}, refs, url }) => {
-    const redirectURL = op.get(redirect, 'url');
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-
-    const buttonProps = {
-        color: Button.ENUMS.COLOR.CLEAR,
-        style: {
-            borderRadius: 0,
-            flexShrink: 0,
-            width: 48,
-            padding: 0,
-        },
-    };
-
-    const toggleActions = () => {
-        if (!refs.actions.current) return;
-        refs.actions.current.toggle();
-    };
-
-    return (
-        <div className='media-info'>
-            <div className='label break-word'>
-                <a href={url} target='_blank'>
-                    {url}
-                </a>
-            </div>
-            {!redirectURL && (
-                <Button
-                    {...buttonProps}
-                    to={editURL}
-                    type={Button.ENUMS.TYPE.LINK}>
-                    <Icon name='Feather.Edit2' size={20} />
-                </Button>
-            )}
-            <Button {...buttonProps} onClick={toggleActions}>
-                <Icon name='Feather.MoreVertical' />
-            </Button>
-        </div>
-    );
-};
-
-const AudioCard = props => {
-    const { className, edgeURL, ext, poster, refs, type } = props;
-
-    const style = poster && {
-        backgroundImage: `url('${poster}')`,
-    };
-
-    return (
-        <div
-            className={className}
-            onMouseLeave={() => refs.actions.current.collapse()}>
-            <div>
-                <div className='media-preview' style={style}>
-                    <audio width='100%' height='100%' controls>
-                        {!poster && <MediaIcon type={type} />}
-                        <source src={edgeURL} type={`audio/${ext}`} />
-                        {ENUMS.TEXT.AUDIO_UNSUPPORTED}
-                    </audio>
-                    <CardActions {...props} />
-                </div>
-                <CardInfo {...props} />
-            </div>
-        </div>
-    );
-};
-
-const FileCard = props => {
-    const { className, editURL, poster, redirect = {}, refs, type } = props;
-    const redirectURL = op.get(redirect, 'url');
-
-    const style = poster && {
-        backgroundImage: `url('${poster}')`,
-    };
-
-    return (
-        <div
-            className={className}
-            onMouseLeave={() => refs.actions.current.collapse()}>
-            <div>
-                <div className='media-preview'>
-                    {redirectURL ? (
-                        <a href={redirectURL} target='_blank' style={style}>
-                            {!poster && <MediaIcon type={type} />}
-                        </a>
-                    ) : (
-                        <Link to={redirectURL || editURL} style={style}>
-                            {!poster && <MediaIcon type={type} />}
-                        </Link>
-                    )}
-                    <CardActions {...props} />
-                </div>
-                <CardInfo {...props} />
-            </div>
-        </div>
-    );
-};
-
-const ImageCard = props => {
-    const { className, editURL, poster, redirect = {}, refs, url } = props;
-    const redirectURL = op.get(redirect, 'url');
-    const style = {
-        backgroundImage: `url('${redirectURL || poster || url}')`,
-    };
-
-    return (
-        <div
-            className={className}
-            onMouseLeave={() => refs.actions.current.collapse()}>
-            <div>
-                <div className='media-preview'>
-                    {redirectURL ? (
-                        <a href={redirectURL} target='_blank' style={style} />
-                    ) : (
-                        <Link to={editURL} style={style} />
-                    )}
-                    <CardActions {...props} />
-                </div>
-                <CardInfo {...props} />
-            </div>
-        </div>
-    );
-};
-
-const VideoCard = props => {
-    const { className, edgeURL, poster, refs } = props;
-
-    return (
-        <div
-            className={className}
-            onMouseLeave={() => refs.actions.current.collapse()}>
-            <div>
-                <div className='media-preview'>
-                    <ReactPlayer
-                        controls
-                        width='100%'
-                        height='100%'
-                        url={edgeURL}
-                        poster={poster}
-                    />
-                    <CardActions {...props} />
-                </div>
-                <CardInfo {...props} />
-            </div>
-        </div>
-    );
-};
-
-const MediaIcon = ({ type, ...props }) => {
-    let name;
-    const types = Object.keys(ENUMS.TYPE);
-    type = types.includes(type) ? type : 'FILE';
-
-    const { Icon } = useHookComponent('ReactiumUI');
-
-    switch (String(type).toLowerCase()) {
-        case 'audio':
-            name = 'Linear.MusicNote3';
-            break;
-
-        case 'file':
-        default:
-            name = 'Linear.FileEmpty';
-    }
-
-    return <Icon {...props} name={name} />;
-};
-
-const MediaCard = props => {
-    const refs = { actions: useRef() };
-    let { objectId, thumbnail, type, url: edgeURL = '' } = props;
-    type = String(type).toLowerCase();
-
-    const className = cn('media-card', `media-card-${type}`);
-    const editURL = `/admin/media/edit/${objectId}`;
-    const ext = edgeURL.split('.').pop();
-    const poster = thumbnail && Reactium.Media.url(thumbnail);
-
-    const cardProps = {
-        ...props,
-        className,
-        edgeURL,
-        editURL,
-        ext,
-        poster,
-        refs,
-    };
-
-    if (!objectId) return null;
-
-    switch (type) {
-        case 'audio':
-            return <AudioCard {...cardProps} />;
-
-        case 'image':
-            return <ImageCard {...cardProps} />;
-
-        case 'video':
-            return <VideoCard {...cardProps} />;
-
-        default:
-            return <FileCard {...cardProps} />;
-    }
-};
-
-export {
-    AudioCard,
-    FileCard,
-    ImageCard,
-    MediaCard,
-    MediaCard as default,
-    VideoCard,
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Media.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Media.js
new file mode 100644
index 00000000..5b730c39
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Media.js
@@ -0,0 +1,91 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useCallback, useEffect } from 'react';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+export const Media = (props) => {
+    const { editor } = props;
+
+    const onLoad = useCallback(async () => {
+        const obj = editor.get('obj');
+
+        if (!obj || !obj.get('uuid')) return;
+
+        const [d, s] = [
+            Array.from(editor.elements.default),
+            Array.from(editor.elements.sidebar),
+        ];
+
+        const elms = _.where(Array.from(_.flatten([d, s])), {
+            fieldType: 'File',
+        });
+
+        const meta = obj.get('meta') || {};
+        const vals = { data: obj.get('data'), meta };
+
+        _.flatten(
+            elms.map((elm) => {
+                let { fieldName: key } = elm;
+
+                let files =
+                    key === 'file'
+                        ? [obj.get(key)]
+                        : Object.values(op.get(vals, ['data', key], {}));
+
+                files = _.sortBy(
+                    files.map((item, i) => {
+                        const idarray = String(item._name).split('.');
+                        idarray.pop();
+
+                        const id = idarray.join('.');
+
+                        const _m = op.get(meta, ['file', key, id]);
+
+                        if (!_m) return null;
+
+                        if (!op.get(_m, 'meta.index')) {
+                            op.set(_m, 'meta.index', i);
+                        }
+                        const m = op.get(_m, 'meta');
+                        const t = op.get(_m, 'tags');
+
+                        item.index = op.get(_m, 'meta.index');
+                        item.metadata = m;
+                        item.tags = t;
+
+                        return item;
+                    }),
+                    'index',
+                );
+
+                files = _.compact(files);
+
+                return { files, key };
+            }),
+        ).forEach(({ files, key }) => editor.Form.setValue(key, files));
+    }, [editor]);
+
+    const onSubmit = useCallback(
+        ({ value }) => {
+            const file = _.first(op.get(value, 'file'));
+            value.status = Reactium.Content.STATUS.PUBLISHED.value;
+            value.title = op.get(value, 'uuid', file.metadata.name);
+            value.file = file;
+        },
+        [editor],
+    );
+
+    // onSubmit() onLoad() listeners
+    useEffect(() => {
+        editor.addEventListener('submit', onSubmit);
+        editor.addEventListener('editor-load', onLoad);
+        return () => {
+            editor.removeEventListener('submit', onSubmit);
+            editor.removeEventListener('editor-load', onLoad);
+        };
+    }, [editor]);
+
+    return <input type='hidden' name='uuid' />;
+};
+
+export default Media;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/index.js
deleted file mode 100644
index 4b4bce07..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/index.js
+++ /dev/null
@@ -1,647 +0,0 @@
-import lunr from 'lunr';
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import cn from 'classnames';
-import op from 'object-path';
-import ENUMS from '../enums';
-import camelcase from 'camelcase';
-import useData from '../_utils/useData';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import Item from './Item';
-import Uploader from './Uploader';
-import propTypes from './propTypes';
-import Placeholder from './Placeholder';
-import defaultProps from './defaultProps';
-
-import React, {
-    useState,
-    useEffect,
-    forwardRef,
-    useImperativeHandle,
-} from 'react';
-
-import Reactium, {
-    __,
-    Zone,
-    useRefs,
-    useStatus,
-    ComponentEvent,
-    useEventHandle,
-    useHookComponent,
-} from 'reactium-core/sdk';
-
-const fetchMedia = () =>
-    Reactium.Media.fetch({ page: -1 }).then(results => ({
-        error: null,
-        fetched: true,
-        update: Date.now(),
-        data: results.files,
-        status: ENUMS.STATUS.READY,
-        directories: results.directories,
-    }));
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: MediaPicker
- * -----------------------------------------------------------------------------
- */
-let MediaPicker = (initialProps, ref) => {
-    const {
-        children,
-        className,
-        delayFetch,
-        dropzoneProps,
-        namespace,
-        onCancel,
-        onChange,
-        onDismiss,
-        onError,
-        onInit,
-        onItemSelect,
-        onItemUnselect,
-        onLoad,
-        onMount,
-        onStatus,
-        onSubmit,
-        onUnMount,
-        ...props
-    } = initialProps;
-
-    const initialData = op.get(props, 'data');
-
-    // -------------------------------------------------------------------------
-    // Components
-    // -------------------------------------------------------------------------
-    const { Button, Icon, Spinner } = useHookComponent('ReactiumUI');
-
-    // -------------------------------------------------------------------------
-    // Refs
-    // -------------------------------------------------------------------------
-    const refs = useRefs();
-
-    // -------------------------------------------------------------------------
-    // State
-    // -------------------------------------------------------------------------
-    const [state, updateState] = useState({
-        ...props,
-        uploads: {},
-        filters: _.isString(op.get(props, 'filters', []))
-            ? [props.filters]
-            : props.filters,
-    });
-
-    // -------------------------------------------------------------------------
-    // Status
-    // -------------------------------------------------------------------------
-    const [status, setStatus, isStatus] = useStatus(ENUMS.STATUS.INIT);
-
-    // -------------------------------------------------------------------------
-    // Media Data
-    // -------------------------------------------------------------------------
-    const [data, updateData] = useData(
-        fetchMedia,
-        'media-retrieve',
-        delayFetch,
-        initialData,
-    );
-
-    const setData = (newData, silent) => {
-        if (unMounted()) return;
-        updateData(newData, silent);
-        setState({ updated: Date.now() }, silent);
-    };
-
-    const setHandle = newHandle => {
-        if (unMounted()) return;
-        updateHandle(newHandle);
-    };
-
-    const setState = (newState, val) => {
-        if (unMounted()) return;
-
-        if (_.isString(newState)) {
-            newState = { [newState]: val };
-        }
-
-        newState = newState ? { ...state, ...newState } : {};
-        updateState(newState);
-        _.defer(() => {
-            if (unMounted()) return;
-            updateState({ ...newState, update: Date.now() });
-        });
-    };
-
-    // -------------------------------------------------------------------------
-    // Internal Interface
-    // -------------------------------------------------------------------------
-
-    // cx(suffix:String);
-    const cx = Reactium.Utils.cxFactory(className || namespace);
-
-    const browseFiles = e => {
-        if (e) e.preventDefault();
-        const dz = refs.get('media.picker.dropzone');
-        if (!dz) return;
-
-        dz.browseFiles();
-    };
-
-    const dismiss = () => {
-        if (!state.dismissable) return;
-        setStatus(ENUMS.STATUS.DISMISS, true);
-    };
-
-    // dispatch(eventType:String, eventData:Object, callback:Function);
-    const dispatch = (eventType, eventData, callback) => {
-        if (eventType !== 'mount' && unMounted()) return;
-
-        if (!_.isObject(eventData)) eventData = { data: eventData };
-
-        eventType = String(eventType)
-            .replace(/ /i, '-')
-            .replace(/[^a-z0-9\-\_]/gi)
-            .toLowerCase();
-
-        const evt = new ComponentEvent(eventType, eventData);
-
-        handle.dispatchEvent(evt);
-
-        Reactium.Hook.runSync(`media-picker-${eventType}`, evt, handle);
-
-        if (typeof callback === 'function') callback(evt);
-
-        if (state.debug === true) {
-            if (eventType !== 'status') {
-                console.log(eventType, evt);
-            } else {
-                console.log('\t\t', eventType, evt);
-            }
-        }
-    };
-
-    const getDirectories = () => {
-        if (!data) return [];
-        let { directories = [] } = data;
-        return directories;
-    };
-
-    const getFiles = () => {
-        // return empty array if no data
-        if (!data) {
-            return [];
-        }
-
-        // get parameters from state
-        let { directory = 'all', filter, filters = [], search, type } = state;
-        filters = _.isString(filters) ? [filters] : filters;
-
-        let files = op.get(data, 'data', {});
-
-        // convert data Object into array
-        files = Object.values(files);
-
-        // return if files array empty
-        if (files.length < 1) {
-            return [];
-        }
-
-        // pass the data over to the filter function if specified as a function
-        if (typeof filter === 'function') return files.filter(filter);
-
-        // filter files against directory and type values
-        files = files.filter(file => {
-            // folder match
-            if (directory !== 'all') {
-                if (file.directory !== directory) return false;
-            }
-
-            // type match
-            if (filters.length > 0 && !filters.includes('all')) {
-                if (!filters.includes(file.type)) return false;
-            }
-
-            if (type !== 'all') {
-                if (file.type !== type) return false;
-            }
-
-            return true;
-        });
-
-        files = _.sortBy(files, 'updatedAt').reverse();
-
-        // do a text search on the searchField properties
-        files = search ? textSearch(`${String(search).trim()}*`, files) : files;
-
-        // run media-picker-files hook
-        Reactium.Hook.runSync('media-picker-files', files, handle);
-
-        return files;
-    };
-
-    const getPage = () => {
-        const files = getFiles();
-        if (files.length < 1) return [];
-
-        let { itemsPerPage, page = 1 } = state;
-
-        const chunks = _.chunk(files, itemsPerPage);
-
-        const pages = chunks.length;
-
-        page = Math.min(pages, page);
-        page = Math.max(1, page) - 1;
-
-        return chunks[page];
-    };
-
-    const textSearch = (text, files) => {
-        files = files || Object.values(op.get(data, 'data', {}));
-        const { searchFields = [] } = state;
-        return searchFields.length < 1
-            ? files
-            : _.pluck(
-                  lunr(function() {
-                      const lnr = this;
-                      lnr.ref('objectId');
-
-                      // camelcase object path field names
-                      searchFields.forEach(field => {
-                          field = String(field);
-                          field = field.includes('.')
-                              ? camelcase(field.replace(/\./g, '-'))
-                              : field;
-
-                          // add field to lunr
-                          lnr.field(field);
-                      });
-
-                      // map file data to match camelcased field names
-                      files.forEach(file => {
-                          let obj = searchFields.reduce((o, field) => {
-                              const key = field.includes('.')
-                                  ? camelcase(field.replace(/\./g, '-'))
-                                  : field;
-
-                              o[key] = op.get(file, field);
-
-                              return o;
-                          }, {});
-
-                          obj['objectId'] = file.objectId;
-                          obj['directory'] = file.directory;
-                          obj['type'] = file.type;
-
-                          // add mapped object to lunr
-                          lnr.add(obj);
-                      });
-                  }).search(text),
-                  'ref',
-              ).map(objectId => _.findWhere(files, { objectId }));
-    };
-
-    const isSelected = objectId => {
-        const { selection = [] } = state;
-        return !!_.findWhere(selection, { objectId });
-    };
-
-    const _search = text => setState({ search: text });
-
-    const search = _.throttle(_search, 100);
-
-    const select = objectId => {
-        const { data: files = {} } = data;
-        const { confirm, maxSelect } = state;
-
-        const item = op.get(files, objectId);
-        if (!item) return;
-
-        let selection =
-            maxSelect === 1 ? [] : Array.from(op.get(state, 'selection', []));
-
-        selection = Array.isArray(selection) ? selection : [selection];
-
-        if (maxSelect && maxSelect > 1 && selection.length >= maxSelect) {
-            const message = __(
-                'Max selection of (%max) already reached',
-            ).replace(/\%max/gi, maxSelect);
-
-            const error = { message, icon: 'Feather.AlertOctagon' };
-
-            setState({ error }, true);
-            dispatch('error', { error, selection, max: maxSelect }, onError);
-            setStatus(ENUMS.STATUS.ERROR, true);
-            return;
-        }
-
-        const previous = Array.from(selection);
-
-        selection.push(item);
-
-        const count = selection.length;
-        const remaining = maxSelect && maxSelect > 0 ? maxSelect - count : null;
-
-        dispatch('select', { item, selection, remaining }, onItemSelect);
-        dispatch(
-            'change',
-            {
-                selection,
-                previous,
-                item,
-                remaining,
-            },
-            onChange,
-        );
-
-        setStatus(ENUMS.STATUS.UPDATE);
-        setState({ remaining, selection });
-
-        if (confirm !== true) submit(selection);
-    };
-
-    const submit = selection => {
-        selection = Array.isArray(selection)
-            ? selection
-            : op.get(state, 'selection', []);
-
-        selection = !Array.isArray(selection) ? [selection] : selection;
-
-        dispatch('submit', { selection }, onSubmit);
-    };
-
-    // unmount();
-    const unMounted = () => !refs.get('media.picker.dropzone');
-
-    const unselect = objectId => {
-        const { maxSelect, selection = [] } = state;
-        const previous = Array.from(selection);
-
-        const idx = _.findIndex(selection, { objectId });
-        const item = selection[idx];
-
-        selection.splice(idx, 1);
-
-        const count = selection.length;
-        let remaining = maxSelect && maxSelect > 0 ? maxSelect - count : null;
-
-        setState({ remaining, selection }, true);
-        dispatch('unselect', { item, selection, remaining }, onItemUnselect);
-        dispatch(
-            'change',
-            { current: selection, previous, item, remaining },
-            onChange,
-        );
-        setStatus(ENUMS.STATUS.UPDATE, true);
-    };
-
-    const unselectAll = () =>
-        setState({ remaining: state.maxSelect, selection: [] });
-
-    // -------------------------------------------------------------------------
-    // Handle
-    // -------------------------------------------------------------------------
-    const _handle = () => ({
-        browseFiles,
-        children,
-        className,
-        cx,
-        data,
-        directories: getDirectories(),
-        dismiss,
-        dispatch,
-        ENUMS,
-        files: getFiles(),
-        ID: uuid(),
-        isStatus,
-        namespace,
-        onStatus,
-        props,
-        refs,
-        search,
-        select,
-        setData,
-        setState,
-        setStatus,
-        state,
-        status,
-        submit,
-        unMounted,
-        unselect,
-        unselectAll,
-    });
-
-    const [handle, updateHandle] = useEventHandle(_handle());
-
-    useImperativeHandle(ref, () => handle);
-
-    // -------------------------------------------------------------------------
-    // Side effects
-    // -------------------------------------------------------------------------
-
-    // Mount/UnMount
-    useEffect(() => {
-        dispatch('mount', null, onMount);
-
-        return () => {
-            dispatch('unmount', null, onUnMount);
-        };
-    }, []);
-
-    // Status change
-    useEffect(() => {
-        if (status) {
-            dispatch(
-                'status',
-                { status: String(status).toUpperCase() },
-                onStatus,
-            );
-        }
-
-        if (isStatus(ENUMS.STATUS.PENDING)) {
-            setStatus(ENUMS.STATUS.INIT, true);
-            return;
-        }
-
-        if (isStatus(ENUMS.STATUS.INIT)) {
-            dispatch(ENUMS.STATUS.INIT, null, onInit);
-            return;
-        }
-
-        if (isStatus(ENUMS.STATUS.LOADING)) {
-            dispatch(ENUMS.STATUS.LOADING, null);
-            return;
-        }
-
-        if (isStatus(ENUMS.STATUS.LOADED)) {
-            dispatch(ENUMS.STATUS.LOADED, { data }, onLoad);
-            return;
-        }
-
-        if (isStatus(ENUMS.STATUS.CANCELED)) {
-            dispatch(ENUMS.STATUS.CANCELED, null, onCancel);
-            return;
-        }
-
-        if (isStatus(ENUMS.STATUS.DISMISS)) {
-            dispatch(ENUMS.STATUS.DISMISS, null, onDismiss);
-            return;
-        }
-    }, [data, status, state.selection]);
-
-    // Handle update
-    useEffect(() => {
-        const newHandle = _handle();
-
-        // shallow compare the handle
-        if (_.isEqual(newHandle, handle)) return;
-
-        // map newHandle onto handle
-        Object.entries(newHandle).forEach(([key, value]) =>
-            op.set(handle, key, value),
-        );
-
-        setHandle(handle);
-    });
-
-    // page change
-    useEffect(() => {
-        const { page, pages } = state;
-        dispatch('page-change', { page, pages });
-    }, [state.page, state.pages]);
-
-    // page count
-    useEffect(() => {
-        const files = getFiles();
-        const { itemsPerPage } = state;
-
-        const pages = Math.max(Math.ceil(files.length / itemsPerPage), 1);
-        if (pages !== state.pages) setState({ pages });
-    });
-
-    // Data loaded
-    useEffect(() => {
-        if (!data) {
-            if (
-                isStatus(ENUMS.STATUS.INIT) &&
-                !isStatus(ENUMS.STATUS.LOADING)
-            ) {
-                _.defer(() => {
-                    if (unMounted()) return;
-                    setStatus(ENUMS.STATUS.LOADING, true);
-                });
-            }
-        } else {
-            let { itemsPerPage } = state;
-            itemsPerPage = Math.max(1, itemsPerPage);
-            const count = getFiles().length;
-            const pages = Math.ceil(count / itemsPerPage);
-            handle.data = data;
-            setStatus(ENUMS.STATUS.LOADED);
-            setState({ pages }, true);
-            setHandle(handle);
-        }
-    }, [data]);
-
-    // -------------------------------------------------------------------------
-    // Render
-    // -------------------------------------------------------------------------
-    return !data ? (
-        <div className={cx('spinner')}>
-            <Spinner />
-        </div>
-    ) : (
-        <Uploader
-            picker={handle}
-            className={cx()}
-            {...dropzoneProps}
-            ref={elm => refs.set('media.picker.dropzone', elm)}>
-            <div className={cx('toolbar')}>
-                <Zone zone={cx('toolbar')} picker={handle} />
-            </div>
-            <div className={cx('content')}>
-                <div className={cx('library')}>
-                    <Scrollbars
-                        ref={elm => refs.set('media.picker.library', elm)}>
-                        <div className='grid'>
-                            <div className={cn('block', cx('item'), 'dz-btn')}>
-                                <div data-browse>
-                                    <Icon name='Feather.UploadCloud' />
-                                    <Button
-                                        readOnly
-                                        style={{ width: '50%', maxWidth: 150 }}
-                                        size={Button.ENUMS.SIZE.SM}
-                                        appearance={
-                                            Button.ENUMS.APPEARANCE.PILL
-                                        }>
-                                        {__('Upload')}
-                                    </Button>
-                                </div>
-                            </div>
-                            {Object.values(state.uploads).map(upload => (
-                                <Placeholder
-                                    {...upload}
-                                    picker={handle}
-                                    key={`upload-${upload.uuid}`}
-                                />
-                            ))}
-                            {getPage().map(file => (
-                                <Item
-                                    key={`mpi-${file.objectId}`}
-                                    {...file}
-                                    handle={handle}
-                                    onItemSelect={select}
-                                    onItemUnselect={unselect}
-                                    selected={isSelected(file.objectId)}
-                                />
-                            ))}
-                        </div>
-                    </Scrollbars>
-                </div>
-                {state.confirm === true && (
-                    <div className={cx('selection')}>
-                        {state.selection.length > 0 ? (
-                            <Scrollbars>
-                                <div className='grid'>
-                                    {Array.from(state.selection)
-                                        .reverse()
-                                        .map(file => (
-                                            <Item
-                                                key={`mpsi-${file.objectId}`}
-                                                {...file}
-                                                handle={handle}
-                                                onItemSelect={select}
-                                                onItemUnselect={unselect}
-                                                selected
-                                            />
-                                        ))}
-                                </div>
-                            </Scrollbars>
-                        ) : (
-                            <div className={cx('no-selection')}>
-                                <div className={cx('no-selection-icon')}>
-                                    <Icon name='Linear.FingerTap' />
-                                </div>
-                                <div className={cx('no-selection-label')}>
-                                    {state.maxSelect === 1
-                                        ? __('Select A File')
-                                        : __('Select Files')}
-                                </div>
-                            </div>
-                        )}
-                    </div>
-                )}
-            </div>
-            <div className={cx('footer')}>
-                <Zone zone={cx('footer')} picker={handle} />
-            </div>
-        </Uploader>
-    );
-};
-
-MediaPicker = forwardRef(MediaPicker);
-MediaPicker.ENUMS = ENUMS;
-MediaPicker.propTypes = propTypes;
-MediaPicker.defaultProps = defaultProps;
-
-export * from './TypeSelect';
-export { MediaPicker, MediaPicker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Pagination/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Pagination/index.js
deleted file mode 100644
index 80b105ce..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Pagination/index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, { useRef } from 'react';
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import { Pagination as PaginationUI } from '@atomic-reactor/reactium-ui';
-
-const Pagination = ({ Media }) => {
-    const { cname, page, state } = Media;
-    const { pagination } = state;
-
-    const pages = op.get(state, 'pagination.pages', 1);
-
-    const _onSelect = e => {
-        if (!op.get(e, 'item')) return;
-        Media.setPage(e.item.value);
-    };
-
-    const _onNext = e => {
-        const next = op.get(pagination, 'next');
-        Media.setPage(next);
-    };
-
-    const _onPrev = e => {
-        const prev = op.get(pagination, 'prev');
-        Media.setPage(prev);
-    };
-
-    return pagination && pages > 1 ? (
-        <div className={cname('pagination')}>
-            <PaginationUI
-                color={PaginationUI.COLOR.CLEAR}
-                dropdown
-                onClick={_onSelect}
-                onNextClick={_onNext}
-                onPrevClick={_onPrev}
-                page={page}
-                pages={pages}
-                size='md'
-                verticalAlign='top'
-            />
-        </div>
-    ) : null;
-};
-
-export { Pagination, Pagination as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/index.js
deleted file mode 100644
index b73c8026..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import React from 'react';
-import ENUMS from '../enums';
-import op from 'object-path';
-import { Zone } from 'reactium-core/sdk';
-import { useSelect } from '@atomic-reactor/use-select';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: Toolbar
- * -----------------------------------------------------------------------------
- */
-const Toolbar = ({ Media, zone = 'admin-media-toolbar' }) => {
-    const { empty } = useSelect(state => op.get(state, 'Media.pagination', {}));
-
-    return empty === true ? null : (
-        <div className={Media.cname('toolbar')}>
-            <div className='flex middle flex-grow'>
-                <div className='mr-xs-20'>
-                    <Button
-                        color='clear'
-                        className={Media.cname('toolbar-browse')}
-                        data-tooltip={ENUMS.TEXT.BROWSE}
-                        data-align='right'
-                        data-vertical-align='middle'
-                        onClick={e => Media.browseFiles(e)}>
-                        <Icon name='Linear.FileAdd' size={40} />
-                    </Button>
-                </div>
-                <div className='flex-grow show-md hide-xs'>
-                    <h2>{ENUMS.TEXT.TOOLBAR}</h2>
-                </div>
-            </div>
-            <div>
-                <Zone zone={zone} Media={Media} />
-            </div>
-        </div>
-    );
-};
-
-export default Toolbar;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/index.js
deleted file mode 100644
index 0a15a736..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/index.js
+++ /dev/null
@@ -1,215 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import ENUMS from '../enums';
-import op from 'object-path';
-import { bytesConvert } from '../_utils';
-import React, { useEffect, useRef } from 'react';
-import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
-import { Button, Icon, Progress } from '@atomic-reactor/reactium-ui';
-import Reactium, {
-    useDerivedState,
-    useDocument,
-    useAsyncEffect,
-} from 'reactium-core/sdk';
-import { useStore } from '@atomic-reactor/use-select';
-
-export default ({ delay = 250, onRemoveFile, uploads }) => {
-    const iDoc = useDocument();
-
-    const store = useStore();
-    const animationRef = useRef({});
-    const [state, setState] = useDerivedState({
-        uploads: uploads || op.get(store.getState(), 'Media.uploads'),
-    });
-
-    const clearUploads = async () => {
-        if (Reactium.Media.completed.length < 1) return;
-
-        const cleared = [];
-
-        for (let item of Reactium.Media.completed) {
-            const { ID, file } = item;
-            await collapse(ID);
-            cleared.push({ ...file, ID });
-        }
-
-        _onRemoveFile(cleared);
-    };
-
-    const collapse = ID => {
-        if (animationRef.current[ID]) return animationRef.current[ID];
-
-        const elm = iDoc.getElementById(`upload-${ID}`);
-        if (!elm) return Promise.resolve();
-
-        animationRef.current[ID] = true;
-
-        return new Promise(resolve => {
-            elm.style.overflow = 'hidden';
-            TweenMax.to(elm, 0.125, {
-                height: 0,
-                opacity: 0,
-                ease: Power2.easeIn,
-                onComplete: () => resolve(ID),
-            });
-        });
-    };
-
-    const cx = cls => _.compact(['admin-media', cls]).join('-');
-
-    const getIcon = filename => {
-        if (isImage(filename)) return null;
-
-        const type = String(getType(filename)).toUpperCase();
-
-        if (ENUMS.TYPE.VIDEO.includes(type))
-            return <Icon size={36} name='Linear.FileVideo' />;
-
-        if (ENUMS.TYPE.AUDIO.includes(type))
-            return <Icon size={36} name='Linear.Mic' />;
-
-        return <Icon size={36} name='Linear.FileEmpty' />;
-    };
-
-    const getStyle = ({ file, filename }) =>
-        isImage(filename) ? { backgroundImage: `url(${file.dataURL})` } : null;
-
-    const getType = filename =>
-        String(filename)
-            .split('.')
-            .pop();
-
-    const isImage = filename =>
-        ['png', 'svg', 'gif', 'jpg', 'jpeg'].includes(getType(filename));
-
-    const _onRemoveFile = files => {
-        files = Array.isArray(files) ? files : [files];
-
-        Reactium.Media.cancel(files);
-
-        files.forEach(file => {
-            const ID = op.get(file, 'ID');
-            if (ID) delete animationRef.current[ID];
-            if (typeof onRemoveFile === 'function') onRemoveFile(file);
-        });
-    };
-
-    // Watch for uploads
-    useAsyncEffect(isMounted => {
-        const unsub = store.subscribe(() => {
-            const currentUploads = op.get(store.getState(), 'Media.uploads');
-            if (isMounted()) setState({ uploads: currentUploads });
-        });
-
-        return unsub;
-    }, []);
-
-    // Clear uploads
-    useEffect(() => {
-        Reactium.Pulse.register('MediaClearUploads', clearUploads, { delay });
-
-        return () => {
-            Reactium.Pulse.unregister('MediaClearUploads');
-        };
-    }, []);
-
-    const render = () => {
-        const currentUploads = op.get(state, 'uploads', {});
-
-        return Object.values(currentUploads).length < 1 ? null : (
-            <div className={cx('uploads')}>
-                <ul>
-                    {Object.values(currentUploads).map((upload, i) => {
-                        const file = op.get(upload, 'file');
-                        const filename = op.get(upload, 'filename');
-                        const style = getStyle({ file, filename });
-                        const status = op.get(upload, 'status');
-                        const size = bytesConvert(op.get(upload, 'total', 0));
-                        const url = op.get(upload, 'url', '...');
-
-                        const progress =
-                            status === ENUMS.STATUS.COMPLETE
-                                ? 1
-                                : op.get(upload, 'progress', 0);
-                        return (
-                            <li
-                                id={`upload-${file.ID}`}
-                                key={`media-upload-${i}`}
-                                className={cn(status, cx('upload'))}>
-                                <div
-                                    className={cn(status, cx('upload-image'))}
-                                    children={getIcon(filename)}
-                                    style={style}
-                                />
-                                <div className={cn(status, cx('upload-info'))}>
-                                    <div className={cx('upload-name')}>
-                                        {filename}
-                                        {' • '}
-                                        <span className={cx('upload-size')}>
-                                            {size}
-                                        </span>
-                                    </div>
-                                    <div style={{ width: 150 }}>
-                                        <Progress
-                                            size='xs'
-                                            color='primary'
-                                            value={progress}
-                                            appearance='pill'
-                                        />
-                                    </div>
-                                    <div className={cx('upload-url')}>
-                                        {url}
-                                    </div>
-                                </div>
-                                <div
-                                    className={cn(status, cx('upload-status'))}>
-                                    {status}
-                                </div>
-                                <div
-                                    className={cn(status, cx('upload-action'))}>
-                                    {status === ENUMS.STATUS.COMPLETE && (
-                                        <Button
-                                            size='xs'
-                                            color='primary'
-                                            appearance='circle'
-                                            onClick={() => _onRemoveFile(file)}>
-                                            <Icon
-                                                name='Feather.Check'
-                                                size={18}
-                                            />
-                                        </Button>
-                                    )}
-
-                                    {status === ENUMS.STATUS.QUEUED && (
-                                        <Button
-                                            onClick={() => _onRemoveFile(file)}
-                                            size='xs'
-                                            color='danger'
-                                            appearance='circle'>
-                                            <Icon name='Feather.X' size={18} />
-                                        </Button>
-                                    )}
-
-                                    {status === ENUMS.STATUS.UPLOADING && (
-                                        <Button
-                                            size='xs'
-                                            color='primary'
-                                            disabled
-                                            appearance='circle'>
-                                            <Icon
-                                                name='Feather.ArrowUp'
-                                                size={18}
-                                            />
-                                        </Button>
-                                    )}
-                                </div>
-                            </li>
-                        );
-                    })}
-                </ul>
-            </div>
-        );
-    };
-
-    return render();
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_reactium-style-organisms-Media.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_reactium-style-organisms-Media.scss
new file mode 100644
index 00000000..8150da4c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_reactium-style-organisms-Media.scss
@@ -0,0 +1,14 @@
+.media {
+    
+}
+
+.input-note {
+    position: absolute;
+    top: 50%;
+    right: 12px;
+    font-size: 11px;
+    font-style: italic;
+    color: $color-grey;
+    pointer-events: none;
+    transform: translateY(-50%);
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/index.js
deleted file mode 100644
index 70584170..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/index.js
+++ /dev/null
@@ -1,280 +0,0 @@
-import _ from 'underscore';
-import Empty from './Empty';
-import ENUMS from './enums';
-import op from 'object-path';
-import domain from './domain';
-import Pagination from './Pagination';
-import React, { useEffect, useRef } from 'react';
-import { Dropzone, Spinner } from '@atomic-reactor/reactium-ui';
-
-import Reactium, {
-    useAsyncEffect,
-    useDerivedState,
-    useEventHandle,
-    useHandle,
-    useHookComponent,
-    useRegisterHandle,
-    useStatus,
-} from 'reactium-core/sdk';
-
-import { useStore, useReduxState } from '@atomic-reactor/use-select';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Media
- * -----------------------------------------------------------------------------
- */
-let Media = ({ dropzoneProps, namespace, zone, title, ...props }) => {
-    // Store
-    const store = useStore();
-
-    // Refs
-    const containerRef = useRef();
-    const dropzoneRef = useRef();
-
-    // Components
-    const SearchBar = useHandle('SearchBar');
-    const Helmet = useHookComponent('Helmet');
-    const List = useHookComponent('MediaList');
-    const Toolbar = useHookComponent('MediaToolbar');
-    const Uploads = useHookComponent('MediaUploads');
-
-    // Redux state
-    const [reduxState, setReduxState] = useReduxState(domain.name);
-
-    // Internal state
-    const [state, updateState] = useDerivedState({
-        data: mapLibraryToList(reduxState.library),
-        directory: null,
-        page: props.page || 1,
-        search: null,
-        type: null,
-        updated: null,
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        updateState(newState);
-    };
-
-    const setData = (data = []) => {
-        setStatus(ENUMS.STATUS.READY);
-        setState({ data: mapLibraryToList(data) });
-    };
-
-    const setDirectory = directory => setState({ directory });
-    const setPage = page => setState({ page });
-    const setType = type => setState({ type });
-
-    // Status
-    const [status, setStatus, isStatus] = useStatus(ENUMS.STATUS.INIT);
-
-    // Functions
-    const browseFiles = () => dropzoneRef.current.browseFiles();
-
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const fetch = params => Reactium.Media.fetch({ ...params, page: -1 });
-
-    const isEmpty = () => {
-        if (isStatus(ENUMS.STATUS.READY)) {
-            return Object.values(op.get(state, 'data', {})).length < 1;
-        } else {
-            return op.get(reduxState, 'pagination.empty', true);
-        }
-    };
-
-    const isMounted = () => !unMounted();
-
-    const onError = ({ message }) => setReduxState({ error: { message } });
-
-    const onFileAdded = e => Reactium.Media.upload(e.added, state.directory);
-
-    const onFileRemoved = file => {
-        if (unMounted()) return;
-        dropzoneRef.current.removeFiles(file);
-        fetch();
-    };
-
-    const search = () => {
-        const { data, directory, type } = state;
-
-        const { search } = state;
-
-        return Reactium.Media.filter(
-            {
-                directory,
-                search,
-                type,
-                limit: 24,
-            },
-            Object.values(data),
-        );
-    };
-
-    const toggleSearch = () => {
-        SearchBar.setState({ visible: !isEmpty() });
-    };
-
-    const unMounted = () => !containerRef.current;
-
-    // Handle
-    const _handle = () => ({
-        ENUMS,
-        browseFiles,
-        cname: cx,
-        directory: state.directory,
-        isEmpty,
-        isMounted,
-        isStatus,
-        page: state.page,
-        setData,
-        setDirectory,
-        setPage,
-        setState,
-        setStatus,
-        setType,
-        state,
-        status,
-        type: state.type,
-        unMounted,
-        zone: Array.isArray(zone) ? zone[0] : zone,
-    });
-
-    const [handle, updateHandle] = useEventHandle(_handle());
-    const setHandle = newHandle => {
-        if (unMounted()) return;
-
-        if (_.isObject(newHandle)) {
-            Object.entries(newHandle).forEach(([key, value]) =>
-                op.set(handle, key, value),
-            );
-        }
-
-        updateHandle(handle);
-    };
-
-    // Side effects
-
-    // Fetch
-    useAsyncEffect(async () => {
-        if (isStatus(ENUMS.STATUS.INIT)) {
-            setStatus(ENUMS.STATUS.PENDING);
-            await fetch();
-            setStatus(ENUMS.STATUS.READY, true);
-        }
-    }, [status]);
-
-    // Update handle
-    useEffect(() => {
-        const watchKeys = ['directory', 'page', 'type'];
-
-        const changes = watchKeys.reduce((obj, key) => {
-            const hnd = op.get(handle, key);
-            const val = op.get(state, key);
-            if (hnd !== val) obj[key] = val;
-            return obj;
-        }, {});
-
-        if (Object.keys(changes).length > 0) setHandle(changes);
-    });
-
-    // Search
-    useEffect(toggleSearch, [SearchBar, isEmpty()]);
-    useEffect(() => {
-        const search = SearchBar.state.value;
-        if (state.search !== search) {
-            setState({ search });
-        }
-    }, [SearchBar.state.value]);
-
-    // Page change
-    useEffect(() => {
-        const { page = 1 } = state;
-        const pg = op.get(reduxState, 'page');
-
-        if (pg !== page) {
-            Reactium.Routing.history.push(`/admin/media/${page}`);
-        }
-    }, [state.page]);
-
-    // Watch for library updates
-    useEffect(() => {
-        const unsub = store.subscribe(() => {
-            const data = op.get(store.getState(), 'Media.library', {});
-            if (!data) return;
-
-            const currentData = Object.values(op.get(state, 'data', {}));
-            const equal = _.isEqual(
-                _.pluck(data, 'objectId').sort(),
-                _.pluck(currentData, 'objectId').sort(),
-            );
-
-            if (!equal) setData(data);
-        });
-
-        return unsub;
-    }, []);
-
-    useRegisterHandle(domain.name, () => handle, [handle]);
-
-    // Render
-    return (
-        <div ref={containerRef}>
-            <Helmet>
-                <title>{title}</title>
-            </Helmet>
-            {isStatus([ENUMS.STATUS.READY]) ? (
-                <Dropzone
-                    {...dropzoneProps}
-                    className={cx('dropzone')}
-                    files={{}}
-                    onError={onError}
-                    onFileAdded={e => onFileAdded(e)}
-                    ref={dropzoneRef}>
-                    <Uploads
-                        onRemoveFile={onFileRemoved}
-                        uploads={op.get(reduxState, 'uploads', {})}
-                    />
-                    {!isEmpty() ? (
-                        <>
-                            <Toolbar Media={handle} />
-                            <List data={search()} />
-                        </>
-                    ) : (
-                        <Empty Media={handle} />
-                    )}
-                    {!isEmpty() && <Pagination Media={handle} />}
-                </Dropzone>
-            ) : (
-                <div className={cx('spinner')}>
-                    <Spinner />
-                </div>
-            )}
-        </div>
-    );
-};
-
-const mapLibraryToList = library => {
-    if (Array.isArray(library)) return _.indexBy(library, 'objectId');
-    return library;
-};
-
-Media.ENUMS = ENUMS;
-
-Media.defaultProps = {
-    dropzoneProps: {
-        config: {
-            chunking: false,
-            clickable: true,
-            previewTemplate:
-                '<div class="dz-preview dz-file-preview"><span data-dz-name></div>',
-        },
-        debug: false,
-    },
-    namespace: 'admin-media',
-    page: 1,
-    title: ENUMS.TEXT.TITLE,
-};
-
-export { Media as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-domain-media.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain.js
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-domain-media.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-hooks-media.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-hooks-media.js
new file mode 100644
index 00000000..979b5f0b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-hooks-media.js
@@ -0,0 +1,28 @@
+import { Media } from './Media';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin Media
+ * -----------------------------------------------------------------------------
+ */
+(async () => {
+    await Reactium.Plugin.register('CTE-MEDIA');
+
+    Reactium.Content.Editor.register('Media', { component: Media });
+
+    Reactium.Hook.registerSync(
+        'content-editor-elements-media',
+        ({ fields }) => {
+            fields.remove('title').remove('status').add({
+                index: 0,
+                region: 'sidebar',
+                fieldId: 'media',
+                fieldName: 'file',
+                fieldType: 'Media',
+            });
+        },
+        Reactium.Enums.priority.lowest,
+        'ADMIN-CONTENT-MEDIA-ELEMENTS',
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Middleware/reactium-boot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Middleware/reactium-boot.js
deleted file mode 100644
index 0caa56fd..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Middleware/reactium-boot.js
+++ /dev/null
@@ -1,102 +0,0 @@
-const Reactium = require('reactium-core/sdk').default;
-const Enums = Reactium.Enums;
-const proxy = require('http-proxy-middleware');
-const op = require('object-path');
-const _ = require('underscore');
-const fs = require('fs');
-const path = require('path');
-
-const isSrc = () => {
-    const d = path.normalize(
-        path.join(process.cwd(), 'src', 'app', 'components', 'Admin', 'static'),
-    );
-
-    if (fs.existsSync(d)) return d;
-};
-
-Reactium.Server.Middleware.register('media-proxy', {
-    name: 'media-proxy',
-    use: (req, res, next) => {
-        if (!global.restAPI) {
-            next();
-            return;
-        }
-
-        return proxy('/media', {
-            target: restAPI.replace(/\/api$/, ''),
-            changeOrigin: true,
-            logLevel: process.env.DEBUG === 'on' ? 'debug' : 'error',
-            ws: false,
-        })(req, res, next);
-    },
-    order: Enums.priority.highest,
-});
-
-Reactium.Hook.register('Server.beforeApp', async (req, Server) => {
-    try {
-        const { plugins } = await Reactium.Cloud.run('plugins');
-        req.plugins = global.plugins = plugins;
-        Server.AppGlobals.register('plugins', {
-            value: plugins,
-            order: Enums.priority.highest,
-        });
-    } catch (error) {
-        console.error('Unable to load plugins list', error);
-    }
-});
-
-Reactium.Hook.registerSync(
-    'Server.AppScripts',
-    (req, AppScripts) => {
-        _.sortBy(op.get(req, 'plugins', []), 'order').forEach(plugin => {
-            const script = op.get(plugin, 'meta.assets.admin.script');
-            AppScripts.unregister(plugin.ID);
-            if (script && plugin.active) {
-                const url = !/^http/.test(script) ? '/api' + script : script;
-                AppScripts.register(plugin.ID, {
-                    path: url,
-                    order: Enums.priority.high,
-                });
-            }
-        });
-    },
-    Enums.priority.highest,
-);
-
-Reactium.Hook.registerSync(
-    'Server.AppStyleSheets',
-    (req, AppStyleSheets) => {
-        _.sortBy(op.get(req, 'plugins', []), 'order').forEach(plugin => {
-            const style = op.get(plugin, 'meta.assets.admin.style');
-            AppStyleSheets.unregister(plugin.ID);
-            if (style && plugin.active) {
-                const url = !/^http/.test(style) ? '/api' + style : style;
-                AppStyleSheets.register(plugin.ID, {
-                    path: url,
-                    order: Enums.priority.high,
-                });
-            }
-        });
-    },
-    Enums.priority.highest,
-);
-
-Reactium.Hook.registerSync(
-    'Server.AppStyleSheets.includes',
-    includes => {
-        if (!includes.includes('admin.css') && isSrc()) {
-            includes.push('admin.css');
-        }
-    },
-    Enums.priority.highest,
-);
-
-Reactium.Hook.registerSync(
-    'Server.AppStyleSheets.excludes',
-    excludes => {
-        if (!excludes.includes('style.css') && isSrc()) {
-            excludes.push('style.css');
-        }
-    },
-    Enums.priority.highest,
-);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/index.js
deleted file mode 100644
index b2104552..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/index.js
+++ /dev/null
@@ -1,234 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import ENUMS from './enums';
-import op from 'object-path';
-import { Redirect, Link } from 'react-router-dom';
-import React, { useEffect, useRef, useState } from 'react';
-import { Button, WebForm } from '@atomic-reactor/reactium-ui';
-import Reactium, { __, useHookComponent } from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Forgot
- * -----------------------------------------------------------------------------
- */
-let Forgot = props => {
-    const Helmet = useHookComponent('Helmet');
-
-    const Logo = useHookComponent('Logo');
-
-    // Refs
-    const stateRef = useRef({
-        ...props,
-    });
-
-    // State
-    const [, setNewState] = useState(stateRef.current);
-
-    // Internal Interface
-    const setState = (newState, caller) => {
-        // Update the stateRef
-        stateRef.current = {
-            ...stateRef.current,
-            ...newState,
-        };
-
-        // Trigger useEffect()
-        setNewState(stateRef.current);
-    };
-
-    // Side Effects
-    useEffect(
-        () => setState(props, 'Forgot -> useEffect()'),
-        Object.values(props),
-    );
-
-    const onSubmit = ({ value, valid }) => {
-        const { email } = value;
-        const { status } = stateRef.current;
-        if (status === ENUMS.STATUS.SUBMITTING) {
-            return;
-        }
-
-        setState({ ...value, error: {}, status: ENUMS.STATUS.SUBMITTING });
-
-        return Reactium.User.forgot(email)
-            .then(result => setState({ status: ENUMS.STATUS.SUCCESS }))
-            .catch(err =>
-                setState({
-                    error: {
-                        field: 'email',
-                        message: err.message,
-                    },
-                    status: ENUMS.STATUS.ERROR,
-                }),
-            );
-    };
-
-    const onChange = e => {
-        const { name, value } = e.target;
-        setState({ [name]: value });
-    };
-
-    const onError = ({ value, errors }) => {
-        const field = op.get(errors, 'fields.0');
-        const message = op.get(errors, 'errors.0');
-
-        setState({
-            error: {
-                field,
-                message,
-            },
-            status: ENUMS.STATUS.ERROR,
-        });
-
-        const elm = document.getElementById(field);
-        if (elm) {
-            elm.focus();
-        }
-    };
-
-    // Renderers
-    const render = () => {
-        if (Reactium.User.getSessionToken()) {
-            return <Redirect to={redirect} />;
-        }
-
-        const {
-            className,
-            email,
-            error = {},
-            signin,
-            signup,
-            status,
-        } = stateRef.current;
-
-        if (status === ENUMS.STATUS.SUCCESS) {
-            return (
-                <>
-                    <Helmet>
-                        <meta charSet='utf-8' />
-                        <title>{ENUMS.TEXT.TITLE}</title>
-                    </Helmet>
-                    <main className={className} role='main'>
-                        <WebForm
-                            onSubmit={onSubmit}
-                            onError={onError}
-                            value={{ email }}
-                            required={['email']}
-                            showError={false}>
-                            <div className='flex center mb-xs-40'>
-                                <Link to='/'>
-                                    <Logo width={80} height={80} />
-                                </Link>
-                            </div>
-                            <h1>{ENUMS.TEXT.SUCCESS}</h1>
-                            <input type='hidden' name='email' value={email} />
-                            <p className='text-center'>
-                                {ENUMS.TEXT.MESSAGE_SUCCESS[0]}
-                                <br />
-                                <kbd>{email}</kbd>
-                                <br />
-                                {ENUMS.TEXT.MESSAGE_SUCCESS[1]}
-                            </p>
-                            <div className='mt-xs-40'>
-                                <Button
-                                    block
-                                    color='secondary'
-                                    size='lg'
-                                    type='submit'
-                                    appearance='pill'
-                                    disabled={
-                                        status === ENUMS.STATUS.SUBMITTING
-                                    }>
-                                    {status === ENUMS.STATUS.SUBMITTING
-                                        ? ENUMS.TEXT.BUTTON.RESENDING
-                                        : ENUMS.TEXT.BUTTON.RESEND}
-                                </Button>
-                            </div>
-                        </WebForm>
-                    </main>
-                </>
-            );
-        }
-
-        return (
-            <>
-                <Helmet>
-                    <meta charSet='utf-8' />
-                    <title>{ENUMS.TEXT.TITLE}</title>
-                </Helmet>
-                <main className={className} role='main'>
-                    <WebForm
-                        onSubmit={onSubmit}
-                        onError={onError}
-                        value={{ email }}
-                        required={['email']}
-                        showError={false}>
-                        <div className='flex center mb-xs-40'>
-                            <Link to='/'>
-                                <Logo width={80} height={80} />
-                            </Link>
-                        </div>
-                        <h1>{ENUMS.TEXT.TITLE}</h1>
-                        <p className='text-center'>{ENUMS.TEXT.MESSAGE}</p>
-                        <div
-                            className={cn({
-                                'form-group': true,
-                                error: op.get(error, 'field') === 'email',
-                            })}>
-                            <input
-                                type='email'
-                                placeholder={ENUMS.TEXT.LABEL.EMAIL}
-                                name='email'
-                                value={email || ''}
-                                onChange={onChange}
-                                id='email'
-                                disabled={status === ENUMS.STATUS.SUBMITTING}
-                            />
-                            {op.get(error, 'field') === 'email' && (
-                                <small>{error.message}</small>
-                            )}
-                        </div>
-
-                        <div className='mt-xs-40'>
-                            <Button
-                                block
-                                color='secondary'
-                                size='lg'
-                                type='submit'
-                                appearance='pill'
-                                disabled={status === ENUMS.STATUS.SUBMITTING}>
-                                {status === ENUMS.STATUS.SUBMITTING
-                                    ? ENUMS.TEXT.BUTTON.SUBMITTING
-                                    : ENUMS.TEXT.BUTTON.SUBMIT}
-                            </Button>
-                        </div>
-                        <div className='links'>
-                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-left pr-xs-0 pr-sm-8 mt-xs-16'>
-                                <Link to={signin}>
-                                    {ENUMS.TEXT.LABEL.SIGNIN}
-                                </Link>
-                            </div>
-                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-right pl-xs-0 pl-sm-8 mt-xs-16'>
-                                <Link to={signup}>
-                                    {ENUMS.TEXT.LABEL.CREATE}
-                                </Link>
-                            </div>
-                        </div>
-                    </WebForm>
-                </main>
-            </>
-        );
-    };
-
-    return render();
-};
-
-Forgot.defaultProps = {
-    className: 'password',
-    signin: '/login',
-    signup: '/signup',
-};
-
-export { Forgot as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/index.js
deleted file mode 100644
index 81febad2..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/index.js
+++ /dev/null
@@ -1,253 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import ENUMS from './enums';
-import op from 'object-path';
-import { useSelect } from '@atomic-reactor/use-select';
-import { Redirect, Link } from 'react-router-dom';
-import React, { useEffect, useRef, useState } from 'react';
-import { Button, WebForm } from '@atomic-reactor/reactium-ui';
-import Reactium, { __, useHookComponent } from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Reset
- * -----------------------------------------------------------------------------
- */
-let Reset = props => {
-    const Helmet = useHookComponent('Helmet');
-
-    const Logo = useHookComponent('Logo');
-
-    const token = useSelect({
-        select: state => op.get(state, 'Router.params.token'),
-    });
-
-    // Refs
-    const stateRef = useRef({
-        ...props,
-    });
-
-    // State
-    const [, setNewState] = useState(stateRef.current);
-
-    // Internal Interface
-    const setState = (newState, caller) => {
-        // Update the stateRef
-        stateRef.current = {
-            ...stateRef.current,
-            ...newState,
-        };
-
-        if (ENUMS.DEBUG && caller) {
-            console.log('setState()', caller, {
-                state: stateRef.current,
-            });
-        }
-
-        // Trigger useEffect()
-        setNewState(stateRef.current);
-    };
-
-    // Side Effects
-    useEffect(
-        () => setState(props, 'Reset -> useEffect()'),
-        Object.values(props),
-    );
-
-    const cname = () => {
-        const { className, namespace } = stateRef.current;
-        return cn({ [className]: !!className, [namespace]: !!namespace });
-    };
-
-    const onChange = e => {
-        const { name, value } = e.target;
-        setState({ [name]: value });
-    };
-
-    const onError = ({ errors }) => {
-        const field = op.get(errors, 'fields.0');
-        const message = op.get(errors, 'errors.0');
-
-        setState({
-            error: {
-                field,
-                message,
-            },
-            status: ENUMS.STATUS.ERROR,
-        });
-
-        const elm = document.getElementById(field);
-        if (elm) {
-            elm.focus();
-        }
-    };
-
-    const onSubmit = ({ value }) => {
-        const { confirm, password } = value;
-
-        if (confirm !== password) {
-            onError({
-                errors: {
-                    errors: ['passwords do not match'],
-                    fields: ['password'],
-                },
-            });
-            return;
-        }
-
-        const { status } = stateRef.current;
-        if (status === ENUMS.STATUS.SUBMITTING) {
-            return;
-        }
-
-        setState({ ...value, error: {}, status: ENUMS.STATUS.SUBMITTING });
-
-        return Reactium.User.reset(token, password)
-            .then(result => {
-                setState({ status: ENUMS.STATUS.SUCCESS });
-
-                setTimeout(
-                    () => setState({ status: ENUMS.STATUS.COMPLETE }),
-                    100,
-                );
-            })
-            .catch(err => {
-                setState({
-                    error: {
-                        message: err.message,
-                    },
-                    status: ENUMS.STATUS.ERROR,
-                });
-            });
-    };
-
-    // Renderers
-    const render = () => {
-        const {
-            confirm,
-            error = {},
-            password,
-            signin,
-            signup,
-            status,
-        } = stateRef.current;
-
-        if (Reactium.User.getSessionToken()) {
-            return <Redirect to={redirect} />;
-        }
-
-        if (!token || status === ENUMS.STATUS.COMPLETE) {
-            return <Redirect to={signin} />;
-        }
-
-        const msg =
-            status === ENUMS.STATUS.SUCCESS || status === ENUMS.STATUS.COMPLETE
-                ? ENUMS.TEXT.SUCCESS
-                : ENUMS.TEXT.MESSAGE;
-
-        return (
-            <>
-                <Helmet>
-                    <meta charSet='utf-8' />
-                    <title>{ENUMS.TEXT.TITLE}</title>
-                </Helmet>
-                <main className={cname()} role='main'>
-                    <WebForm
-                        onSubmit={onSubmit}
-                        onError={onError}
-                        value={{ password, confirm }}
-                        required={['password', 'confirm']}
-                        showError={false}>
-                        <div className='flex center mb-xs-40'>
-                            <Link to='/'>
-                                <Logo width={80} height={80} />
-                            </Link>
-                        </div>
-                        <h1>{ENUMS.TEXT.TITLE}</h1>
-                        {op.get(error, 'message') && !op.get(error, 'field') ? (
-                            <p className='text-center red'>{error.message}</p>
-                        ) : (
-                            <p className='text-center'>{msg}</p>
-                        )}
-                        <div
-                            className={cn({
-                                'form-group': true,
-                                error: op.get(error, 'field') === 'password',
-                            })}>
-                            <input
-                                type='password'
-                                placeholder={ENUMS.TEXT.LABEL.PASSWORD}
-                                name='password'
-                                id='password'
-                                autoComplete='off'
-                                value={password || ''}
-                                onChange={onChange}
-                                disabled={status === ENUMS.STATUS.SUBMITTING}
-                            />
-                            {op.get(error, 'field') === 'password' && (
-                                <small>{error.message}</small>
-                            )}
-                        </div>
-                        <div
-                            className={cn({
-                                'form-group': true,
-                                error: op.get(error, 'field') === 'confirm',
-                            })}>
-                            <input
-                                type='password'
-                                placeholder={ENUMS.TEXT.LABEL.CONFIRM}
-                                name='confirm'
-                                id='confirm'
-                                autoComplete='off'
-                                value={confirm || ''}
-                                onChange={onChange}
-                                disabled={status === ENUMS.STATUS.SUBMITTING}
-                            />
-                            {op.get(error, 'field') === 'confirm' && (
-                                <small>{error.message}</small>
-                            )}
-                        </div>
-
-                        <div className='mt-xs-40'>
-                            <Button
-                                block
-                                color='secondary'
-                                size='lg'
-                                type='submit'
-                                appearance='pill'
-                                disabled={status === ENUMS.STATUS.SUBMITTING}>
-                                {status === ENUMS.STATUS.SUBMITTING ? (
-                                    <>{ENUMS.TEXT.BUTTON.SUBMITTING}...</>
-                                ) : (
-                                    <>{ENUMS.TEXT.BUTTON.SUBMIT}</>
-                                )}
-                            </Button>
-                        </div>
-                        <div className='links'>
-                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-left pr-xs-0 pr-sm-8 mt-xs-16'>
-                                <Link to={signin}>
-                                    {ENUMS.TEXT.LABEL.SIGNIN}
-                                </Link>
-                            </div>
-                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-right pl-xs-0 pl-sm-8 mt-xs-16'>
-                                <Link to={signup}>
-                                    {ENUMS.TEXT.LABEL.CREATE}
-                                </Link>
-                            </div>
-                        </div>
-                    </WebForm>
-                </main>
-            </>
-        );
-    };
-
-    return render();
-};
-
-Reset.defaultProps = {
-    namespace: 'password',
-    signin: '/login',
-    signup: '/signup',
-};
-
-export { Reset as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Card/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Card/index.js
deleted file mode 100644
index 6182b257..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Card/index.js
+++ /dev/null
@@ -1,117 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import Reactium, { __, Zone } from 'reactium-core/sdk';
-import op from 'object-path';
-import cn from 'classnames';
-import { Toggle } from '@atomic-reactor/reactium-ui';
-import { Link } from 'react-router-dom';
-import { Icon } from '@atomic-reactor/reactium-ui';
-
-const Card = ({ plugin, canActivate = true }) => {
-    const core =
-        op.get(plugin, 'meta.builtIn', false) && plugin.group === 'core';
-    const defaultGraphic = core
-        ? '/assets/images/atomic-reactor-logo.svg'
-        : '/assets/images/plugin.svg';
-    let graphic = op.get(plugin, 'meta.assets.admin.logo', defaultGraphic);
-    if (!/^http/.test(graphic) && graphic !== defaultGraphic) {
-        if (typeof window !== 'undefined')
-            graphic = (window.restAPI || '/api') + graphic;
-        else
-            graphic =
-                (process.env.REST_API_URL || 'http://localhost:9000/api') +
-                graphic;
-    }
-
-    const { name, description, active, group } = plugin;
-
-    const toggleActivate = async () => {
-        const { ID } = plugin;
-        if (plugin.active) {
-            await Reactium.Cloud.run('plugin-deactivate', { plugin: ID });
-        } else {
-            await Reactium.Cloud.run('plugin-activate', { plugin: ID });
-        }
-
-        // reload the page to get plugin assets
-        if (typeof window !== 'undefined') location.reload(true);
-    };
-
-    const renderActivation = () => {
-        return (
-            <>
-                <div className='plugin-card-status'>
-                    <strong>
-                        {active ? __('Plugin Active') : __('Plugin Disabled')}
-                    </strong>
-                </div>
-                {group !== 'core' && canActivate && (
-                    <div className='plugin-card-toggle'>
-                        <Toggle
-                            label={
-                                plugin.active
-                                    ? __('Deactivate')
-                                    : __('Activate')
-                            }
-                            defaultChecked={plugin.active}
-                            onChange={toggleActivate}
-                        />
-                    </div>
-                )}
-            </>
-        );
-    };
-
-    const render = () => {
-        const settings = op.get(plugin, 'meta.settings', false);
-        const settingsUrl = op.get(plugin, 'meta.settingsUrl');
-        const settingsTitle = __('Plugin settings for %s').replace(
-            '%s',
-            plugin.name,
-        );
-
-        return (
-            <div
-                className={cn(
-                    'plugin-card',
-                    { 'plugin-card--core': core },
-                    `plugin-card--${plugin.ID}`
-                        .toLowerCase()
-                        .replace(/[^a-z0-9]/g, '-'),
-                )}>
-                <div className='plugin-card__graphic'>
-                    <img src={graphic} alt={plugin.name} />
-                </div>
-                <div className='plugin-card__details'>
-                    {!!name && <h3>{name}</h3>}
-                    {!!description && <p className='mt-8'>{description}</p>}
-                    <Zone zone='plugin-card-description' plugin={plugin} />
-                </div>
-                <div className='plugin-card__actions'>
-                    {plugin.active && settings && (
-                        <Link
-                            className={cn(
-                                'plugin-settings-link',
-                                `plugin-settings-link-${plugin.ID}`,
-                                'icon-link',
-                            )}
-                            to={
-                                settingsUrl
-                                    ? settingsUrl
-                                    : `/admin/plugins/${plugin.ID}`
-                            }
-                            title={settingsTitle}>
-                            <span className='sr-only'>{settingsTitle}</span>
-                            <Icon.Feather.Settings />
-                        </Link>
-                    )}
-                    {renderActivation()}
-                    <Zone zone='plugin-card-actions' plugin={plugin} />
-                </div>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-export default Card;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/index.js
deleted file mode 100644
index a765c36e..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/index.js
+++ /dev/null
@@ -1,130 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import ENUMS from './enums';
-import op from 'object-path';
-import domain from './domain';
-import deps from 'dependencies';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import React, { forwardRef, useEffect, useRef } from 'react';
-import { useHandle, useRegisterHandle } from 'reactium-core/sdk';
-import { useReduxState } from '@atomic-reactor/use-select';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: Search
- * -----------------------------------------------------------------------------
- */
-let Search = ({ className, namespace, ...props }, ref) => {
-    const [state, setState] = useReduxState(domain.name);
-
-    const Tools = useHandle('AdminTools');
-
-    const inputRef = useRef();
-
-    const cname = cn({
-        [className]: !!className,
-        [namespace]: !!namespace,
-    });
-
-    const cx = cls => _.compact([namespace, cls]).join('-');
-
-    const onChange = e => {
-        const { value: val = '' } = e.target;
-        setState({ value: val });
-    };
-
-    const onClear = () => {
-        const input = inputRef.current;
-        setState({ value: null });
-        input.focus();
-    };
-
-    const onFocus = e => {
-        e.target.select();
-        Tools.Tooltip.hide(e);
-        setState({ focused: true });
-    };
-
-    const onBlur = () => setState({ focused: null });
-
-    const render = () => {
-        const { focused, icon = {}, placeholder, value, visible } = state;
-
-        const tooltip =
-            value || focused
-                ? {}
-                : {
-                      'data-tooltip': placeholder,
-                      'data-vertical-align': 'middle',
-                      'data-align': 'right',
-                  };
-
-        return visible !== true ? null : (
-            <div className={cname}>
-                <input
-                    aria-label={ENUMS.TEXT.ARIA_SEARCH}
-                    onBlur={onBlur}
-                    onChange={onChange}
-                    onFocus={onFocus}
-                    placeholder={placeholder}
-                    ref={inputRef}
-                    value={value || ''}
-                    {...tooltip}
-                />
-                <Icon
-                    className={cx('icon')}
-                    name={op.get(icon, 'search', 'Feather.Search')}
-                />
-                {value && (
-                    <Button
-                        appearance='circle'
-                        aria-label={ENUMS.TEXT.ARIA_CLEAR}
-                        color='primary'
-                        data-align='right'
-                        data-tooltip={ENUMS.TEXT.ARIA_CLEAR}
-                        data-vertical-align='middle'
-                        onClick={onClear}
-                        size='xs'>
-                        <Icon
-                            name={op.get(icon, 'clear', 'Feather.X')}
-                            size={16}
-                        />
-                    </Button>
-                )}
-            </div>
-        );
-    };
-
-    const handle = () => ({
-        ENUMS,
-        input: inputRef.current,
-        ref,
-        setState,
-        state,
-        value: op.get(state, 'value'),
-        visible: op.get(state, 'visible'),
-    });
-
-    useRegisterHandle('SearchBar', handle, [
-        op.get(state, 'value'),
-        op.get(state, 'visible'),
-    ]);
-
-    return render();
-};
-
-Search = forwardRef(Search);
-
-Search.defaultProps = {
-    focused: null,
-    icon: {
-        clear: 'Feather.X',
-        search: 'Feather.Search',
-    },
-    namespace: 'admin-search-bar',
-    placeholder: ENUMS.TEXT.PLACEHOLDER,
-    value: null,
-    visible: false,
-};
-
-export default Search;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/enums.js
index 895dff21..733e8fcf 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/enums.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/enums.js
@@ -1,4 +1,4 @@
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 
 export default {
     appSettingProps: {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/index.js
index 3220fff7..491baf26 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/index.js
@@ -1,6 +1,10 @@
+import cn from 'classnames';
 import React from 'react';
 import op from 'object-path';
-import Reactium, { useHookComponent, __ } from 'reactium-core/sdk';
+import Reactium, {
+    useHookComponent,
+    __,
+} from '@atomic-reactor/reactium-core/sdk';
 
 /**
  * -----------------------------------------------------------------------------
@@ -31,13 +35,13 @@ const AppSettings = ({
     };
 
     Reactium.Setting.UI.list
-        .filter(item => item.group === settings.group)
-        .forEach(item => {
+        .filter((item) => item.group === settings.group)
+        .forEach((item) => {
             op.set(settings, ['inputs', item.id], { ...item.input });
         });
 
     return (
-        <div className={className}>
+        <div className={cn(className, 'px-xs-20 pt-xs-80 pb-xs-20')}>
             {title && (
                 <Helmet>
                     <meta charSet='utf-8' />
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/reactium-hooks.js
index bec892c5..398f4c28 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/reactium-hooks.js
@@ -2,9 +2,9 @@ import React from 'react';
 import Enums from './enums';
 import op from 'object-path';
 import AppSettings from './index';
-import Reactium, { __ } from 'reactium-core/sdk';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
 import useCapabilitySettings from './useCapabilitySettings';
-import MenuItem from 'reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem';
+import MenuItem from 'reactium-admin-core/registered-components/MenuItem';
 
 const PLUGIN = 'app-settings';
 
@@ -30,6 +30,31 @@ Reactium.Hook.register('plugin-dependencies', async () => {
     });
 });
 
+Reactium.Hook.register('blueprints', async (Blueprints) => {
+    const bp = {
+        sections: {
+            sidebar: {
+                zones: ['admin-sidebar'],
+                meta: {},
+            },
+            main: {
+                zones: ['admin-header', 'settings-groups', 'settings-actions'],
+                meta: {},
+            },
+        },
+        meta: {
+            builtIn: true,
+            admin: true,
+            namespace: 'admin-page',
+        },
+        ID: 'Settings',
+        description: 'Settings blueprint',
+        className: 'Blueprint',
+    };
+
+    Blueprints.register(bp.ID, bp);
+});
+
 const appSettingsPlugin = async () => {
     await Reactium.Plugin.register(PLUGIN);
 
@@ -88,7 +113,7 @@ Reactium.Capability.Settings.register('shortcodes-manage', {
  * @apiExample Usage
 import React from 'react';
 import _ from 'underscore';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const CapabilityList = ({ zone = 'my-zone' }) => {
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/useCapabilitySettings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/useCapabilitySettings.js
index e7dd04f6..4eb09e2b 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/useCapabilitySettings.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/AppSettings/useCapabilitySettings.js
@@ -3,7 +3,10 @@ import ENUMS from './enums';
 import slugify from 'slugify';
 import { useEffect, useState } from 'react';
 
-import Reactium, { useAsyncEffect, useStatus } from 'reactium-core/sdk';
+import Reactium, {
+    useAsyncEffect,
+    useStatus,
+} from '@atomic-reactor/reactium-core/sdk';
 
 export default (id = 'app-settings', defaultCapabilities = [], deps) => {
     const dependencies = Array.isArray(deps) ? deps : [defaultCapabilities];
@@ -12,7 +15,7 @@ export default (id = 'app-settings', defaultCapabilities = [], deps) => {
 
     const getCapabilities = async () => {
         // auto register capabilities from appSettingProps.capabilities so they can be unregistered
-        _.flatten([capabilities, defaultCapabilities]).forEach(item =>
+        _.flatten([capabilities, defaultCapabilities]).forEach((item) =>
             Reactium.Capability.Settings.register(
                 slugify(item.capability, { lower: true }),
                 { ...item, zone: id },
@@ -27,7 +30,7 @@ export default (id = 'app-settings', defaultCapabilities = [], deps) => {
         await Reactium.Hook.run(`${id}-capabilities`, hookedCapabilities);
 
         // auto register capabilities from hooks so they can be unregistered
-        hookedCapabilities.forEach(item =>
+        hookedCapabilities.forEach((item) =>
             Reactium.Capability.Settings.register(
                 slugify(item.capability, { lower: true }),
                 { ...item, zone: id },
@@ -53,7 +56,7 @@ export default (id = 'app-settings', defaultCapabilities = [], deps) => {
     }, [status]);
 
     useAsyncEffect(
-        async isMounted => {
+        async (isMounted) => {
             if (!isStatus(ENUMS.STATUS.INIT)) return;
             setStatus(ENUMS.STATUS.LOADING);
             const newCapabilities = await getCapabilities();
@@ -84,7 +87,7 @@ Returns the capabilities array and a setter function.
  * @apiParam {Array} [dependencies] Array of values that will cause a reload of the capabilities. Default: `[defaultCapabilities]`
  * @apiExample Example
 import React from 'react';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const CapabilityList = ({ zone = 'my-zone' }) => {
     // Run the 'my-zone-capabilities' hook which allows plugins to auto register a Regsitry Object.
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/Breadcrumbs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/Breadcrumbs/index.js
index d444abf3..b6e200da 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/Breadcrumbs/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/Breadcrumbs/index.js
@@ -1,28 +1,11 @@
-import op from 'object-path';
 import React, { useState, useEffect } from 'react';
-import { __, useHookComponent } from 'reactium-core/sdk';
-import { useStore } from '@atomic-reactor/use-select';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+import { useDoesMatchPath } from 'reactium-admin-core';
 
 export default () => {
-    // Store
-    const store = useStore();
-
-    const isPath = () =>
-        op.get(store.getState(), 'Router.match.path') === '/admin/settings';
-
-    const [visible, setVisible] = useState(isPath());
-
+    const visible = useDoesMatchPath('/admin/settings');
     const { Button, Icon } = useHookComponent('ReactiumUI');
 
-    // Watch for route updates
-    useEffect(
-        () =>
-            store.subscribe(() => {
-                setVisible(isPath());
-            }),
-        [],
-    );
-
     return !visible ? null : (
         <ul className='ar-breadcrumbs'>
             <li>
@@ -30,7 +13,8 @@ export default () => {
                     className='px-0'
                     color={Button.ENUMS.COLOR.CLEAR}
                     size={Button.ENUMS.SIZE.SM}
-                    type={Button.ENUMS.TYPE.BUTTON}>
+                    type={Button.ENUMS.TYPE.BUTTON}
+                >
                     <Icon name='Linear.Equalizer' className='mr-xs-12' />
                     {__('Settings')}
                 </Button>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/SidebarWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/SidebarWidget/index.js
index dec1d0f6..01855d60 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/SidebarWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/SidebarWidget/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import op from 'object-path';
-import { __, useHookComponent, Zone } from 'reactium-core/sdk';
+import { __, useHookComponent, Zone } from '@atomic-reactor/reactium-core/sdk';
 
 const isActive = (match = {}, location) =>
     String(op.get(match, 'url', '/'))
@@ -8,7 +8,7 @@ const isActive = (match = {}, location) =>
         .toLowerCase()
         .startsWith('/admin/settings');
 
-const SidebarWidget = props => {
+const SidebarWidget = (props) => {
     const MenuItem = useHookComponent('MenuItem');
     const id = 'admin-sidebar-settings';
     return (
@@ -17,7 +17,8 @@ const SidebarWidget = props => {
             label={__('Settings')}
             icon='Linear.Equalizer'
             id={id}
-            isActive={isActive}>
+            isActive={isActive}
+        >
             <Zone zone={id} />
         </MenuItem>
     );
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/reactium-hooks.js
index 2794e333..ea87d06e 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Settings/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import Breadcrumbs from './Breadcrumbs';
 import SidebarWidget from './SidebarWidget';
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/MenuToggle/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/MenuToggle/index.js
index a379b3c6..c6a4c0f5 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/MenuToggle/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/MenuToggle/index.js
@@ -1,8 +1,8 @@
 import React, { useEffect, useState } from 'react';
 import cn from 'classnames';
 import op from 'object-path';
-import { Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, { useHandle } from 'reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+import Reactium, { useHandle } from '@atomic-reactor/reactium-core/sdk';
 
 /**
  * -----------------------------------------------------------------------------
@@ -34,7 +34,8 @@ const Toggle = () => {
             <button
                 className={cn(Sidebar.cx('toggle'), { expanded })}
                 onClick={() => Sidebar.toggle()}
-                type='button'>
+                type='button'
+            >
                 <div className='button'>
                     {expanded && (
                         <Icon
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/_reactium-style-organism-admin-menu-toggle.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/_reactium-style-organism-admin-menu-toggle.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/index.js
index ff3b55c3..3c873aef 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/index.js
@@ -2,7 +2,7 @@ import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
 import React, { useEffect, useState } from 'react';
-import { Scrollbars } from 'react-custom-scrollbars';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
 
 import Reactium, {
     useEventHandle,
@@ -11,7 +11,7 @@ import Reactium, {
     useStatus,
     useWindowSize,
     Zone,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     STATUS: {
@@ -64,7 +64,7 @@ let AdminSidebar = ({ namespace, zone, ...props }) => {
 
     const isExpanded = () => isStatus(ENUMS.STATUS.EXPANDED);
 
-    const onHotkey = e => {
+    const onHotkey = (e) => {
         if (Reactium.Utils.Fullscreen.isExpanded()) return;
         e.preventDefault();
         toggle();
@@ -141,7 +141,8 @@ let AdminSidebar = ({ namespace, zone, ...props }) => {
             <div className={cn(cx('spacer'), status)}>.</div>
             <div
                 className={cn(cx(), status)}
-                ref={elm => refs.set('sidebar.container', elm)}>
+                ref={(elm) => refs.set('sidebar.container', elm)}
+            >
                 <Scrollbars>
                     <div className={cx('container')}>
                         <div className={cx('header')}>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/reactium-hooks.js
index a8307087..ba5e6716 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Sidebar/reactium-hooks.js
@@ -1,6 +1,6 @@
 import Sidebar from './index';
 import Toggle from './MenuToggle';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 Reactium.Plugin.register('AdminSidebar').then(() => {
     Reactium.Zone.addComponent({
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-admin.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-admin.scss
new file mode 100644
index 00000000..37458daa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-admin.scss
@@ -0,0 +1,61 @@
+// Colors
+
+// Admin Registered Components
+// @import '../registered-components/Fullscreen/style';
+// @import '../registered-components/ConfirmBox/style';
+// @import '../registered-components/CapabilityEditor/style';
+// @import '../registered-components/SettingEditor/style';
+// @import '../registered-components/MenuItem/style';
+// @import '../registered-components/PermissionSelector/style';
+// @import '../registered-components/Blocker/style';
+// @import '../registered-components/DragPanel/style';
+// @import '../registered-components/RichTextEditor/style';
+// @import '../registered-components/RichTextEditor/components';
+// @import '../registered-components/RichTextEditor/Settings/style';
+// @import '../registered-components/RichTextEditor/_plugins/withBlock/style';
+// @import '../registered-components/RichTextEditor/_plugins/withFormatter/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withLink/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withColor/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withIcon/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withGrid/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withForm/Panel/style';
+// @import '../registered-components/RichTextEditor/_plugins/withMediaImage/style';
+// @import '../registered-components/RichTextEditor/_plugins/withMediaVideo/style';
+// @import '../registered-components/RichTextEditor/_plugins/withTab/style';
+// @import '../registered-components/IconPicker/style';
+// @import '../registered-components/ProfileWidget/style';
+// @import '../registered-components/DraggableList/style';
+// @import '../registered-components/CodeEditor/style';
+// @import '../registered-components/MediaTool/style';
+
+// Admin Styles
+// @import 'base';
+// @import 'layout';
+// @import 'header';
+// @import '../AdminLogo/style';
+// @import '../Login/style';
+// @import '../Settings/style';
+// @import '../Password/style';
+// @import '../SearchBar/style';
+// @import '../PluginManager/style';
+// @import '../Media/style';
+// @import '../Media/CTE/style';
+// @import '../Media/List/style';
+// @import '../Media/Directory/Creator/style';
+// @import '../Media/Directory/Editor/style';
+// @import '../Media/Directory/Widget/style';
+// @import '../Media/Editor/style';
+// @import '../Media/Editor/Sidebar/style';
+// @import '../Media/Editor/_plugins/ImageCrop/style';
+// @import '../Media/Editor/_plugins/ThumbnailSelect/style';
+// @import '../Media/MediaPicker/style';
+// @import '../Media/Pagination/style';
+// @import '../Media/Toolbar/style';
+// @import '../Media/Uploads/style';
+// @import '../User/Editor/style';
+// @import '../User/Editor/_plugins/UserContent/style';
+// @import '../User/Editor/_plugins/UserMedia/style';
+// @import '../User/Editor/_plugins/UserProfile/style';
+// @import '../User/Editor/_plugins/UserInputs/style';
+// @import '../User/Editor/_plugins/Notice/style';
+// @import '../User/List/style';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin-theme.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin-theme.scss
new file mode 100644
index 00000000..1bb74d45
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin-theme.scss
@@ -0,0 +1,95 @@
+@use 'sass:math';
+
+@mixin admin-header-zone() {
+    z-index: map-get($z-indexes, 'header');
+    position: fixed;
+    top: 0px;
+    right: 0;
+    width: 100%;
+    height: $height-admin-header;
+    overflow-y: visible;
+    background-color: $color-admin-header-bg;
+    display: flex;
+    align-items: center;
+    flex-shrink: 0;
+    flex-direction: row;
+    padding: 0 8px 0 24px;
+    border-bottom: 1px solid darken($color-admin-header-border, 2%);
+}
+
+@mixin admin-content-zone() {
+    padding: $padding-admin-content-zone;
+    padding-top: #{$height-admin-header + $padding-admin-content-zone};
+    z-index: map-get($z-indexes, 'default');
+
+    @include breakpoint(lg) {
+        padding-left: $padding-admin-content-zone;
+    }
+}
+
+@mixin admin-content-region() {
+    @include admin-content-zone;
+    padding-top: 20px;
+}
+
+@mixin admin-actions-zone() {
+    flex-grow: 0;
+    flex-shrink: 0;
+    position: absolute;
+    z-index: map-get($z-indexes, 'actions');
+    top: math.div($height-admin-header, 2);;
+    transform: translateY(-50%);
+    padding-left: $padding-default;
+
+    &:empty {
+        display: none;
+    }
+}
+
+@mixin admin-header-button() {
+    width: $height-admin-header-button;
+    height: $height-admin-header-button;
+    padding: 0;
+    overflow: hidden;
+    display: flex;
+    justify-content: center;
+    background-color: transparent;
+    color: $color-admin-header;
+    border: none;
+
+    > * {
+        pointer-events: none;
+    }
+
+    svg {
+        fill: $color-admin-header;
+        fill: currentColor;
+    }
+}
+
+@mixin settings-dialog() {
+    padding: $padding-settings-dialog;
+}
+
+@mixin flex-row() {
+    margin: 0 auto;
+    width: 100%;
+    display: flex;
+    flex-basis: auto;
+    flex-direction: row;
+    flex-wrap: wrap;
+}
+
+@mixin placeholder($clr) {
+    &::-webkit-input-placeholder {
+        color: $clr;
+    }
+
+    &:-ms-input-placeholder {
+        color: $clr;
+    }
+
+    &::placeholder {
+        color: $clr;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_base.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_base.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-mixins-colors-admin-theme.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-mixins-colors-admin-theme.scss
new file mode 100644
index 00000000..b69409c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-mixins-colors-admin-theme.scss
@@ -0,0 +1,57 @@
+
+// 
+// DO NOT EDIT!
+// This file is generated by gulp styles:colors task.
+// Modify colors-mixins-admin-theme.json in this directory to effect this file.
+//
+@use "sass:map";
+
+$color-cloud: #F7F7F7 !default;
+$color-coral: #F15F5C !default;
+$color-darkIndigo: #111735 !default;
+$color-indigo: #1D2758 !default;
+$color-sea: #00BAB4 !default;
+$color-sky: #87CEEB !default;
+$color-spring: #79C82E !default;
+$color-tint: #F3F3F3 !default;
+$color-black: #000000 !default;
+$color-gray-dark: #333333 !default;
+$color-gray: #999999 !default;
+$color-grey: #CFCFCF !default;
+$color-grey-light: #F3F3F3 !default;
+$color-white: #FFFFFF !default;
+$color-white-dark: #FDFDFD !default;
+$color-yellow: #F4F19C !default;
+$color-orange: #E69840 !default;
+$color-pink: #D877A0 !default;
+$color-red: #E09797 !default;
+$color-purple: #7A7CEF !default;
+$color-blue: #4F82BA !default;
+$color-green: #659A3F !default;
+$color-green-light: #B2BB50 !default;
+
+$color: () !default;
+
+$color: map.set($color, "color-cloud", $color-cloud);
+$color: map.set($color, "color-coral", $color-coral);
+$color: map.set($color, "color-darkIndigo", $color-darkIndigo);
+$color: map.set($color, "color-indigo", $color-indigo);
+$color: map.set($color, "color-sea", $color-sea);
+$color: map.set($color, "color-sky", $color-sky);
+$color: map.set($color, "color-spring", $color-spring);
+$color: map.set($color, "color-tint", $color-tint);
+$color: map.set($color, "color-black", $color-black);
+$color: map.set($color, "color-gray-dark", $color-gray-dark);
+$color: map.set($color, "color-gray", $color-gray);
+$color: map.set($color, "color-grey", $color-grey);
+$color: map.set($color, "color-grey-light", $color-grey-light);
+$color: map.set($color, "color-white", $color-white);
+$color: map.set($color, "color-white-dark", $color-white-dark);
+$color: map.set($color, "color-yellow", $color-yellow);
+$color: map.set($color, "color-orange", $color-orange);
+$color: map.set($color, "color-pink", $color-pink);
+$color: map.set($color, "color-red", $color-red);
+$color: map.set($color, "color-purple", $color-purple);
+$color: map.set($color, "color-blue", $color-blue);
+$color: map.set($color, "color-green", $color-green);
+$color: map.set($color, "color-green-light", $color-green-light);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-organisms-admin-layout.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-organisms-admin-layout.scss
new file mode 100644
index 00000000..e7bc4452
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-organisms-admin-layout.scss
@@ -0,0 +1,434 @@
+html,
+body {
+    background-color: $color-admin-bg;
+    width: 100vw;
+    height: 100vh;
+}
+
+html {
+    overflow: hidden;
+}
+
+body {
+    overflow-y: auto;
+}
+
+.blueprint {
+    max-width: 100vw;
+    min-height: 100vh;
+    display: flex;
+    align-items: stretch;
+    flex-wrap: nowrap;
+    flex-direction: row;
+}
+
+.admin-page {
+    .section {
+        &-tools {
+            position: absolute;
+            top: 0;
+            left: 0;
+        }
+
+        &-main {
+            width: 100%;
+            overflow-x: hidden;
+            position: relative;
+            z-index: map-get($z-indexes, 'default');
+
+            @include breakpoint(sm) {
+                min-width: 320px;
+                overflow-x: auto;
+            }
+
+            .zone-admin-content {
+                @include admin-content-zone;
+            }
+
+            .zone-admin-actions {
+                @include admin-actions-zone;
+            }
+        }
+    }
+}
+
+.admin-content-region {
+    @include admin-content-region;
+}
+
+.ar-tooltip {
+    // position: fixed;
+    z-index: map-get($z-indexes, 'overlay') + 100;
+
+    .container {
+        max-width: 100vw;
+    }
+}
+
+.ar-modal {
+    z-index: map-get($z-indexes, 'overlay');
+}
+
+.ar-dialog-content {
+    background-color: $color-text-light;
+}
+
+.modal-spinner {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100vw;
+    height: 100vh;
+    overflow-x: hidden;
+    overflow-y: auto;
+    background-color: $color-admin-bg;
+}
+
+.Toastify {
+    &__close-button {
+        height: auto;
+        padding: 8px 8px 0 8px;
+    }
+
+    &__toast {
+        &-body {
+            display: flex;
+            line-height: 1.2;
+            align-items: flex-start;
+
+            svg {
+                flex-shrink: 0;
+            }
+
+            .ar-icon {
+                width: 18px;
+                height: 18px;
+                margin-right: 12px;
+            }
+        }
+
+        &-container {
+            z-index: map-get($z-indexes, popup);
+        }
+    }
+}
+
+.ar-data-table-heading {
+    font-weight: 500;
+}
+
+.ar-breadcrumbs {
+    display: flex;
+    align-items: center;
+
+    &,
+    li {
+        list-style: none;
+        margin: 0;
+        padding: 0;
+        line-height: 1;
+    }
+
+    li {
+        font-size: 12px;
+        display: flex;
+        align-items: center;
+
+        &:empty {
+            display: none;
+        }
+
+        &:not(:first-child) {
+            padding-left: 8px;
+
+            &:before {
+                content: '/';
+                padding-right: 8px;
+                color: $color-gray;
+                font-size: 8px;
+            }
+        }
+    }
+}
+
+.ar-dropdown {
+    width: 100%;
+
+    &-menu {
+        box-shadow: 0 2px 2px 1px rgba($color-black, 0.025);
+
+        button {
+            text-transform: none;
+            font-weight: normal;
+        }
+
+        label {
+            width: 100%;
+            text-align: left;
+            justify-content: flex-start;
+        }
+    }
+}
+
+.btn-group > .ar-dropdown:first-child > button {
+    border-radius: 2px 0 0 2px;
+}
+
+.btn-group > .ar-dropdown:last-child > button {
+    border-radius: 0 2px 2px 0;
+}
+
+.form-group:empty {
+    display: none;
+}
+
+.ar-dialog-content {
+    .ar-data-table {
+        box-shadow: none;
+
+        .ar-data-table-heading {
+            border-top: none;
+        }
+    }
+}
+
+.ar-data-table-search {
+    * {
+        z-index: auto !important;
+    }
+
+    input.dialog-search:focus {
+        z-index: 20 !important;
+    }
+
+    input.dialog-search:focus ~ span.bg {
+        z-index: 1 !important;
+    }
+
+    input.dialog-search:focus ~ span.ico {
+        z-index: 21 !important;
+    }
+}
+
+.break-word-hyphen,
+.word-break-hyphen {
+    overflow-wrap: break-word;
+    word-wrap: break-word;
+    -ms-word-break: break-all;
+    word-break: break-all;
+    word-break: break-word;
+
+    -ms-hyphens: auto;
+    -moz-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+.break-word,
+.word-break {
+    overflow-wrap: break-word;
+    word-wrap: break-word;
+    -ms-word-break: break-all;
+    word-break: break-all;
+    word-break: break-word;
+}
+
+.lightbox {
+    width: 100vw;
+    padding: 16px 40px;
+    display: flex;
+    justify-content: center;
+    align-items: flex-start;
+
+    img {
+        max-width: 100%;
+        width: 100%;
+        height: auto;
+        flex-shrink: 1;
+        align-self: flex-start;
+
+        &:hover {
+            cursor: zoom-out;
+        }
+    }
+
+    button.close {
+        position: absolute;
+        left: 10px;
+        top: 10px;
+        width: 30px;
+        height: 30px;
+        padding: 0;
+
+        svg {
+            width: 22px;
+            height: 22px;
+        }
+    }
+}
+
+.ar-alert .content {
+    padding-bottom: 0;
+}
+
+.ar-data-table-heading.center {
+    text-align: center !important;
+}
+
+.block {
+    display: block;
+}
+
+.input-group {
+    input,
+    textarea,
+    select {
+        &:first-child {
+            &:last-child {
+                &:focus {
+                    border-right: 1px solid $color-primary;
+                }
+
+                &:read-only {
+                    &:focus {
+                        border-right: 1px solid #f3f3f3;
+                    }
+                }
+            }
+        }
+    }
+}
+
+.form-group.input-group {
+    * {
+        margin-top: 0 !important;
+    }
+}
+
+.ar-dialog-header-btn {
+    &:focus {
+        box-shadow: none;
+        background-color: rgba($color-light, 0.5);
+
+        svg {
+            fill: $color-primary;
+        }
+    }
+
+    &:hover {
+        opacity: 1;
+
+        svg {
+            fill: $color-primary;
+        }
+    }
+}
+
+.ar-dialog-footer-btn {
+    @extend .ar-dialog-header-btn;
+    border-left: none;
+    border-right: 1px solid #f7f7f7;
+    width: 42px;
+    height: 100%;
+    min-height: 43px;
+    margin: -8px 0 -8px -8px;
+}
+
+.overflow {
+    &-hidden {
+        overflow: none;
+    }
+
+    &-auto {
+        overflow: auto;
+    }
+
+    &-scroll {
+        overflow: scroll;
+    }
+
+    &-y {
+        &-hidden {
+            overflow-y: hidden;
+        }
+
+        &-auto {
+            overflow-y: auto;
+        }
+
+        &-scroll {
+            overflow-y: scroll;
+        }
+    }
+
+    &-x {
+        &-hidden {
+            overflow-x: none;
+        }
+
+        &-auto {
+            overflow-x: auto;
+        }
+
+        &-scroll {
+            overflow-x: scroll;
+        }
+    }
+}
+
+.Toastify {
+    &__toast {
+        padding: 0;
+
+        &-body {
+            padding-left: 12px;
+            padding-right: 8px;
+        }
+    }
+
+    &__progress-bar {
+        left: auto;
+        right: 0;
+        transform-origin: right;
+
+        &--info {
+            background-color: $color-primary;
+        }
+    }
+}
+
+.hover {
+    .mouseover {
+        display: none;
+    }
+
+    .mouseout {
+        display: block;
+    }
+
+    &:hover {
+        .mouseover {
+            display: block;
+        }
+
+        .mouseout {
+            display: none;
+        }
+    }
+}
+
+.admin-page {
+    .zone {
+        &-admin-header {
+            @include admin-header-zone;
+
+            .admin-header-button {
+                @include admin-header-button;
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-variables-admin.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-variables-admin.scss
new file mode 100644
index 00000000..bd7fd11d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/_reactium-style-variables-admin.scss
@@ -0,0 +1,188 @@
+$default: $color-gray !default;
+$primary: $color-indigo !default;
+$primary-dark: darken($primary, 1%) !default;
+$secondary: $color-darkIndigo !default;
+$tertiary: $color-black !default;
+$danger: $color-coral !default;
+$info: $color-sky !default;
+$success: $color-spring !default;
+$warning: $color-sea !default;
+$error: $color-coral !default;
+$light: $color-white !default;
+$dark: $color-black !default;
+$tint: $color-tint !default;
+$input-color-focus: $info;
+$input-color-placeholder: $color-gray;
+$input-color-error: $error;
+$input-color-border: $color-grey-light; 
+
+// COLORS
+$color-danger: #e09797 !default;
+$color-primary: #4f82ba !default;
+$color-secondary: #000000 !default;
+$color-tertiary: #999999 !default;
+$color-light: #ffffff !default;
+$color-light-dark: #fdfdfd !default;
+$color-dark: #333333 !default;
+$color-dark-light: #222222 !default;
+$color-black: #000000 !default;
+
+$color-text-light: #ffffff !default;
+$color-text-light-dark: #fdfdfd !default;
+$color-text-dark: #000000 !default;
+$color-text-dark-light: #222222 !default;
+
+// Colors
+$color-border: #f7f7f7 !default;
+
+$input-color-border: #f3f3f3 !default;
+
+// Link Icon
+$fill-focus-icon-link: $color-primary !default;
+$stroke-focus-icon-link: $color-black !default;
+
+// Spacing
+$padding-default: 24px !default;
+$padding-admin-content-zone: $padding-default !default;
+$padding-settings-dialog: $padding-default !default;
+
+// Background
+$color-admin-bg: $color-grey-light !default;
+
+// Admin Header
+$color-admin-header: $color-gray !default;
+$color-admin-header-bg: $color-light !default;
+$color-admin-header-border: $color-grey-light !default;
+$height-admin-header: 60px !default;
+$height-admin-header-button: 30px !default;
+$height-admin-list-toolbar: 90px !default;
+
+// Sidebar
+$color-sidebar-bg: $color-dark !default;
+$color-sidebar-text: $color-grey-light !default;
+$font-size-sidebar: 14px !default;
+$width-sidebar-expanded: 320px !default;
+$width-sidebar-collapsed: 80px !default;
+
+// Sidebar menu
+$color-menu-item-active: $color-primary !default;
+$font-size-menu-item: 16px !default;
+$font-weight-menu-item: 500 !default;
+$width-menu-item: 50px !default;
+$height-menu-item: 60px !default;
+$height-menu-item-expanded: 40px !default;
+$admin-sidebar-ns: admin-sidebar !default;
+
+// Avatar
+$color-avatar-stroke: $color-dark !default;
+$color-avatar-text: $color-grey-light !default;
+
+// Profile
+$width-profile-avatar: 124px !default;
+$width-profile-avatar-button: 30px !default;
+
+// Media
+$width-upload-action-button: 30px !default;
+$height-media-form: calc(100vh - #{$height-admin-header}) !default;
+$width-media-form: 420px !default;
+$shadow-image: 0 0 5px 1px rgba(0, 0, 0, 0.05) !default;
+
+// Content List
+$admin-content-list-height: 80px !default;
+$admin-content-list-ns: admin-content-list !default;
+
+// Content Editor
+$width-ace-sidebar: 420px !default;
+$admin-content-ns: admin-content !default;
+
+// User List
+$admin-user-list-ns: admin-user-list !default;
+
+// Placeholder
+$color-place-holder: $color-grey-light !default;
+
+$z-indexes: (
+'popup': 20000,
+'overlay': 10000,
+'sidebar': 9000,
+'actions': 8000,
+'header': 7000,
+'content': 100,
+'normal': 1,
+'default': 0,
+) !default;
+
+// Link Icon
+$fill-focus-icon-link: $color-primary !default;
+$stroke-focus-icon-link: $color-black !default;
+
+// Spacing
+$padding-default: 24px !default;
+$padding-admin-content-zone: $padding-default !default;
+$padding-settings-dialog: $padding-default !default;
+
+// Background
+$color-admin-bg: $color-grey-light !default;
+
+// Admin Header
+$color-admin-header: $color-gray !default;
+$color-admin-header-bg: $color-light !default;
+$color-admin-header-border: $color-grey-light !default;
+$height-admin-header: 60px !default;
+$height-admin-header-button: 30px !default;
+$height-admin-list-toolbar: 90px !default;
+
+// Sidebar
+$color-sidebar-bg: $color-dark !default;
+$color-sidebar-text: $color-grey-light !default;
+$font-size-sidebar: 14px !default;
+$width-sidebar-expanded: 320px !default;
+$width-sidebar-collapsed: 80px !default;
+
+// Sidebar menu
+$color-menu-item-active: $color-primary !default;
+$font-size-menu-item: 16px !default;
+$font-weight-menu-item: 500 !default;
+$width-menu-item: 50px !default;
+$height-menu-item: 60px !default;
+$height-menu-item-expanded: 40px !default;
+$admin-sidebar-ns: admin-sidebar !default;
+
+// Avatar
+$color-avatar-stroke: $color-dark !default;
+$color-avatar-text: $color-grey-light !default;
+
+// Profile
+$width-profile-avatar: 124px !default;
+$width-profile-avatar-button: 30px !default;
+
+// Media
+$width-upload-action-button: 30px !default;
+$height-media-form: calc(100vh - #{$height-admin-header}) !default;
+$width-media-form: 420px !default;
+$shadow-image: 0 0 5px 1px rgba(0, 0, 0, 0.05) !default;
+
+// Content List
+$admin-content-list-height: 80px !default;
+$admin-content-list-ns: admin-content-list !default;
+
+// Content Editor
+$width-ace-sidebar: 420px !default;
+$admin-content-ns: admin-content !default;
+
+// User List
+$admin-user-list-ns: admin-user-list !default;
+
+// Placeholder
+$color-place-holder: $color-grey-light !default;
+
+$z-indexes: (
+'popup': 20000,
+'overlay': 10000,
+'sidebar': 9000,
+'actions': 8000,
+'header': 7000,
+'content': 100,
+'normal': 1,
+'default': 0,
+) !default;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/colors-mixins-admin-theme.json b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/colors-mixins-admin-theme.json
new file mode 100644
index 00000000..28039d38
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Theme/colors-mixins-admin-theme.json
@@ -0,0 +1,27 @@
+{
+    "color-cloud": "#DFE0DF",
+    "color-coral": "#F15F5C",
+    "color-darkIndigo": "#111735",
+    "color-indigo": "#1D2758",
+    "color-sea": "#00BAB4",
+    "color-sky": "#08BFF1",
+    "color-spring": "#79C82E",
+    "color-sky": "#87CEEB",
+    "color-cloud": "#F7F7F7",
+    "color-tint": "#F3F3F3",
+    "color-black": "#000000",
+    "color-gray-dark": "#333333",
+    "color-gray": "#999999",
+    "color-grey": "#CFCFCF",
+    "color-grey-light": "#F3F3F3",
+    "color-white": "#FFFFFF",
+    "color-white-dark": "#FDFDFD",
+    "color-yellow": "#F4F19C",
+    "color-orange": "#E69840",
+    "color-pink": "#D877A0",
+    "color-red": "#E09797",
+    "color-purple": "#7A7CEF",
+    "color-blue": "#4F82BA",
+    "color-green": "#659A3F",
+    "color-green-light": "#B2BB50"
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Hotkeys/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Hotkeys/index.js
index ad235bfc..773586c9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Hotkeys/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Hotkeys/index.js
@@ -1,10 +1,8 @@
-// @flow
-
 import _ from 'underscore';
 import op from 'object-path';
 import isHotkey from 'is-hotkey';
 import Registry from '../Registry';
-import Reactium, { useIsContainer as isContainer } from 'reactium-core/sdk';
+import { useIsContainer as isContainer } from '@atomic-reactor/reactium-core/sdk';
 
 export default class Hotkeys extends Registry {
     constructor() {
@@ -12,9 +10,9 @@ export default class Hotkeys extends Registry {
         this.isContainer = isContainer();
     }
 
-    onKeyboardEvent(event: Object) {
+    onKeyboardEvent(event) {
         let next = true;
-        this.list.forEach(item => {
+        this.list.forEach((item) => {
             if (next === false) return;
 
             const { key, callback, scope } = item;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Registry/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Registry/index.js
index 0074219a..0d67d930 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Registry/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/Registry/index.js
@@ -1,5 +1,5 @@
 // TODO: Remove this and refactor all the things using it to use Reactium.Utils.Registry
 
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 export default Reactium.Utils.Registry;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/index.js
index 84f58fc5..f8e27838 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/index.js
@@ -1,119 +1,85 @@
-import { Modal, Toast, Tooltip } from '@atomic-reactor/reactium-ui';
-import Reactium, { useRegisterHandle, useDocument } from 'reactium-core/sdk';
+import Reactium, {
+    useDocument,
+    useStateEffect,
+    useSyncState,
+    useRefs,
+} from '@atomic-reactor/reactium-core/sdk';
 
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useLayoutEffect as useWindowEffect,
-    useRef,
-} from 'react';
+import _ from 'underscore';
+import { Modal, Toast, Tooltip } from 'reactium-ui';
+import React, { useEffect, useLayoutEffect as useWindowEffect } from 'react';
 
 const useLayoutEffect =
     typeof window !== 'undefined' ? useWindowEffect : useEffect;
 
-let Tools = (props, ref) => {
-    const ival = useRef();
-    const width = useRef();
-    const headerRef = useRef();
-    const parentRef = useRef();
-    const modalRef = useRef();
-    const tooltipRef = useRef();
+const Tools = () => {
+    const refs = useRefs();
 
     const iDoc = useDocument();
 
-    const handle = () => ({
-        Modal: modalRef.current,
-        Tooltip: tooltipRef.current,
-        Toast,
+    const state = useSyncState({
+        ival: null,
+        width: 0,
     });
 
     const fixHeader = () => {
-        const header = headerRef.current;
-        const parent = parentRef.current;
+        let width = state.get('width', 0) || 0;
+        const header = iDoc.querySelector('.zone-admin-header');
 
-        if (!header || !parent) {
-            return;
-        }
-        if (parent.offsetWidth === width.current) {
-            return;
-        }
+        if (!header) return;
 
-        width.current = parent.offsetWidth;
+        const parent = header.parentNode;
 
-        header.style.width = `${width.current}px`;
-    };
-
-    const onKeyDown = e => Reactium.Hotkeys.onKeyboardEvent(e);
+        if (!parent) return;
 
-    const dismissModal = e => {
-        if (!modalRef.current) return;
-        e.preventDefault();
-        handle.Modal.hide();
-        return false;
-    };
+        if (parent.offsetWidth === width) return;
 
-    useLayoutEffect(() => {
-        if (!headerRef.current) {
-            headerRef.current = iDoc.querySelector('.zone-admin-header');
-        }
+        width = parent.offsetWidth;
+        state.set('width', width, true);
 
-        if (headerRef.current && !parentRef.current) {
-            parentRef.current = headerRef.current.parentNode;
-        }
+        header.style.width = `${width}px`;
+    };
 
-        fixHeader();
-    }, [headerRef.current, parentRef.current, width]);
+    useStateEffect(
+        {
+            set: (e) => {
+                const p = _.isString(e.path)
+                    ? e.path
+                    : _.isObject(e.value)
+                    ? _.first(Object.keys(e.value))
+                    : '';
+
+                if (!String(p).startsWith('Tools')) return;
+                Reactium.State.Tools = Reactium.State.get('Tools');
+            },
+        },
+        [],
+    );
 
     useLayoutEffect(() => {
-        ival.current = setInterval(fixHeader, 1);
-        return () => clearInterval(ival.current);
-    });
+        const ival = state.get('ival');
+        if (ival) clearInterval(ival);
+        const i = setInterval(fixHeader, 1);
+        state.set('ival', i);
 
-    useEffect(() => {
-        handle.Modal = modalRef.current;
-        handle.Tooltip = tooltipRef.current;
-    });
+        fixHeader();
 
-    useEffect(() => {
-        Reactium.Hotkeys.register('modal-esc', {
-            callback: dismissModal,
-            key: 'esc',
-            order: Reactium.Enums.priority.lowest,
-            scope: document,
-        });
-
-        return () => {
-            Reactium.Hotkeys.unregister('modal-esc');
-        };
+        return () => clearInterval(i);
     }, []);
 
-    // Register keyboard hotkey listener
     useEffect(() => {
-        if (!modalRef.current) return;
-        if (typeof window === 'undefined') return;
+        const Modal = refs.get('Modal');
+        const Tooltip = refs.get('Tooltip');
+        Reactium.State.set('Tools', { Modal, Toast, Tooltip });
+    }, [refs.get('Modal'), refs.get('Tooltip')]);
 
-        window.addEventListener('keydown', onKeyDown);
-
-        return () => {
-            window.removeEventListener('keydown', onKeyDown);
-        };
-    }, [Modal]);
-
-    // External Interface
-    useRegisterHandle('AdminTools', handle);
-    useImperativeHandle(ref, handle);
-
-    // Render
     return (
         <>
-            <Modal ref={modalRef} />
-            <Tooltip ref={tooltipRef} />
+            <Modal ref={(elm) => refs.set('Modal', elm)} />
+            <Tooltip ref={(elm) => refs.set('Tooltip', elm)} />
             <Toast />
         </>
     );
 };
 
-Tools = forwardRef(Tools);
-
 export { Tools as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-boot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-boot.js
new file mode 100644
index 00000000..1f6781c7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-boot.js
@@ -0,0 +1,12 @@
+(async () => {
+    ReactiumBoot.Hook.registerSync(
+        'Server.AppBindings',
+        (req, AppBindings) => {
+            AppBindings.register('admin-tools', {
+                markup: '<div data-reactium-bind="Tools"></div>',
+            });
+        },
+        ReactiumBoot.Enums.priority.highest - 1,
+        'ADMIN-CORE-TOOLS-BINDING',
+    );
+})();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-hooks.js
index 47838430..740ac726 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/reactium-hooks.js
@@ -1,15 +1,9 @@
 import Tools from './index';
 import Hotkeys from './Hotkeys';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
+Reactium.Component.register('Tools', Tools);
 Reactium.Plugin.register('AdminTools').then(() => {
     // Extend sdk
     Reactium.Hotkeys = Reactium.Hotkeys || new Hotkeys();
-
-    Reactium.Zone.addComponent({
-        id: 'ADMIN-TOOLS',
-        component: Tools,
-        zone: ['admin-tools'],
-        order: Reactium.Enums.priority.highest,
-    });
 });
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams.js b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams.js
index e956a1da..a272964f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams.js
@@ -1,6 +1,6 @@
 import op from 'object-path';
 import pluralize from 'pluralize';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import { useEffect, useState } from 'react';
 
 export default (keys = ['type', 'slug', 'page'], deps = []) => {
@@ -31,7 +31,7 @@ export default (keys = ['type', 'slug', 'page'], deps = []) => {
             keys.push('type');
         }
 
-        keys.forEach(key => {
+        keys.forEach((key) => {
             let val = op.get(paramClone, key);
             if (!val) return;
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Breadcrumbs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Breadcrumbs/index.js
index 2c17eac7..795b5798 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Breadcrumbs/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Breadcrumbs/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
-import { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
 import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
 
 export default () => {
@@ -15,7 +15,8 @@ export default () => {
                         color='clear'
                         size='sm'
                         to='/admin/users/page/1'
-                        type='link'>
+                        type='link'
+                    >
                         <Icon name='Linear.Users2' className='mr-xs-12' />
                         {__('Users')}
                     </Button>
@@ -28,7 +29,8 @@ export default () => {
                             color='clear'
                             size='sm'
                             to='/admin/user/new'
-                            type='link'>
+                            type='link'
+                        >
                             <Icon
                                 name='Feather.Plus'
                                 className='mr-xs-12'
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/Tabs.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/Tabs.js
index 942180cb..5c3a1eba 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/Tabs.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/Tabs.js
@@ -1,13 +1,13 @@
 import React from 'react';
 import cn from 'classnames';
 import op from 'object-path';
-import Reactium, { Zone } from 'reactium-core/sdk';
+import Reactium, { Zone } from '@atomic-reactor/reactium-core/sdk';
 
 export default ({ editor }) => {
     return (
         <>
             <div className={editor.cx('tabs')}>
-                {Reactium.User.Content.list.map(item => {
+                {Reactium.User.Content.list.map((item) => {
                     if (!item.tab) return null;
 
                     const { id, label } = op.get(item, 'tab');
@@ -21,13 +21,14 @@ export default ({ editor }) => {
                         <button
                             key={`user-tab-button-${id}`}
                             className={className}
-                            onClick={e => editor.showTab(e, id)}>
+                            onClick={(e) => editor.showTab(e, id)}
+                        >
                             {label}
                         </button>
                     );
                 })}
             </div>
-            {Reactium.User.Content.list.map(item =>
+            {Reactium.User.Content.list.map((item) =>
                 op.has(item, 'tab.id') &&
                 op.get(item, 'tab.id') === op.get(editor.state, 'tab') ? (
                     <Zone
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Notice/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Notice/index.js
index 9069e443..3bbe21ff 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Notice/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Notice/index.js
@@ -2,7 +2,7 @@ import React from 'react';
 import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
-import { Alert, Icon } from '@atomic-reactor/reactium-ui';
+import { Alert, Icon } from 'reactium-ui';
 
 const Notice = ({ editor }) => {
     const { alert, cx, refs, setAlert, state = {} } = editor;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Password/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Password/index.js
index 2b607023..2eb835fb 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Password/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/Password/index.js
@@ -1,8 +1,11 @@
 import React from 'react';
 import cn from 'classnames';
 import op from 'object-path';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/User/enums';
-import Reactium, { __, useHandle, useHookComponent } from 'reactium-core/sdk';
 
 const Message = () => (
     <>
@@ -16,9 +19,7 @@ const Password = ({ className, disabled = false, user }) => {
 
     const { Button, Icon, Spinner, Toast } = useHookComponent('ReactiumUI');
 
-    const tools = useHandle('AdminTools');
-
-    const Modal = op.get(tools, 'Modal');
+    const Modal = op.get(Reactium.State, 'Tools.Modal');
 
     // Kick off reset password routine.
     const resetPassword = async () => {
@@ -38,7 +39,7 @@ const Password = ({ className, disabled = false, user }) => {
             await Reactium.User.logOut();
 
             // Hide modal and show reset screen
-            await new Promise(resolve =>
+            await new Promise((resolve) =>
                 setTimeout(() => {
                     Modal.hide();
                     Reactium.Routing.history.replace(`/reset/${token}`);
@@ -90,7 +91,8 @@ const Password = ({ className, disabled = false, user }) => {
                 color={Button.ENUMS.COLOR.TERTIARY}
                 onClick={resetConfirm}
                 size={Button.ENUMS.SIZE.SM}
-                type={Button.ENUMS.TYPE.BUTTON}>
+                type={Button.ENUMS.TYPE.BUTTON}
+            >
                 {ENUMS.TEXT.PASSWORD.BUTTON}
             </Button>
         </div>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Content.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Content.js
index efdf2224..f1b3a605 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Content.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Content.js
@@ -11,7 +11,7 @@ import Reactium, {
     useAsyncEffect,
     useEventHandle,
     useWindowSize,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 import {
     Button,
@@ -20,7 +20,7 @@ import {
     Icon,
     Slide,
     Spinner,
-} from '@atomic-reactor/reactium-ui';
+} from 'reactium-ui';
 
 const Content = ({ editor, data }) => {
     const refs = useRef({});
@@ -62,7 +62,7 @@ const Content = ({ editor, data }) => {
 
     const getTypes = () => Reactium.ContentType.types();
 
-    const isExpanded = group => {
+    const isExpanded = (group) => {
         if (op.get(expanded, group)) {
             return op.get(expanded, group);
         } else {
@@ -70,7 +70,7 @@ const Content = ({ editor, data }) => {
         }
     };
 
-    const getCount = contentType => {
+    const getCount = (contentType) => {
         if (contentType) {
             return Object.values(op.get(data, [contentType], {})).length;
         }
@@ -96,7 +96,7 @@ const Content = ({ editor, data }) => {
         setExpanded({ [group]: true });
     };
 
-    const setExpanded = newExpanded => {
+    const setExpanded = (newExpanded) => {
         const exp = JSON.parse(JSON.stringify(expanded));
         Object.entries(newExpanded).forEach(([key, value]) =>
             op.set(exp, key, value),
@@ -106,7 +106,7 @@ const Content = ({ editor, data }) => {
     };
 
     const stats = () => {
-        let list = Object.values(types).map(type => {
+        let list = Object.values(types).map((type) => {
             type = JSON.parse(JSON.stringify(type));
             op.set(type, 'count', getCount(type.objectId));
             return type;
@@ -159,13 +159,13 @@ const Content = ({ editor, data }) => {
         if (!_.isEqual(newHandle, handle)) setHandle(newHandle);
     }, [carouselRef.current]);
 
-    useAsyncEffect(async mounted => {
+    useAsyncEffect(async (mounted) => {
         if (!types) {
             const response = await getTypes();
             if (mounted()) {
                 setTypes(
                     _.chain(
-                        response.map(item => {
+                        response.map((item) => {
                             const { icon, label } = op.get(item, 'meta');
 
                             if (!icon || !label) return null;
@@ -218,14 +218,16 @@ const Content = ({ editor, data }) => {
                         className='nav nav-left'
                         color={Button.ENUMS.COLOR.CLEAR}
                         onClick={() => carouselRef.current.prev()}
-                        size={Button.ENUMS.SIZE.MD}>
+                        size={Button.ENUMS.SIZE.MD}
+                    >
                         <Icon name='Feather.ChevronLeft' />
                     </Button>
                     <Button
                         className='nav nav-right'
                         color={Button.ENUMS.COLOR.CLEAR}
                         onClick={() => carouselRef.current.next()}
-                        size={Button.ENUMS.SIZE.MD}>
+                        size={Button.ENUMS.SIZE.MD}
+                    >
                         <Icon name='Feather.ChevronRight' />
                     </Button>
                 </div>
@@ -248,13 +250,14 @@ const Content = ({ editor, data }) => {
                                 />
                                 <Collapsible
                                     expanded={isExpanded(group)}
-                                    onCollapse={e => onCollapse(e, group)}
-                                    onExpand={e => onExpand(e, group)}
-                                    ref={elm => {
+                                    onCollapse={(e) => onCollapse(e, group)}
+                                    onExpand={(e) => onExpand(e, group)}
+                                    ref={(elm) => {
                                         if (elm)
                                             op.set(refs.current, group, elm);
-                                    }}>
-                                    {items.map(item => (
+                                    }}
+                                >
+                                    {items.map((item) => (
                                         <ListItem
                                             {...item}
                                             key={`ugc-${item.typeID}-${item.contentID}`}
@@ -275,11 +278,12 @@ const Content = ({ editor, data }) => {
 
 const ListHeading = ({ editor, type, ...props }) => (
     <button
-        onClick={e => props.toggleGroup(e, type.group)}
+        onClick={(e) => props.toggleGroup(e, type.group)}
         className={cn({
             [editor.cx('content-list-heading')]: true,
             collapsed: !props.isExpanded(type.group),
-        })}>
+        })}
+    >
         <div className='icon'>
             <Icon className='mr-xs-8' name={type.icon} size={22} />
         </div>
@@ -296,10 +300,10 @@ const ListHeading = ({ editor, type, ...props }) => (
     </button>
 );
 
-const ListItem = props => {
+const ListItem = (props) => {
     const cx = Reactium.Utils.cxFactory('admin-content-list');
 
-    const columnClassName = field =>
+    const columnClassName = (field) =>
         cn(
             cx('column'),
             cx(`column-${field}`),
@@ -328,7 +332,8 @@ const ListItem = props => {
                                 outline
                                 readOnly={true}
                                 size={Button.ENUMS.SIZE.XS}
-                                type={Button.ENUMS.TYPE.BUTTON}>
+                                type={Button.ENUMS.TYPE.BUTTON}
+                            >
                                 {props.status}
                             </Button>
                         </div>
@@ -336,7 +341,8 @@ const ListItem = props => {
                             <Button
                                 to={props.url}
                                 color={Button.ENUMS.COLOR.CLEAR}
-                                type={Button.ENUMS.TYPE.LINK}>
+                                type={Button.ENUMS.TYPE.LINK}
+                            >
                                 <Icon name='Feather.Edit2' />
                             </Button>
                         </div>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Empty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Empty.js
index e4b85dd4..d3204671 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Empty.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/Empty.js
@@ -1,8 +1,11 @@
 import _ from 'underscore';
 import op from 'object-path';
 import React, { useState } from 'react';
-import Reactium, { __, useAsyncEffect } from 'reactium-core/sdk';
-import { Button, Dropdown, Icon, Spinner } from '@atomic-reactor/reactium-ui';
+import Reactium, {
+    __,
+    useAsyncEffect,
+} from '@atomic-reactor/reactium-core/sdk';
+import { Button, Dropdown, Icon, Spinner } from 'reactium-ui';
 
 export default ({ className = 'media-empty', value = {} }) => {
     const name = op.get(value, 'fname', op.get(value, 'username'));
@@ -21,13 +24,13 @@ export default ({ className = 'media-empty', value = {} }) => {
     const onItemSelect = ({ item }) =>
         Reactium.Routing.history.push(op.get(item, 'value'));
 
-    useAsyncEffect(async mounted => {
+    useAsyncEffect(async (mounted) => {
         if (!types) {
             const response = await getTypes();
             if (mounted()) {
                 setTypes(
                     _.compact(
-                        response.map(item => {
+                        response.map((item) => {
                             const { icon, label } = op.get(item, 'meta');
 
                             if (!icon || !label) return null;
@@ -57,12 +60,14 @@ export default ({ className = 'media-empty', value = {} }) => {
                         color={Button.ENUMS.COLOR.CLEAR}
                         data={types}
                         onItemClick={onItemSelect}
-                        size={Button.ENUMS.SIZE.MD}>
+                        size={Button.ENUMS.SIZE.MD}
+                    >
                         <Button
                             appearance={Button.ENUMS.APPEARANCE.PILL}
                             data-dropdown-element
                             size={Button.ENUMS.SIZE.MD}
-                            type='button'>
+                            type='button'
+                        >
                             {__('Create Content')}
                         </Button>
                     </Dropdown>
@@ -82,7 +87,8 @@ const Svg = ({ color = '#4F82BA', width = '100%', ...props }) => (
                 y1='717.25'
                 x2='397.74'
                 y2='86.11'
-                gradientUnits='userSpaceOnUse'>
+                gradientUnits='userSpaceOnUse'
+            >
                 <stop offset='0' stopColor='gray' stopOpacity='0.25' />
                 <stop offset='0.54' stopColor='gray' stopOpacity='0.12' />
                 <stop offset='1' stopColor='gray' stopOpacity='0.1' />
@@ -105,7 +111,8 @@ const Svg = ({ color = '#4F82BA', width = '100%', ...props }) => (
             />
             <clipPath
                 id='7a4c6aff-0be0-461b-a111-b3ae1b8fbf73'
-                transform='translate(-140.93 -67.23)'>
+                transform='translate(-140.93 -67.23)'
+            >
                 <rect
                     id='8cc91f6d-19b0-43cc-9c18-2faa83ac34ba'
                     data-name='&lt;Rectangle&gt;'
@@ -134,7 +141,8 @@ const Svg = ({ color = '#4F82BA', width = '100%', ...props }) => (
             />
             <clipPath
                 id='79ce363a-d134-40e4-9f82-b96d04a36978'
-                transform='translate(-140.93 -67.23)'>
+                transform='translate(-140.93 -67.23)'
+            >
                 <rect
                     id='5b44e697-61fe-43bd-9a58-5f3e41301748'
                     data-name='&lt;Rectangle&gt;'
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/index.js
index 799d7014..41fdc2b4 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserContent/index.js
@@ -3,7 +3,7 @@ import _ from 'underscore';
 import Empty from './Empty';
 import op from 'object-path';
 import Content from './Content';
-import { __, useHookComponent } from 'reactium-core/sdk';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const UserContent = ({ editor }) => {
     const Helmet = useHookComponent('Helmet');
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserInputs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserInputs/index.js
index bcc3f3c8..13f05f32 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserInputs/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserInputs/index.js
@@ -8,13 +8,13 @@ import Reactium, {
     useRoles,
     useHookComponent,
     Zone,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const UserInputs = ({ editor }) => {
     const { errors, state = {} } = editor;
     const { value = {} } = state;
 
-    const isError = field => {
+    const isError = (field) => {
         const errs = _.indexBy(errors, 'field');
         return op.get(errs, field, false);
     };
@@ -36,7 +36,8 @@ const UserInputs = ({ editor }) => {
                     <div
                         className={cn('form-group', {
                             error: isError('fname'),
-                        })}>
+                        })}
+                    >
                         <input
                             type='text'
                             name='fname'
@@ -48,7 +49,8 @@ const UserInputs = ({ editor }) => {
                     <div
                         className={cn('form-group', {
                             error: isError('lname'),
-                        })}>
+                        })}
+                    >
                         <input
                             type='text'
                             name='lname'
@@ -70,7 +72,8 @@ const UserInputs = ({ editor }) => {
                             'input-group':
                                 !Reactium.User.isCurrent(value) &&
                                 !editor.isNew(),
-                        })}>
+                        })}
+                    >
                         <input
                             type='email'
                             name='email'
@@ -86,7 +89,8 @@ const UserInputs = ({ editor }) => {
                         <div
                             className={cn('form-group', {
                                 error: isError('username'),
-                            })}>
+                            })}
+                        >
                             <input
                                 type='text'
                                 name='username'
@@ -102,7 +106,8 @@ const UserInputs = ({ editor }) => {
                             <div
                                 className={cn('form-group', {
                                     error: isError('password'),
-                                })}>
+                                })}
+                            >
                                 <input
                                     type='password'
                                     name='password'
@@ -115,7 +120,8 @@ const UserInputs = ({ editor }) => {
                             <div
                                 className={cn('form-group', {
                                     error: isError('confirm'),
-                                })}>
+                                })}
+                            >
                                 <input
                                     type='password'
                                     name='confirm'
@@ -162,7 +168,7 @@ const RoleSelect = ({ editor }) => {
         }
     });
 
-    const onItemSelect = async e => {
+    const onItemSelect = async (e) => {
         if (editor.isDirty()) {
             await Reactium.User.save(editor.state.value);
         }
@@ -176,7 +182,7 @@ const RoleSelect = ({ editor }) => {
         });
     };
 
-    const onItemUnselect = async e => {
+    const onItemUnselect = async (e) => {
         if (editor.isDirty()) {
             await Reactium.User.save(editor.state.value);
         }
@@ -201,13 +207,15 @@ const RoleSelect = ({ editor }) => {
                 onItemSelect={onItemSelect}
                 onItemUnselect={onItemUnselect}
                 ref={ref}
-                valueField='name'>
+                valueField='name'
+            >
                 <div className='flex middle'>
                     <Button
                         type='button'
                         color={Button.ENUMS.COLOR.TERTIARY}
                         data-dropdown-element
-                        style={{ height: 41, width: 41, padding: 0 }}>
+                        style={{ height: 41, width: 41, padding: 0 }}
+                    >
                         <Icon name='Feather.Award' size={18} />
                     </Button>
                 </div>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/Empty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/Empty.js
index 0684d096..e8005c8a 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/Empty.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/Empty.js
@@ -1,8 +1,8 @@
 import _ from 'underscore';
 import op from 'object-path';
 import React, { useState } from 'react';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Spinner } from '@atomic-reactor/reactium-ui';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
+import { Button, Spinner } from 'reactium-ui';
 
 export default ({ className = 'media-empty', value = {} }) => {
     const name = op.get(value, 'fname', op.get(value, 'username'));
@@ -25,7 +25,8 @@ export default ({ className = 'media-empty', value = {} }) => {
                         appearance={Button.ENUMS.APPEARANCE.PILL}
                         size={Button.ENUMS.SIZE.MD}
                         to='/admin/media/1'
-                        type={Button.ENUMS.TYPE.LINK}>
+                        type={Button.ENUMS.TYPE.LINK}
+                    >
                         {__('Get Started')}
                     </Button>
                 )}
@@ -44,7 +45,8 @@ const Svg = ({ color = '#4F82BA', ...props }) => (
                 y1='598.64'
                 x2='819.93'
                 y2='132.32'
-                gradientUnits='userSpaceOnUse'>
+                gradientUnits='userSpaceOnUse'
+            >
                 <stop offset='0' stopColor='gray' stopOpacity='0.25' />
                 <stop offset='0.54' stopColor='gray' stopOpacity='0.12' />
                 <stop offset='1' stopColor='gray' stopOpacity='0.1' />
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/index.js
index 06723ab2..2a3a8f1a 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserMedia/index.js
@@ -4,7 +4,7 @@ import op from 'object-path';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
 import React, { useEffect, useRef, useState } from 'react';
 
-import { Dropzone, Spinner } from '@atomic-reactor/reactium-ui';
+import { Dropzone, Spinner } from 'reactium-ui';
 
 import Reactium, {
     __,
@@ -12,16 +12,19 @@ import Reactium, {
     useHandle,
     useHookComponent,
     useStatus,
-} from 'reactium-core/sdk';
-import { useReduxState } from '@atomic-reactor/use-select';
+} from '@atomic-reactor/reactium-core/sdk';
+// import { useReduxState } from '@atomic-reactor/use-select';
 
 const noop = () => {};
 
 const UserMedia = ({ editor }) => {
     const title = __('User Media');
 
+    // TODO: Fix me
     // Redux state
-    const [redux, setReduxState] = useReduxState('Media');
+    // const [redux, setReduxState] = useReduxState('Media');
+    const redux = {};
+    const setReduxState = () => {};
 
     // Refs
     const dropzoneRef = useRef();
@@ -69,7 +72,7 @@ const UserMedia = ({ editor }) => {
         if (init !== true) return noop;
 
         const d = op.get(meta, 'media', {});
-        const dataArray = Object.keys(d).map(key => {
+        const dataArray = Object.keys(d).map((key) => {
             const item = { ...d[key] };
             op.set(item, 'objectId', key);
             return item;
@@ -85,23 +88,23 @@ const UserMedia = ({ editor }) => {
         return noop;
     };
 
-    const setData = newData => {
+    const setData = (newData) => {
         if (unMounted()) return;
         if (_.isEqual(data, newData)) return;
         _.defer(() => setNewData(newData));
     };
 
-    const setDirectory = newDirectory => {
+    const setDirectory = (newDirectory) => {
         if (unMounted()) return;
         setNewDirectory(newDirectory);
     };
 
-    const setInit = newInit => {
+    const setInit = (newInit) => {
         if (!spinnerRef.current) return;
         setNewInit(newInit);
     };
 
-    const setType = newType => {
+    const setType = (newType) => {
         if (unMounted()) return;
         setNewType(newType);
     };
@@ -110,29 +113,29 @@ const UserMedia = ({ editor }) => {
         SearchBar.setState({ visible: !isEmpty() });
     };
 
-    const _onError = evt => {
+    const _onError = (evt) => {
         setState({
             error: { message: evt.message },
         });
     };
 
-    const _onFileAdded = e => {
+    const _onFileAdded = (e) => {
         return Reactium.Media.upload(e.added, directory);
     };
 
-    const _onFileRemoved = file => {
+    const _onFileRemoved = (file) => {
         if (dropzoneRef.current) {
             dropzoneRef.current.removeFiles(file);
         }
     };
 
-    const _onMediaChange = e => {
+    const _onMediaChange = (e) => {
         console.log(e);
 
         const library = op.get(redux, 'library');
         const ids = Object.keys(data);
 
-        const add = library.filter(item => {
+        const add = library.filter((item) => {
             const { objectId, user } = item;
             const uid = op.get(user, 'id', op.get(user, 'objectId'));
 
@@ -151,7 +154,7 @@ const UserMedia = ({ editor }) => {
         const newValue = { ...value };
         const newMeta = { ...meta };
 
-        add.forEach(item => {
+        add.forEach((item) => {
             const { objectId } = item;
             op.set(newMeta, ['media', objectId], item);
         });
@@ -160,7 +163,7 @@ const UserMedia = ({ editor }) => {
         setState({ value: newValue });
     };
 
-    const _onMediaDelete = e => {
+    const _onMediaDelete = (e) => {
         if (unMounted()) return;
 
         const { objectId } = e;
@@ -248,9 +251,10 @@ const UserMedia = ({ editor }) => {
                     {...dropzoneProps}
                     className={cx('media')}
                     files={{}}
-                    onError={e => _onError(e)}
-                    onFileAdded={e => _onFileAdded(e)}
-                    ref={dropzoneRef}>
+                    onError={(e) => _onError(e)}
+                    onFileAdded={(e) => _onFileAdded(e)}
+                    ref={dropzoneRef}
+                >
                     <Uploads
                         onRemoveFile={_onFileRemoved}
                         uploads={op.get(redux, 'uploads', {})}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserProfile/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserProfile/index.js
index 2c486f3c..08de0e4f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserProfile/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/UserProfile/index.js
@@ -10,14 +10,14 @@ import Reactium, {
     useRoles,
     useHookComponent,
     Zone,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const Actions = ({ editor }) => {
     const { Button, Icon } = useHookComponent('ReactiumUI');
     const { cx, isNew, setState, state = {} } = editor;
     const { editing = false } = state;
 
-    const toggleEditMode = e => {
+    const toggleEditMode = (e) => {
         e.currentTarget.blur();
         setState({
             editing: !editing,
@@ -35,10 +35,11 @@ const Actions = ({ editor }) => {
                             ? Button.ENUMS.COLOR.DANGER
                             : Button.ENUMS.COLOR.PRIMARY
                     }
-                    onClick={e => toggleEditMode(e)}
+                    onClick={(e) => toggleEditMode(e)}
                     outline={!editing}
                     size={Button.ENUMS.SIZE.XS}
-                    style={{ width: 32, height: 32, padding: 0 }}>
+                    style={{ width: 32, height: 32, padding: 0 }}
+                >
                     <Icon
                         name={editing ? 'Feather.X' : 'Feather.Edit2'}
                         size={16}
@@ -58,7 +59,7 @@ const Avatar = ({ editor }) => {
     const [avatar] = useAvatar(value);
     const uploadRef = useRef();
 
-    const fileReader = file =>
+    const fileReader = (file) =>
         new Promise((resolve, reject) => {
             const reader = new FileReader();
 
@@ -75,7 +76,7 @@ const Avatar = ({ editor }) => {
         editor.setAvatar();
     };
 
-    const onFileSelected = async e => {
+    const onFileSelected = async (e) => {
         if (e.target.files.length < 1) return;
         const data = await fileReader(_.last(e.target.files));
         uploadRef.current.value = null;
@@ -85,7 +86,8 @@ const Avatar = ({ editor }) => {
     return (
         <div
             className={cx('profile-avatar')}
-            style={{ backgroundImage: `url(${avatar})` }}>
+            style={{ backgroundImage: `url(${avatar})` }}
+        >
             {editing && (
                 <>
                     <input
@@ -97,7 +99,8 @@ const Avatar = ({ editor }) => {
                     <Button
                         appearance={Button.ENUMS.APPEARANCE.CIRCLE}
                         onClick={() => uploadRef.current.click()}
-                        size={Button.ENUMS.SIZE.XS}>
+                        size={Button.ENUMS.SIZE.XS}
+                    >
                         <Icon
                             name={isNew() ? 'Feather.Plus' : 'Feather.Edit2'}
                             size={16}
@@ -108,7 +111,8 @@ const Avatar = ({ editor }) => {
                             appearance={Button.ENUMS.APPEARANCE.CIRCLE}
                             color={Button.ENUMS.COLOR.DANGER}
                             onClick={() => onClearAvatar()}
-                            size={Button.ENUMS.SIZE.XS}>
+                            size={Button.ENUMS.SIZE.XS}
+                        >
                             <Icon name='Feather.X' size={18} />
                         </Button>
                     )}
@@ -131,7 +135,7 @@ const Fullname = ({ className, ...user }) => {
     const [name, setName] = useState(_.compact([fname, lname]).join(' '));
 
     useAsyncEffect(
-        async mounted => {
+        async (mounted) => {
             let currentName = name;
             await Reactium.Hook.run('user-fullname', currentName, user);
             if (!mounted()) return;
@@ -187,7 +191,7 @@ const Roles = ({ className, ...user }) => {
     let names = Object.keys(op.get(user, 'roles', {}));
     names = names.length > 1 ? _.without(names, 'anonymous') : names;
     names.sort();
-    const userRoles = names.map(name => op.get(roles, [name, 'label']));
+    const userRoles = names.map((name) => op.get(roles, [name, 'label']));
 
     return (
         <div className={cn(`${className}s`, 'text-xs-center', 'text-sm-left')}>
@@ -210,7 +214,8 @@ const UserProfile = ({ editor }) => (
     <div
         className={cn(editor.cx('profile'), {
             'edit-mode': op.get(editor, 'state.editing', false),
-        })}>
+        })}
+    >
         <Avatar editor={editor} />
         <Info editor={editor} />
         <Actions editor={editor} />
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/index.js
index 053556ba..b8745467 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_plugins/index.js
@@ -1,6 +1,6 @@
 export * from './Notice';
 export * from './Password';
-export * from './UserContent';
+// export * from './UserContent';
 export * from './UserInputs';
-export * from './UserMedia';
+// export * from './UserMedia';
 export * from './UserProfile';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_reactium-style-organisms-admin-user-editor.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/_reactium-style-organisms-admin-user-editor.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/index.js
index c3beb92f..418224d7 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/Editor/index.js
@@ -3,7 +3,7 @@ import cn from 'classnames';
 import op from 'object-path';
 import ContentTabs from './Tabs';
 import PropTypes from 'prop-types';
-import { Icon } from '@atomic-reactor/reactium-ui';
+import { Icon } from 'reactium-ui';
 
 import React, {
     forwardRef,
@@ -21,7 +21,7 @@ import Reactium, {
     useHookComponent,
     useRegisterHandle,
     Zone,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const noop = () => {};
 
@@ -70,7 +70,7 @@ export class UserEvent extends CustomEvent {
 }
 
 const ErrorMessages = ({ editor, errors }) => {
-    const canFocus = element => typeof element.focus === 'function';
+    const canFocus = (element) => typeof element.focus === 'function';
 
     const jumpTo = (e, element) => {
         e.preventDefault();
@@ -88,7 +88,7 @@ const ErrorMessages = ({ editor, errors }) => {
                 message = !canFocus(focus) ? (
                     message
                 ) : (
-                    <a href='#' onClick={e => jumpTo(e, focus)}>
+                    <a href='#' onClick={(e) => jumpTo(e, focus)}>
                         {message}
                         <Icon
                             name='Feather.CornerRightDown'
@@ -161,19 +161,19 @@ let UserEditor = (
         setUpdated(Date.now());
     };
 
-    const setAlert = newAlert => {
+    const setAlert = (newAlert) => {
         if (unMounted()) return;
         setNewAlert(newAlert);
         forceUpdate(Date.now());
     };
 
-    const setAvatar = avatar => {
+    const setAvatar = (avatar) => {
         if (unMounted()) return;
         const value = { ...state.value, avatar };
         setState({ value });
     };
 
-    const setState = newState => {
+    const setState = (newState) => {
         if (unMounted()) return;
         setPrevState(JSON.parse(JSON.stringify(state)));
         update(newState);
@@ -225,7 +225,7 @@ let UserEditor = (
         }
     };
 
-    const getData = async objectId => {
+    const getData = async (objectId) => {
         if (unMounted()) return;
         if (formRef.current) formRef.current.setValue(null);
 
@@ -332,7 +332,7 @@ let UserEditor = (
         if (isMounted()) setState({ value: {} });
     };
 
-    const save = async value => {
+    const save = async (value) => {
         value = { ...value, ...state.value };
 
         if (!state.editing) return;
@@ -354,17 +354,17 @@ let UserEditor = (
         await Reactium.Hook.run('user-submit', value);
 
         return Reactium.User.save(value)
-            .then(async response => {
+            .then(async (response) => {
                 if (_.isError(response)) {
                     return Promise.reject(response);
                 } else {
                     return _onSuccess({ user: response });
                 }
             })
-            .catch(error => _onFail({ error, value }));
+            .catch((error) => _onFail({ error, value }));
     };
 
-    const saveHotkey = e => {
+    const saveHotkey = (e) => {
         if (e) e.preventDefault();
         if (!state.editing) return;
         submit();
@@ -382,7 +382,7 @@ let UserEditor = (
 
     const unMounted = () => !containerRef.current;
 
-    const _onError = async context => {
+    const _onError = async (context) => {
         const { error } = context;
         const errors = Object.values(error);
 
@@ -405,7 +405,7 @@ let UserEditor = (
         return context;
     };
 
-    const _onFail = async e => {
+    const _onFail = async (e) => {
         const { error, value } = e;
         if (error) {
             const alertObj = {
@@ -443,7 +443,7 @@ let UserEditor = (
         return Promise.resolve(e);
     };
 
-    const _onFormChange = e => {
+    const _onFormChange = (e) => {
         if (state.status === ENUMS.STATUS.LOADED) return;
 
         const { value: currentValue } = state;
@@ -454,12 +454,12 @@ let UserEditor = (
         setState({ value });
     };
 
-    const _onFormSubmit = e => {
+    const _onFormSubmit = (e) => {
         let value = { ...state.value, ...JSON.parse(JSON.stringify(e.value)) };
         return save(value);
     };
 
-    const _onSuccess = async e => {
+    const _onSuccess = async (e) => {
         const { user } = e;
 
         // If current user is being updated -> update cache
@@ -507,7 +507,7 @@ let UserEditor = (
         return Promise.resolve(e);
     };
 
-    const _onValidate = async e => {
+    const _onValidate = async (e) => {
         const { value, ...context } = e;
 
         // check password
@@ -593,7 +593,7 @@ let UserEditor = (
 
     // State change
     useAsyncEffect(
-        async mounted => {
+        async (mounted) => {
             if (state.initialized !== true) return;
 
             const changed = {};
@@ -602,7 +602,7 @@ let UserEditor = (
             const cstate = JSON.parse(JSON.stringify(op.get(state)));
             const pstate = JSON.parse(JSON.stringify(op.get(prevState)));
 
-            watch.forEach(field => {
+            watch.forEach((field) => {
                 const current = op.get(cstate, field);
                 const previous = op.get(pstate, field);
 
@@ -695,7 +695,8 @@ let UserEditor = (
                         onSubmit={_onFormSubmit}
                         ref={formRef}
                         validator={_onValidate}
-                        value={value}>
+                        value={value}
+                    >
                         <Helmet>
                             <title>{parseTitle()}</title>
                         </Helmet>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/HeaderWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/HeaderWidget/index.js
index f0a2b52a..39b3a49f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/HeaderWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/HeaderWidget/index.js
@@ -1,6 +1,10 @@
 import op from 'object-path';
 import React, { useEffect, useState } from 'react';
-import Reactium, { __, useHandle, useHookComponent } from 'reactium-core/sdk';
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
 
 const AddButton = () => {
     const { Button, Icon } = useHookComponent('ReactiumUI');
@@ -13,7 +17,8 @@ const AddButton = () => {
             outline
             size='xs'
             to='/admin/user/new/edit'
-            type='link'>
+            type='link'
+        >
             <Icon name='Feather.Plus' size={18} />
             <span className='hide-xs show-md ml-xs-12'>{__('New User')}</span>
         </Button>
@@ -51,13 +56,15 @@ const SaveButton = () => {
                 className='mr-xs-24'
                 color='primary'
                 disabled={busy || !editing}
-                onClick={e => editor.submit(e)}
+                onClick={(e) => editor.submit(e)}
                 size='xs'
-                type='button'>
+                type='button'
+            >
                 <Icon name={icon} size={18} />
                 <span
                     className='hide-xs show-md ml-xs-12'
-                    style={{ minWidth: 56, textAlign: 'left' }}>
+                    style={{ minWidth: 56, textAlign: 'left' }}
+                >
                     {label}
                 </span>
             </Button>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/EmailWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/EmailWidget/index.js
index 42556ef9..57e5609c 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/EmailWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/EmailWidget/index.js
@@ -1,15 +1,13 @@
 import React from 'react';
 import op from 'object-path';
 import copy from 'copy-to-clipboard';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, { __, useHandle } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
 
 const EmailWidget = ({ user }) => {
     const { email } = user;
 
-    const tools = useHandle('AdminTools');
-
-    const Toast = op.get(tools, 'Toast');
+    const Toast = op.get(Reactium.State, 'Tools.Toast');
 
     const onClick = () => {
         copy(email);
@@ -30,7 +28,8 @@ const EmailWidget = ({ user }) => {
             block
             color={Button.ENUMS.COLOR.CLEAR}
             onClick={onClick}
-            style={buttonProps}>
+            style={buttonProps}
+        >
             <Icon name='Linear.EnvelopeOpen' size={16} />
         </Button>
     );
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Filters/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Filters/index.js
index dde1b74a..e4b18baa 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Filters/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Filters/index.js
@@ -1,8 +1,8 @@
 import _ from 'underscore';
 import op from 'object-path';
 import React, { useRef } from 'react';
-import { useRoles } from 'reactium-core/sdk';
-import { Button, Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { useRoles } from '@atomic-reactor/reactium-core/sdk';
+import { Button, Dropdown, Icon } from 'reactium-ui';
 
 const Filters = ({ list: List }) => {
     const ddRef = useRef();
@@ -33,7 +33,8 @@ const Filters = ({ list: List }) => {
                 maxHeight='calc(100vh - 150px)'
                 ref={ddRef}
                 selection={[op.get(state, 'role', null)]}
-                valueField='name'>
+                valueField='name'
+            >
                 <div className='flex middle'>
                     {op.get(state, 'role') && (
                         <Button
@@ -46,7 +47,8 @@ const Filters = ({ list: List }) => {
                                 padding: '2px 4px 2px 5px',
                                 maxHeight: 20,
                             }}
-                            type={Button.ENUMS.TYPE.BUTTON}>
+                            type={Button.ENUMS.TYPE.BUTTON}
+                        >
                             {state.roleLabel}
                             <Icon
                                 name='Feather.X'
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/ListWidgets/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/ListWidgets/index.js
index ffef559f..6db622a0 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/ListWidgets/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/ListWidgets/index.js
@@ -1,6 +1,6 @@
 import React, { useRef } from 'react';
-import Reactium, { Zone } from 'reactium-core/sdk';
-import { Button, Collapsible, Icon } from '@atomic-reactor/reactium-ui';
+import Reactium, { Zone } from '@atomic-reactor/reactium-core/sdk';
+import { Button, Collapsible, Icon } from 'reactium-ui';
 
 const ListWidgets = ({ user, list }) => {
     const ref = useRef();
@@ -18,7 +18,8 @@ const ListWidgets = ({ user, list }) => {
                 block
                 color={Button.ENUMS.COLOR.CLEAR}
                 onClick={toggle}
-                style={buttonProps}>
+                style={buttonProps}
+            >
                 <Icon name='Feather.MoreVertical' size={16} />
             </Button>
             <Collapsible ref={ref} expanded={false}>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Order/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Order/index.js
index f4fe5927..c56a8571 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Order/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Order/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import op from 'object-path';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const Order = ({ list: List }) => {
     const buttonProps = {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Pagination/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Pagination/index.js
index da504ced..5623d709 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Pagination/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_plugins/Pagination/index.js
@@ -1,10 +1,10 @@
 import _ from 'underscore';
 import op from 'object-path';
 import uuid from 'uuid/v4';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import React, { useEffect, useState } from 'react';
 import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
-import { Pagination as PaginationUI } from '@atomic-reactor/reactium-ui';
+import { Pagination as PaginationUI } from 'reactium-ui';
 
 const Wrap = ({ children, zone }) => {
     switch (zone) {
@@ -24,7 +24,7 @@ const PaginationComponent = ({ list, path, zone: zones, ...props }) => {
     const { state = {} } = list;
     const { page, pages } = state;
 
-    const nav = p => list.setState({ page: p });
+    const nav = (p) => list.setState({ page: p });
 
     const onChange = (e, p) => nav(p);
 
@@ -66,7 +66,7 @@ const PaginationComponent = ({ list, path, zone: zones, ...props }) => {
     return render();
 };
 
-const Pagination = props => {
+const Pagination = (props) => {
     const list = op.get(props, 'list');
     const { path } = useRouteParams(['path']);
     const isVisible = () =>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_reactium-style-organisms-admin-user-list.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/User/List/_reactium-style-organisms-admin-user-list.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/index.js
index 5cd68e5f..62d8fa19 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/List/index.js
@@ -3,7 +3,7 @@ import cn from 'classnames';
 import op from 'object-path';
 import { Link } from 'react-router-dom';
 import React, { useEffect, useRef } from 'react';
-import { Button, Icon, Spinner } from '@atomic-reactor/reactium-ui';
+import { Button, Icon, Spinner } from 'reactium-ui';
 
 import Reactium, {
     __,
@@ -14,9 +14,9 @@ import Reactium, {
     useHookComponent,
     useRegisterHandle,
     Zone,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
-import { useSelect } from '@atomic-reactor/use-select';
+// import { useSelect } from '@atomic-reactor/use-select';
 import { useProfileRole } from 'reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/hooks';
 
 import useAvatar from '../useAvatar';
@@ -35,11 +35,14 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
     // SearchBar
     const SearchBar = useHandle('SearchBar');
 
-    const search = useSelect(state => op.get(state, 'SearchBar.value'));
+    // TODO: Fix me
+    // const search = useSelect(state => op.get(state, 'SearchBar.value'));
+    let search;
 
     const containerRef = useRef();
 
-    const urlParams = useSelect(state => op.get(state, 'Router.params'));
+    // const urlParams = useSelect(state => op.get(state, 'Router.params'));
+    const urlParams = {};
 
     const [prevState, setPrevState] = useDerivedState({
         page: op.get(urlParams, 'page', 1),
@@ -59,7 +62,7 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
         users: undefined,
     });
 
-    const setState = newState => {
+    const setState = (newState) => {
         if (unMounted()) return;
         setPrevState(JSON.parse(JSON.stringify(state)));
         setNewState(newState);
@@ -69,14 +72,14 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
 
     const cname = () => cn(cx(), { [className]: !!className });
 
-    const fetch = params => {
+    const fetch = (params) => {
         if (state.req) return state.req;
         const req = Reactium.User.list(params);
         setState({ status: ENUMS.STATUS.FETCHING, users: undefined, req });
         return req;
     };
 
-    const getName = user => {
+    const getName = (user) => {
         const fname = op.get(user, 'fname', op.get(user, 'firstName'));
         const lname = op.get(user, 'lname', op.get(user, 'lastName'));
         const uname = op.get(user, 'username');
@@ -84,7 +87,7 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
         return String(name).length < 1 ? uname : name;
     };
 
-    const getData = fetchParams =>
+    const getData = (fetchParams) =>
         fetch(fetchParams).then(({ results: users, ...params }) => {
             if (unMounted()) return;
 
@@ -114,7 +117,7 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
 
     const unMounted = () => !containerRef.current;
 
-    const onSearch = newSearch => {
+    const onSearch = (newSearch) => {
         if (
             newSearch !== null &&
             String(newSearch).length > 0 &&
@@ -180,7 +183,7 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
         const newFetchParams = {};
         const fields = ['page', 'role', 'search', 'order'];
 
-        fields.forEach(fld => {
+        fields.forEach((fld) => {
             let curr = op.get(state, fld);
             let prev = op.get(prevState, fld);
 
@@ -226,16 +229,18 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
             <Zone list={handle} zone={cx('top')} />
             <div className={cx('row')}>
                 {state.users &&
-                    state.users.map(item => (
+                    state.users.map((item) => (
                         <div
                             key={`user-${item.objectId}`}
                             className={cn(cx('column'), {
                                 current: Reactium.User.isCurrent(item),
-                            })}>
+                            })}
+                        >
                             <Link
                                 onClick={() => (Reactium.User.selected = item)}
                                 to={`/admin/user/${item.objectId}/content`}
-                                className={cn(cx('card'), 'link')}>
+                                className={cn(cx('card'), 'link')}
+                            >
                                 <Avatar
                                     user={item}
                                     className={cx('card-avatar')}
@@ -267,7 +272,8 @@ const UserList = ({ className, id, namespace, page: initialPage }) => {
                                     onClick={() =>
                                         (Reactium.User.selected = item)
                                     }
-                                    to={`/admin/user/${item.objectId}/edit`}>
+                                    to={`/admin/user/${item.objectId}/edit`}
+                                >
                                     <Icon name='Feather.Edit2' size={16} />
                                 </Button>
                                 <Zone
@@ -312,7 +318,7 @@ const Role = ({ className, user }) => {
 
 const PlaceHolder = ({ cx }) => (
     <div className={cx('row')}>
-        {_.times(12, index => (
+        {_.times(12, (index) => (
             <div key={`placeholder-${index}`} className={cx('column')}>
                 <div className={cn(cx('card'), 'placeholder')}>
                     <div className={cn(cx('card-avatar'), 'placeholder')} />
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/SidebarWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/SidebarWidget/index.js
index 44c45f56..3f096c61 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/SidebarWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/SidebarWidget/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import op from 'object-path';
-import { __, useHookComponent } from 'reactium-core/sdk';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const isActive = (match = {}) =>
     String(op.get(match, 'url', '/'))
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/enums.js
index dd1a5fb4..d3cf2b3a 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/enums.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/enums.js
@@ -1,4 +1,4 @@
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     TEXT: {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/reactium-hooks.js
index 1b75f3e7..bdd48b48 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/reactium-hooks.js
@@ -2,7 +2,7 @@ import op from 'object-path';
 import UserList from './List';
 import UserEditor from './Editor';
 import Breadcrumbs from './Breadcrumbs';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import HeaderWidget from './HeaderWidget';
 import SidebarWidget from './SidebarWidget';
 
@@ -16,8 +16,9 @@ import {
 
 import {
     Notice,
-    UserMedia,
-    UserContent,
+    // TODO: Fix Me
+    // UserMedia,
+    // UserContent,
     UserInputs,
     UserProfile,
 } from './Editor/_plugins';
@@ -116,19 +117,19 @@ Reactium.Plugin.register(
         order: Reactium.Enums.priority.lowest + 1,
     });
 
-    Reactium.Zone.addComponent({
-        id: 'ADMIN-USER-EDITOR-CONTENT',
-        component: UserContent,
-        zone: ['admin-user-content'],
-        order: Reactium.Enums.priority.lowest,
-    });
+    // Reactium.Zone.addComponent({
+    //     id: 'ADMIN-USER-EDITOR-CONTENT',
+    //     component: UserContent,
+    //     zone: ['admin-user-content'],
+    //     order: Reactium.Enums.priority.lowest,
+    // });
 
-    Reactium.Zone.addComponent({
-        id: 'ADMIN-USER-EDITOR-MEDIA',
-        component: UserMedia,
-        zone: ['admin-user-media'],
-        order: Reactium.Enums.priority.lowest,
-    });
+    // Reactium.Zone.addComponent({
+    //     id: 'ADMIN-USER-EDITOR-MEDIA',
+    //     component: UserMedia,
+    //     zone: ['admin-user-media'],
+    //     order: Reactium.Enums.priority.lowest,
+    // });
 
     Reactium.Zone.addComponent({
         id: 'ADMIN-USER-EDITOR-FORM',
@@ -162,7 +163,7 @@ Reactium.Plugin.register(
 
     Reactium.Hook.register(
         'user.auth',
-        async u => {
+        async (u) => {
             const prefs = op.get(u, 'pref', {}) || {};
             localStorage.setItem('ar-prefs', JSON.stringify(prefs));
         },
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/User/useAvatar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/User/useAvatar.js
index efde469e..f38dfcd6 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/User/useAvatar.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/User/useAvatar.js
@@ -1,7 +1,7 @@
 import _ from 'underscore';
 import op from 'object-path';
 import { useState, useEffect } from 'react';
-import Reactium, { useAsyncEffect } from 'reactium-core/sdk';
+import Reactium, { useAsyncEffect } from '@atomic-reactor/reactium-core/sdk';
 
 /**
  * @api {ReactHook} useAvatar(user) useAvatar()
@@ -23,7 +23,7 @@ const useAvatar = (initialUser = {}) => {
         return newAvatar === null ? defaultAvatar : newAvatar;
     };
 
-    useAsyncEffect(async mounted => {
+    useAsyncEffect(async (mounted) => {
         const context = await Reactium.Hook.run('profile-avatar', avatar, user);
 
         if (!mounted()) return;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/style/.gitkeep b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/.gitkeep
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/style/.gitkeep
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/.gitkeep
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/atomic-reactor-logo.svg b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/atomic-reactor-logo.svg
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/atomic-reactor-logo.svg
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/atomic-reactor-logo.svg
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/avatar.png b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/avatar.png
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/avatar.png
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/avatar.png
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/favicon.ico b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/favicon.ico
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/favicon.ico
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/favicon.ico
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/plugin.svg b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/plugin.svg
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/plugin.svg
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/plugin.svg
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/spacer.gif b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/spacer.gif
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/images/spacer.gif
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/images/spacer.gif
diff --git a/src/app/components/common-ui/_reactium-style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/style/.gitkeep
similarity index 100%
rename from src/app/components/common-ui/_reactium-style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/style/.gitkeep
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/style/admin-plugin.css b/reactium_modules/@atomic-reactor/reactium-admin-core/assets/style/admin-plugin.css
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/static/assets/style/admin-plugin.css
rename to reactium_modules/@atomic-reactor/reactium-admin-core/assets/style/admin-plugin.css
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/index.js
new file mode 100644
index 00000000..7f5b217d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/index.js
@@ -0,0 +1,7 @@
+export {
+    useDoesMatchPath,
+    useRouteParams,
+    useUpdater,
+    useAttachSyncState,
+    useAttachHandle,
+} from '@atomic-reactor/reactium-core/sdk';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/package.json b/reactium_modules/@atomic-reactor/reactium-admin-core/package.json
index 9023fff9..b270adb7 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/package.json
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/package.json
@@ -1,61 +1,57 @@
 {
-  "actinium": {
-    "version": "3.6.6"
-  },
-  "reactium": {
-    "version": "4.1.4"
-  },
-  "name": "@atomic-reactor/reactium-admin-core",
-  "version": "1.0.2",
-  "description": "Reactium based Admin UI for the Actinium Application Management System.",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/Atomic-Reactor/Reactium-Admin-Plugins.git"
-  },
-  "keywords": [
-    "reactium",
-    "actinium",
-    "atomic",
-    "reactor"
-  ],
-  "author": "Reactium LLC",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins/issues"
-  },
-  "homepage": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins#readme",
-  "dependencies": {
-    "@atomic-reactor/actinium-auth": "^1.0.2",
-    "@atomic-reactor/reactium-ui": "latest",
-    "classnames": "^2.2.6",
-    "copy-to-clipboard": "^3.3.1",
-    "fullscrn": "^1.3.3",
-    "gsap": "^2.1.3",
-    "gulp-sass": "^4.1.0",
-    "is-hotkey": "^0.1.6",
-    "lunr": "^2.3.8",
-    "memory-cache": "^0.2.0",
-    "moment": "^2.27.0",
-    "node-sass": "^5.0.0",
-    "node-sass-functions-json": "^1.0.0",
-    "object-path": "^0.11.4",
-    "parse": "^2.15.0",
-    "pluralize": "^8.0.0",
-    "react-custom-scrollbars": "^4.2.1",
-    "react-draggable": "^4.2.0",
-    "react-jsx-parser": "^1.21.0",
-    "react-live": "^2.2.2",
-    "react-player": "^2.7.2",
-    "react-spring": "^9.1.2",
-    "react-use-gesture": "^7.0.11",
-    "slate": "^0.57.1",
-    "slate-history": "^0.57.1",
-    "slate-react": "^0.57.1",
-    "underscore": "*",
-    "uuid": "^3.4.0"
-  }
-}
\ No newline at end of file
+    "actinium": {
+        "version": "3.6.6"
+    },
+    "reactium": {
+        "version": "4.1.4"
+    },
+    "name": "@atomic-reactor/reactium-admin-core",
+    "version": "5.0.0",
+    "description": "Reactium based Admin UI for the Actinium Application Management System.",
+    "main": "index.js",
+    "scripts": {
+        "test": "echo \"Error: no test specified\" && exit 1"
+    },
+    "repository": {
+        "type": "git",
+        "url": "git+https://github.com/Atomic-Reactor/Reactium-Admin-Plugins.git"
+    },
+    "keywords": [
+        "reactium",
+        "actinium",
+        "atomic",
+        "reactor"
+    ],
+    "author": "Reactium LLC",
+    "license": "MIT",
+    "bugs": {
+        "url": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins/issues"
+    },
+    "homepage": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins#readme",
+    "dependencies": {
+        "@atomic-reactor/react-custom-scrollbars": "^4.2.2",
+        "@atomic-reactor/react-jsx-parser": "^1.21.0",
+        "@babel/runtime-corejs2": "^7.21.0",
+        "camelcase": "^6.2.0",
+        "drag-and-drop-files": "^0.0.1",
+        "dropzone": "^5.5.1",
+        "fullscrn": "^1.3.3",
+        "gsap": "^2.1.3",
+        "is-hotkey": "^0.1.6",
+        "lunr": "^2.3.8",
+        "memory-cache": "^0.2.0",
+        "moment": "^2.27.0",
+        "pluralize": "^8.0.0",
+        "re-resizable": "^6.9.9",
+        "react-beautiful-dnd": "^13.1.1",
+        "react-draggable": "^4.2.0",
+        "react-live": "^2.2.2",
+        "react-player": "^2.13.0",
+        "react-spring": "^9.1.2",
+        "react-toastify": "^5.2.1",
+        "react-touch-events": "^2.1.0",
+        "react-use-gesture": "^7.0.11",
+        "uuid": "^3.4.0",
+        "victory": "^32.3.0"
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-babel.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-babel.js
new file mode 100644
index 00000000..d78a7874
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-babel.js
@@ -0,0 +1,16 @@
+// ReactiumBabel.Hook.runSync('aliases', ReactiumBabel.ModuleAliases);
+ReactiumBabel.Hook.registerSync(
+    'aliases',
+    ModuleAliases => {
+        ModuleAliases.register('reactium-admin-core', {
+            path: './reactium_modules/@atomic-reactor/reactium-admin-core',
+        });
+
+        ModuleAliases.register('reactium-ui', {
+            path:
+                './reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui',
+        });
+    },
+    ReactiumBabel.Enums.priority.highest,
+    'REACTIUM_ADMIN_CORE_BABEL_ALIASES',
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-boot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-boot.js
deleted file mode 100644
index 7bd6f335..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-boot.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// const _ = require('underscore');
-// const SDK = require('@atomic-reactor/reactium-sdk-core').default;
-
-// SDK.Hook.registerSync('Server.AppStyleSheets', (req, AppStyleSheets) => {
-//     AppStyleSheets.register('admin-plugin', {
-//         path: '/assets/style/admin-plugin.css',
-//         order: SDK.Enums.priority.normal,
-//         when: req => {
-//             if (!_.findWhere(req.routes, { path: '/' })) return true;
-//             if (String(req.originalUrl).startsWith('/admin')) return true;
-//             if (String(req.originalUrl).startsWith('/login')) return true;
-//             if (String(req.originalUrl).startsWith('/logout')) return true;
-//             if (String(req.originalUrl).startsWith('/forgot')) return true;
-//             return false;
-//         },
-//     });
-// });
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-hooks.js
deleted file mode 100644
index a00baadc..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-hooks.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Link } from 'react-router-dom';
-import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
-
-Reactium.Plugin.register('ButtonEnums').then(
-    () => (Button.ENUMS.ELEMENT.LINK = props => <Link {...props} />),
-);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/_style.scss
new file mode 100644
index 00000000..6a0fa65f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/_style.scss
@@ -0,0 +1,92 @@
+$ar-alert-color: $color-gray-dark !default;
+$ar-alert-color-background: $color-white !default;
+$ar-alert-color-border: $color-gray !default;
+$ar-alert-color-dismiss: $color-gray !default;
+$ar-alert-color-icon: $color-gray !default;
+$ar-alert-shadow: 0 0 3px 1px rgba($color-black, 0.05) !default;
+$ar-alert-shadow-focus: 0 0 0 4px rgba(lighten(nth($color-gray, 1), 25%), 0.25) !default;
+$ar-alert-size-border: 4px !default;
+
+.ar-alert {
+    color: $ar-alert-color;
+    border-left: $ar-alert-size-border solid $ar-alert-color-border;
+    padding: 20px;
+    background: $ar-alert-color-background;
+    font-size: 14px;
+    line-height: 1.5;
+    box-shadow: $ar-alert-shadow;
+
+    > * {
+        flex-grow: 0;
+        flex-shrink: 0;
+    }
+
+    &, &:empty {
+        display: none;
+    }
+
+    &.visible {
+        display: flex;
+    }
+
+    .content {
+        flex-grow: 1;
+        padding: 3px 10px 5px 5px;
+        flex-shrink: 1;
+        flex-grow: 1;
+    }
+
+    .ico:first-child {
+        margin-right: 8px;
+
+        svg {
+            fill: $ar-alert-color-icon;
+        }
+    }
+
+    .dismiss {
+        border: none;
+        background-color: transparent;
+        color: $ar-alert-color-dismiss;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 0;
+        width: 24px;
+        height: 24px;
+        margin-right: -4px;
+        border-radius: 4px;
+
+        svg {
+            fill: $ar-alert-color-dismiss;
+        }
+
+        &:hover {
+            svg { opacity: .5; }
+        }
+
+        &:focus {
+            box-shadow: $ar-alert-shadow-focus;
+        }
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &.#{$clr-name} {
+            border-left: $ar-alert-size-border solid nth($clr-codes, 2);
+
+            .ico:first-child {
+                margin-right: 8px;
+
+                svg {
+                    fill: nth($clr-codes, 1);
+                }
+            }
+        }
+    }
+}
+
+.ar-dismissable {
+    .ar-alert {
+        display: flex;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/index.js
new file mode 100644
index 00000000..ec09d59f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Alert/index.js
@@ -0,0 +1,185 @@
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import Button from 'reactium-ui/Button';
+import { Feather } from 'reactium-ui/Icon';
+import Dismissable from 'reactium-ui/Dismissable';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const ENUMS = {
+    ...Dismissable.ENUMS,
+    COLOR: { ...Button.ENUMS.COLOR },
+};
+
+delete ENUMS.COLOR.CLEAR;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Alert
+ * -----------------------------------------------------------------------------
+ */
+let Alert = ({ children, id, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const stateRef = useRef({
+        timer: null,
+        ...props,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        stateRef.current = { ...stateRef.current, ...newState };
+        if (!containerRef.current) return;
+        setNewState(stateRef.current);
+    };
+
+    const _onDismiss = e => {
+        const { onDismiss } = stateRef.current;
+        setState({ visible: false });
+        onDismiss(e);
+    };
+
+    const _pause = () => {
+        let { autoDismiss, dismissable, timer } = stateRef.current;
+
+        if (!autoDismiss || !dismissable || !timer) {
+            return;
+        }
+
+        clearTimeout(timer);
+    };
+
+    const _start = () => {
+        let { autoDismiss, dismissable, timer } = stateRef.current;
+        clearTimeout(timer);
+
+        if (!autoDismiss || !dismissable) {
+            return;
+        }
+
+        autoDismiss *= 1000;
+
+        timer = setTimeout(() => {
+            containerRef.current.hide();
+            clearTimeout(timer);
+        }, autoDismiss);
+
+        setState({ timer });
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        ...containerRef.current,
+        setState,
+        state: stateRef.current,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useLayoutEffect(() => _start(), [state.autoDismiss, state.dismissable]);
+
+    const render = () => {
+        const {
+            className,
+            color,
+            dismissable,
+            icon,
+            namespace,
+            timer,
+            visible,
+        } = stateRef.current;
+
+        if (!visible) {
+            if (timer) {
+                clearTimeout(timer);
+            }
+            return null;
+        }
+
+        const cname = cn({
+            [color]: !!color,
+            [className]: !!className,
+            [namespace]: !!namespace,
+            visible: !dismissable && visible === true,
+        });
+
+        const Content = () => (
+            <div
+                id={id}
+                ref={!dismissable ? containerRef : null}
+                onMouseOver={_pause}
+                onMouseOut={_start}
+                className={cname}>
+                {icon && <span className='ico'>{icon}</span>}
+                <span className='content'>{children}</span>
+                {dismissable && (
+                    <button
+                        type='button'
+                        className='dismiss'
+                        onClick={() => containerRef.current.hide()}>
+                        <Feather.X />
+                    </button>
+                )}
+            </div>
+        );
+
+        const dprops = { ...stateRef.current };
+        delete dprops.autoDismiss;
+        delete dprops.className, delete dprops.color;
+        delete dprops.dismissable;
+        delete dprops.icon;
+        delete dprops.id;
+        delete dprops.namespace;
+
+        return dismissable === true ? (
+            <Dismissable
+                {...dprops}
+                visible={visible}
+                ref={containerRef}
+                onDismiss={_onDismiss}>
+                <Content />
+            </Dismissable>
+        ) : (
+            <Content />
+        );
+    };
+
+    return render();
+};
+
+Alert = forwardRef(Alert);
+
+Alert.ENUMS = ENUMS;
+
+Alert.propTypes = {
+    ...Dismissable.propTypes,
+    autoDismiss: PropTypes.number,
+    color: PropTypes.oneOf(Object.values(ENUMS.COLOR)),
+    dismissable: PropTypes.bool,
+    icon: PropTypes.node,
+};
+
+Alert.defaultProps = {
+    ...Dismissable.defaultProps,
+    color: ENUMS.COLOR.PRIMARY,
+    dismissable: false,
+    icon: <Feather.Info />,
+    id: uuid(),
+    namespace: 'ar-alert',
+    visible: true,
+};
+
+export { Alert, Alert as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Breakpoint/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Breakpoint/index.js
new file mode 100644
index 00000000..8ec40c5d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Breakpoint/index.js
@@ -0,0 +1,181 @@
+import PropTypes from 'prop-types';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const DEBUG = false;
+
+const getBreakpoints = (win = window, doc = window.document) =>
+    new Promise(resolve => {
+        let bps = {};
+        const queries = String(
+            win
+                .getComputedStyle(doc.querySelector('body'), ':before')
+                .getPropertyValue('content'),
+        ).replace(/\'/g, '"');
+
+        if (queries && queries !== 'none') {
+            try {
+                bps = JSON.parse(queries);
+
+                if (typeof bps === 'string') {
+                    bps = JSON.parse(bps);
+                }
+            } catch (err) {
+                // left intentionally blank
+            }
+        }
+
+        resolve(
+            Object.entries(bps).reduce((bps, [key, mediaQuery]) => {
+                bps[key] = win.matchMedia(mediaQuery).matches;
+                return bps;
+            }, {}),
+        );
+    });
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Breakpoint
+ * -----------------------------------------------------------------------------
+ */
+let Breakpoint = ({ iDocument, iWindow, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const stateRef = useRef({
+        active: 'xs',
+        mounted: false,
+        prevState: {},
+        ...props,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        if (DEBUG === true && caller) {
+            console.log('setState() ->', caller, stateRef.current);
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        setState,
+        state: stateRef.current,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => {
+        const { mounted } = stateRef.current;
+        if (mounted === true) {
+            return;
+        }
+        const win = iWindow || window;
+        win.addEventListener('resize', _onResize);
+        setState({ mounted: true });
+    });
+
+    useLayoutEffect(() => {
+        _onResize();
+    });
+
+    const _onResize = async e => {
+        const doc = iDocument || document;
+        const win = iWindow || window;
+
+        if (!win || !doc) {
+            return;
+        }
+
+        let {
+            active = 'xs',
+            breaks = Breakpoint.defaultProps,
+            onResize,
+        } = stateRef.current;
+
+        const breakpoints = await getBreakpoints(win, doc);
+
+        if (!breakpoints) {
+            return;
+        }
+
+        let newActive = breaks.reduce((act, bp) => {
+            if (
+                act === null &&
+                breakpoints[bp] &&
+                typeof props[bp] !== 'undefined'
+            ) {
+                act = bp;
+            }
+            return act;
+        }, null);
+
+        if (active !== newActive) {
+            setState({ active: newActive }, '_onResize()');
+            e = e || { type: 'resize' };
+            onResize({ ...e, breakpoint: newActive });
+        }
+    };
+
+    const render = () => {
+        const { active } = stateRef.current;
+
+        if (props[active]) {
+            return props[active];
+        } else {
+            return null;
+        }
+    };
+
+    return render();
+};
+
+Breakpoint = forwardRef(Breakpoint);
+
+Breakpoint.propTypes = {
+    xs: PropTypes.node,
+    sm: PropTypes.node,
+    md: PropTypes.node,
+    lg: PropTypes.node,
+    xl: PropTypes.node,
+    breaks: PropTypes.array,
+    onResize: PropTypes.func,
+};
+
+Breakpoint.defaultProps = {
+    xs: undefined,
+    sm: undefined,
+    md: undefined,
+    lg: undefined,
+    xl: undefined,
+    breaks: ['xl', 'lg', 'md', 'sm', 'xs'],
+    onResize: noop,
+};
+
+Breakpoint.getBreakpoints = getBreakpoints;
+
+export { Breakpoint, Breakpoint as default, getBreakpoints };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/_style.scss
new file mode 100644
index 00000000..ddabcbba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/_style.scss
@@ -0,0 +1,408 @@
+$button-font-family: Arial, sans-serif !default;
+$button-font-weight: 400 !default;
+
+// color-left, color-right, color, text-shadow
+$buttons: (
+    'primary': (
+        lighten($color-blue, 5%),
+        $color-blue,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'secondary': (
+        lighten($color-black, 5%),
+        $color-black,
+        $color-grey-light,
+        rgba($color-white, 0),
+    ),
+    'tertiary': (
+        $color-gray,
+        $color-gray,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'danger': (
+        lighten($color-red, 5%),
+        $color-red,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'clear': (
+        rgba($color-white, 0),
+        rgba($color-white, 0),
+        $color-gray,
+        rgba($color-white, 0),
+    ),
+    'info': (
+        lighten($color-blue, 5%),
+        $color-blue,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'success': (
+        lighten($color-green, 5%),
+        $color-green,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'warning': (
+        lighten($color-orange, 15%),
+        $color-orange,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+    'default': (
+        darken($color-white, 2%),
+        darken($color-white, 2%),
+        $color-gray,
+        rgba($color-white, 0),
+    ),
+    'error': (
+        lighten($color-red, 5%),
+        $color-red,
+        $color-white,
+        rgba($color-white, 0),
+    ),
+) !default;
+
+// font-size, paddingTop, paddingRight, paddingBottom, paddingLeft
+$button-sizes: (
+    'xs': (
+        10px,
+        5px,
+        16px,
+        4px,
+        16px,
+    ),
+    'sm': (
+        12px,
+        8px,
+        24px,
+        8px,
+        24px,
+    ),
+    'md': (
+        14px,
+        12px,
+        56px,
+        12px,
+        56px,
+    ),
+    'lg': (
+        22px,
+        16px,
+        80px,
+        16px,
+        80px,
+    ),
+) !default;
+
+@mixin default-button($size, $pt, $pr, $pb, $pl) {
+    display: inline-flex;
+    justify-content: center;
+    align-items: center;
+    padding: $pt $pr $pb $pl;
+    font-family: $button-font-family;
+    font-size: $size;
+    font-weight: $button-font-weight;
+    flex-wrap: nowrap;
+    white-space: nowrap;
+    border: 2px solid transparent;
+    line-height: 1;
+    text-decoration: none;
+}
+
+@mixin pill-button($size) {
+    border-radius: $size;
+}
+
+@mixin h-gradient($clr-l, $clr-r) {
+    background: $clr-r;
+}
+
+@mixin button() {
+    @each $clr-name, $clr-codes in $buttons {
+        $shadow: nth($clr-codes, 4);
+
+        &-#{$clr-name} {
+            @extend .btn;
+            color: nth($clr-codes, 3);
+            text-shadow: 0 0 1px $shadow;
+            line-height: 1;
+
+            svg {
+                fill: nth($clr-codes, 3);
+                fill: currentColor;
+                stroke: nth($clr-codes, 3);
+                flex-shrink: 0;
+            }
+
+            @include h-gradient(nth($clr-codes, 1), nth($clr-codes, 2));
+
+            &:focus,
+            &.focus {
+                box-shadow: 0 0 1px 2px rgba(nth($clr-codes, 1), 0.25);
+                z-index: 10000;
+            }
+
+            &:hover,
+            &.hover,
+            &.active {
+                color: nth($clr-codes, 3);
+                text-decoration: none;
+                @include h-gradient(
+                    lighten(nth($clr-codes, 1), 7%),
+                    lighten(nth($clr-codes, 2), 7%)
+                );
+            }
+
+            &.active {
+                font-weight: bold;
+                opacity: 0.95;
+            }
+
+            &:disabled,
+            &.disabled {
+                opacity: 0.5;
+                cursor: default;
+                @include h-gradient(nth($clr-codes, 1), nth($clr-codes, 2));
+                pointer-events: none;
+            }
+
+            @each $size-name, $size-codes in $button-sizes {
+                &-#{$size-name} {
+                    @extend .btn;
+                    @extend .btn-#{$clr-name};
+
+                    @include default-button(
+                        nth($size-codes, 1),
+                        nth($size-codes, 2),
+                        nth($size-codes, 3),
+                        nth($size-codes, 4),
+                        nth($size-codes, 5)
+                    );
+                }
+            }
+        }
+
+        &-#{$clr-name}-outline {
+            @extend .btn;
+            color: nth($clr-codes, 2);
+
+            background: transparent;
+            border: 2px solid nth($clr-codes, 2) !important;
+            position: relative;
+
+            &:hover,
+            &:focus,
+            &.hover,
+            &.active {
+                text-decoration: none;
+                background: nth($clr-codes, 1);
+                color: nth($clr-codes, 3);
+            }
+
+            &.active {
+                background: nth($clr-codes, 1);
+                opacity: 0.95;
+            }
+
+            &:focus,
+            &.focus {
+                box-shadow: 0 0 1px 2px rgba(nth($clr-codes, 1), 0.25);
+            }
+
+            &:disabled,
+            &.disabled {
+                opacity: 0.5;
+                cursor: default;
+                background: transparent;
+                color: nth($clr-codes, 2);
+                pointer-events: none;
+            }
+        }
+
+        @each $size-name, $size-codes in $button-sizes {
+            &-#{$clr-name}-#{$size-name}-outline {
+                @include default-button(
+                    nth($size-codes, 1),
+                    nth($size-codes, 2),
+                    nth($size-codes, 3),
+                    nth($size-codes, 4),
+                    nth($size-codes, 5)
+                );
+
+                @extend .btn-#{$clr-name}-outline;
+            }
+        }
+
+        &-#{$clr-name}-pill {
+            @extend .btn;
+            @extend .btn-#{$clr-name};
+            @include pill-button(60px);
+        }
+
+        &-#{$clr-name}-circle {
+            @extend .btn;
+            @extend .btn-#{$clr-name};
+            @include pill-button(100%);
+        }
+
+        &-#{$clr-name}-outline-pill {
+            @extend .btn;
+            @extend .btn-#{$clr-name}-outline;
+            @include pill-button(60px);
+        }
+
+        &-#{$clr-name}-outline-circle {
+            @extend .btn;
+            @extend .btn-#{$clr-name}-outline;
+            @include pill-button(100%);
+        }
+
+        @each $size-name, $size-codes in $button-sizes {
+            &-#{$clr-name}-#{$size-name} {
+                @extend .btn;
+                @extend .btn-#{$clr-name};
+                @extend .btn-#{$clr-name}-#{$size-name};
+            }
+
+            &-#{$clr-name}-#{$size-name}-pill {
+                @extend .btn;
+                @extend .btn-#{$clr-name};
+                @extend .btn-#{$clr-name}-#{$size-name};
+                @include pill-button(nth($size-codes, 1) * 3);
+            }
+
+            &-#{$clr-name}-#{$size-name}-circle {
+                @extend .btn;
+                @extend .btn-#{$clr-name};
+                @extend .btn-#{$clr-name}-#{$size-name};
+                @include pill-button(100%);
+            }
+
+            &-#{$clr-name}-#{$size-name}-outline-pill {
+                @extend .btn;
+                @extend .btn-#{$clr-name}-#{$size-name};
+                @extend .btn-#{$clr-name}-outline;
+                @include pill-button(nth($size-codes, 1) * 3);
+            }
+
+            &-#{$clr-name}-#{$size-name}-outline-circle {
+                @extend .btn;
+                @extend .btn-#{$clr-name}-#{$size-name};
+                @extend .btn-#{$clr-name}-outline;
+                @include pill-button(100%);
+            }
+        }
+    }
+}
+
+a, button {
+    &:hover {
+        cursor: pointer;
+    }
+}
+
+.btn {
+    @include default-button(14px, 8px, 24px, 8px, 24px);
+    outline: none;
+    border-radius: 2px;
+    background: $color-grey;
+    text-transform: uppercase;
+    color: $color-white;
+    font-weight: 400;
+    border: 2px solid transparent;
+    box-sizing: border-box;
+    transition: box-shadow 0.4s ease-in-out;
+
+    svg {
+        fill: $color-white;
+        fill: currentColor;
+        stroke: $color-white;
+    }
+
+    @include button();
+
+    &-block {
+        width: 100%;
+    }
+
+    &-icon {
+        @extend .btn-primary;
+        border-radius: 100%;
+        font-size: 22px;
+        padding: 0;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        height: 36px !important;
+        width: 36px !important;
+    }
+}
+
+.btn-group {
+    border-radius: 2px;
+    display: inline-flex;
+    flex-wrap: nowrap;
+    align-items: stretch;
+
+    [class*='btn-'] {
+        border-radius: 0;
+    }
+
+    > .form-group {
+        margin-top: 0;
+        margin-bottom: 0;
+
+        display: flex;
+
+        input, select {
+            border-radius: 0;
+            &:focus {
+                z-index: 10000;
+            }
+        }
+
+        &:not(:first-child) {
+            margin-left: -1px;
+        }
+    }
+
+    > * {
+        flex-grow: 1;
+
+        &:first-child {
+            border-radius: 2px 0 0 2px;
+
+            select,
+            input {
+                border-radius: 0;
+            }
+        }
+
+        &:last-child {
+            border-radius: 0 2px 2px 0;
+
+            select,
+            input {
+                border-radius: 0;
+            }
+
+            &:first-child {
+                border-radius: 2px;
+
+                select,
+                input {
+                    border-radius: 0;
+                }
+            }
+        }
+    }
+
+    > span {
+        &:hover {
+            cursor: default !important;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/enums.js
new file mode 100644
index 00000000..c8152842
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/enums.js
@@ -0,0 +1,44 @@
+import React, { forwardRef } from 'react';
+import { Link } from 'react-router-dom';
+
+export default {
+    APPEARANCE: {
+        CIRCLE: 'circle',
+        PILL: 'pill',
+    },
+    COLOR: {
+        CLEAR: 'clear',
+        DANGER: 'danger',
+        DEFAULT: 'default',
+        ERROR: 'error',
+        INFO: 'info',
+        PRIMARY: 'primary',
+        SECONDARY: 'secondary',
+        SUCCESS: 'success',
+        TERTIARY: 'tertiary',
+        WARNING: 'warning',
+    },
+    ELEMENT: {
+        BUTTON: forwardRef((props, ref) => (
+            <button {...props} type='button' ref={ref} />
+        )),
+        LABEL: forwardRef((props, ref) => <label {...props} ref={ref} />),
+        LINK: forwardRef((props, ref) => <Link {...props} ref={ref} />),
+        ANCHOR: forwardRef((props, ref) => <a {...props} ref={ref} />),
+        SUBMIT: forwardRef((props, ref) => (
+            <button {...props} type='submit' ref={ref} />
+        )),
+    },
+    SIZE: {
+        XS: 'xs',
+        SM: 'sm',
+        MD: 'md',
+        LG: 'lg',
+    },
+    TYPE: {
+        BUTTON: 'BUTTON',
+        LABEL: 'LABEL',
+        LINK: 'LINK',
+        SUBMIT: 'SUBMIT',
+    },
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/index.js
new file mode 100644
index 00000000..ebb186df
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/index.js
@@ -0,0 +1,129 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import PropTypes from 'prop-types';
+import React, { forwardRef, useMemo } from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Button
+ * -----------------------------------------------------------------------------
+ */
+let Button = (
+    {
+        active,
+        appearance,
+        block,
+        children,
+        className,
+        color,
+        outline,
+        readOnly,
+        size,
+        style = {},
+        type,
+        ...props
+    },
+    ref,
+) => {
+    const cname = () => {
+        const c = _.compact([
+            'btn',
+            color,
+            size,
+            outline === true ? 'outline' : null,
+            appearance,
+        ]).join('-');
+
+        return cn({
+            active,
+            [className]: !!className,
+            [c]: true,
+            ['btn-block']: block,
+        });
+    };
+
+    const render = () => {
+        const exclude = [
+            'active',
+            'appearance',
+            'block',
+            'children',
+            'className',
+            'color',
+            'outline',
+            'prevState',
+            'readOnly',
+            'size',
+            'style',
+        ];
+
+        const elementProps = { ...props };
+        exclude.forEach(key => {
+            if (key === 'readOnly' && readOnly === true) {
+                delete elementProps.onClick;
+                delete elementProps.type;
+            } else {
+                delete elementProps[key];
+            }
+        });
+
+        const s = { ...style };
+
+        if (readOnly) {
+            s['pointerEvents'] = 'none';
+            s['userSelect'] = 'none';
+            return (
+                <span className={cname()} {...elementProps} style={s} ref={ref}>
+                    {children}
+                </span>
+            );
+        }
+
+        const Element = ENUMS.ELEMENT[String(type).toUpperCase()];
+        return (
+            <Element className={cname()} {...elementProps} style={s} ref={ref}>
+                {children}
+            </Element>
+        );
+    };
+
+    return render();
+};
+
+Button = forwardRef(Button);
+
+Button.ENUMS = ENUMS;
+
+Button.propTypes = {
+    active: PropTypes.bool,
+    appearance: PropTypes.oneOf(Object.values(ENUMS.APPEARANCE)),
+    block: PropTypes.bool,
+    color: PropTypes.oneOf(Object.values(ENUMS.COLOR)),
+    outline: PropTypes.bool,
+    readOnly: PropTypes.bool,
+    size: PropTypes.oneOf(Object.values(ENUMS.SIZE)),
+    style: PropTypes.object,
+    tabIndex: PropTypes.number,
+    type: PropTypes.oneOf(
+        _.flatten([
+            Object.values(ENUMS.TYPE),
+            Object.values(ENUMS.TYPE).map(val => String(val).toLowerCase()),
+        ]),
+    ),
+};
+
+Button.defaultProps = {
+    active: false,
+    appearance: null,
+    block: false,
+    color: ENUMS.COLOR.PRIMARY,
+    outline: false,
+    readOnly: false,
+    size: ENUMS.SIZE.SM,
+    style: {},
+    tabIndex: 0,
+    type: ENUMS.TYPE.BUTTON,
+};
+
+export { Button, Button as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/test.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/test.js
new file mode 100644
index 00000000..79e22ecf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Button/test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import Button from './index';
+import { shallow } from 'reactium-core/enzyme';
+
+test('<Button />', () => {
+    const component = shallow(<Button />);
+
+    expect(component.html().length).toBeGreaterThan(0);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/Slide/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/Slide/index.js
new file mode 100644
index 00000000..a3efe2b9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/Slide/index.js
@@ -0,0 +1,64 @@
+import React, { Component } from 'react';
+import cn from 'classnames';
+
+/**
+ * -----------------------------------------------------------------------------
+ * React Component: Slide
+ * -----------------------------------------------------------------------------
+ */
+export default class Slide extends Component {
+    static defaultProps = {
+        namespace: 'ar-carousel-slide',
+        defaultStyle: {
+            flexShrink: 0,
+        },
+    };
+
+    constructor(props) {
+        super(props);
+        this.state = {
+            style: props.style || {},
+        };
+
+        this.slide = React.createRef();
+    }
+
+    componentDidMount() {
+        const element = this.slide.current;
+        this.setState({ element });
+    }
+
+    render() {
+        let { style } = this.state;
+
+        const {
+            active,
+            children,
+            className,
+            index,
+            defaultStyle,
+            namespace,
+            next,
+        } = this.props;
+
+        const display = active === index || next === index;
+
+        const newStyle = {
+            ...defaultStyle,
+            ...style,
+            display: display ? '' : 'none',
+        };
+
+        const cname = cn({
+            [`${namespace}-${index}`]: !!namespace,
+            [namespace]: !!namespace,
+            [className]: !!className,
+            active: active === index || next === index,
+        });
+        return (
+            <div className={cname} style={newStyle} ref={this.slide}>
+                {children}
+            </div>
+        );
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/_style.scss
new file mode 100644
index 00000000..e4a2855f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/_style.scss
@@ -0,0 +1,14 @@
+
+.ar-carousel {
+    width: 100%;
+    height: 100%;
+    align-items: stretch;
+    justify-content: flex-start;
+    overflow-x: hidden;
+
+    &-slide {
+        display: block;
+        width: 100%;
+        height: 100%;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/index.js
new file mode 100644
index 00000000..cabc42a0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Carousel/index.js
@@ -0,0 +1,481 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import React, { Component } from 'react';
+import { TimelineMax, TweenMax, Power2 } from 'gsap/umd/TweenMax';
+import ReactTouchEvents from 'react-touch-events';
+import Slide from './Slide';
+
+/**
+ * -----------------------------------------------------------------------------
+ * React Component: Carousel
+ * -----------------------------------------------------------------------------
+ */
+class Carousel extends Component {
+    static propTypes = {
+        active: PropTypes.number,
+        animationSpeed: PropTypes.number,
+        autoplay: PropTypes.bool,
+        className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+        duration: PropTypes.number,
+        loop: PropTypes.bool,
+        namespace: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+        next: PropTypes.number,
+        onChange: PropTypes.func,
+        onComplete: PropTypes.func,
+        onNext: PropTypes.func,
+        onPause: PropTypes.func,
+        onPlay: PropTypes.func,
+        onPrev: PropTypes.func,
+        onResume: PropTypes.func,
+        onStop: PropTypes.func,
+        pauseOnHover: PropTypes.bool,
+        previous: PropTypes.number,
+        startIndex: PropTypes.number,
+        style: PropTypes.object,
+        swipeable: PropTypes.bool,
+    };
+
+    static defaultProps = {
+        active: 0,
+        animationSpeed: 0.5,
+        autoplay: false,
+        duration: 10,
+        loop: false,
+        namespace: 'ar-carousel',
+        next: null,
+        onChange: null,
+        onComplete: null,
+        onPause: null,
+        onPlay: null,
+        onPrev: null,
+        onResume: null,
+        onStop: null,
+        onNext: null,
+        pauseOnHover: true,
+        previous: null,
+        startIndex: 0,
+        style: {},
+        swipeable: true,
+    };
+
+    static defaultStyle = {
+        display: 'flex',
+        flexWrap: 'no-wrap',
+    };
+
+    constructor(props) {
+        super(props);
+
+        const { active, next, previous, startIndex, style } = props;
+
+        this.slides = {};
+
+        this.state = {
+            active: startIndex || active,
+            next,
+            previous,
+            style,
+        };
+
+        this.animating = false;
+        this.container = null;
+        this.index = startIndex || active;
+        this.paused = false;
+        this.timer = null;
+
+        this.onChange = this.onChange.bind(this);
+        this.onComplete = this.onComplete.bind(this);
+        this.onNext = this.onNext.bind(this);
+        this.onSwipe = this.onSwipe.bind(this);
+        this.cleanup = this.cleanup.bind(this);
+        this.next = this.next.bind(this);
+        this.pause = this.pause.bind(this);
+        this.play = this.play.bind(this);
+        this.prev = this.prev.bind(this);
+        this.resume = this.resume.bind(this);
+        this.stop = this.stop.bind(this);
+        this.jumpTo = this.jumpTo.bind(this);
+    }
+
+    componentDidUpdate(prevProps) {
+        const { autoplay: prevautoplay } = prevProps;
+        const { autoplay } = this.props;
+
+        if (prevautoplay !== autoplay) {
+            if (autoplay === true) {
+                this.play();
+            } else {
+                this.stop();
+            }
+        }
+    }
+
+    componentDidMount() {
+        if (typeof window !== 'undefined') {
+            this.container.addEventListener('mouseenter', this.pause);
+            this.container.addEventListener('mouseleave', this.resume);
+            this.play();
+        }
+    }
+
+    componentWillUnmount() {
+        if (typeof window !== 'undefined') {
+            this.stop();
+            this.container.removeEventListener('mouseenter', this.pause);
+            this.container.removeEventListener('mouseleave', this.resume);
+        }
+    }
+
+    jumpTo(index, animate) {
+        const { active } = this.state;
+
+        if (index === active) {
+            return;
+        }
+
+        if (index < active) {
+            this.prev(index, animate);
+        }
+
+        if (index >= active) {
+            this.next(index, animate);
+        }
+    }
+
+    cleanup() {
+        const keys = [];
+        Object.entries(this.slides).forEach(([key, value]) => {
+            if (!_.isEmpty(value)) return;
+            keys.push(key);
+        });
+
+        while (keys.length > 0) {
+            const key = keys.shift();
+            op.del(this.slides, key);
+        }
+    }
+
+    next(next, animate = true) {
+        this.cleanup();
+
+        if (this.animating === true || Object.keys(this.slides).length < 2) {
+            return;
+        }
+
+        const { loop, animationSpeed } = this.props;
+        const max = _.compact(Object.values(this.slides)).length - 1;
+        const { active = 0 } = this.state;
+
+        const speed = animate === false ? 0 : animationSpeed;
+
+        next = next || active + 1;
+        next = loop === true && next > max ? 0 : next;
+
+        if (next > max && !loop) {
+            return;
+        }
+
+        const currentSlide = op.get(
+            this.slides,
+            `slide-${active}.slide.current`,
+        );
+        const nextSlide = op.get(this.slides, `slide-${next}.slide.current`);
+
+        this.animating = true;
+        TweenMax.set(currentSlide, { display: '' });
+        TweenMax.set(nextSlide, { display: '' });
+
+        const evt = { active, next, currentSlide, nextSlide };
+
+        this.onNext(evt);
+
+        const params = {
+            onComplete: () => {
+                this.onComplete(evt);
+            },
+        };
+
+        const tl = new TimelineMax(params);
+        if (next === 0) {
+            tl.fromTo(
+                currentSlide,
+                speed,
+                { xPercent: -100 },
+                { xPercent: -200, ease: Power2.easeInOut },
+                0,
+            );
+            tl.fromTo(
+                nextSlide,
+                speed,
+                { xPercent: 100 },
+                { xPercent: 0, ease: Power2.easeInOut },
+                0,
+            );
+        } else {
+            tl.fromTo(
+                currentSlide,
+                speed,
+                { xPercent: 0 },
+                { xPercent: -100, ease: Power2.easeInOut },
+                0,
+            );
+            tl.fromTo(
+                nextSlide,
+                speed,
+                { xPercent: 0 },
+                { xPercent: -100, ease: Power2.easeInOut },
+                0,
+            );
+        }
+    }
+
+    pause() {
+        const { onPause, pauseOnHover } = this.props;
+        if (pauseOnHover !== true) {
+            return;
+        }
+
+        this.paused = true;
+
+        if (typeof onPause === 'function') {
+            onPause({ index: this.index });
+        }
+    }
+
+    play(index) {
+        let { autoplay = false, duration, onPlay } = this.props;
+
+        if (autoplay !== true) {
+            return;
+        }
+
+        this.stop(true);
+
+        if (index) {
+            this.next(index);
+        }
+
+        this.timer = setInterval(() => {
+            if (this.paused !== true) {
+                this.next();
+            }
+        }, duration * 1000);
+
+        if (typeof onPlay === 'function') {
+            onPlay({ index: this.index });
+        }
+    }
+
+    prev(next, animate) {
+        this.cleanup();
+
+        if (this.animating === true || Object.keys(this.slides).length < 2) {
+            return;
+        }
+
+        const { loop, animationSpeed } = this.props;
+        const max = _.compact(Object.values(this.slides)).length - 1;
+        const { active = 0 } = this.state;
+
+        const speed = animate === false ? 0 : animationSpeed;
+
+        next = next || active - 1;
+        next = loop === true && next < 0 ? max : next;
+
+        if (next < 0) {
+            return;
+        }
+
+        this.animating = true;
+
+        const currentSlide = op.get(
+            this.slides,
+            `slide-${active}.slide.current`,
+        );
+        const nextSlide = op.get(this.slides, `slide-${next}.slide.current`);
+
+        TweenMax.set(currentSlide, { display: '', xPercent: -100 });
+        TweenMax.set(nextSlide, { display: '' });
+
+        const evt = { active, next, currentSlide, nextSlide };
+
+        this.onPrev(evt);
+
+        const params = {
+            onComplete: () => {
+                this.onComplete(evt);
+            },
+        };
+
+        const tl = new TimelineMax(params);
+        if (next === max) {
+            tl.fromTo(
+                currentSlide,
+                speed,
+                { xPercent: 0 },
+                { xPercent: 100, ease: Power2.easeInOut },
+                0,
+            );
+            tl.fromTo(
+                nextSlide,
+                speed,
+                { xPercent: -200 },
+                { xPercent: -100, ease: Power2.easeInOut },
+                0,
+            );
+        } else {
+            tl.fromTo(
+                currentSlide,
+                speed,
+                { xPercent: -100 },
+                { xPercent: 0, ease: Power2.easeInOut },
+                0,
+            );
+            tl.fromTo(
+                nextSlide,
+                speed,
+                { xPercent: -100 },
+                { xPercent: 0, ease: Power2.easeInOut },
+                0,
+            );
+        }
+    }
+
+    resume() {
+        const { onResume } = this.props;
+
+        this.paused = false;
+
+        if (typeof onResume === 'function') {
+            onResume({ index: this.index });
+        }
+    }
+
+    stop(silent) {
+        const { onStop } = this.props;
+
+        if (this.timer) {
+            clearInterval(this.timer);
+            this.timer = null;
+        }
+
+        if (!silent && typeof onStop === 'function') {
+            onStop({ index: this.index });
+        }
+    }
+
+    onChange(evt) {
+        const { active, next, currentSlide, nextSlide } = evt;
+        const { onChange } = this.props;
+
+        this.index = next;
+
+        if (typeof onChange === 'function') {
+            onChange({
+                previous: active,
+                active: next,
+                previousSlide: currentSlide,
+                currentSlide: nextSlide,
+            });
+        }
+    }
+
+    onComplete(evt) {
+        this.play();
+        const { active, next, currentSlide, nextSlide } = evt;
+        const { onComplete } = this.props;
+
+        TweenMax.set(nextSlide, { xPercent: 0, display: '' });
+
+        this.animating = false;
+
+        if (typeof onComplete === 'function') {
+            onComplete({
+                previous: active,
+                active: next,
+                previousSlide: currentSlide,
+                currentSlide: nextSlide,
+            });
+        }
+
+        this.setState({ active: next, next: null });
+
+        setTimeout(() => {
+            this.onChange(evt);
+        }, 100);
+    }
+
+    onNext(evt) {
+        this.stop();
+        const { onNext } = this.props;
+        if (typeof onNext === 'function') {
+            onNext(evt);
+        }
+    }
+
+    onPrev(evt) {
+        this.stop();
+        const { onPrev } = this.props;
+        if (typeof onPrev === 'function') {
+            onPrev(evt);
+        }
+    }
+
+    onSwipe(dir) {
+        const { swipeable } = this.props;
+
+        if (swipeable !== true) {
+            return;
+        }
+
+        switch (dir) {
+            case 'left':
+                this.next();
+                break;
+
+            case 'right':
+                this.prev();
+                break;
+        }
+    }
+
+    render() {
+        let { active, next, style } = this.state;
+        const { children, className, namespace } = this.props;
+
+        style = {
+            ...Carousel.defaultStyle,
+            ...style,
+        };
+
+        const cname = cn({
+            [namespace]: !!namespace,
+            [className]: !!className,
+        });
+
+        return (
+            <ReactTouchEvents onSwipe={this.onSwipe} onTap={this.pause}>
+                <div
+                    style={style}
+                    className={cname}
+                    ref={elm => (this.container = elm)}>
+                    {React.Children.map(children, (child, index) =>
+                        React.cloneElement(child, {
+                            active,
+                            index,
+                            next,
+                            onComplete: this.onComplete,
+                            ref: slide => {
+                                this.slides[`slide-${index}`] = slide;
+                            },
+                        }),
+                    )}
+                </div>
+            </ReactTouchEvents>
+        );
+    }
+}
+
+export { Carousel, Carousel as default, Slide };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/AreaChart/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/AreaChart/index.js
new file mode 100644
index 00000000..7729af34
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/AreaChart/index.js
@@ -0,0 +1,54 @@
+import uuid from 'uuid/v4';
+import PropTypes from 'prop-types';
+import { VictoryArea } from 'victory';
+import React, { forwardRef } from 'react';
+import Chart from 'reactium-ui/Charts/utils/Chart';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: AreaChart
+ * -----------------------------------------------------------------------------
+ */
+let AreaChart = (props, ref) => {
+    let { color, data, id, interpolation, opacity, style } = props;
+
+    style = style || {
+        data: {
+            fill: `url(#${id}-gradient)`,
+            fillOpacity: opacity,
+            stroke: color,
+            strokeWidth: 2,
+        },
+    };
+
+    const areaProps = {
+        data,
+        style,
+        interpolation,
+    };
+
+    return (
+        <Chart {...props} ref={ref}>
+            <VictoryArea {...areaProps} />
+        </Chart>
+    );
+};
+
+AreaChart = forwardRef(AreaChart);
+
+AreaChart.ENUMS = Chart.ENUMS;
+
+AreaChart.propTypes = {
+    ...Chart.propTypes,
+    opacity: PropTypes.number,
+    style: PropTypes.object,
+};
+
+AreaChart.defaultProps = {
+    ...Chart.defaultProps,
+    dots: true,
+    id: uuid(),
+    opacity: 0.25,
+};
+
+export { AreaChart, AreaChart as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/BarChart/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/BarChart/index.js
new file mode 100644
index 00000000..f7b59b45
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/BarChart/index.js
@@ -0,0 +1,71 @@
+import uuid from 'uuid/v4';
+import PropTypes from 'prop-types';
+import { VictoryBar } from 'victory';
+import React, { forwardRef } from 'react';
+import Colors from 'reactium-ui/colors';
+import Chart from 'reactium-ui/Charts/utils/Chart';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: BarChart
+ * -----------------------------------------------------------------------------
+ */
+let BarChart = (props, ref) => {
+    const { data, style } = props;
+
+    const barProps = {
+        data,
+        style,
+    };
+
+    return (
+        <Chart {...props} ref={ref}>
+            <VictoryBar {...barProps} />
+        </Chart>
+    );
+};
+
+BarChart = forwardRef(BarChart);
+
+BarChart.ENUMS = Chart.ENUMS;
+
+BarChart.propTypes = {
+    ...Chart.propTypes,
+    style: PropTypes.object,
+};
+
+BarChart.defaultProps = {
+    ...Chart.defaultProps,
+    dots: false,
+    id: uuid(),
+    style: {
+        data: {
+            fill: Chart.defaultProps.color,
+            fillOpacity: 0.25,
+            stroke: Chart.defaultProps.color,
+            strokeWidth: 2,
+        },
+    },
+    xAxisStyle: {
+        ...Chart.defaultProps.xAxisStyle,
+        axis: { stroke: Colors['color-grey-light'], strokeWidth: 3 },
+    },
+    yAxisStyle: {
+        ...Chart.defaultProps.yAxisStyle,
+        axisLabel: {
+            fontSize: 9,
+            padding: 36,
+        },
+        ticks: {
+            stroke: Colors['color-grey-light'],
+            opacity: 0.75,
+            size: 15,
+        },
+        tickLabels: {
+            fontSize: 7,
+            padding: 5,
+        },
+    },
+};
+
+export { BarChart, BarChart as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/PieChart/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/PieChart/index.js
new file mode 100644
index 00000000..b177fd0c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/PieChart/index.js
@@ -0,0 +1,61 @@
+import PropTypes from 'prop-types';
+import { VictoryPie } from 'victory';
+import React, { forwardRef } from 'react';
+
+const labelFunc = ({ label, x, y }) => label || x || y;
+
+const mapData = data =>
+    data.map(({ label, value, ...props }) => ({
+        y: value,
+        x: label,
+        label,
+        ...props,
+    }));
+
+let PieChart = (
+    { animate, colors, data, innerRadius, labelFunc, padding, ...props },
+    ref,
+) => {
+    const chartProps = {
+        animate,
+        colorScale: colors,
+        cornerRadius: 1,
+        data: mapData(data),
+        innerRadius,
+        labelRadius: 160,
+        labels: labelFunc,
+        padAngle: padding,
+        ...props,
+    };
+
+    return <VictoryPie {...chartProps} ref={ref} />;
+};
+
+PieChart = forwardRef(PieChart);
+
+// See: https://formidable.com/open-source/victory/docs/victory-pie#props
+//      for additional props
+PieChart.propTypes = {
+    animate: PropTypes.bool,
+    colors: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
+    data: PropTypes.array,
+    innerRadius: PropTypes.number,
+    labelFunc: PropTypes.func,
+    padding: PropTypes.number,
+    style: PropTypes.object,
+};
+
+PieChart.defaultProps = {
+    animate: false,
+    colors: 'grayscale',
+    innerRadius: 120,
+    labelFunc,
+    padding: 2,
+    style: {
+        labels: {
+            fontSize: 10,
+        },
+    },
+};
+
+export { PieChart, PieChart as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/_style.scss
new file mode 100644
index 00000000..a1de2f83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/_style.scss
@@ -0,0 +1,7 @@
+.VictoryContainer {
+    svg > g:last-child > path {
+        &:hover {
+            cursor: pointer;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/index.js
new file mode 100644
index 00000000..94489f89
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/index.js
@@ -0,0 +1,4 @@
+export * from './AreaChart';
+export * from './BarChart';
+export * from './utils/Chart';
+export * from './PieChart';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Chart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Chart.js
new file mode 100644
index 00000000..a831e013
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Chart.js
@@ -0,0 +1,285 @@
+import op from 'object-path';
+import uuid from 'uuid/v4';
+import PropTypes from 'prop-types';
+import React, { forwardRef } from 'react';
+import Colors from 'reactium-ui/colors';
+import Gradient from 'reactium-ui/Charts/utils/Gradient';
+
+import { VictoryAxis, VictoryChart, VictoryScatter } from 'victory';
+
+const ENUMS = {
+    COLORS: Colors,
+    INTERPOLATION: {
+        BASIS: 'basis',
+        CARDINAL: 'cardinal',
+        CATMULLROM: 'catmullRom',
+        LINEAR: 'linear',
+        MONOTONEX: 'monotoneX',
+        MONOTONEY: 'monotoneY',
+        NATURAL: 'natural',
+        STEP: 'step',
+        STEP_AFTER: 'stepAfter',
+        STEP_BEFORE: 'stepBefore',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Chart
+ * -----------------------------------------------------------------------------
+ */
+let Chart = (
+    {
+        children,
+        color,
+        debug,
+        data,
+        dots,
+        dotStyle,
+        id,
+        interpolation,
+        onClick,
+        onHover,
+        tickCount,
+        tickFormat,
+        xAxis,
+        xAxisStyle,
+        xGrid,
+        xLabel,
+        yAxis,
+        yAxisStyle,
+        yGrid,
+        yLabel,
+        ...props
+    },
+    ref,
+) => {
+    const renderDots = style => {
+        if (!dots) {
+            return;
+        }
+
+        const dotProps = {
+            data,
+            interpolation,
+            style,
+            name: 'dots',
+        };
+
+        const fill = {
+            hide: () => null,
+            show: props => ({
+                style: {
+                    ...style.data,
+                    fill: color,
+                },
+            }),
+            toggle: props =>
+                op.get(props, 'style.fill') === color ? hide() : show(),
+        };
+
+        const label = {
+            hide: () => null,
+            show: props => ({ text: Math.ceil(props.datum.y) }),
+            toggle: props => (!op.get(props, 'text') ? show() : hide()),
+        };
+
+        const events = [
+            {
+                target: 'data',
+                eventHandlers: {
+                    onMouseOver: () => {
+                        return [
+                            {
+                                target: 'data',
+                                mutation: fill.show,
+                            },
+                            {
+                                target: 'labels',
+                                mutation: label.show,
+                            },
+                        ];
+                    },
+                    onMouseOut: () => {
+                        return [
+                            {
+                                target: 'data',
+                                mutation: fill.hide,
+                            },
+                            {
+                                target: 'labels',
+                                mutation: label.hide,
+                            },
+                        ];
+                    },
+                    onClick: () => {
+                        return [
+                            {
+                                target: 'data',
+                                mutation: props => {
+                                    if (typeof onClick === 'function') {
+                                        onClick(props);
+                                    }
+                                    return fill.show(props);
+                                },
+                            },
+                        ];
+                    },
+                },
+            },
+        ];
+
+        return (
+            <VictoryScatter {...dotProps} events={events} labels={() => null} />
+        );
+    };
+
+    const renderX = style => {
+        if (!xAxis) {
+            return;
+        }
+
+        if (!xGrid) {
+            delete style.grid;
+            delete style.ticks;
+        }
+
+        const xProps = typeof xAxis !== 'boolean' ? xAxis : {};
+
+        if (debug === true) {
+            console.log('renderX', { xLabel, xProps });
+        }
+
+        return <VictoryAxis label={xLabel} style={style} {...xProps} />;
+    };
+
+    const renderY = style => {
+        if (!yAxis) {
+            return;
+        }
+
+        if (!yGrid) {
+            delete style.grid;
+            delete style.ticks;
+        }
+
+        const yProps = typeof yAxis !== 'boolean' ? yAxis : {};
+
+        if (debug === true) {
+            console.log('renderY', { yLabel, tickCount, tickFormat, yProps });
+        }
+
+        return (
+            <VictoryAxis
+                crossAxis
+                dependentAxis
+                label={yLabel}
+                style={style}
+                tickCount={tickCount}
+                tickFormat={tickFormat}
+                {...yProps}
+            />
+        );
+    };
+
+    const render = () => {
+        return (
+            <>
+                <Gradient color={color} id={id} />
+                <VictoryChart ref={ref} {...props}>
+                    {renderX(xAxisStyle)}
+                    {renderY(yAxisStyle)}
+                    {children}
+                    {renderDots(dotStyle)}
+                </VictoryChart>
+            </>
+        );
+    };
+
+    return render();
+};
+
+Chart = forwardRef(Chart);
+
+Chart.propTypes = {
+    animate: PropTypes.bool,
+    color: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    data: PropTypes.array,
+    debug: PropTypes.bool,
+    dots: PropTypes.bool,
+    dotStyle: PropTypes.object,
+    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    interpolation: PropTypes.oneOf(Object.values(ENUMS.INTERPOLATION)),
+    onClick: PropTypes.func,
+    onHover: PropTypes.func,
+    padding: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),
+    style: PropTypes.object,
+    tickCount: PropTypes.number,
+    tickFormat: PropTypes.func,
+    xAxis: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
+    xAxisStyle: PropTypes.object,
+    xGrid: PropTypes.bool,
+    xLabel: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    yAxis: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
+    yAxisStyle: PropTypes.object,
+    yGrid: PropTypes.bool,
+    yLabel: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+};
+
+Chart.defaultProps = {
+    color: Colors['color-blue'],
+    debug: false,
+    dots: false,
+    dotStyle: {
+        data: {
+            fill: Colors['color-white'],
+            stroke: Colors['color-blue'],
+            strokeWidth: 2,
+        },
+        labels: {
+            fontSize: 8,
+            fill: Colors['color-black'],
+        },
+    },
+    id: uuid(),
+    interpolation: ENUMS.INTERPOLATION.CARDINAL,
+    padding: 50,
+    tickFormat: t => Math.ceil(t),
+    tickCount: 3,
+    xAxis: true,
+    xAxisStyle: {
+        axis: { opacity: 0 },
+        axisLabel: { fontSize: 9 },
+        grid: { stroke: Colors['color-grey-light'], opacity: 0.75 },
+        ticks: {
+            stroke: Colors['color-grey-light'],
+            opacity: 0.75,
+            size: 5,
+        },
+        tickLabels: {
+            fontSize: 7,
+            padding: 5,
+        },
+    },
+    xGrid: true,
+    yAxis: true,
+    yGrid: true,
+    yAxisStyle: {
+        axis: { opacity: 0 },
+        axisLabel: { fontSize: 9 },
+        grid: { stroke: Colors['color-grey-light'], opacity: 0.75 },
+        ticks: {
+            stroke: Colors['color-grey-light'],
+            opacity: 0.75,
+            size: 5,
+        },
+        tickLabels: {
+            fontSize: 7,
+            padding: 5,
+        },
+    },
+};
+
+Chart.ENUMS = ENUMS;
+
+export { Chart, Chart as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Gradient.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Gradient.js
new file mode 100644
index 00000000..13104f76
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Charts/utils/Gradient.js
@@ -0,0 +1,35 @@
+import React from 'react';
+import uuid from 'uuid/v4';
+
+const Gradient = ({
+    color,
+    id = uuid(),
+    opacity = { top: 1, bottom: 0.25 },
+}) => (
+    <svg
+        style={{
+            position: 'absolute',
+            width: 0,
+            height: 0,
+            top: -500000,
+            left: -500000,
+        }}>
+        <defs>
+            <linearGradient
+                id={`${id}-gradient`}
+                x1='0%'
+                y1='0%'
+                x2='0%'
+                y2='100%'>
+                <stop offset='0%' stopColor={color} stopOpacity={opacity.top} />
+                <stop
+                    offset='100%'
+                    stopColor={color}
+                    stopOpacity={opacity.bottom}
+                />
+            </linearGradient>
+        </defs>
+    </svg>
+);
+
+export { Gradient, Gradient as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/_style.scss
new file mode 100644
index 00000000..b83ef41f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/_style.scss
@@ -0,0 +1,102 @@
+$ar-checkbox-bg-color: $color-grey !default;
+$ar-checkbox-bg-active-color: $color-gray-dark !default;
+$ar-checkbox-handle-color: $color-white !default;
+$ar-checkbox-border-color: $color-blue !default;
+$ar-checkbox-size: 18px !default;
+
+label.ar-checkbox {
+    position: relative;
+    display: flex;
+    min-width: $ar-checkbox-size;
+    flex-grow: 0;
+    flex-shrink: 0;
+    flex-direction: row;
+    font-size: 12px;
+    text-transform: uppercase;
+    align-items: center;
+    cursor: pointer;
+    user-select: none;
+
+    * {
+        pointer-events: none;
+    }
+
+    input {
+        opacity: 0;
+        position: absolute;
+        left: 0;
+        top: 0;
+    }
+
+    > span:last-child {
+        position: relative;
+        width: $ar-checkbox-size;
+        height: $ar-checkbox-size;
+        top: 0;
+        right: 0;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        border: 2px solid $ar-checkbox-border-color;
+        border-radius: 2px;
+
+        > svg {
+            opacity: 0;
+            fill: $ar-checkbox-bg-active-color;
+        }
+    }
+
+    > span:first-child {
+        flex-grow: 1;
+    }
+
+    &.ar-checkbox-label-left {
+        > span:first-child {
+            margin-right: 10px;
+            text-align: left;
+        }
+    }
+
+    &.ar-checkbox-label-right {
+        flex-direction: row-reverse;
+
+        > span:first-child {
+            margin-left: 10px;
+            text-align: right;
+        }
+    }
+
+    input:focus + span:last-child {
+        box-shadow: 0 0 1px 2px rgba($ar-checkbox-bg-active-color, 0.25);
+    }
+
+    input:checked + span:last-child {
+        svg {
+            opacity: 1;
+            fill: $ar-checkbox-bg-active-color;
+        }
+    }
+
+    input:disabled + span:last-child {
+        opacity: 0.5;
+        cursor: default;
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &-#{$clr-name} {
+            input:focus + span:last-child {
+                box-shadow: 0 0 1px 2px rgba(nth($clr-codes, 1), 0.25);
+            }
+
+            input + span:last-child {
+                border-color: nth($clr-codes, 1);
+            }
+        }
+    }
+
+    &:hover {
+        input:focus + span:last-child {
+            box-shadow: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/elementShim.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/elementShim.js
new file mode 100644
index 00000000..6c8bee5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/elementShim.js
@@ -0,0 +1,106 @@
+import _ from 'underscore';
+
+export const elementShim = (elm, state) => {
+    if (!elm || !state) return;
+
+    const features = [
+        'autofocus',
+        'defaultChecked',
+        'defaultValue',
+        'disabled',
+        'form',
+        'indeterminate',
+        'required',
+        'type',
+        'accessKey',
+        'addEventListener',
+        'appendChild',
+        'attributes',
+        'childElementCount',
+        'childNodes',
+        'children',
+        'classList',
+        'className',
+        'click',
+        'clientHeight',
+        'clientLeft',
+        'clientTop',
+        'clientWidth',
+        'cloneNode',
+        'closest',
+        'compareDocumentPosition',
+        'contains',
+        'contentEditable',
+        'dir',
+        'firstChild',
+        'firstElementChild',
+        'getAttribute',
+        'getAttributeNode',
+        'getBoundingClientRect',
+        'getElementsByClassName',
+        'getElementsByTagName',
+        'hasAttribute',
+        'hasAttributes',
+        'hasChildNodes',
+        'innerHTML',
+        'innerText',
+        'insertAdjacentElement',
+        'insertAdjacentHTML',
+        'insertAdjacentText',
+        'inserBefore',
+        'isContentEditable',
+        'isDefaultNamespace',
+        'isEqualNode',
+        'isSameNode',
+        'isSupported',
+        'lang',
+        'lastChild',
+        'lastElementChild',
+        'matches',
+        'namespaceURI',
+        'nextSibling',
+        'nextElementSibling',
+        'nodeName',
+        'nodeValue',
+        'normalize',
+        'offsetHeight',
+        'offsetWidth',
+        'offsetLeft',
+        'offsetParent',
+        'offsetTop',
+        'outerHTML',
+        'outerText',
+        'ownerDocument',
+        'parentNode',
+        'parentElement',
+        'previousSibling',
+        'previousElementSibling',
+        'querySelector',
+        'querySelectorAll',
+        'remove',
+        'removeAttribute',
+        'removeAttributeNode',
+        'removeChild',
+        'removeEventListener',
+        'replaceChild',
+        'scrollHeight',
+        'scrollIntoView',
+        'scrollLeft',
+        'scrollTop',
+        'scrollWidth',
+        'setAttribute',
+        'setAttributeNode',
+        'tabIndex',
+        'textContent',
+        'toString',
+    ];
+
+    features.forEach((feature) => {
+        // if (!elm[feature]) return;
+        state[feature] = elm[feature] || undefined;
+    });
+
+    return state;
+};
+
+export default elementShim;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/index.js
new file mode 100644
index 00000000..68d61ef4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/index.js
@@ -0,0 +1,210 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Imports
+ * -----------------------------------------------------------------------------
+ */
+import _ from 'underscore';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+import Toggle from 'reactium-ui/Toggle';
+import { Feather } from 'reactium-ui/Icon';
+import { elementShim } from './elementShim';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useMemo,
+    useImperativeHandle,
+} from 'react';
+
+import {
+    useDispatcher,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Checkbox
+ * -----------------------------------------------------------------------------
+ */
+
+const ENUMS = Toggle.ENUMS;
+
+const cn = ({ className, color = ENUMS.COLOR.PRIMARY, label, labelAlign }) => {
+    const lbl = `ar-checkbox-label-${labelAlign}`;
+    const clr = `ar-checkbox-${color}`;
+
+    return classnames({
+        [className]: !!className,
+        [lbl]: !!label,
+        [clr]: true,
+        'ar-checkbox': true,
+    });
+};
+
+let Checkbox = (
+    {
+        className,
+        id,
+        label,
+        labelAlign,
+        labelStyle,
+        name,
+        style,
+        title,
+        ...props
+    },
+    ref,
+) => {
+    const refs = useRefs();
+
+    const state = useSyncState({
+        ...props,
+        className,
+        id,
+        label,
+        labelAlign,
+        labelStyle,
+        name,
+        style,
+        title,
+        checked: op.get(props, 'checked', op.get(props, 'defaultChecked')),
+        value: op.get(props, 'value', op.get('defaultValue')),
+    });
+
+    const inp = () => refs.get('input');
+
+    const lbl = () => refs.get('label');
+
+    const dispatch = useDispatcher({ props, state });
+
+    const _onChange = (e) => {
+        state.value = e.target.value;
+        state.checked = e.target.checked;
+
+        state.set('value', e.target.value);
+        state.set('checked', e.target.checked);
+
+        dispatch(e.type, { value: e.target.value, checked: e.target.checked });
+    };
+
+    state.extend('blur', () => {
+        lbl().blur();
+        dispatch('blur');
+        return state;
+    });
+
+    state.extend('focus', () => {
+        lbl().focus();
+        dispatch('focus');
+        return state;
+    });
+
+    state.extend('check', () => {
+        inp().checked = true;
+        state.checked = true;
+        dispatch('checked');
+        dispatch('change', {
+            value: state.get('value'),
+            checked: state.get('checked'),
+        });
+        return state;
+    });
+
+    state.extend('uncheck', () => {
+        inp().checked = false;
+        state.checked = false;
+        dispatch('unchecked');
+        dispatch('change', {
+            value: state.get('value'),
+            checked: state.get('checked'),
+        });
+        return state;
+    });
+
+    state.extend('toggle', () => {
+        const input = inp();
+        input.checked = !input.checked;
+        state.checked = input.checked;
+
+        dispatch(input.checked ? 'checked' : 'unchecked');
+        dispatch('toggle', {
+            value: state.get('value'),
+            checked: state.get('checked'),
+        });
+        dispatch('change');
+
+        return state;
+    });
+
+    state.id = id;
+
+    state.name = name;
+
+    state.input = refs.get('input');
+
+    state.label = refs.get('label');
+
+    state.value = useMemo(() => state.get('value'), [state.get('value')]);
+
+    state.checked = useMemo(() => state.get('checked'), [state.get('checked')]);
+
+    useEffect(() => {
+        state.checked = state.get('checked');
+    }, [state.get('checked')]);
+
+    useEffect(() => {
+        state.value = state.get('value');
+    }, [state.get('value')]);
+
+    useImperativeHandle(ref, () => state);
+
+    return (
+        <label
+            aria-label={label}
+            aria-labelledby={!label && name}
+            ref={(elm) => refs.set('label', elm)}
+            className={cn({ labelAlign, label, className })}
+            style={style}
+            title={title}
+        >
+            <span
+                className={classnames({ ['sr-only']: !label })}
+                style={labelStyle}
+            >
+                {label || title || name}
+            </span>
+            <input
+                id={id}
+                {...props}
+                name={name}
+                onChange={_onChange}
+                ref={(elm) => {
+                    elementShim(elm, state);
+                    refs.set('input', elm);
+                    state.input = elm;
+                    if (elm) state.checked = elm.checked;
+                }}
+            />
+            <span>
+                <Feather.Check width={14} height={14} />
+            </span>
+        </label>
+    );
+};
+
+Checkbox = forwardRef(Checkbox);
+
+Checkbox.ENUMS = ENUMS;
+
+Checkbox.propTypes = { ...Toggle.propTypes, readOnly: PropTypes.bool };
+
+Checkbox.defaultProps = {
+    ...Toggle.defaultProps,
+    readOnly: false,
+    type: ENUMS.TYPE.CHECKBOX,
+};
+
+export { Checkbox, Checkbox as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/old.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/old.js
new file mode 100644
index 00000000..f74448e2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/old.js
@@ -0,0 +1,105 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Imports
+ * -----------------------------------------------------------------------------
+ */
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+import Toggle from 'reactium-ui/Toggle';
+import { Feather } from 'reactium-ui/Icon';
+import React, { forwardRef, useImperativeHandle, useRef } from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Checkbox
+ * -----------------------------------------------------------------------------
+ */
+
+const ENUMS = Toggle.ENUMS;
+
+const cn = ({ className, color = ENUMS.COLOR.PRIMARY, label, labelAlign }) => {
+    const lbl = `ar-checkbox-label-${labelAlign}`;
+    const clr = `ar-checkbox-${color}`;
+
+    return classnames({
+        [className]: !!className,
+        [lbl]: !!label,
+        [clr]: true,
+        'ar-checkbox': true,
+    });
+};
+
+let Checkbox = (
+    {
+        className,
+        id,
+        label,
+        labelAlign,
+        labelStyle,
+        name,
+        style,
+        title,
+        ...props
+    },
+    ref,
+) => {
+    const inputRef = useRef();
+    const labelRef = useRef();
+
+    useImperativeHandle(ref, () => ({
+        blur: () => {
+            labelRef.current.blur;
+        },
+        check: () => {
+            inputRef.current.checked = true;
+        },
+        focus: () => {
+            labelRef.current.focus();
+        },
+        input: inputRef.current,
+        label: labelRef.current,
+        toggle: () => {
+            inputRef.current.checked = !inputRef.current.checked;
+        },
+        uncheck: () => {
+            inputRef.current.checked = false;
+        },
+        value: inputRef.current.value,
+    }));
+
+    return (
+        <label
+            ref={labelRef}
+            aria-label={label}
+            aria-labelledby={!label && name}
+            className={cn({ labelAlign, label, className })}
+            style={style}
+            title={title}
+        >
+            <span
+                className={classnames({ ['sr-only']: !label })}
+                style={labelStyle}
+            >
+                {label || title || name}
+            </span>
+            <input ref={inputRef} {...props} id={id} name={name} />
+            <span>
+                <Feather.Check width={14} height={14} />
+            </span>
+        </label>
+    );
+};
+
+Checkbox = forwardRef(Checkbox);
+
+Checkbox.ENUMS = ENUMS;
+
+Checkbox.propTypes = { ...Toggle.propTypes, readOnly: PropTypes.bool };
+
+Checkbox.defaultProps = {
+    ...Toggle.defaultProps,
+    readOnly: false,
+    type: ENUMS.TYPE.CHECKBOX,
+};
+
+export { Checkbox, Checkbox as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/test.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/test.js
new file mode 100644
index 00000000..e3cf9a41
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkbox/test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import Checkbox from './index';
+import { shallow } from 'reactium-core/enzyme';
+
+test('<Checkbox />', () => {
+    const component = shallow(<Checkbox />);
+
+    expect(component.html().length).toBeGreaterThan(0);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/Checkpoint.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/Checkpoint.js
new file mode 100644
index 00000000..7d0078b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/Checkpoint.js
@@ -0,0 +1,86 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Imports
+ * -----------------------------------------------------------------------------
+ */
+import React from 'react';
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Checkpoint
+ * -----------------------------------------------------------------------------
+ */
+const cn = ({ className, disabled, label, labelAlign }) => {
+    const lbl = `ar-checkpoint-label-${labelAlign}`;
+    return classnames({
+        [className]: !!className,
+        [lbl]: !!label,
+        disabled,
+        'ar-checkpoint': true,
+    });
+};
+
+const Checkpoint = ({
+    children,
+    className,
+    label,
+    labelAlign,
+    labelStyle,
+    name,
+    style,
+    title,
+    ...inputProps
+}) => (
+    <label
+        style={style}
+        title={title}
+        aria-label={label}
+        aria-labelledby={!label && name}
+        className={cn({
+            labelAlign,
+            label,
+            className,
+            disabled: inputProps.disabled,
+        })}>
+        <span
+            className={classnames({
+                'sr-only': !label,
+                label: !!label,
+            })}
+            style={labelStyle}>
+            {label || title || name}
+        </span>
+        <input name={name} {...inputProps} />
+        <span className='icon'>{children}</span>
+    </label>
+);
+
+Checkpoint.ALIGN_TOP = 'top';
+Checkpoint.ALIGN_BOTTOM = 'bottom';
+Checkpoint.TYPE_CHECKBOX = 'checkbox';
+Checkpoint.TYPE_RADIO = 'radio';
+
+Checkpoint.propTypes = {
+    className: PropTypes.string,
+    id: PropTypes.string,
+    label: PropTypes.any,
+    labelAlign: PropTypes.oneOf([
+        Checkpoint.ALIGN_TOP,
+        Checkpoint.ALIGN_BOTTOM,
+    ]),
+    labelStyle: PropTypes.object,
+    name: PropTypes.string,
+    qaId: PropTypes.string,
+    style: PropTypes.object,
+    title: PropTypes.string,
+    type: PropTypes.oneOf([Checkpoint.TYPE_CHECKBOX, Checkpoint.TYPE_RADIO]),
+};
+
+Checkpoint.defaultProps = {
+    labelAlign: Checkpoint.ALIGN_BOTTOM,
+    type: Checkpoint.TYPE_CHECKBOX,
+};
+
+export default Checkpoint;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/_style.scss
new file mode 100644
index 00000000..e3279dff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/_style.scss
@@ -0,0 +1,189 @@
+@use 'sass:math';
+
+$ar-checkpoint-border-size: 3px !default;
+$ar-checkpoint-color-active: $color-white !default;
+$ar-checkpoint-color-border: $color-grey !default;
+$ar-checkpoint-color-disabled: $color-grey-light !default;
+$ar-checkpoint-color-icon: $color-white !default;
+$ar-checkpoint-color-icon-disabled: $color-grey-light !default;
+$ar-checkpoint-color-line: $color-grey-light !default;
+$ar-checkpoint-color-progress: $color-grey !default;
+$ar-checkpoint-font-size-icon: 22px !default;
+$ar-checkpoint-font-size-sm: 12px !default;
+$ar-checkpoint-font-size-xs: 10px !default;
+$ar-checkpoint-height-icon: 37px !default;
+$ar-checkpoint-height-line: 4px !default;
+$ar-checkpoint-lbl-margin: 15px !default;
+$ar-checkpoint-shadow-bar: inset 0 0 2px 1px rgba($color-black, 0.1) !default;
+$ar-checkpoint-trans: 0.5s ease-in-out !default;
+$ar-checkponit-trans-bar: .25s ease-in-out !default;
+
+@mixin checkpointsLine() {
+    position: absolute;
+    top: math.div($ar-checkpoint-height-icon, 2);
+    left: 50%;
+    height: $ar-checkpoint-height-line;
+    overflow: hidden;
+    transform: translateX(-50%) translateY(-50%);
+
+    > div {
+        width: 0;
+        height: $ar-checkpoint-height-line;
+        transition: width $ar-checkponit-trans-bar;
+    }
+}
+
+.ar-checkpoints {
+    display: flex;
+    flex-wrap: nowrap;
+    justify-content: center;
+    align-items: flex-start;
+    width: 100%;
+    position: relative;
+
+    &-line {
+        @include checkpointsLine();
+        z-index: 1;
+        background-color: $ar-checkpoint-color-line;
+    }
+
+    &-active {
+        @include checkpointsLine();
+        z-index: 2;
+
+        > div {
+            background-color: $ar-checkpoint-color-active;
+            box-shadow: $ar-checkpoint-shadow-bar;
+        }
+    }
+
+    &-progress {
+        @include checkpointsLine();
+        z-index: 3;
+
+        > div {
+            background-color: $ar-checkpoint-color-progress;
+        }
+    }
+}
+
+.ar-checkpoint {
+    position: relative;
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    flex-wrap: wrap;
+    user-select: none;
+    z-index: 10;
+
+    &:hover {
+        cursor: pointer;
+    }
+
+    input {
+        display: none;
+    }
+
+    span.label {
+        width: 66%;
+        font-size: $ar-checkpoint-font-size-xs;
+        text-align: center;
+        line-height: 1.25;
+
+        @include breakpoint(sm) {
+            font-size: $ar-checkpoint-font-size-sm;
+        }
+    }
+
+    span.sr-only {
+        display: none;
+    }
+
+    span.icon {
+        position: relative;
+        width: $ar-checkpoint-height-icon;
+        height: $ar-checkpoint-height-icon;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        border-radius: 100%;
+        color: $ar-checkpoint-color-icon;
+        background-color: $ar-checkpoint-color-icon;
+        border: $ar-checkpoint-border-size solid $ar-checkpoint-color-border;
+        font-size: $ar-checkpoint-font-size-icon;
+        z-index: 100;
+        overflow: hidden;
+
+        transition: background-color $ar-checkpoint-trans,
+            border-color $ar-checkpoint-trans;
+
+        > * {
+            opacity: 0;
+            transition: opacity $ar-checkpoint-trans;
+        }
+
+        svg {
+            fill: $ar-checkpoint-color-icon;
+            flex-shrink: 0;
+        }
+    }
+
+    input:disabled + span.icon {
+        background-color: $ar-checkpoint-color-icon-disabled;
+        border-color: $ar-checkpoint-color-icon-disabled;
+
+        > * {
+            opacity: 0;
+        }
+    }
+
+    input:checked + span.icon {
+        color: $ar-checkpoint-color-icon;
+        background-color: $ar-checkpoint-color-border;
+        border-color: $ar-checkpoint-color-border;
+
+        > * {
+            opacity: 1;
+        }
+    }
+
+    &-label-bottom {
+        flex-direction: column-reverse;
+        justify-content: flex-start;
+
+        span.label {
+            margin-top: $ar-checkpoint-lbl-margin;
+        }
+    }
+
+    &-label-top {
+        justify-content: flex-start;
+
+        span.label {
+            margin-bottom: $ar-checkpoint-lbl-margin;
+        }
+    }
+
+    &.disabled {
+        cursor: default;
+
+        &:before,
+        &:after {
+            background-color: $ar-checkpoint-color-disabled;
+        }
+        z-index: 10;
+    }
+
+    &-label-bottom {
+        &:before,
+        &:after {
+            bottom: auto;
+            top: $ar-checkpoint-lbl-margin;
+            transform: translateY(50%);
+        }
+    }
+}
+
+.readOnly .ar-checkpoint:hover {
+    cursor: default;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/index.js
new file mode 100644
index 00000000..6bfa8a59
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Checkpoints/index.js
@@ -0,0 +1,277 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Checkpoint from './Checkpoint';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const ENUMS = {
+    ALIGN: {
+        TOP: Checkpoint.ALIGN_TOP,
+        BOTTOM: Checkpoint.ALIGN_BOTTOM,
+    },
+    EVENT: {
+        CHANGE: 'change',
+        COMPLETE: 'complete',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Checkpoints
+ * -----------------------------------------------------------------------------
+ */
+let Checkpoints = ({ index, points = [], namespace, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const prevStateRef = useRef({});
+    const stateRef = useRef({
+        complete: false,
+        index,
+        init: false,
+        namespace,
+        update: Date.now(),
+        previous: {},
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        prevStateRef.current = stateRef.current;
+        stateRef.current.previous = stateRef.current;
+        stateRef.current = { ...stateRef.current, ...newState };
+
+        setNewState(stateRef.current);
+    };
+
+    const getValue = currIndex => {
+        if (currIndex < 0) {
+            return null;
+        }
+
+        currIndex = currIndex || op.get(stateRef.current, 'index');
+
+        const values = points.map((point, i) => op.get(point, 'value', i));
+
+        let value = values[currIndex];
+        value = isNaN(value) && !value ? values : value;
+
+        return value;
+    };
+
+    const next = () => {
+        let { index } = stateRef.current;
+        if (index < points.length) {
+            index += 1;
+        }
+
+        setState({ index });
+    };
+
+    const prev = () => {
+        let { index } = stateRef.current;
+        if (index > -1) {
+            index -= 1;
+        }
+
+        setState({ index });
+    };
+
+    const complete = () => setState({ index: points.length });
+
+    const restart = () => setState({ index: -1 });
+
+    const onCheckpointChange = (e, index) => {
+        const { readOnly } = props;
+        if (readOnly === true) {
+            return;
+        }
+
+        if (e.target.checked) {
+            index += 1;
+        }
+
+        setState({ index });
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        container: containerRef.current,
+        setState,
+        state: stateRef.current,
+        next,
+        prev,
+        first: restart,
+        last: complete,
+        value: getValue(),
+        restart, // depricated 0.0.16
+        complete, // depricated 0.0.16
+    }));
+
+    // Side Effects
+    useEffect(() => {
+        const {
+            index: prevIndex,
+            complete: prevComplete,
+        } = stateRef.current.previous;
+
+        const { init, index: currIndex } = stateRef.current;
+
+        const complete = currIndex >= points.length;
+        const { onChange, onComplete } = props;
+
+        if (prevIndex !== currIndex) {
+            const value = getValue(currIndex);
+
+            setState({ value });
+
+            const evt = { type: ENUMS.EVENT.CHANGE, ...state, props, value };
+            delete evt.init;
+
+            onChange(evt);
+        }
+
+        if (prevComplete !== complete && init === true) {
+            setState({ complete });
+
+            if (complete === true) {
+                onComplete({ type: ENUMS.EVENT.COMPLETE, state, props });
+            }
+        }
+    }, [props]);
+
+    useLayoutEffect(() => {
+        const { init } = stateRef.current;
+        if (init !== true) {
+            setState({ init: true });
+        }
+    });
+
+    const cx = suffix => {
+        const { namespace } = stateRef.current;
+        return `${namespace}-${suffix}`;
+    };
+
+    const lineWidth = () => {
+        const len = points.length;
+        const seg = Math.ceil(100 / len);
+        const p = 100 - seg;
+        return `${p}%`;
+    };
+
+    const activeWidth = () => {
+        let { index } = stateRef.current;
+        index += 1;
+
+        const len = points.length - 1;
+        const p = Math.min(100, Math.ceil((index / len) * 100));
+        return `${p}%`;
+    };
+
+    const progressWidth = () => {
+        let { index = 0 } = stateRef.current;
+        if (index === -1) {
+            return '0%';
+        }
+
+        const len = points.length - 1;
+        const p = Math.min(100, Math.ceil((index / len) * 100));
+        return `${p}%`;
+    };
+
+    const render = () => {
+        const { className, labelAlign, name, readOnly } = props;
+        const { complete, index, namespace } = stateRef.current;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            readOnly,
+        });
+
+        const lw = lineWidth();
+        const aw = activeWidth();
+        const pw = progressWidth();
+
+        return (
+            <div ref={containerRef} className={cname}>
+                <div className={cx('line')} style={{ width: lw }} />
+                <div className={cx('active')} style={{ width: lw }}>
+                    <div style={{ width: aw }} />
+                </div>
+                <div className={cx('progress')} style={{ width: lw }}>
+                    <div style={{ width: pw }} />
+                </div>
+                {points.map((point, i) => {
+                    const { icon, label, value, ...cprops } = point;
+                    const width = `${100 / points.length}%`;
+                    let key = `checkpoint-${i}`;
+                    key += name || '';
+
+                    return (
+                        <Checkpoint
+                            style={{ width }}
+                            key={key}
+                            name={name}
+                            label={label}
+                            labelAlign={labelAlign}
+                            value={value || i}
+                            checked={i < index || complete === true}
+                            disabled={i > index && readOnly === true}
+                            onChange={e => onCheckpointChange(e, i)}
+                            {...cprops}>
+                            {icon}
+                        </Checkpoint>
+                    );
+                })}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Checkpoints = forwardRef(Checkpoints);
+
+Checkpoints.ENUMS = ENUMS;
+
+Checkpoints.propTypes = {
+    className: PropTypes.string,
+    index: PropTypes.number,
+    labelAlign: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    name: PropTypes.string,
+    namespace: PropTypes.string,
+    points: PropTypes.arrayOf(
+        PropTypes.shape({
+            label: PropTypes.node,
+            icon: PropTypes.node,
+            value: PropTypes.any,
+        }),
+    ),
+    readOnly: PropTypes.bool,
+    onChange: PropTypes.func,
+    onComplete: PropTypes.func,
+};
+
+Checkpoints.defaultProps = {
+    namespace: 'ar-checkpoints',
+    index: -1,
+    labelAlign: ENUMS.ALIGN.BOTTOM,
+    points: [],
+    readOnly: false,
+    onChange: noop,
+    onComplete: noop,
+};
+
+export { Checkpoints, Checkpoints as default, Checkpoint };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/_style.scss
new file mode 100644
index 00000000..55132b64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/_style.scss
@@ -0,0 +1,10 @@
+.ar-collapsible {
+    position: relative;
+    display: none;
+    overflow: hidden;
+
+    &.expanded {
+        display: block;
+        overflow: visible;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/enums.js
new file mode 100644
index 00000000..282b8ea9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/enums.js
@@ -0,0 +1,14 @@
+const ENUMS = {
+    DIRECTION: {
+        HORIZONTAL: 'horizontal',
+        VERTICAL: 'vertical',
+    },
+    EVENT: {
+        BEFORE_COLLAPSE: 'beforeCollapse',
+        BEFORE_EXPAND: 'beforeExpand',
+        COLLAPSE: 'collapse',
+        EXPAND: 'expand',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/index.js
new file mode 100644
index 00000000..3beba3fa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/index.js
@@ -0,0 +1,367 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
+import { useEventHandle } from '@atomic-reactor/reactium-sdk-core';
+
+import ENUMS from './enums';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+    useState,
+} from 'react';
+
+// Server-Side Render safe useLayoutEffect (useEffect when node)
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Collapsible
+ * -----------------------------------------------------------------------------
+ */
+// export class ResizeEvent extends Event {
+//     constructor(type, data) {
+//         super(type, data);
+//
+//         op.del(data, 'type');
+//         op.del(data, 'target');
+//
+//         Object.entries(data).forEach(([key, value]) => {
+//             if (!this[key]) {
+//                 try {
+//                     this[key] = value;
+//                 } catch (err) {}
+//             } else {
+//                 key = `__${key}`;
+//                 this[key] = value;
+//             }
+//         });
+//     }
+// }
+
+let Collapsible = ({ debug, children, ...props }, ref) => {
+    // Refs
+    const stateRef = useRef({
+        ...props,
+        init: false,
+    });
+
+    const containerRef = useRef();
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        if (!containerRef.current) return;
+
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const numberize = str => Number(String(str).replace(/[a-z]/g, ''));
+
+    const collapse = () => {
+        const { animation, expanded } = stateRef.current;
+
+        if (expanded !== true) {
+            setState({ animation: null });
+            return Promise.resolve();
+        }
+
+        if (animation) {
+            return animation;
+        }
+
+        const {
+            animationEase,
+            animationSpeed,
+            direction,
+            maxSize,
+            minSize,
+            onBeforeCollapse,
+            onCollapse,
+        } = stateRef.current;
+
+        const container = containerRef.current;
+        const dir =
+            direction === ENUMS.DIRECTION.HORIZONTAL ? 'width' : 'height';
+
+        if (!maxSize) {
+            container.style[dir] = 'auto';
+        }
+        container.style.display = 'block';
+        container.style.overflow = 'hidden';
+
+        const to = minSize ? numberize(minSize) : 0;
+
+        handle.rect = container.getBoundingClientRect();
+        handle.dispatchEvent(new Event('before-collapse'));
+
+        onBeforeCollapse({
+            target: container,
+            type: ENUMS.EVENT.BEFORE_COLLAPSE,
+        });
+
+        const tween = new Promise(resolve =>
+            TweenMax.to(container, animationSpeed, {
+                [dir]: to,
+                ease: animationEase,
+                onUpdate: () => {
+                    handle.rect = container.getBoundingClientRect();
+                    handle.dispatchEvent(new Event('resize'));
+                },
+                onComplete: () => {
+                    if (!containerRef.current) return;
+
+                    const evt = {
+                        target: container,
+                        type: ENUMS.EVENT.COLLAPSE,
+                    };
+
+                    setState({ animation: null, expanded: false });
+
+                    container.removeAttribute('style');
+
+                    if (minSize) {
+                        container.style.display = 'block';
+                        container.style[dir] = numberize(minSize) + 'px';
+                    }
+
+                    handle.rect = container.getBoundingClientRect();
+                    handle.dispatchEvent(new Event('collapse'));
+                    onCollapse(evt);
+                    resolve();
+                },
+            }),
+        );
+
+        setState({ animation: tween });
+
+        return tween;
+    };
+
+    const expand = () => {
+        const { animation, expanded } = stateRef.current;
+
+        if (expanded === true) {
+            setState({ animation: null });
+            return Promise.resolve();
+        }
+
+        if (animation) {
+            return animation;
+        }
+
+        const {
+            animationEase,
+            animationSpeed,
+            direction,
+            onBeforeExpand,
+            onExpand,
+            maxSize,
+            minSize,
+        } = stateRef.current;
+
+        const container = containerRef.current;
+        if (!container) {
+            return Promise.resolve();
+        }
+
+        const dir =
+            direction === ENUMS.DIRECTION.HORIZONTAL ? 'width' : 'height';
+
+        container.classList.add('expanded');
+        container.style[dir] = maxSize ? numberize(maxSize) + 'px' : 'auto';
+        container.style.display = 'block';
+        container.style.overflow = 'hidden';
+
+        handle.rect = container.getBoundingClientRect();
+        handle.dispatchEvent(new Event('before-expand'));
+        onBeforeExpand({
+            target: container,
+            type: ENUMS.EVENT.BEFORE_EXPAND,
+        });
+
+        const tween = new Promise(resolve =>
+            TweenMax.from(container, animationSpeed, {
+                [dir]: numberize(minSize),
+                ease: animationEase,
+                onUpdate: () => {
+                    handle.rect = container.getBoundingClientRect();
+                    handle.dispatchEvent(new Event('resize'));
+                },
+                onComplete: () => {
+                    if (!containerRef.current) return;
+
+                    const evt = {
+                        target: container,
+                        type: ENUMS.EVENT.EXPAND,
+                    };
+                    setState({ expanded: true, animation: null });
+
+                    container.removeAttribute('style');
+
+                    if (maxSize) {
+                        container.style[dir] = numberize(maxSize) + 'px';
+                    }
+                    handle.rect = container.getBoundingClientRect();
+                    handle.dispatchEvent(new Event('expand'));
+                    onExpand(evt);
+                    resolve();
+                },
+            }),
+        );
+
+        setState({ animation: tween });
+
+        return tween;
+    };
+
+    const toggle = e => {
+        const { expanded } = stateRef.current;
+        return expanded !== true ? expand(e) : collapse(e);
+    };
+
+    const setSize = () => {
+        const { direction, expanded, maxSize, minSize } = stateRef.current;
+
+        if (maxSize || minSize) {
+            const container = containerRef.current;
+
+            const dir =
+                direction === ENUMS.DIRECTION.HORIZONTAL ? 'width' : 'height';
+
+            if (expanded && maxSize) {
+                container.style[dir] = numberize(maxSize) + 'px';
+            }
+
+            if (expanded !== true && minSize) {
+                let size = numberize(minSize);
+                size = size === 1 ? 0 : size;
+
+                container.style[dir] = size + 'px';
+                container.style.display = size !== 0 ? 'block' : 'none';
+            }
+        }
+    };
+
+    const _handle = () => ({
+        collapse,
+        container: containerRef.current,
+        expand,
+        rect: {},
+        setState,
+        state: stateRef.current,
+        toggle,
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    // External Interface
+    useImperativeHandle(ref, () => handle, [stateRef.current]);
+
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => {
+        const { init, maxSize } = stateRef.current;
+
+        if (!init) {
+            setSize();
+            setState({ init: true });
+        }
+
+        if (typeof window === 'undefined') {
+            return;
+        }
+
+        window.addEventListener('resize', setSize);
+
+        return () => window.removeEventListener('resize', setSize);
+    }, [
+        op.get(stateRef, 'current.init'),
+        Number(op.get(stateRef, 'current.maxSize', 0)),
+        Number(op.get(stateRef, 'current.minSize', 0)),
+    ]);
+
+    useEffect(() => {
+        if (!containerRef.current) return;
+        setHandle(_handle());
+    }, [stateRef.current]);
+
+    const render = () => {
+        let {
+            className,
+            expanded,
+            namespace,
+            width,
+            height,
+            style = {},
+        } = stateRef.current;
+
+        className = cn({
+            [className]: !!className,
+            [namespace]: true,
+            expanded,
+        });
+
+        return (
+            <div ref={containerRef} className={className} style={style}>
+                {children}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Collapsible = forwardRef(Collapsible);
+
+Collapsible.ENUMS = ENUMS;
+
+Collapsible.propTypes = {
+    animationEase: PropTypes.object,
+    animationSpeed: PropTypes.number,
+    className: PropTypes.string,
+    debug: PropTypes.bool,
+    direction: PropTypes.oneOf(Object.values(ENUMS.DIRECTION)),
+    expanded: PropTypes.bool,
+    maxSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    minSize: PropTypes.number,
+    namespace: PropTypes.string,
+    onBeforeCollapse: PropTypes.func,
+    onBeforeExpand: PropTypes.func,
+    onCollapse: PropTypes.func,
+    onExpand: PropTypes.func,
+    style: PropTypes.object,
+};
+
+Collapsible.defaultProps = {
+    animationEase: Power2.easeInOut,
+    animationSpeed: 0.25,
+    className: null,
+    debug: false,
+    direction: ENUMS.DIRECTION.VERTICAL,
+    expanded: true,
+    namespace: 'ar-collapsible',
+    onBeforeCollapse: noop,
+    onBeforeExpand: noop,
+    onCollapse: noop,
+    onExpand: noop,
+    style: {},
+};
+
+export { Collapsible, Collapsible as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/test.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/test.js
new file mode 100644
index 00000000..b5a593b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Collapsible/test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import Collapsible from './index';
+import { shallow } from 'reactium-core/enzyme';
+
+test('<Collapsible />', () => {
+    const component = shallow(<Collapsible />);
+
+    expect(component.html().length).toBeGreaterThan(0);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Column/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Column/index.js
new file mode 100644
index 00000000..7152e540
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Column/index.js
@@ -0,0 +1,58 @@
+import cn from 'classnames';
+import op from 'object-path';
+import React from 'react';
+import ENUMS from '../enums';
+import slugify from 'slugify';
+
+const Column = ({
+    children,
+    className,
+    field,
+    i: idx,
+    labelFunction,
+    namespace = 'ar-data-table-col',
+    onClick,
+    textAlign = ENUMS.TEXT_ALIGN.LEFT,
+    verticalAlign = ENUMS.VERTICAL_ALIGN.TOP,
+    width,
+    sortable = false,
+    style = {},
+    title,
+    provided = {},
+}) => {
+    field = field ? `${namespace}-${slugify(field)}` : field;
+    idx = idx && field ? `${field}-${idx - 1}` : null;
+
+    const colProps = {
+        onClick,
+        className: cn({
+            [namespace]: !!namespace,
+            [field]: !!field,
+            [idx]: !!idx,
+            [className]: !!className,
+            [textAlign]: !!textAlign,
+            [verticalAlign]: !!verticalAlign,
+            sortable,
+        }),
+        style: {
+            width,
+            maxWidth: width,
+            minWidth: width ? width : Math.floor((1 / 12) * 100) + '%',
+            flexGrow: width ? 0 : 1,
+            flexShrink: width ? 0 : 1,
+            ...style,
+        },
+        title,
+    };
+
+    return sortable ? (
+        <button {...colProps} type='button'>
+            {labelFunction ? labelFunction(field, children) : children}
+        </button>
+    ) : (
+        <div {...colProps} {...op.get(provided, 'dragHandleProps', {})}>
+            {labelFunction ? labelFunction(field, children) : children}
+        </div>
+    );
+};
+export default Column;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Footer/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Footer/index.js
new file mode 100644
index 00000000..6d88076e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Footer/index.js
@@ -0,0 +1,6 @@
+import React from 'react';
+
+const Footer = ({ children, namespace }) =>
+    !children ? null : <div className={`${namespace}-footer`}>{children}</div>;
+
+export default Footer;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Header/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Header/index.js
new file mode 100644
index 00000000..9d5d6d9a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Header/index.js
@@ -0,0 +1,6 @@
+import React from 'react';
+
+const Header = ({ children, namespace }) =>
+    !children ? null : <div className={`${namespace}-header`}>{children}</div>;
+
+export default Header;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Heading/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Heading/index.js
new file mode 100644
index 00000000..063b031f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Heading/index.js
@@ -0,0 +1,56 @@
+import React from 'react';
+import ENUMS from '../enums';
+import Column from '../Column';
+import { Linear } from 'reactium-ui/Icon';
+
+const noop = () => {};
+
+const Heading = ({
+    children,
+    field,
+    label,
+    namespace = 'ar-data-table-heading',
+    onClick = noop,
+    sort,
+    sortable,
+    sortType,
+    ...props
+}) => {
+    const dir = sort === ENUMS.SORT.ASC ? 'descending' : 'ascending';
+    const evt = {
+        label,
+        sort: sort === ENUMS.SORT.ASC ? ENUMS.SORT.DESC : ENUMS.SORT.ASC,
+        sortBy: field,
+        sortType,
+    };
+    const canSort =
+        sortable === true &&
+        sortType &&
+        Object.values(ENUMS.SORT_TYPE).includes(sortType);
+
+    const Icon = canSort
+        ? () =>
+              Linear[ENUMS.SORT_ICON[sort][sortType]]({ width: 14, height: 14 })
+        : () => null;
+
+    onClick = canSort ? onClick : noop;
+
+    return (
+        <Column
+            field={field}
+            title={
+                canSort ? `Sort by ${String(label).toLowerCase()} ${dir}` : null
+            }
+            namespace={namespace}
+            sortable={sortable}
+            {...props}
+            onClick={e => onClick({ ...e, ...evt })}>
+            {children}
+            <span className='ico'>
+                <Icon />
+            </span>
+        </Column>
+    );
+};
+
+export default Heading;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Headings/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Headings/index.js
new file mode 100644
index 00000000..8b6f7a24
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Headings/index.js
@@ -0,0 +1,92 @@
+import React from 'react';
+import Heading from '../Heading';
+import ENUMS from '../enums';
+import { Feather } from 'reactium-ui/Icon';
+
+const style = {
+    width: 30,
+    maxWidth: 30,
+    minWidth: 30,
+    flexGrow: 0,
+    flexShrink: 0,
+    display: 'flex',
+    alignItems: 'center',
+    justifyContent: 'center',
+};
+
+const Headings = ({
+    columns,
+    data = [],
+    multiselect,
+    namespace,
+    onClick,
+    onToggleAll,
+    selectable,
+    sort,
+    sortable,
+    sortBy,
+}) => {
+    const selection = data.filter(item => Boolean(item.selected === true));
+
+    return !columns ? null : (
+        <div className={`${namespace}-headings`}>
+            {selectable === true && (
+                <label className={`${namespace}-select`} style={style}>
+                    {multiselect === true ? (
+                        <>
+                            <input
+                                type='checkbox'
+                                checked={selection.length > 0}
+                                onChange={onToggleAll}
+                            />
+                            <span className='box'>
+                                <Feather.Check width={15} height={15} />
+                            </span>
+                        </>
+                    ) : (
+                        <span className='dash' />
+                    )}
+                </label>
+            )}
+            {Object.entries(columns).map(([key, value]) => {
+                value =
+                    typeof value === 'string'
+                        ? { label: value, textAlign: ENUMS.TEXT_ALIGN.LEFT }
+                        : value;
+
+                let { label, ...columnProps } = value;
+
+                label =
+                    typeof labelFunction === 'function'
+                        ? labelFunction(key, label)
+                        : label;
+
+                columnProps = {
+                    field: key,
+                    label,
+                    onClick,
+                    sort,
+                    sortable,
+                    sortBy,
+                    ...columnProps,
+                };
+
+                const className =
+                    sortBy === key && sortable
+                        ? String(`sort-active-${sort}`).toLowerCase()
+                        : null;
+
+                return (
+                    <Heading
+                        key={`${namespace}-heading-${key}`}
+                        className={className}
+                        {...columnProps}>
+                        {label}
+                    </Heading>
+                );
+            })}
+        </div>
+    );
+};
+
+export default Headings;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Row/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Row/index.js
new file mode 100644
index 00000000..0fc463c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Row/index.js
@@ -0,0 +1,36 @@
+import cn from 'classnames';
+import React, { forwardRef } from 'react';
+
+const Row = (
+    {
+        children,
+        className,
+        namespace = 'ar-data-table-row',
+        selectable = false,
+        ...props
+    },
+    ref,
+) =>
+    selectable ? (
+        <label
+            ref={ref}
+            className={cn({
+                [namespace]: !!namespace,
+                [className]: !!className,
+            })}
+            {...props}>
+            {children}
+        </label>
+    ) : (
+        <div
+            ref={ref}
+            className={cn({
+                [namespace]: !!namespace,
+                [className]: !!className,
+            })}
+            {...props}>
+            {children}
+        </div>
+    );
+
+export default forwardRef(Row);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Rows/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Rows/index.js
new file mode 100644
index 00000000..b6dc86d5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/Rows/index.js
@@ -0,0 +1,167 @@
+import Row from '../Row';
+import React from 'react';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import ENUMS from '../enums';
+import Column from '../Column';
+import { Feather } from 'reactium-ui/Icon';
+import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
+
+const getRows = ({
+    columns = {},
+    data = [],
+    selection = [],
+    id,
+    multiselect,
+    namespace,
+    reorderable = false,
+    rowsPerPage = -1,
+    selectable = false,
+    state,
+    onToggle,
+    ...props
+}) => {
+    const { page = 1 } = state;
+    const { provided } = props;
+
+    if (data.length < 1) {
+        return [];
+    }
+
+    const limit = Math.max(0, rowsPerPage);
+    const idx = page > 1 ? page * limit - limit : 0;
+    const selectStyle = reorderable ? { padding: '0 8px 0 4px' } : null;
+
+    return selection.map((item, i) => {
+        const itemTmp = { ...item };
+        const index = page > 1 ? idx + i : i;
+        let { selected = false, value } = itemTmp;
+
+        value = value || index;
+
+        delete itemTmp.selected;
+
+        return (
+            <Row key={`${id}-row-${i}`} selectable={selectable}>
+                {selectable === true && (
+                    <Column
+                        i={i + 1}
+                        field={`${id}-row-col-select`}
+                        key={`${id}-row-col-select`}
+                        className={`${namespace}-select`}
+                        width={30}
+                        style={selectStyle}
+                        verticalAlign={ENUMS.VERTICAL_ALIGN.MIDDLE}>
+                        <input
+                            key={`${id}-checkbox-${i}`}
+                            type={multiselect === true ? 'checkbox' : 'radio'}
+                            name='selected'
+                            data-index={index}
+                            value={value}
+                            checked={selected}
+                            onChange={e => onToggle(e)}
+                        />
+                        <span className='box'>
+                            <Feather.Check width={15} height={15} />
+                        </span>
+                    </Column>
+                )}
+                {Object.keys(columns).map(key => {
+                    let value = itemTmp[key];
+                    const col = { ...columns[key], field: key };
+                    delete col.label;
+
+                    return (
+                        <Column
+                            key={`${id}-row-${i}-col-${key}`}
+                            {...col}
+                            i={i + 1}>
+                            {value}
+                        </Column>
+                    );
+                })}
+                {reorderable === true && (
+                    <Column
+                        i={i + 1}
+                        field={`${id}-row-col-handle`}
+                        provided={provided}
+                        verticalAlign={ENUMS.VERTICAL_ALIGN.MIDDLE}
+                        style={{ padding: 0, order: -1 }}
+                        className={`${namespace}-handle`}
+                        key={`${id}-row-${i}-col-handle`}
+                        width={40}>
+                        <div className='drag-handle'>
+                            <Feather.MoreVertical width={10} height={10} />
+                        </div>
+                    </Column>
+                )}
+            </Row>
+        );
+    });
+};
+
+const DefaultRows = props => {
+    const { namespace } = props;
+    return (
+        <div className={`${namespace}-rows`}>
+            {getRows(props).map(item => item)}
+        </div>
+    );
+};
+
+const ReorderRows = props => {
+    const { namespace, onReorder, selection = [] } = props;
+
+    const renderDragable = (item, index) => (
+        <Draggable key={item.id} draggableId={item.id} index={index}>
+            {(provided, snapshot) => {
+                const rows = getRows({ ...props, provided });
+                const rowProps = rows[index].props;
+
+                let { className = null } = rowProps;
+
+                className = cn({
+                    [className]: !!className,
+                    dragging: snapshot.isDragging,
+                });
+
+                return React.cloneElement(rows[index], {
+                    ...rowProps,
+                    className,
+                    ref: provided.innerRef,
+                    ...provided.draggableProps,
+                });
+            }}
+        </Draggable>
+    );
+
+    const render = () => (
+        <DragDropContext onDragEnd={onReorder}>
+            <Droppable droppableId={uuid()}>
+                {(provided, snapshot) => (
+                    <div
+                        className={cn({
+                            [`${namespace}-dnd`]: true,
+                            dropping: snapshot.isDraggingOver,
+                        })}
+                        {...provided.droppableProps}
+                        ref={provided.innerRef}>
+                        {selection.map(renderDragable)}
+                        {provided.placeholder}
+                    </div>
+                )}
+            </Droppable>
+        </DragDropContext>
+    );
+
+    return render();
+};
+
+const Rows = ({ reorderable = false, ...props }) =>
+    reorderable === true ? (
+        <ReorderRows {...props} reorderable={true} />
+    ) : (
+        <DefaultRows {...props} />
+    );
+
+export default Rows;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/SearchBar/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/SearchBar/index.js
new file mode 100644
index 00000000..a8bdf6a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/SearchBar/index.js
@@ -0,0 +1,64 @@
+import React from 'react';
+import cn from 'classnames';
+import { Feather } from 'reactium-ui/Icon';
+
+const noop = () => {};
+const DefaultIcon = () => <Feather.Search />;
+
+const SearchBar = ({
+    className = null,
+    expanded,
+    icon = null,
+    namespace = 'ar-data-table',
+    onBlur = noop,
+    onFocus = noop,
+    defaultValue,
+    value,
+    ...props
+}) => {
+    const Icon = !icon ? DefaultIcon : icon;
+
+    const _onFocus = e => {
+        e.target.classList.add('focus');
+        onFocus(e);
+    };
+
+    const _onBlur = e => {
+        const { value } = e.target;
+        if (!value && expanded !== true) {
+            e.target.classList.remove('focus');
+        }
+        onBlur(e);
+    };
+
+    const expand = expanded || value || defaultValue;
+
+    if (value) {
+        props['value'] = value;
+    }
+    if (defaultValue) {
+        props['defaultValue'] = defaultValue;
+    }
+
+    return (
+        <label
+            className={cn({
+                [`${namespace}-search`]: true,
+                [className]: !!className,
+            })}>
+            <input
+                className={cn({ focus: expand })}
+                type='text'
+                onFocus={_onFocus}
+                onBlur={_onBlur}
+                {...props}
+            />
+            <span className='bg' />
+            <span className='ico'>
+                <Icon />
+            </span>
+        </label>
+    );
+};
+
+export default SearchBar;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/_style.scss
new file mode 100644
index 00000000..32babde3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/_style.scss
@@ -0,0 +1,449 @@
+$ar-table-color-background: $color-white !default;
+$ar-table-color-background-checkbox: $color-blue !default;
+$ar-table-color-background-footer: darken($color-white, 1%) !default;
+$ar-table-color-background-header: $color-white !default;
+$ar-table-color-background-heading: $color-white !default;
+$ar-table-color-background-row: $color-white !default;
+$ar-table-color-background-row-hover: darken($color-white, 0.5%) !default;
+$ar-table-color-background-search: $color-white-dark !default;
+$ar-table-color-background-drop: $color-white-dark !default;
+$ar-table-color-border: $color-grey-light !default;
+$ar-table-color-checkbox: $color-white !default;
+$ar-table-color-text: $color-black !default;
+$ar-table-color-text-heading: $color-gray !default;
+$ar-table-color-drag-handle: $color-gray !default;
+$ar-table-font: Helvetica, Arial, sans-serif !default;
+$ar-table-font-heading: 'Montserrat', Helvetica, Arial, sans-serif !default;
+$ar-table-shadow: 0 0 3px 1px rgba($color-black, 0.05) !default;
+
+.ar-data-table {
+    width: 100%;
+    font-size: 13px;
+    font-family: $ar-table-font;
+    box-shadow: $ar-table-shadow;
+
+    &-header {
+        background-color: $ar-table-color-background-header;
+        padding: 0;
+        display: flex;
+        align-items: center;
+        border-radius: 2px 2px 0 0;
+        flex-wrap: wrap;
+
+        > * {
+            flex-grow: 0;
+        }
+
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6 {
+            font-size: 18px;
+            line-height: 1;
+            padding: 12px 8px 12px 16px;
+            flex-grow: 1;
+        }
+    }
+
+    &-search {
+        position: relative;
+        display: inline-flex;
+        align-items: center;
+        justify-content: flex-end;
+        flex-direction: row-reverse;
+        padding: 0;
+        background-color: transparent;
+        cursor: pointer;
+
+        span.ico {
+            width: 30px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            z-index: 20;
+
+            svg {
+                fill: $ar-table-color-text;
+                width: 14px;
+                height: 14px;
+            }
+        }
+
+        input {
+            border: 1px solid transparent;
+            font-size: 13px;
+            line-height: 1;
+            color: $ar-table-color-text;
+            background-color: transparent;
+            outline: none;
+            z-index: 10;
+            width: 0;
+            padding: 6px 0;
+            opacity: 0;
+            transition: width 0.25s ease-in-out, opacity 0.25s ease-in-out;
+
+            &:focus,
+            &.focus {
+                opacity: 1;
+                width: 152px;
+                padding: 6px 8px 6px 0;
+            }
+        }
+
+        span.bg {
+            display: block;
+            position: absolute;
+            z-index: 1;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            border-radius: 2px;
+            background-color: $ar-table-color-background-search;
+            opacity: 0;
+            transition: opacity 0.25s ease-in-out;
+        }
+
+        input:focus + span.bg,
+        input.focus + span.bg {
+            opacity: 1;
+        }
+
+        input:focus + span.bg + span.ico,
+        input.focus + span.bg + span.ico {
+            svg {
+                fill: $ar-table-color-background-checkbox;
+            }
+        }
+    }
+
+    &-footer {
+        border-top: 1px solid darken($ar-table-color-background-footer, 3%);
+        background-color: $ar-table-color-background-footer;
+        padding: 8px;
+        display: flex;
+        align-items: center;
+        border-radius: 0 0 2px 2px;
+
+        &:empty {
+            display: none;
+        }
+    }
+
+    &-row,
+    &-headings {
+        width: 100%;
+        display: flex;
+        align-items: stretch;
+        flex-wrap: nowrap;
+    }
+
+    &-row {
+        flex-wrap: nowrap;
+        //margin-bottom: -1px;
+    }
+
+    &-rows {
+        display: flex;
+        flex-direction: column;
+    }
+
+    label.ar-data-table-row {
+        user-select: none;
+        outline: none;
+        background-color: $ar-table-color-background-row;
+        transition: background-color 0.2s ease-in-out;
+        position: relative;
+
+        &:hover {
+            z-index: 1000;
+            background-color: $ar-table-color-background-row-hover;
+        }
+    }
+
+    &-headings {
+        background-color: $ar-table-color-background-heading;
+
+        .ar-data-table-select {
+            border-top: 1px solid $ar-table-color-border;
+        }
+    }
+
+    &-col,
+    &-heading {
+        min-width: 8.3333%;
+        display: flex;
+        flex-wrap: wrap;
+        flex-grow: 1;
+        background-color: transparent;
+        align-items: flex-start;
+        border-top: 1px solid $ar-table-color-border;
+
+        &.right {
+            justify-content: flex-end;
+        }
+
+        &.left {
+            justify-content: flex-start;
+        }
+
+        &.center {
+            justify-content: center;
+        }
+
+        &.top {
+            align-items: flex-start;
+        }
+
+        &.middle {
+            align-items: center;
+        }
+
+        &.bottom {
+            align-items: flex-end;
+        }
+    }
+
+    &-col {
+        padding: 12px 16px;
+        font-size: inherit;
+        align-items: flex-start;
+        overflow-x: hidden;
+    }
+
+    &-heading {
+        color: $ar-table-color-text-heading;
+        padding: 8px 16px;
+        font-weight: 100;
+        font-family: $ar-table-font-heading;
+        font-size: 14px;
+        align-items: center;
+        border: none;
+        border-bottom: 1px solid $ar-table-color-border;
+        border-top: 1px solid $ar-table-color-border;
+        margin-bottom: -1px;
+
+        svg {
+            fill: $ar-table-color-text-heading;
+        }
+
+        .ico {
+            margin-left: 8px;
+
+            &:empty {
+                display: none;
+            }
+        }
+
+        &:hover,
+        &.sort-active-asc,
+        &.sort-active-desc {
+            svg {
+                fill: $ar-table-color-background-checkbox;
+            }
+        }
+    }
+
+    &-select {
+        padding-left: 16px;
+        display: flex;
+        width: 32px;
+        position: relative;
+        user-select: none;
+
+        input {
+            height: 0;
+            opacity: 0;
+            position: absolute;
+            top: 0;
+            left: 0;
+            z-index: 0;
+        }
+
+        span.box {
+            border: 2px solid darken($ar-table-color-border, 5%);
+            width: 14px;
+            height: 14px;
+            min-width: 14px;
+            min-height: 14px;
+            position: relative;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-shrink: 0;
+            border-radius: 1px;
+            background-color: transparent;
+            transition: background-color 0.25s ease-in-out,
+                border-color 0.25s ease-in-out;
+
+            svg {
+                opacity: 0;
+                transition: opacity 0.25s ease-in-out;
+                fill: $ar-table-color-checkbox;
+                flex-shrink: 0;
+            }
+        }
+
+        span.dash {
+            width: 4px;
+            border-bottom: 2px solid darken($ar-table-color-border, 5%);
+        }
+
+        input:checked + span.box {
+            background-color: $ar-table-color-background-checkbox;
+            border: 2px solid transparent;
+
+            svg {
+                opacity: 1;
+            }
+        }
+
+        input:focus + span.box {
+            border: 2px solid $ar-table-color-background-checkbox;
+            box-shadow: 0 0 5px 1px
+                rgba($ar-table-color-background-checkbox, 0.25);
+        }
+    }
+
+    &-pagination {
+        display: inline-flex;
+        justify-content: flex-start;
+        align-items: center;
+    }
+
+    table {
+        border-collapse: collapse;
+        border: none;
+        width: 100%;
+
+        tr {
+            th {
+                background-color: $ar-table-color-background-heading;
+                color: $ar-table-color-text-heading;
+                font-weight: 600;
+                font-family: $ar-table-font-heading;
+                font-size: 14px;
+                padding: 8px 16px;
+                border-bottom: 1px solid $ar-table-color-border;
+                border-top: 1px solid $ar-table-color-border;
+                line-height: 1.5;
+            }
+
+            td {
+                border-top: 1px solid $ar-table-color-border;
+                border-bottom: 1px solid $ar-table-color-border;
+                background-color: transparent;
+                color: $ar-table-color-text;
+                padding: 8px 16px;
+                font-weight: 400;
+                font-family: $ar-table-font;
+                font-size: 14px;
+                line-height: 1.5;
+                word-wrap: break-word;
+                white-space: normal;
+            }
+
+            &.top {
+                th,
+                td {
+                    vertical-align: top;
+                }
+            }
+
+            &.middle {
+                th,
+                td {
+                    vertical-align: middle;
+                }
+            }
+
+            &.bottom {
+                th,
+                td {
+                    vertical-align: bottom;
+                }
+            }
+
+            &.left {
+                th,
+                td {
+                    text-align: left;
+                }
+            }
+
+            &.center {
+                th,
+                td {
+                    text-align: center;
+                }
+            }
+
+            &.right {
+                th,
+                td {
+                    text-align: right;
+                }
+            }
+
+            th,
+            td {
+                &.top {
+                    vertical-align: top;
+                }
+
+                &.middle {
+                    vertical-align: middle;
+                }
+
+                &.bottom {
+                    vertical-align: bottom;
+                }
+
+                &.left {
+                    text-align: left;
+                }
+
+                &.center {
+                    text-align: center;
+                }
+
+                &.right {
+                    text-align: right;
+                }
+            }
+        }
+    }
+
+    &-handle {
+        display: flex;
+        align-items: stretch;
+
+        .drag-handle {
+            border: none;
+            background-color: transparent;
+            display: flex;
+            align-items: center;
+            padding: 0 0 0 16px;
+
+            &:hover {
+                cursor: grab;
+            }
+
+            svg {
+                fill: $ar-table-color-drag-handle;
+            }
+        }
+    }
+
+    &-dnd {
+        &.dropping {
+            background-color: $ar-table-color-background-drop;
+        }
+
+        .dragging {
+            border: 1px solid $ar-table-color-border;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/enums.js
new file mode 100644
index 00000000..6a565a02
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/enums.js
@@ -0,0 +1,38 @@
+export default {
+    EVENT: {
+        CHANGE: 'change',
+        SELECT: 'select',
+        UNSELECT: 'unselect',
+    },
+    SORT: {
+        ASC: 'ASC',
+        DESC: 'DESC',
+    },
+    SORT_ICON: {
+        ASC: {
+            DATE: 'SortNumericDesc',
+            NUMBER: 'SortNumericDesc',
+            STRING: 'SortAlphaDesc',
+        },
+        DESC: {
+            DATE: 'SortNumericAsc',
+            NUMBER: 'SortNumericAsc',
+            STRING: 'SortAlphaAsc',
+        },
+    },
+    SORT_TYPE: {
+        DATE: 'DATE',
+        NUMBER: 'NUMBER',
+        STRING: 'STRING',
+    },
+    TEXT_ALIGN: {
+        LEFT: 'left',
+        CENTER: 'center',
+        RIGHT: 'right',
+    },
+    VERTICAL_ALIGN: {
+        TOP: 'top',
+        MIDDLE: 'middle',
+        BOTTOM: 'bottom',
+    },
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/index.js
new file mode 100644
index 00000000..372d0814
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DataTable/index.js
@@ -0,0 +1,447 @@
+import lunr from 'lunr';
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Row from './Row';
+import Rows from './Rows';
+import Column from './Column';
+import Footer from './Footer';
+import Header from './Header';
+import Heading from './Heading';
+import Headings from './Headings';
+import SearchBar from './SearchBar';
+
+import ENUMS from './enums';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+
+import { useDerivedState } from '@atomic-reactor/reactium-sdk-core';
+
+const noop = () => {};
+
+const applyReorderProp = reorderable =>
+    reorderable !== true
+        ? {}
+        : {
+              rowsPerPage: -1,
+              sortable: false,
+              page: 1,
+          };
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: DataTable
+ * -----------------------------------------------------------------------------
+ */
+
+let DataTable = (
+    {
+        footer,
+        header,
+        onChange,
+        onSelect,
+        onSort,
+        onUnSelect,
+        reorderable,
+        ...props
+    },
+    ref,
+) => {
+    // Refs
+    const containerRef = useRef();
+    const scrollBarRef = useRef();
+    // State
+    const [state, setState] = useDerivedState({
+        ...props,
+        reorderable,
+        ...applyReorderProp(reorderable),
+        updated: Date.now(),
+    });
+
+    const defaultFilter = (item, i, data, search) => {
+        const { ids } = search;
+        const { id } = item;
+        const valid = ids.includes(id);
+        return valid;
+    };
+
+    const getData = search => {
+        let output = [];
+
+        const {
+            data = [],
+            filter = defaultFilter,
+            sort,
+            sortable,
+            sortBy,
+        } = state;
+
+        search = search || op.get(state, 'search');
+
+        if (search) {
+            // Data types to index
+            const types = ['string', 'number'];
+
+            // Get all keys
+            const keys = _.uniq(_.flatten(data.map(item => Object.keys(item))));
+
+            // Lunr search index
+            const idx = lunr(function() {
+                data.forEach((item, i) => {
+                    if (!op.has(item, 'id')) {
+                        item['id'] = i;
+                    }
+
+                    this.field('id');
+
+                    keys.forEach(key => {
+                        const type = typeof item[key];
+
+                        if (types.includes(type)) {
+                            this.field(key);
+                        }
+                    });
+
+                    this.add(item);
+                });
+            });
+
+            const rankings = idx.search(search);
+            const ranker = op.get(_.max(rankings, 'score'), 'score') || 0;
+            const results = rankings
+                .filter(item => item.score >= ranker)
+                .map(item => {
+                    const id = isNaN(item.ref) ? item.ref : Number(item.ref);
+                    return data[id] || _.findWhere(data, { id });
+                });
+            const ids = _.pluck(results, 'id').map(id => {
+                return isNaN(id) ? id : Number(id);
+            });
+
+            output = Array.from(
+                data.filter((item, i, arr) =>
+                    filter(item, i, arr, { results, ids }),
+                ),
+            );
+        } else {
+            output = Array.from(data);
+        }
+
+        // sort
+        if (sortable === true) {
+            output = _.sortBy(output, sortBy);
+
+            if (sort === ENUMS.SORT.DESC) {
+                output.reverse();
+            }
+        }
+
+        return output;
+    };
+
+    const getPages = () => {
+        const { rowsPerPage = -1 } = state;
+
+        if (rowsPerPage < 1) {
+            return 1;
+        }
+
+        const temp = getData();
+
+        const limit = Math.max(0, rowsPerPage);
+        return Math.ceil(Math.max(0, temp.length / limit));
+    };
+
+    const getSelection = () => {
+        const { page, rowsPerPage } = state;
+        const limit = Math.max(0, rowsPerPage);
+        const idx = page > 1 ? page * limit - limit : 0;
+        const temp = getData();
+        const selection = limit < 1 ? temp : temp.splice(idx, limit);
+
+        return selection;
+    };
+
+    const nextPage = () => {
+        const { page: currPage = 1 } = state;
+        const page = Math.min(currPage + 1, getPages());
+
+        if (currPage !== page) {
+            setState({ page });
+        }
+    };
+
+    const prevPage = () => {
+        const { page: currPage = 1 } = state;
+        const page = Math.max(1, currPage - 1);
+
+        if (currPage !== page) {
+            setState({ page });
+        }
+    };
+
+    const applyReorder = e => {
+        const { data, deleteOnDropOut, onDrop, onDropOut } = state;
+
+        const startIndex = op.get(e, 'source.index');
+        const endIndex = op.get(e, 'destination.index');
+        const list = Array.from(data);
+        const [item] = list.splice(startIndex, 1);
+
+        if (typeof endIndex === 'undefined') {
+            if (deleteOnDropOut === true) {
+                setState({ data: list });
+            }
+
+            onDropOut({ type: 'dropout', startIndex, item: item, data });
+        } else {
+            list.splice(endIndex, 0, item);
+            setState({ data: list });
+            onDrop({
+                type: 'drop',
+                startIndex,
+                endIndex,
+                item: item,
+                data: list,
+            });
+        }
+    };
+
+    const applySort = ({ sort, sortBy }) => {
+        setState({
+            sort,
+            sortBy,
+        });
+
+        onSort({ e: 'sort', sort, sortBy });
+    };
+
+    const toggleItem = ({ checked, index, silent = false }) => {
+        const data = getData();
+        const { multiselect } = state;
+        const item = data[index];
+
+        if (item) {
+            if (multiselect !== true) {
+                data.forEach((row, i) => {
+                    const { selected } = row;
+                    if (i !== index && selected === true) {
+                        row.selected = false;
+                        if (silent !== true) {
+                            onUnSelect({
+                                event: ENUMS.EVENT.UNSELECT,
+                                item: row,
+                                index: i,
+                            });
+                        }
+                    }
+                });
+            }
+
+            item.selected = checked;
+
+            if (silent !== true) {
+                if (checked === true) {
+                    onSelect({ event: ENUMS.EVENT.SELECT, item, index });
+                } else {
+                    onUnSelect({ event: ENUMS.EVENT.UNSELECT, item, index });
+                }
+            }
+        }
+    };
+
+    const onToggle = e => {
+        let { index = -1 } = e.target.dataset;
+        index = Number(index);
+
+        const { checked } = e.target;
+        toggleItem({ checked, index });
+        setState({ updated: Date.now() });
+    };
+
+    const onToggleAll = e => {
+        const data = getData();
+        const { checked } = e.target;
+
+        data.forEach((row, index) => toggleItem({ checked, index }));
+        setState({ updated: Date.now() });
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        container: containerRef.current,
+        data: getData(),
+        nextPage,
+        page: state.page,
+        pages: getPages(),
+        prevPage,
+        props,
+        search: state.search,
+        selection: getSelection(),
+        setState,
+        state: state,
+    }));
+
+    // Side Effects
+    useEffect(() => {
+        const { page } = state;
+
+        if (page > getPages()) {
+            setState({ page: 1 });
+        }
+
+        onChange({
+            type: ENUMS.EVENT.CHANGE,
+            page: state.page,
+            pages: getPages(),
+            data: getData(),
+        });
+    }, [op.get(state, 'data'), op.get(state, 'page'), op.get(props, 'data')]);
+
+    useEffect(() => {
+        setState({ data: op.get(props, 'data') });
+    }, [op.get(props, 'data')]);
+
+    useEffect(() => {
+        setState({ columns: op.get(props, 'columns') });
+    }, [op.get(props, 'columns')]);
+
+    const setContentRef = elm => {
+        const { height, scrollable } = state;
+        if (elm && !scrollable) {
+            if (height !== elm.offsetHeight) {
+                setState({ height: elm.offsetHeight });
+            }
+        }
+    };
+
+    const render = () => {
+        const {
+            children,
+            className,
+            height,
+            id,
+            namespace,
+            scrollable,
+            selectable,
+            style,
+        } = state;
+
+        const data = getData();
+
+        const content = (
+            <div ref={elm => setContentRef(elm)}>
+                {children}
+                <Rows
+                    {...state}
+                    onReorder={applyReorder}
+                    data={data}
+                    selection={getSelection()}
+                    state={state}
+                    onToggle={onToggle}
+                />
+            </div>
+        );
+
+        return (
+            <div
+                id={`data-table-${id}`}
+                ref={containerRef}
+                style={style}
+                className={cn({
+                    [className]: !!className,
+                    [namespace]: !!namespace,
+                    selectable,
+                })}>
+                <Header namespace={namespace}>{header}</Header>
+                <Headings
+                    data={data}
+                    {...state}
+                    onClick={applySort}
+                    onToggleAll={onToggleAll}
+                />
+                {scrollable ? (
+                    <Scrollbars
+                        autoHeight
+                        autoHeightMin={height}
+                        ref={scrollBarRef}
+                        style={{ width: '100%' }}>
+                        {content}
+                    </Scrollbars>
+                ) : (
+                    <div style={{ width: '100%' }}>{content}</div>
+                )}
+                <Footer namespace={namespace}>{footer}</Footer>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+DataTable = forwardRef(DataTable);
+
+DataTable.ENUMS = ENUMS;
+
+DataTable.propTypes = {
+    className: PropTypes.string,
+    columns: PropTypes.object.isRequired,
+    data: PropTypes.array.isRequired,
+    deleteOnDropOut: PropTypes.bool,
+    filter: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
+    footer: PropTypes.node,
+    header: PropTypes.node,
+    height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+    multiselect: PropTypes.bool,
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    onDrop: PropTypes.func,
+    onDropOut: PropTypes.func,
+    onSelect: PropTypes.func,
+    onSort: PropTypes.func,
+    onUnSelect: PropTypes.func,
+    page: PropTypes.number,
+    reorderable: PropTypes.bool,
+    rowsPerPage: PropTypes.number,
+    scrollable: PropTypes.bool,
+    selectable: PropTypes.bool,
+    sort: PropTypes.oneOf(_.uniq(Object.values(ENUMS.SORT))),
+    sortable: PropTypes.bool,
+    sortBy: PropTypes.string,
+    style: PropTypes.object,
+};
+
+DataTable.defaultProps = {
+    data: [],
+    deleteOnDropOut: false,
+    id: uuid(),
+    multiselect: false,
+    namespace: 'ar-data-table',
+    onChange: noop,
+    onDrop: noop,
+    onDropOut: noop,
+    onSelect: noop,
+    onSort: noop,
+    onUnSelect: noop,
+    page: 1,
+    reorderable: false,
+    rowsPerPage: -1,
+    scrollable: false,
+    selection: [],
+    selectable: false,
+    sort: ENUMS.SORT.ASC,
+    sortable: false,
+    style: {},
+};
+
+export { DataTable, DataTable as default, Row, Column, Heading, SearchBar };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/Calendar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/Calendar.js
new file mode 100644
index 00000000..a8510404
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/Calendar.js
@@ -0,0 +1,466 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import moment from 'moment';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Button from 'reactium-ui/Button';
+import { Feather } from 'reactium-ui/Icon';
+import ENUMS from './enums';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const DaysInMonth = (d, expanded) => {
+    const startDay = !expanded
+        ? moment(d)
+              .clone()
+              .startOf('week')
+        : moment(d)
+              .clone()
+              .startOf('month')
+              .startOf('week');
+
+    const endDay = !expanded
+        ? moment(d)
+              .clone()
+              .endOf('week')
+        : moment(d)
+              .clone()
+              .endOf('month')
+              .endOf('week');
+
+    const date = startDay.clone().subtract(1, 'day');
+    const calendar = [];
+    while (date.isBefore(endDay, 'day')) {
+        calendar.push(
+            Array(7)
+                .fill(0)
+                .map(() => date.add(1, 'day').clone()),
+        );
+    }
+
+    return _.flatten(calendar);
+};
+
+const Day = ({
+    children,
+    className,
+    checked,
+    date,
+    dateFormat,
+    dayName,
+    disabled,
+    first,
+    last,
+    name,
+    now,
+    onChange,
+}) =>
+    disabled ? (
+        <div className={cn({ [className]: true, disabled, now })}>
+            <span className='text'>{children}</span>
+        </div>
+    ) : (
+        <label
+            className={cn({
+                [className]: true,
+                checked,
+                'checked-first': first,
+                'checked-last': last,
+                [dayName]: !!dayName,
+                now,
+            })}>
+            <input
+                name={name}
+                type='checkbox'
+                value={date.format(dateFormat)}
+                checked={checked}
+                onChange={onChange}
+            />
+            <span className='text'>{children}</span>
+            <span className='bg' />
+        </label>
+    );
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Calendar
+ * -----------------------------------------------------------------------------
+ */
+let Calendar = ({ namespace, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const prevStateRef = useRef({ updated: Date.now() });
+    const stateRef = useRef({
+        ...props,
+        init: false,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+    const [prevState, setPrevState] = useState(prevStateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        if (op.has(newState, 'value')) {
+            const { dateFormat, multiple, range } = stateRef.current;
+
+            if (range) {
+                const v = newState.value.split(' - ');
+                v.sort();
+
+                const date = new Date(v[0]);
+
+                newState['selected'] = v.map(d =>
+                    moment(new Date(d)).format(dateFormat),
+                );
+                newState['date'] = date;
+            } else if (multiple) {
+                const v = newState.value
+                    .split(' ')
+                    .join('')
+                    .split(',');
+                v.sort();
+
+                const date = new Date(v[0]);
+
+                newState['selected'] = v.map(d =>
+                    moment(new Date(d)).format(dateFormat),
+                );
+                newState['date'] = date;
+            }
+        }
+
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        if (ENUMS.DEBUG) {
+            console.log('setstate()', caller, stateRef.current);
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const _ns = str => `${namespace}-${str}`;
+
+    const _onCheckToggle = e => {
+        let { dateFormat, multiple, range, selected = [] } = stateRef.current;
+        const { checked, value } = e.target;
+
+        if (range && selected.length >= 2) {
+            selected = [];
+        }
+
+        if (checked && !range && !multiple) {
+            selected = [];
+        }
+
+        if (checked) {
+            selected.push(value);
+        } else {
+            selected = _.without(selected, value);
+        }
+
+        selected.sort();
+
+        setState({ selected, updated: Date.now() }, '_onCheckToggle()');
+    };
+
+    const _next = (duration = 'months') => {
+        let { date, onNav, onNext } = stateRef.current;
+        date = moment(date)
+            .add(1, duration)
+            .toDate();
+        setState({ date }, 'Calendar -> _next(' + duration + ')');
+
+        onNext({ type: ENUMS.EVENT.NEXT, ...stateRef.current });
+        onNav({ type: ENUMS.EVENT.NAV, ...stateRef.current });
+    };
+
+    const _prev = (duration = 'months') => {
+        let { date, onNav, onPrev } = stateRef.current;
+        date = moment(date)
+            .subtract(1, duration)
+            .toDate();
+        setState({ date }, 'Calendar -> _prev(' + duration + ')');
+
+        onPrev({ type: ENUMS.EVENT.PREV, ...stateRef.current });
+        onNav({ type: ENUMS.EVENT.NAV, ...stateRef.current });
+    };
+
+    const _today = () => {
+        const { onNav } = stateRef.current;
+        const date = moment().toDate();
+        setState({ date }, 'Calendar -> _today()');
+        onNav({ type: ENUMS.EVENT.TODAY, ...stateRef.current });
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        setState,
+        state,
+        next: _next,
+        prev: _prev,
+        today: _today,
+        ...ref,
+    }));
+
+    // Side Effects
+    useEffect(
+        () => setState(props, 'Calendar -> useEffect()'),
+        Object.values(props),
+    );
+
+    useEffect(() => {
+        const { init, onChange, onInit, selected = [] } = state;
+        const { selected: prevSelected = [] } = prevState;
+
+        setPrevState({ ...JSON.parse(JSON.stringify(stateRef.current)) });
+
+        if (init === true && !_.isEqual(prevSelected, selected)) {
+            onChange({ type: ENUMS.EVENT.CHANGE, ...stateRef.current });
+        }
+
+        if (init === false) {
+            stateRef.current.init = true;
+            onInit({ type: ENUMS.EVENT.INIT, ...stateRef.current });
+        }
+    }, [state.updated]);
+
+    const renderDays = () => {
+        const {
+            date,
+            dateFormat,
+            maxDate,
+            minDate,
+            multiple,
+            name,
+            range,
+            selected = [],
+        } = stateRef.current;
+        const days = DaysInMonth(date, true);
+        const today = moment().format('L');
+
+        return (
+            <div className={_ns('days')}>
+                {days.map((day, i) => {
+                    let disabled = false;
+                    disabled =
+                        minDate && day.isBefore(minDate) ? true : disabled;
+                    disabled =
+                        maxDate && day.isAfter(maxDate) ? true : disabled;
+
+                    const k = `${_ns('day')}-${day.format('YYYY-MM-DD')}-${i}`;
+                    const now = today === day.format('L');
+                    const idx = selected.indexOf(day.format(dateFormat));
+                    const first = !multiple && idx === 0;
+                    const last = !multiple && idx === selected.length - 1;
+
+                    let checked = idx > -1;
+
+                    if (range) {
+                        if (!checked) {
+                            let min = _.first(selected);
+                            let max = _.last(selected);
+
+                            min = min && moment(new Date(min));
+                            max = max && moment(new Date(max));
+
+                            if (min && !max) {
+                                checked = day.isAfter(min);
+                            }
+
+                            if (!min && max) {
+                                checked = day.isBefore(max);
+                            }
+
+                            if (min && max) {
+                                checked = day.isAfter(min) && day.isBefore(max);
+                            }
+                        }
+                    }
+
+                    const dayProps = {
+                        date: day,
+                        dateFormat,
+                        dayName: String(day.format('ddd')).toLowerCase(),
+                        disabled,
+                        checked,
+                        className: _ns('day'),
+                        children: day.format('D'),
+                        first,
+                        last: last && idx > -1,
+                        name,
+                        now,
+                        onChange: _onCheckToggle,
+                    };
+
+                    return <Day key={k} {...dayProps} />;
+                })}
+            </div>
+        );
+    };
+
+    const renderHeader = () => {
+        const { date, header, headerFormat, nav } = stateRef.current;
+        const color = Button.ENUMS.COLOR.CLEAR;
+        const label = moment(date).format(headerFormat);
+        const isize = 14;
+        const size = Button.ENUMS.SIZE.XS;
+
+        return !header ? null : (
+            <div className={_ns('header')}>
+                {nav && (
+                    <Button
+                        color={color}
+                        size={size}
+                        onClick={() => _prev('years')}>
+                        <Feather.ChevronLeft width={isize} height={isize} />
+                    </Button>
+                )}
+                <Button
+                    readOnly
+                    size={size}
+                    color={color}
+                    className='flex-grow'>
+                    {label}
+                </Button>
+                {nav && (
+                    <Button
+                        color={color}
+                        size={size}
+                        onClick={() => _next('years')}>
+                        <Feather.ChevronRight width={isize} height={isize} />
+                    </Button>
+                )}
+            </div>
+        );
+    };
+
+    const renderLabels = () => {
+        const { labelFormat, labels } = stateRef.current;
+
+        return !Array.isArray(labels) || labels.length < 1 ? null : (
+            <div className={_ns('labels')}>
+                {labels.map((label, i) => (
+                    <div
+                        key={`${_ns('labels')}-label-${label}-${i}`}
+                        className={_ns('label')}>
+                        {labelFormat(label)}
+                    </div>
+                ))}
+            </div>
+        );
+    };
+
+    const renderNav = () => {
+        const { date, nav } = stateRef.current;
+        const color = Button.ENUMS.COLOR.CLEAR;
+        const isize = 14;
+        const size = Button.ENUMS.SIZE.XS;
+
+        return !nav ? null : (
+            <div className={_ns('footer')}>
+                <Button
+                    color={color}
+                    size={size}
+                    onClick={() => _prev('months')}>
+                    <Feather.ChevronLeft width={isize} height={isize} />
+                </Button>
+                <Button
+                    size={size}
+                    color={color}
+                    onClick={() => _today()}
+                    className='flex-grow'>
+                    Today
+                </Button>
+                <Button
+                    color={color}
+                    size={size}
+                    onClick={() => _next('months')}>
+                    <Feather.ChevronRight width={isize} height={isize} />
+                </Button>
+            </div>
+        );
+    };
+
+    const render = () => {
+        const { align, className, id } = stateRef.current;
+        const cname = cn({
+            [namespace]: !!namespace,
+            [className]: !!className,
+            [_ns(align)]: !!align,
+        });
+
+        return (
+            <div ref={containerRef} className={cname} id={id}>
+                {renderHeader()}
+                {renderNav()}
+                {renderLabels()}
+                {renderDays()}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Calendar = forwardRef(Calendar);
+
+Calendar.propTypes = {
+    align: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    className: PropTypes.string,
+    date: PropTypes.instanceOf(Date),
+    dateFormat: PropTypes.string,
+    header: PropTypes.bool,
+    headerFormat: PropTypes.string,
+    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    labeFormat: PropTypes.func,
+    labels: PropTypes.array,
+    maxDate: PropTypes.instanceOf(Date),
+    minDate: PropTypes.instanceOf(Date),
+    multiple: PropTypes.bool,
+    name: PropTypes.string,
+    namespace: PropTypes.string,
+    nav: PropTypes.bool,
+    onChange: PropTypes.func,
+    onInit: PropTypes.func,
+    onNav: PropTypes.func,
+    onNext: PropTypes.func,
+    onPrev: PropTypes.func,
+    range: PropTypes.bool,
+    selected: PropTypes.array,
+};
+
+Calendar.defaultProps = {
+    align: ENUMS.ALIGN.CENTER,
+    dateFormat: ENUMS.FORMAT.DATE,
+    header: true,
+    headerFormat: ENUMS.FORMAT.HEADER,
+    labelFormat: label => label,
+    labels: ENUMS.LABELS,
+    multiple: false,
+    namespace: 'ar-datepicker-calendar',
+    nav: true,
+    onChange: noop,
+    onInit: noop,
+    onNav: noop,
+    onNext: noop,
+    onPrev: noop,
+    range: false,
+    selected: [],
+};
+
+export { Calendar as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/_style.scss
new file mode 100644
index 00000000..ed9f3cb5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/_style.scss
@@ -0,0 +1,219 @@
+$ar-datepicker-color-bg-now: $color-white;
+$ar-datepicker-color-bg-selected: $color-grey-light;
+$ar-datepicker-color-border: $color-grey-light;
+$ar-datepicker-color-txt: $color-gray-dark;
+$ar-datepicker-color-txt-now: $color-blue;
+$ar-datepicker-color-txt-selected: $color-gray;
+$ar-datepicker-column-width: 40px;
+$ar-datepicker-width: 296px;
+$ar-datepicker-padding: 8px;
+
+.ar-datepicker {
+}
+
+.ar-datepicker-calendar {
+    @extend .ar-picker-wrapper;
+    width: $ar-datepicker-width;
+
+    &, &-left {
+        right: auto;
+        left: 0;
+    }
+
+    &-right {
+        right: 0;
+        left: auto;
+    }
+
+    &-center {
+        right: auto;
+        left: 50%;
+        transform: translateX(-50%) translateY(100%);
+    }
+
+    &-header,
+    &-footer {
+        @extend .btn-group;
+        width: 100%;
+        padding: 4px 0;
+        justify-content: center;
+
+        > * {
+            border-radius: 0 !important;
+            padding: 8px 12px;
+            font-size: 14px;
+        }
+
+        > *:first-child {
+            flex-grow: 0;
+        }
+
+        > *:last-child {
+            flex-grow: 0;
+        }
+    }
+
+    &-footer {
+        padding: 0;
+        border-top: 1px solid $ar-datepicker-color-border;
+
+        > * {
+            font-size: 10px;
+            padding: 4px 12px;
+        }
+    }
+
+    &-labels {
+        display: flex;
+        justify-content: center;
+        align-items: stretch;
+        padding: 0 $ar-datepicker-padding;
+        border-top: 1px solid $ar-datepicker-color-border;
+        border-bottom: 1px solid $ar-datepicker-color-border;
+    }
+
+    &-label {
+        flex-grow: 1;
+        padding: 8px 5px;
+        font-size: 10px;
+        text-align: center;
+        text-transform: uppercase;
+        color: $ar-datepicker-color-txt;
+        width: $ar-datepicker-column-width;
+        overflow: hidden;
+        pointer-events: none;
+        user-select: none;
+    }
+
+    &-days {
+        display: flex;
+        flex-wrap: wrap;
+        position: relative;
+        padding: 8px $ar-datepicker-padding;
+    }
+
+    &-day {
+        min-width: $ar-datepicker-column-width;
+        height: $ar-datepicker-column-width;
+        flex-grow: 1;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        font-size: 12px;
+        position: relative;
+        cursor: pointer;
+        user-select: none;
+
+        input {
+            display: none;
+        }
+
+        > span.text {
+            color: $ar-datepicker-color-txt;
+            z-index: 100;
+        }
+
+        > span.bg {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+            top: 0;
+            left: 0;
+            z-index: 1;
+        }
+
+        &.disabled {
+            pointer-events: none;
+            user-select: none;
+            opacity: 0.25;
+            cursor: default;
+        }
+
+        &.now {
+            > span.text {
+                color: $ar-datepicker-color-txt-now;
+                font-weight: bold;
+            }
+        }
+
+        &.checked {
+            > span.text {
+                color: $ar-datepicker-color-txt-selected;
+                font-weight: bold;
+            }
+
+            > span.bg {
+                top: 50%;
+                left: 50%;
+                transform: translateX(-50%) translateY(-50%);
+                background-color: $ar-datepicker-color-bg-selected;
+                height: 90%;
+            }
+
+            &-first {
+                > span.bg {
+                    border-top-left-radius: 100%;
+                    border-bottom-left-radius: 100%;
+                }
+
+                &.sun {
+                    &:after {
+                        display: none !important;
+                    }
+                }
+            }
+
+            &-last {
+                > span.bg {
+                    border-top-right-radius: 100%;
+                    border-bottom-right-radius: 100%;
+                }
+
+                &.sat {
+                    &:after {
+                        display: none !important;
+                    }
+                }
+            }
+
+            &.checked-first.checked-last {
+                > span.bg {
+                    width: 90%;
+                    height: 90%;
+                }
+            }
+
+            &.sat {
+                &:after {
+                    content: "";
+                    position: absolute;
+                    top: 50%;
+                    right: 0;
+                    width: $ar-datepicker-padding;
+                    height: 90%;
+                    background-color: $ar-datepicker-color-bg-selected;
+                    transform: translateX(100%) translateY(-50%);
+                }
+            }
+
+            &.sun {
+                &:after {
+                    content: "";
+                    position: absolute;
+                    top: 50%;
+                    left: 0;
+                    width: $ar-datepicker-padding;
+                    height: 90%;
+                    background-color: $ar-datepicker-color-bg-selected;
+                    transform: translateX(-100%) translateY(-50%);
+                }
+            }
+
+            &.now {
+                > span.text {
+                    color: $ar-datepicker-color-txt-now;
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/enums.js
new file mode 100644
index 00000000..ee3dfc63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/enums.js
@@ -0,0 +1,21 @@
+export default {
+    ALIGN: {
+        LEFT: 'left',
+        RIGHT: 'right',
+        CENTER: 'center',
+    },
+    DEBUG: false,
+    EVENT: {
+        CHANGE: 'change',
+        INIT: 'init',
+        NEXT: 'next',
+        NAV: 'nav',
+        PREV: 'prev',
+        TODAY: 'today',
+    },
+    FORMAT: {
+        DATE: 'L',
+        HEADER: 'MMMM YYYY',
+    },
+    LABELS: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/index.js
new file mode 100644
index 00000000..a2c2ce6e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/DatePicker/index.js
@@ -0,0 +1,360 @@
+import _ from 'underscore';
+import moment from 'moment';
+import ENUMS from './enums';
+import op from 'object-path';
+import Picker from '../Picker';
+import { Feather } from '../Icon';
+import PropTypes from 'prop-types';
+import Calendar from './Calendar';
+import uuid from 'uuid/v4';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const stateToPickerProps = ({
+    className,
+    icon,
+    iDocument,
+    iWindow,
+    multiple,
+    name,
+    onChange,
+    picker = {},
+    placeholder,
+    readOnly,
+    style = {},
+    width,
+    value,
+}) => ({
+    className,
+    icon,
+    iDocument,
+    iWindow,
+    name,
+    onChange,
+    placeholder,
+    readOnly: multiple || readOnly,
+    style: { ...style, width },
+    value,
+    ...picker,
+});
+
+const stateToCalendarProps = ({
+    align,
+    calendar = {},
+    date,
+    dateFormat,
+    labels,
+    maxDate,
+    minDate,
+    multiple,
+    nav,
+    range,
+    selected,
+    value,
+}) => ({
+    align,
+    date: !date && value ? new Date(value) : date,
+    dateFormat,
+    labels,
+    maxDate,
+    minDate,
+    multiple,
+    nav,
+    range,
+    selected: (!selected || selected.length < 1) && value ? [value] : selected,
+    value,
+    ...calendar,
+});
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: DatePicker
+ * -----------------------------------------------------------------------------
+ */
+let DatePicker = ({ iDocument, iWindow, ...props }, ref) => {
+    // Refs
+    const calendarRef = useRef();
+    const pickerRef = useRef();
+    const stateRef = useRef({
+        ...props,
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        if (ENUMS.DEBUG) {
+            console.log('setstate()', caller, stateRef.current);
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const _onCalendarChange = (e) => {
+        let { date, multiple, onChange, range, value } = stateRef.current;
+
+        if (range) {
+            value = e.selected.join(' - ');
+            date = new Date(_.first(e.selected));
+        }
+
+        if (multiple && !range) {
+            value = e.selected.join(', ');
+            date = new Date(_.first(e.selected));
+        }
+
+        if (!multiple && !range) {
+            value = _.first(e.selected);
+        }
+
+        setState(
+            { date, value, selected: e.selected },
+            'DatePicker -> _onCalendarChange()',
+        );
+
+        pickerRef.current.hide();
+
+        onChange(e);
+    };
+
+    const _onCalendarNav = (e) => {
+        const { date } = e;
+
+        stateRef.current.date = date;
+    };
+
+    const _onPickerInput = (e) => {
+        let { which, keyCode, value } = e;
+
+        const key = which || keyCode;
+
+        const { dateFormat, range } = stateRef.current;
+
+        const specialKeys = [13];
+
+        if (specialKeys.includes(key) && !value) {
+            value = e.target.value;
+            pickerRef.current.hide();
+        }
+
+        if (!value || !_validate(value)) {
+            return;
+        }
+
+        let d, selected;
+
+        if (range) {
+            selected = value
+                .split(' - ')
+                .map((d) => moment(new Date(d)).format(dateFormat));
+            selected.sort();
+            d = new Date(selected[0]);
+        } else {
+            d = new Date(value);
+            selected = [moment(d).format(dateFormat)];
+        }
+
+        const newState = {
+            date: d,
+            selected,
+            value,
+        };
+
+        setState(newState, 'DatePicker -> _onPickerInput()');
+    };
+
+    const _onPickerInputChange = _.throttle(_onPickerInput, 250, {
+        leading: false,
+    });
+
+    const _validate = (value) => {
+        const { dateFormat, maxDate, minDate, multiple, range } =
+            stateRef.current;
+
+        const match = range ? `${dateFormat} - ${dateFormat}` : dateFormat;
+
+        if (!moment(value, match, true).isValid()) {
+            return false;
+        }
+
+        if (range && !multiple) {
+            let varr = value.split(' - ');
+            varr.sort();
+
+            let sd = new Date(varr[0]);
+            let ed = new Date(varr[1]);
+
+            if (sd > ed) {
+                return false;
+            }
+
+            if (maxDate) {
+                if (
+                    moment(sd).isAfter(maxDate) ||
+                    moment(ed).isAfter(maxDate)
+                ) {
+                    return false;
+                }
+            }
+
+            if (minDate) {
+                if (
+                    moment(sd).isBefore(minDate) ||
+                    moment(ed).isBefore(minDate)
+                ) {
+                    return false;
+                }
+            }
+        }
+
+        if (!range && !multiple) {
+            let d = new Date(value);
+
+            if (maxDate && moment(d).isAfter(maxDate)) {
+                return false;
+            }
+
+            if (minDate && moment(d).isBefore(minDate)) {
+                return false;
+            }
+        }
+
+        return true;
+    };
+
+    const _handle = () => ({
+        Picker: pickerRef.current,
+        setState,
+        state: stateRef.current,
+    });
+
+    const [handle, setHandle] = useState(_handle());
+
+    // External Interface
+    useImperativeHandle(ref, () => handle, [handle]);
+
+    useEffect(() => {
+        if (!pickerRef.current) return;
+        if (!handle.Picker) {
+            handle.Picker = pickerRef.current;
+            setHandle(_handle());
+        }
+    }, [pickerRef.current]);
+
+    // Side Effects
+    useEffect(
+        () => setState(props, 'DatePicker -> useEffect()'),
+        Object.values(props),
+    );
+
+    const renderUI = () => {
+        const { id } = stateRef.current;
+        const calendarProps = stateToCalendarProps({
+            ...stateRef.current,
+            iDocument,
+            iWindow,
+        });
+
+        return (
+            <Calendar
+                id={`calendar-${id}`}
+                {...calendarProps}
+                ref={calendarRef}
+                onChange={_onCalendarChange}
+                onNav={_onCalendarNav}
+            />
+        );
+    };
+
+    const render = () => {
+        const { id } = stateRef.current;
+        const pickerProps = stateToPickerProps({
+            ...stateRef.current,
+            iDocument,
+            iWindow,
+        });
+
+        return (
+            <Picker
+                ref={pickerRef}
+                {...pickerProps}
+                children={renderUI}
+                id={`picker-${id}`}
+                onChange={_onPickerInputChange}
+                onKeyDown={_onPickerInputChange}
+            />
+        );
+    };
+
+    return render();
+};
+
+DatePicker = forwardRef(DatePicker);
+
+DatePicker.ENUMS = ENUMS;
+
+DatePicker.propTypes = {
+    align: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    calendar: PropTypes.shape(Calendar.propTypes),
+    className: PropTypes.string,
+    date: PropTypes.instanceOf(Date),
+    dateFormat: PropTypes.string,
+    icon: PropTypes.shape({
+        closed: PropTypes.node,
+        opened: PropTypes.node,
+    }),
+    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    labels: PropTypes.array,
+    maxDate: PropTypes.instanceOf(Date),
+    minDate: PropTypes.instanceOf(Date),
+    name: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    namespace: PropTypes.string,
+    nav: PropTypes.bool,
+    onChange: PropTypes.func,
+    picker: PropTypes.shape(Picker.propTypes),
+    readOnly: PropTypes.bool,
+    selected: PropTypes.array,
+    style: PropTypes.object,
+    value: PropTypes.string,
+    width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+};
+
+DatePicker.defaultProps = {
+    align: ENUMS.ALIGN.CENTER,
+    calendar: {},
+    dateFormat: 'L',
+    icon: {
+        closed: <Feather.Calendar />,
+        opened: <Feather.Calendar />,
+    },
+    id: uuid(),
+    multiple: false,
+    namespace: 'ar-datepicker',
+    nav: true,
+    onChange: noop,
+    picker: {},
+    placeholder: 'Select Date',
+    range: false,
+    readOnly: false,
+    selected: [],
+    style: {},
+    width: '100%',
+};
+
+export { DatePicker, DatePicker as default, Calendar };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/_style.scss
new file mode 100644
index 00000000..6b39edd7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/_style.scss
@@ -0,0 +1,111 @@
+$ar-dialog-color-background: $color-white !default;
+$ar-dialog-color-background-footer: darken($color-white, 1%) !default;
+$ar-dialog-color-background-header: $color-white-dark !default;
+$ar-dialog-color-border: $color-grey-light !default;
+$ar-dialog-color-footer: $color-gray !default;
+$ar-dialog-shadow: 0 0 3px 1px rgba($color-black, 0.05) !default;
+$ar-dialog-botton-shadow: 0 0 0 2px rgba(lighten(nth($color-blue, 1), 5%), 0.25);
+$ar-dialog-transition: 0.25s ease-in-out;
+
+.ar-dialog {
+    width: 100%;
+    box-shadow: $ar-dialog-shadow;
+    border-radius: 2px;
+
+    &-header {
+        background-color: $ar-dialog-color-background-header;
+        padding: 0;
+        display: flex;
+        justify-content: flex-end;
+        align-items: stretch;
+        border-radius: 2px 2px 0 0;
+        flex-wrap: nowrap;
+        min-height: 42px;
+
+        > * {
+            flex-grow: 0;
+        }
+
+        h1,
+        h2,
+        h3,
+        h4,
+        h5,
+        h6 {
+            font-size: 12px;
+            text-transform: uppercase;
+            line-height: 42px;
+            padding: 0 0 0 16px;
+            flex-grow: 1;
+        }
+
+        &-buttons {
+            display: flex;
+            justify-content: flex-end;
+            align-items: stretch;
+
+            &:first-child {
+                flex-grow: 1;
+            }
+
+            &:empty {
+                display: none;
+            }
+        }
+
+        &:empty {
+            display: none;
+        }
+
+        &-btn {
+            width: 42px;
+            padding: 0;
+            border-left: 1px solid $ar-dialog-color-border;
+            transition: opacity $ar-dialog-transition,
+                box-shadow $ar-dialog-transition;
+
+            svg {
+                width: 18px;
+                height: 18px;
+                transition: transform $ar-dialog-transition;
+            }
+
+            &:hover {
+                opacity: 0.7;
+            }
+
+            &:focus {
+                box-shadow: $ar-dialog-botton-shadow;
+                z-index: 1000;
+            }
+        }
+
+        &.expanded button.toggle {
+            svg {
+                transform: rotateX(180deg);
+            }
+        }
+    }
+
+    &-content {
+        border-top: 1px solid $ar-dialog-color-border;
+        border-bottom: 1px solid $ar-dialog-color-border;
+    }
+
+    &-footer {
+        background-color: $ar-dialog-color-background-footer;
+        padding: 8px;
+        display: flex;
+        align-items: center;
+        border-radius: 0 0 2px 2px;
+        line-height: 1;
+        font-weight: 400;
+        font-size: 16px;
+        font-family: Arial;
+        color: $ar-dialog-color-footer;
+
+        &:empty {
+            display: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/enums.js
new file mode 100644
index 00000000..095a7f06
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/enums.js
@@ -0,0 +1,21 @@
+const ENUMS = {
+    ALIGN: {
+        LEFT: 'left',
+        RIGHT: 'right',
+        CENTER: 'center',
+    },
+    EVENT: {
+        BEFORE_COLLAPSE: 'beforeCollapse',
+        BEFORE_EXPAND: 'beforeExpand',
+        BEFORE_HIDE: 'beforeHide',
+        BEFORE_SHOW: 'beforeShow',
+        CHANGE: 'change',
+        COLLAPSE: 'collapse',
+        DISMISS: 'dismiss',
+        EXPAND: 'expand',
+        HIDE: 'hide',
+        SHOW: 'show',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/index.js
new file mode 100644
index 00000000..d413d468
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dialog/index.js
@@ -0,0 +1,314 @@
+import uuid from 'uuid/v4';
+import ENUMS from './enums';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Icon from 'reactium-ui/Icon';
+import Prefs from 'reactium-ui/Prefs';
+import Button from 'reactium-ui/Button';
+import Collapsible from 'reactium-ui/Collapsible';
+import Dismissable from 'reactium-ui/Dismissable';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Dialog
+ * -----------------------------------------------------------------------------
+ */
+let Dialog = ({ children, id, pref, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const contentRef = useRef();
+    const stateRef = useRef({
+        ...props,
+        ...Prefs.get(pref),
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+
+        // Update prefs
+        setPrefs();
+    };
+
+    const setPrefs = () => {
+        const { expanded } = stateRef.current;
+        if (pref) {
+            Prefs.set(pref, { expanded });
+        }
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        collapse: () => contentRef.current.collapse(),
+        container: containerRef,
+        content: contentRef,
+        expand: () => contentRef.current.expand(),
+        hide: () => containerRef.current.hide(),
+        show: () => containerRef.current.show(),
+        state: stateRef.current,
+        toggle: {
+            collapse: () => contentRef.current.toggle(),
+            visible: () => containerRef.current.toggle(),
+        },
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    // Handlers
+    const _onButtonClick = (e, callback = noop) => {
+        const { dismiss, toggle } = e.currentTarget.dataset;
+
+        if (toggle) {
+            contentRef.current.toggle();
+            return;
+        }
+
+        if (dismiss) {
+            containerRef.current
+                .hide()
+                .then(() => setState({ visible: false }));
+        }
+
+        callback(e);
+    };
+
+    const _onCollapse = e => {
+        e.target = contentRef.current;
+        const { onCollapse } = stateRef.current;
+        setState({ expanded: false });
+        onCollapse(e);
+    };
+
+    const _onExpand = e => {
+        e.target = contentRef.current;
+        const { onExpand } = stateRef.current;
+        setState({ expanded: true });
+        onExpand(e);
+    };
+
+    const _onHide = e => {
+        const { onDismiss, onHide } = stateRef.current;
+        setState({ visible: false });
+        onHide(e);
+        onDismiss({ ...e, type: 'dismiss' });
+    };
+
+    const _onShow = e => {
+        e.target = containerRef.current;
+        const { onShow } = stateRef.current;
+        setState({ visible: true });
+        onShow(e);
+    };
+
+    const _clone = (elements = []) =>
+        elements.map(element => {
+            const key = op.get(element, 'key');
+            const newKey = `dialog-clone-${uuid()}`;
+            const onClick = op.get(element, 'onClick');
+            const newProps = {
+                key: key ? key : newKey,
+            };
+            if (onClick)
+                op.set(newProps, 'onClick', e => _onButtonClick(e, onClick));
+            // only need clone for onClick decorator
+            if (onClick) return React.cloneElement(element, newProps);
+            // if key provided, pass on through
+            if (key) return element;
+            // fragment will do if all we need is key
+            return <React.Fragment key={newKey}>{element}</React.Fragment>;
+        });
+
+    // Renderers
+    const renderHeader = () => {
+        const {
+            collapsible,
+            dismissable,
+            expanded = true,
+            header = {},
+            namespace,
+        } = stateRef.current;
+
+        let { elements = [], title } = header;
+
+        const cname = cn({
+            [`${namespace}-header`]: true,
+            expanded,
+        });
+
+        title = typeof title === 'string' ? <h2>{title}</h2> : title;
+
+        return (
+            <div className={cname}>
+                {title}
+                {(elements.length > 0 || collapsible || dismissable) && (
+                    <div className={`${namespace}-header-buttons`}>
+                        {elements.length > 0 && _clone(elements)}
+                        {collapsible === true && (
+                            <Button
+                                data-toggle
+                                onClick={_onButtonClick}
+                                size={Button.ENUMS.SIZE.XS}
+                                color={Button.ENUMS.COLOR.CLEAR}
+                                className='ar-dialog-header-btn toggle'>
+                                <Icon name='Feather.ChevronDown' />
+                            </Button>
+                        )}
+                        {dismissable === true && (
+                            <Button
+                                data-dismiss
+                                onClick={_onButtonClick}
+                                size={Button.ENUMS.SIZE.XS}
+                                color={Button.ENUMS.COLOR.CLEAR}
+                                className='ar-dialog-header-btn dismiss'>
+                                <Icon name='Feather.X' />
+                            </Button>
+                        )}
+                    </div>
+                )}
+            </div>
+        );
+    };
+
+    const renderContent = () => {
+        const { collapsible, expanded, namespace } = stateRef.current;
+
+        return collapsible ? (
+            <Collapsible
+                ref={contentRef}
+                expanded={expanded}
+                onCollapse={_onCollapse}
+                onExpand={_onExpand}>
+                <div className={`${namespace}-content`}>{children}</div>
+                {renderFooter()}
+            </Collapsible>
+        ) : (
+            <>
+                <div ref={contentRef} className={`${namespace}-content`}>
+                    {children}
+                </div>
+                {renderFooter()}
+            </>
+        );
+    };
+
+    const renderFooter = () => {
+        let { footer = {}, namespace } = stateRef.current;
+        const { elements = [], align } = {
+            ...Dialog.defaultProps.footer,
+            ...footer,
+        };
+
+        const cname = cn({
+            [`${namespace}-footer`]: true,
+            [`flex-${align}`]: true,
+        });
+
+        return (
+            <div className={cname}>
+                {elements.length > 0 && _clone(elements)}
+            </div>
+        );
+    };
+
+    const Content = ({ className, dismissable, namespace, visible }) => (
+        <div
+            id={id}
+            ref={!dismissable ? containerRef : null}
+            className={cn({
+                [className]: !!className,
+                [namespace]: !!namespace,
+                visible,
+            })}>
+            {renderHeader()}
+            {renderContent()}
+        </div>
+    );
+
+    const render = () => {
+        const { dismissable, visible } = stateRef.current;
+
+        return dismissable === true ? (
+            <Dismissable
+                visible={visible}
+                ref={containerRef}
+                onHide={_onHide}
+                onShow={_onShow}>
+                {Content(stateRef.current)}
+            </Dismissable>
+        ) : (
+            Content(stateRef.current)
+        );
+    };
+
+    return render();
+};
+
+Dialog = forwardRef(Dialog);
+
+Dialog.ENUMS = ENUMS;
+
+Dialog.propTypes = {
+    className: PropTypes.string,
+    collapsible: PropTypes.bool,
+    dismissable: PropTypes.bool,
+    expanded: PropTypes.bool,
+    footer: PropTypes.shape({
+        align: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+        elements: PropTypes.arrayOf(PropTypes.element),
+    }),
+    header: PropTypes.shape({
+        title: PropTypes.node,
+        elements: PropTypes.arrayOf(PropTypes.element),
+    }),
+    id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+    namespace: PropTypes.string,
+    onCollapse: PropTypes.func,
+    onDismiss: PropTypes.func,
+    onExpand: PropTypes.func,
+    onHide: PropTypes.func,
+    onShow: PropTypes.func,
+    pref: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    style: PropTypes.object,
+    visible: PropTypes.bool,
+};
+
+Dialog.defaultProps = {
+    collapsible: true,
+    footer: {
+        align: ENUMS.ALIGN.RIGHT,
+        elements: [],
+    },
+    id: `ar-${uuid()}`,
+    namespace: 'ar-dialog',
+    onCollapse: noop,
+    onDismiss: noop,
+    onExpand: noop,
+    onHide: noop,
+    onShow: noop,
+    style: {},
+    visible: true,
+};
+
+export { Dialog, Dialog as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/_style.scss
new file mode 100644
index 00000000..c0e66c97
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/_style.scss
@@ -0,0 +1,9 @@
+.ar-dismissable {
+    opacity: 0;
+    display: none;
+
+    &.visible {
+        opacity: 1;
+        display: block;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/enums.js
new file mode 100644
index 00000000..8ee459cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/enums.js
@@ -0,0 +1,11 @@
+const ENUMS = {
+    EVENT: {
+        BEFORE_HIDE: 'beforeHide',
+        BEFORE_SHOW: 'beforeShow',
+        DISMISS: 'dismiss',
+        HIDE: 'hide',
+        SHOW: 'show',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/index.js
new file mode 100644
index 00000000..47e6e320
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dismissable/index.js
@@ -0,0 +1,156 @@
+import ENUMS from './enums';
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
+import React, { forwardRef, useImperativeHandle } from 'react';
+import {
+    useDispatcher,
+    useRefs,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Dismissable
+ * -----------------------------------------------------------------------------
+ */
+let Dismissable = ({ children, ...props }, ref) => {
+    const refs = useRefs();
+
+    const state = useSyncState({
+        ...props,
+    });
+
+    const dispatch = useDispatcher({ props, state });
+
+    const isVisible = () => state.get('visible') === true;
+
+    const show = () => {
+        if (isVisible()) {
+            state.set('animation', null);
+            return Promise.resolve();
+        }
+
+        const container = refs.get('container');
+
+        TweenMax.killTweensOf(container);
+
+        container.style.display = 'block';
+        container.classList.remove('visible');
+
+        dispatch('before-show');
+
+        const { animationEase: ease, animationSpeed } = state.get();
+
+        const animation = new Promise((resolve) => {
+            TweenMax.to(container, animationSpeed, {
+                ease,
+                opacity: 1,
+                onComplete: () => complete(resolve),
+            });
+        });
+
+        state.set({ animation });
+
+        return animation;
+    };
+
+    const hide = () => {
+        if (!isVisible()) {
+            state.set('animation', null);
+            return Promise.resolve();
+        }
+
+        const container = refs.get('container');
+
+        TweenMax.killTweensOf(container);
+
+        container.style.display = 'block';
+
+        dispatch('before-hide');
+
+        const { animationEase: ease, animationSpeed } = state.get();
+
+        const animation = new Promise((resolve) => {
+            TweenMax.to(container, animationSpeed, {
+                ease,
+                opacity: 0,
+                onComplete: () => complete(resolve),
+            });
+        });
+
+        state.set({ animation });
+
+        return animation;
+    };
+
+    const complete = (resolve) => {
+        if (isVisible()) {
+            state.set({ animation: null, visible: false });
+            dispatch('hide');
+            dispatch('dismiss');
+            dispatch('complete');
+            const container = refs.get('container');
+            container.removeAttribute('style');
+            container.style.display = 'none';
+        } else {
+            state.set({ animation: null, visible: true });
+            dispatch('show');
+            dispatch('complete');
+        }
+
+        resolve();
+    };
+
+    const toggle = (e) => (isVisible() ? hide(e) : show(e));
+
+    const render = () => {
+        const { className, visible, namespace } = state.get();
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            visible,
+        });
+
+        return (
+            <div ref={(elm) => refs.set('container', elm)} className={cname}>
+                {children}
+            </div>
+        );
+    };
+
+    state.extend('hide', hide);
+    state.extend('show', show);
+    state.extend('toggle', toggle);
+
+    useImperativeHandle(ref, () => state, []);
+
+    return render();
+};
+
+Dismissable = forwardRef(Dismissable);
+
+Dismissable.ENUMS = ENUMS;
+
+Dismissable.propTypes = {
+    animationEase: PropTypes.object,
+    animationSpeed: PropTypes.number,
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    onBeforeHide: PropTypes.func,
+    onBeforeShow: PropTypes.func,
+    onDismiss: PropTypes.func,
+    onHide: PropTypes.func,
+    onShow: PropTypes.func,
+    visible: PropTypes.bool,
+};
+
+Dismissable.defaultProps = {
+    animationEase: Power2.easeInOut,
+    animationSpeed: 0.25,
+    namespace: 'ar-dismissable',
+    visible: false,
+};
+
+export { Dismissable, Dismissable as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/_style.scss
new file mode 100644
index 00000000..a263fffc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/_style.scss
@@ -0,0 +1,197 @@
+$ar-dropdown-shadow: 0 0 5px 0 rgba($color-grey, 0.5) !default;
+$ar-dropdown-inner-shadow: inset 0 0 1px 1px rgba($color-blue, 0.125) !default;
+$ar-dropdown-menu-color: $color-white !default;
+$ar-dropdown-item-color: $color-gray-dark !default;
+$ar-dropdown-item-hover: $color-white !default;
+$ar-dropdown-item-hover-bg: $color-blue !default;
+$ar-dropdown-item-active: $color-gray-dark !default;
+$ar-dropdown-item-active-bg: $color-grey-light !default;
+$ar-dropdown-border-radius: 2px !default;
+$ar-dropdown-border-color: $color-grey-light !default;
+$ar-dropdown-ns: ar-dropdown;
+
+.#{$ar-dropdown-ns} {
+    position: relative;
+    display: inline-flex;
+    flex-direction: column;
+
+    > * {
+        z-index: 10;
+    }
+
+    &-menu {
+        z-index: 1000000;
+        position: absolute;
+        width: 100%;
+        transform: translateY(100%);
+        display: none;
+        overflow: hidden;
+        box-shadow: $ar-dropdown-shadow;
+        height: 0;
+
+        &-align-center {
+            left: 50%;
+            right: auto;
+
+            &.#{$ar-dropdown-ns}-menu-vertical-align {
+                &-bottom {
+                    top: 100%;
+                    transform: translateX(-50%) translateY(0);
+                    border-radius: 0px 0px $ar-dropdown-border-radius $ar-dropdown-border-radius;
+                }
+
+                &-middle {
+                    top: 50%;
+                    transform: translateX(-50%) translateY(-50%);
+                    border-radius: $ar-dropdown-border-radius;
+                }
+
+                &-top {
+                    top: 0;
+                    transform: translateX(-50%) translateY(-100%);
+                    border-radius: $ar-dropdown-border-radius $ar-dropdown-border-radius 0px 0px;
+                }
+            }
+        }
+
+        &-align-left {
+            left: 0;
+            right: auto;
+
+            &.#{$ar-dropdown-ns}-menu-vertical-align {
+                &-bottom {
+                    top: 100%;
+                    transform: translateX(0) translateY(0);
+                    border-radius: 0px 0px $ar-dropdown-border-radius $ar-dropdown-border-radius;
+                }
+
+                &-middle {
+                    top: 50%;
+                    transform: translateX(0) translateY(-50%);
+                    border-radius: $ar-dropdown-border-radius;
+                }
+
+                &-top {
+                    top: 0;
+                    transform: translateX(0) translateX(-100%);
+                    border-radius: $ar-dropdown-border-radius $ar-dropdown-border-radius 0px 0px;
+                }
+            }
+        }
+
+        &-align-right {
+            left: auto;
+            right: 0;
+
+            &.#{$ar-dropdown-ns}-menu-vertical-align {
+                &-bottom {
+                    top: 100%;
+                    transform: translateY(0);
+                    border-radius: 0px 0px $ar-dropdown-border-radius $ar-dropdown-border-radius;
+                }
+
+                &-middle {
+                    top: 50%;
+                    transform: translateY(-50%);
+                    border-radius: $ar-dropdown-border-radius;
+                }
+
+                &-top {
+                    top: 0;
+                    transform: translateY(-100%);
+                    border-radius: $ar-dropdown-border-radius $ar-dropdown-border-radius 0px 0px;
+                }
+            }
+        }
+
+        &.expanded {
+            display: block;
+            height: auto;
+            overflow: auto;
+        }
+
+        ul,
+        ul li {
+            min-width: 100%;
+            list-style: none;
+            padding: 0;
+            margin: 0;
+            line-height: 1;
+            background-color: $color-white;
+        }
+
+        ul li {
+
+            &.ranked {
+                border-bottom: 1px solid $ar-dropdown-border-color;
+            }
+
+            &.active {
+                .checkbox {
+                    > svg {
+                        opacity: 1;
+                    }
+                }
+            }
+
+            > span,
+            a,
+            label,
+            button {
+                z-index: 1;
+                width: 100%;
+                margin: 0;
+                line-height: 1;
+                padding-left: 0;
+                padding-right: 0;
+                border-radius: 0;
+                justify-content: flex-start;
+                padding-left: 12px;
+                padding-right: 12px;
+
+                * {
+                    pointer-events: none;
+                }
+
+                svg {
+                    fill: currentColor;
+                    transition: fill 0.25s ease-in-out;
+                }
+
+                .checkbox {
+                    display: flex;
+                    justify-content: center;
+                    align-items: center;
+                    width: $ar-checkbox-size;
+                    height: $ar-checkbox-size;
+                    overflow: hidden;
+                    border: 2px solid currentColor;
+                    border-radius: 2px;
+                    margin-right: 12px;
+
+                    > svg {
+                        opacity: 0;
+                        fill: currentColor;
+                        width: $ar-checkbox-size;
+                        height: $ar-checkbox-size;
+                        transition: none;
+                    }
+                }
+
+                &:focus {
+                    .checkbox {
+                        border-color: currentColor;
+                    }
+                }
+
+                &:hover {
+                    z-index: 3;
+                    .checkbox {
+                        border-color: currentColor;
+                        color: currentColor;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/enums.js
new file mode 100644
index 00000000..145cff11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/enums.js
@@ -0,0 +1,38 @@
+const ENUMS = {
+    ALIGN: {
+        CENTER: 'center',
+        LEFT: 'left',
+        RIGHT: 'right',
+    },
+    EVENT: {
+        BEFORE_COLLAPSE: 'beforeCollapse',
+        BEFORE_EXPAND: 'beforeExpand',
+        BLUR: 'onblur',
+        CHANGE: 'change',
+        CLICK: 'onclick',
+        COLLAPSE: 'collapse',
+        EXPAND: 'expand',
+        FOCUS: 'onfocus',
+        ITEM_CLICK: 'itemClick',
+        ITEM_SELECT: 'itemSelect',
+        ITEM_UNSELECT: 'itemUnselect',
+        MOUSE_DOWN: 'onmousedown',
+        MOUSE_UP: 'onmouseup',
+    },
+    TOGGLE: {
+        BLUR: 'blur',
+        CLICK: 'click',
+        FOCUS: 'focus',
+        KEY_DOWN: 'keydown',
+        KEY_UP: 'keyup',
+        MOUSE_DOWN: 'mousedown',
+        MOUSE_UP: 'mouseup',
+    },
+    VALIGN: {
+        BOTTOM: 'bottom',
+        MIDDLE: 'middle',
+        TOP: 'top',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/index.js
new file mode 100644
index 00000000..ce2fc636
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropdown/index.js
@@ -0,0 +1,661 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Button from 'reactium-ui/Button';
+import Icon from 'reactium-ui/Icon';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
+
+import ENUMS from './enums';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Dropdown
+ * -----------------------------------------------------------------------------
+ */
+let Dropdown = (
+    {
+        children,
+        iDocument,
+        iWindow,
+        menuRenderer,
+        onBeforeCollapse,
+        onBeforeExpand,
+        onChange,
+        onCollapse,
+        onExpand,
+        onItemClick,
+        onItemSelect,
+        onItemUnselect,
+        ...props
+    },
+    ref,
+) => {
+    // Refs
+    const containerRef = useRef();
+    const menuRef = useRef();
+    const stateRef = useRef({
+        ...props,
+        uuid: uuid(),
+        init: false,
+        tabIndex: -1,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        if (!containerRef.current) return;
+
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        if (ENUMS.DEBUG && caller) {
+            console.log('setState()', caller, {
+                state: stateRef.current,
+            });
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    // Prefixed className
+    const cname = cls =>
+        _.compact([
+            op.get(stateRef.current, 'namespace', 'ar-dropdown'),
+            cls,
+        ]).join('-');
+
+    // Filtered data
+    const filteredData = () => {
+        let { data = [], filter, labelField, valueField } = stateRef.current;
+
+        filter = filter ? String(filter).toLowerCase() : filter;
+
+        return data.filter(item => {
+            const label = String(op.get(item, labelField, '')).toLowerCase();
+            const value = String(op.get(item, valueField, ''));
+            return !filter || label.includes(filter) || value.includes(filter);
+        });
+    };
+
+    const collapse = () => {
+        let { animation, element, expanded } = stateRef.current;
+
+        if (expanded !== true) return Promise.resolve();
+
+        if (animation) return animation;
+
+        const { animationEase, animationSpeed } = stateRef.current;
+
+        const menu = menuRef.current;
+
+        menu.style.height = 'auto';
+        menu.style.display = 'block';
+        menu.style.overflow = 'hidden';
+        menu.classList.remove('expanded');
+
+        onBeforeCollapse({
+            type: ENUMS.EVENT.BEFORE_COLLAPSE,
+            menu,
+            target: handle,
+            currentTarget: element,
+        });
+
+        animation = new Promise(resolve =>
+            TweenMax.to(menu, animationSpeed, {
+                ease: animationEase,
+                height: 0,
+                onComplete: () => {
+                    menu.removeAttribute('style');
+
+                    onCollapse({
+                        type: ENUMS.EVENT.COLLAPSE,
+                        menu,
+                        target: handle,
+                        currentTarget: element,
+                    });
+
+                    setState({ animation: null, expanded: false });
+
+                    resolve();
+                },
+            }),
+        );
+
+        setState({ animation });
+
+        return animation;
+    };
+
+    const expand = () => {
+        let { animation, element, expanded } = stateRef.current;
+
+        if (expanded === true) return Promise.resolve();
+
+        if (animation) return animation;
+
+        const { animationEase, animationSpeed } = stateRef.current;
+
+        const menu = menuRef.current;
+
+        menu.style.height = 'auto';
+        menu.style.display = 'block';
+        menu.style.overflow = 'hidden';
+        menu.classList.remove('expanded');
+
+        onBeforeExpand({
+            type: ENUMS.EVENT.BEFORE_EXPAND,
+            menu,
+            target: handle,
+            currentTarget: element,
+        });
+
+        animation = new Promise(resolve =>
+            TweenMax.from(menu, animationSpeed, {
+                ease: animationEase,
+                height: 0,
+                onComplete: () => {
+                    menu.removeAttribute('style');
+
+                    onExpand({
+                        type: ENUMS.EVENT.EXPAND,
+                        menu,
+                        target: handle,
+                        currentTarget: element,
+                    });
+
+                    setState({ animation: null, expanded: true });
+
+                    resolve();
+                },
+            }),
+        );
+
+        setState({ animation });
+
+        return animation;
+    };
+
+    const toggle = () => {
+        const { expanded } = stateRef.current;
+        return expanded === true ? collapse() : expand();
+    };
+
+    // Determin if an element is a child
+    const isChild = child => {
+        const { element, uuid } = stateRef.current;
+        const { instance } = child.dataset;
+        return uuid === instance || element === child;
+    };
+
+    const dismiss = e => {
+        const { animation, expanded } = stateRef.current;
+
+        if (!expanded) return animation ? animation : Promise.resolve();
+
+        if (!isChild(e.target)) {
+            e.stopImmediatePropagation();
+            return collapse();
+        }
+
+        return animation ? animation : Promise.resolve();
+    };
+
+    const _onChange = () => {
+        const { init, event, selection = [] } = stateRef.current;
+        if (!init) return;
+        onChange({ ...event, type: ENUMS.EVENT.CHANGE });
+        setState({ event: null });
+    };
+
+    const _onItemClick = async (e, val) => {
+        let action;
+        let {
+            data,
+            iconField,
+            labelField,
+            multiSelect,
+            selection = [],
+            valueField,
+        } = stateRef.current;
+        let sel = _.uniq(Array.from(selection));
+        sel = multiSelect === true ? sel : [];
+
+        if (sel.includes(val)) {
+            action = ENUMS.EVENT.ITEM_UNSELECT;
+            sel = _.without(sel, val);
+        } else {
+            action = ENUMS.EVENT.ITEM_SELECT;
+            sel.push(val);
+        }
+
+        sel = _.uniq(sel);
+
+        const dataSelected = data.filter(item =>
+            sel.includes(item[valueField]),
+        );
+        const index = _.findIndex(data, { [valueField]: val });
+        const labels = _.compact(_.pluck(dataSelected, labelField));
+        const icons = _.compact(_.pluck(dataSelected, iconField));
+
+        const evt = {
+            icons,
+            index,
+            item: data[index],
+            labels,
+            selection: sel,
+            type: action,
+        };
+
+        const complete = () => {
+            onItemClick({ ...evt, type: ENUMS.EVENT.ITEM_CLICK });
+            if (action === ENUMS.EVENT.ITEM_SELECT) onItemSelect(evt);
+            if (action === ENUMS.EVENT.ITEM_UNSELECT) onItemUnselect(evt);
+            setState({ selection: sel, event: evt });
+        };
+
+        if (!multiSelect) {
+            collapse().then(() => complete());
+        } else {
+            //e.target.blur();
+            complete();
+        }
+    };
+
+    const _onKey = e => {
+        const { element } = stateRef.current;
+        const child = isChild(e.target);
+
+        if (!child) return;
+
+        switch (e.keyCode) {
+            case 27:
+                e.preventDefault();
+                collapse();
+                break;
+
+            case 38:
+            case 40:
+                e.preventDefault();
+                const inc = e.keyCode === 38 ? -1 : 1;
+                nav(inc);
+                break;
+
+            default:
+                if (isChild(e.target)) {
+                    expand();
+                }
+        }
+
+        e.stopImmediatePropagation();
+    };
+
+    const nav = async inc => {
+        await expand();
+
+        const data = filteredData();
+
+        let { element, tabIndex } = stateRef.current;
+
+        tabIndex += inc;
+        tabIndex = tabIndex < -1 ? data.length - 1 : tabIndex;
+        tabIndex = tabIndex >= data.length ? -1 : tabIndex;
+
+        if (tabIndex === -1) element.focus();
+
+        setState({ tabIndex });
+    };
+
+    const handle = () => ({
+        children,
+        onBeforeCollapse,
+        onBeforeExpand,
+        onChange,
+        onCollapse,
+        onExpand,
+        onItemClick,
+        onItemSelect,
+        onItemUnselect,
+        props,
+        setState,
+        state,
+    });
+
+    // Side Effects
+    useEffect(() => {
+        const { data = [] } = props;
+        setState({ data });
+    }, [props.data]);
+
+    useEffect(() => {
+        const newState = {};
+        if (props.align !== op.get(state, 'align')) {
+            newState['align'] = props.align;
+        }
+        if (props.verticalAlign !== op.get(state, 'verticalAlign')) {
+            newState['verticalAlign'] = props.verticalAlign;
+        }
+
+        if (Object.keys(newState).length > 0) setState(newState);
+    }, [props.align, props.verticalAlign]);
+
+    useEffect(() => {
+        const { filter = [] } = props;
+        setState({ filter });
+    }, [props.filter]);
+
+    useEffect(() => {
+        _onChange();
+    }, [stateRef.current.selection]);
+
+    useEffect(() => {
+        const { init } = stateRef.current;
+        if (init) return;
+
+        // window events
+        const win = iWindow ? iWindow : window;
+        const doc = iDocument ? iDocument : document;
+
+        if (doc && win) {
+            doc.addEventListener(ENUMS.TOGGLE.MOUSE_DOWN, e => dismiss(e));
+            win.addEventListener(ENUMS.TOGGLE.KEY_DOWN, e => _onKey(e));
+        }
+
+        return () => {
+            doc.removeEventListener(ENUMS.TOGGLE.MOUSE_DOWN, e => dismiss(e));
+            win.removeEventListener(ENUMS.TOGGLE.KEY_DOWN, e => _onKey(e));
+        };
+    }, [stateRef.current.init]);
+
+    useEffect(() => {
+        let {
+            collapseEvent,
+            expandEvent,
+            init,
+            multiSelect,
+            selector,
+            toggleEvent,
+        } = stateRef.current;
+
+        if (init) return;
+
+        const elm = containerRef.current.querySelector(selector);
+
+        if (collapseEvent || expandEvent) {
+            const collapseEvents = Array.isArray(collapseEvent)
+                ? collapseEvent
+                : [collapseEvent];
+
+            const expandEvents = Array.isArray(expandEvent)
+                ? expandEvent
+                : [expandEvent];
+
+            _.chain(collapseEvents)
+                .uniq()
+                .compact()
+                .value()
+                .forEach(evt => {
+                    elm.addEventListener(evt, e => {
+                        if (multiSelect) return;
+                        collapse(e);
+                    });
+                });
+
+            _.chain(expandEvents)
+                .uniq()
+                .compact()
+                .value()
+                .forEach(evt => {
+                    elm.addEventListener(evt, e => expand(e));
+                });
+        } else {
+            const toggleEvents = Array.isArray(toggleEvent)
+                ? toggleEvent
+                : [toggleEvent];
+
+            _.chain(toggleEvents)
+                .uniq()
+                .compact()
+                .value()
+                .forEach(evt => {
+                    elm.addEventListener(evt, e => toggle(e));
+                });
+        }
+
+        setState({ init: true, element: elm });
+    }, [stateRef.current.init]);
+
+    useLayoutEffect(() => {
+        const { element, tabIndex } = stateRef.current;
+        if (tabIndex < 0) return;
+
+        const selector = `[data-index='${tabIndex}']`;
+        const elm = containerRef.current.querySelector(selector);
+        if (elm) elm.focus();
+    }, [stateRef.current.tabIndex]);
+
+    // External Interface
+    useImperativeHandle(ref, handle);
+
+    // Renderers
+    const renderMenuItems = () => {
+        const {
+            checkbox,
+            color,
+            uuid: id,
+            iconField,
+            labelField,
+            labelType,
+            maxHeight,
+            minHeight,
+            selection = [],
+            size,
+            tabIndex,
+            valueField,
+        } = stateRef.current;
+
+        const data = filteredData();
+
+        return (
+            <Scrollbars
+                autoHeight
+                autoHeightMin={minHeight}
+                autoHeightMax={maxHeight}
+                thumbMinSize={5}>
+                {menuRenderer ? (
+                    menuRenderer(data, handle)
+                ) : (
+                    <ul data-instance={id}>
+                        {data.map((item, i) => {
+                            let Ico = null;
+                            const val = op.get(item, valueField);
+                            const label = op.get(item, labelField);
+                            const key = `ar-dropdown-item-${id}-${i}`;
+                            const active = selection.includes(val);
+                            const className = cn({ active });
+
+                            if (iconField) {
+                                const icon = op.get(item, iconField);
+                                if (icon) {
+                                    Ico = op.get(Icon, icon);
+                                }
+                            }
+
+                            return (
+                                <li
+                                    key={key}
+                                    className={className}
+                                    data-instance={id}>
+                                    <Button
+                                        color={color}
+                                        active={active}
+                                        type={labelType}
+                                        data-index={i}
+                                        data-instance={id}
+                                        size={size}
+                                        onFocus={() =>
+                                            setState({ tabIndex: i })
+                                        }
+                                        onClick={e => _onItemClick(e, val)}>
+                                        {checkbox && (
+                                            <span className='checkbox'>
+                                                <Icon name='Feather.Check' />
+                                            </span>
+                                        )}
+                                        {Ico && (
+                                            <span className='mr-xs-8'>
+                                                <Ico width={18} height={18} />
+                                            </span>
+                                        )}
+                                        {label || val}
+                                    </Button>
+                                </li>
+                            );
+                        })}
+                    </ul>
+                )}
+            </Scrollbars>
+        );
+    };
+
+    const render = () => {
+        const {
+            align,
+            className,
+            namespace,
+            expanded,
+            verticalAlign,
+        } = stateRef.current;
+
+        const contClassName = cn({
+            [namespace]: !!namespace,
+            [className]: !!className,
+            expanded,
+        });
+
+        const menuClassName = cn({
+            expanded,
+            [cname('menu')]: true,
+            [cname(`menu-align-${align}`)]: true,
+            [cname(`menu-vertical-align-${verticalAlign}`)]: true,
+        });
+
+        return (
+            <div ref={containerRef} className={contClassName}>
+                {children}
+                <div ref={menuRef} className={menuClassName}>
+                    {renderMenuItems()}
+                </div>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Dropdown = forwardRef(Dropdown);
+
+Dropdown.ENUMS = ENUMS;
+
+Dropdown.propTypes = {
+    align: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    animationEase: PropTypes.object,
+    animationSpeed: PropTypes.number,
+    className: PropTypes.string,
+    checkbox: PropTypes.bool,
+    collapseEvent: PropTypes.oneOfType([
+        PropTypes.array,
+        PropTypes.oneOf(Object.values(ENUMS.TOGGLE)),
+    ]),
+    color: PropTypes.oneOf(Object.values(Button.ENUMS.COLOR)),
+    data: PropTypes.array,
+    dismissable: PropTypes.bool,
+    expanded: PropTypes.bool,
+    expandEvent: PropTypes.oneOfType([
+        PropTypes.array,
+        PropTypes.oneOf(Object.values(ENUMS.TOGGLE)),
+    ]),
+    filter: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    iconField: PropTypes.string,
+    labelField: PropTypes.string,
+    labelType: PropTypes.oneOf(Object.values(Button.ENUMS.TYPE)),
+    menuRenderer: PropTypes.func,
+    multiSelect: PropTypes.bool,
+    name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+    namespace: PropTypes.string,
+    selection: PropTypes.array,
+    selector: PropTypes.string,
+    size: PropTypes.oneOf(Object.values(Button.ENUMS.SIZE)),
+    toggleEvent: PropTypes.oneOfType([
+        PropTypes.array,
+        PropTypes.oneOf(Object.values(ENUMS.TOGGLE)),
+    ]),
+    onBeforeCollapse: PropTypes.func,
+    onBeforeExpand: PropTypes.func,
+    onChange: PropTypes.func,
+    onCollapse: PropTypes.func,
+    onExpand: PropTypes.func,
+    onItemClick: PropTypes.func,
+    onItemSelect: PropTypes.func,
+    onItemUnselect: PropTypes.func,
+    valueField: PropTypes.string,
+    verticalAlign: PropTypes.oneOf(Object.values(ENUMS.VALIGN)),
+};
+
+Dropdown.defaultProps = {
+    align: ENUMS.ALIGN.CENTER,
+    animationEase: Power2.easeInOut,
+    animationSpeed: 0.25,
+    checkbox: false,
+    collapseEvent: null,
+    color: Button.ENUMS.COLOR.CLEAR,
+    data: [],
+    dismissable: true,
+    expanded: false,
+    expandEvent: null,
+    filter: null,
+    iconField: 'icon',
+    labelField: 'label',
+    labelType: Button.ENUMS.TYPE.BUTTON,
+    name: uuid(),
+    maxHeight: 167,
+    menuRenderer: null,
+    minHeight: 0,
+    multiSelect: false,
+    namespace: 'ar-dropdown',
+    selection: [],
+    selector: '[data-dropdown-element]',
+    size: Button.ENUMS.SIZE.SM,
+    toggleEvent: ENUMS.TOGGLE.CLICK,
+    onBeforeCollapse: noop,
+    onBeforeExpand: noop,
+    onChange: noop,
+    onCollapse: noop,
+    onExpand: noop,
+    onItemClick: noop,
+    onItemSelect: noop,
+    onItemUnselect: noop,
+    valueField: 'value',
+    verticalAlign: ENUMS.VALIGN.BOTTOM,
+};
+
+export { Dropdown, Dropdown as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/_style.scss
new file mode 100644
index 00000000..58f9f3cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/_style.scss
@@ -0,0 +1,13 @@
+.ar-dropzone {
+    &.fullwidth {
+        display: flex;
+        flex-direction: column;
+        flex-wrap: wrap;
+        width: 100%;
+        min-height: calc(100vh - 97px);
+    }
+
+    &-preview {
+        display: none;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/index.js
new file mode 100644
index 00000000..2258f9a9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Dropzone/index.js
@@ -0,0 +1,404 @@
+import uuid from 'uuid/v4';
+import dz from 'dropzone';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const useLayoutEffect =
+    typeof window === 'undefined' ? useEffect : useWindowEffect;
+
+const noop = () => {};
+
+const ENUMS = {
+    DEBUG: false,
+    EVENT: {
+        ADD: 'add',
+        CHANGE: 'change',
+        ERROR: 'error',
+        INIT: 'init',
+        REMOVE: 'remove',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Dropzone
+ * -----------------------------------------------------------------------------
+ */
+let Dropzone = (
+    {
+        children,
+        onChange,
+        onError,
+        onFileAdded,
+        onFileRemoved,
+        onInitialize,
+        ...props
+    },
+    ref,
+) => {
+    // Refs
+    const containerRef = useRef();
+    const inputContainerRef = useRef();
+    const stateRef = useRef({
+        ...props,
+        config: { ...Dropzone.defaultProps.config, ...props.config },
+        initialConfig: { ...props.config },
+        dropzone: null,
+        initialized: false,
+        input: null,
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        if (ENUMS.DEBUG && caller) {
+            console.log(caller, {
+                state: stateRef.current,
+                newState,
+                merged: { ...stateRef.current, ...newState },
+            });
+        }
+
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+            updated: Date.now(),
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const state = (key, defaultValue) =>
+        key ? op.get(stateRef.current, key, defaultValue) : stateRef.current;
+
+    const cname = () => {
+        const { className, namespace } = state();
+        return cn({ [className]: !!className, [namespace]: !!namespace });
+    };
+
+    const cx = (cls) => {
+        const { namespace } = state();
+        return _.compact([namespace, cls]).join('-');
+    };
+
+    const clearPreviousInput = () => {
+        const container = inputContainerRef.current;
+        const input = container.querySelector('.dz-hidden-input');
+        if (input) {
+            input.parentNode.removeChild(input);
+        }
+    };
+
+    const getType = (filename) => String(filename).split('.').pop();
+
+    const isImage = (filename) =>
+        ['png', 'svg', 'gif', 'jpg', 'jpeg'].includes(getType(filename));
+
+    const _onFileAdded = (file) => addFiles([file]);
+
+    const _onFileRemoved = (file) => removeFiles([file]);
+
+    const _onFileError = (file, error) => {
+        const reader = new FileReader();
+
+        reader.onload = ({ target }) => {
+            removeFiles(file);
+
+            const files = state('files', {});
+
+            onError({
+                type: ENUMS.EVENT.ERROR,
+                file,
+                files,
+                message: String(error).toLowerCase(),
+            });
+
+            onChange({
+                type: ENUMS.EVENT.CHANGE,
+                added: null,
+                removed: null,
+                files,
+            });
+        };
+
+        reader.readAsDataURL(file);
+    };
+
+    const addFiles = (files) => {
+        let Q = state('files', {});
+        files = !Array.isArray(files) ? [files] : files;
+        files = _.compact(files);
+
+        if (files.length < 1) {
+            return Promise.resolve(Q);
+        }
+
+        const added = [];
+
+        return new Promise((resolve) => {
+            const ival = setInterval(() => {
+                if (added.length === files.length) {
+                    clearInterval(ival);
+
+                    Q = state('files', {});
+
+                    setState({ files: Q }, 'addFiles');
+
+                    if (_.compact(added).length > 0) {
+                        onFileAdded({
+                            type: ENUMS.EVENT.ADD,
+                            added: _.compact(added),
+                            files: Q,
+                        });
+
+                        onChange({
+                            type: ENUMS.EVENT.CHANGE,
+                            added: _.compact(added),
+                            removed: null,
+                            files: Q,
+                        });
+                    }
+
+                    resolve(Q);
+                }
+            }, 1);
+
+            files.forEach((file) => {
+                if (file.status === ENUMS.EVENT.ERROR) {
+                    added.push(null);
+                    return;
+                }
+
+                const obj = file;
+
+                const ID = uuid();
+                obj['ID'] = ID;
+                obj['statusAt'] = Date.now();
+
+                if (isImage(file.name)) {
+                    const reader = new FileReader();
+
+                    reader.onload = ({ target }) => {
+                        obj['dataURL'] = target.result;
+                        obj['statusAt'] = Date.now();
+
+                        Q[ID] = obj;
+
+                        added.push(obj);
+                    };
+
+                    reader.readAsDataURL(file);
+                } else {
+                    Q[ID] = obj;
+                    added.push(obj);
+                }
+            });
+        });
+    };
+
+    const removeFiles = (files) => {
+        files = !Array.isArray(files) ? [files] : files;
+        files = _.compact(files);
+
+        if (files.length < 1) {
+            return;
+        }
+
+        const Q = state('files', {});
+        const dropzone = state('dropzone');
+
+        files.forEach((file) => {
+            const ID = file.ID;
+
+            if (!Q[ID]) {
+                return;
+            }
+
+            delete Q[ID];
+            stateRef.current.files = Q;
+
+            try {
+                dropzone.removeFile(file);
+            } catch (err) {}
+        });
+
+        setState({ files: Q }, 'removeFiles');
+
+        onFileRemoved({
+            type: ENUMS.EVENT.REMOVE,
+            removed: files,
+            files: Q,
+        });
+
+        onChange({
+            type: ENUMS.EVENT.CHANGE,
+            added: null,
+            removed: files,
+            files: Q,
+        });
+    };
+
+    const browseFiles = () => {
+        const container = inputContainerRef.current;
+        const input = container.querySelector('.dz-hidden-input');
+
+        if (input) {
+            input.click();
+        }
+    };
+
+    const initialize = () => {
+        const initialized = state('initialized');
+        if (initialized === true) {
+            return;
+        }
+
+        clearPreviousInput();
+
+        const config = state('config');
+        const files = state('files', {});
+        const container = containerRef.current;
+
+        if (!state('config.previewsContainer')) {
+            config.previewsContainer = `.${cx('preview')}`;
+        }
+
+        if (!state('config.hiddenInputContainer')) {
+            config.hiddenInputContainer = `.${cx('input')}`;
+        }
+
+        const dropzone = new dz(container, config);
+
+        dropzone.on('addedfile', _onFileAdded);
+        dropzone.on('error', _onFileError);
+        dropzone.on('removedfile', _onFileRemoved);
+
+        const inputContainer = inputContainerRef.current;
+        const input = inputContainer.querySelector('.dz-hidden-input');
+
+        setState({ config, dropzone, initialized: true, input }, 'initialize');
+
+        addFiles(Object.values(files)).then((files) => {
+            onInitialize({
+                type: ENUMS.EVENT.INIT,
+                dropzone,
+                files,
+            });
+        });
+    };
+
+    // Renderers
+    const render = () => (
+        <div ref={containerRef} className={cname()}>
+            <div className={cx('input')} ref={inputContainerRef} />
+            <div className={cx('preview')} />
+            {children}
+        </div>
+    );
+
+    // Side Effects
+    useLayoutEffect(() => initialize(), [containerRef.current]);
+
+    useEffect(() => {
+        // Remove any errored files
+        const staged = Object.values(state('files')).filter((file) =>
+            Boolean(file.status === ENUMS.EVENT.ERROR),
+        );
+        if (staged.length > 0) {
+            removeFiles(staged);
+        }
+    }, [state('updated')]);
+
+    useEffect(() => {
+        if (_.isEqual(props.config, state('initialConfig'))) return;
+        const config = { ...state('config'), ...props.config };
+        setState('config', config);
+    }, [props.config]);
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        ...ref,
+        addFiles,
+        browseFiles,
+        container: containerRef.current,
+        dropzone: state('dropzone'),
+        props,
+        removeFiles,
+        setState,
+        state: state(),
+    }));
+
+    return render();
+};
+
+Dropzone = forwardRef(Dropzone);
+
+Dropzone.propTypes = {
+    config: PropTypes.shape({
+        acceptedFiles: PropTypes.string,
+        autoProcessQueue: PropTypes.bool,
+        clickable: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
+        hiddenInputContainer: PropTypes.oneOfType([
+            PropTypes.string,
+            PropTypes.element,
+        ]),
+        maxFiles: PropTypes.number,
+        method: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
+        parallelUploads: PropTypes.number,
+        paramName: PropTypes.string,
+        previewsContainer: PropTypes.string,
+        timeout: PropTypes.number,
+        uploadMultiple: PropTypes.bool,
+    }),
+    className: PropTypes.string,
+    disabled: PropTypes.bool,
+    files: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    onError: PropTypes.func,
+    onFileAdded: PropTypes.func,
+    onFileRemoved: PropTypes.func,
+    onInitialize: PropTypes.func,
+};
+
+Dropzone.defaultProps = {
+    config: {
+        acceptedFiles: null,
+        autoProcessQueue: false,
+        clickable: true,
+        hiddenInputContainer: null,
+        maxFiles: null,
+        method: 'post',
+        parallelUploads: 1,
+        paramName: 'file',
+        previewsContainer: null,
+        timeout: 30000,
+        uploadMultiple: false,
+        url: '#',
+    },
+    disabled: false,
+    files: {},
+    namespace: 'ar-dropzone',
+    onChange: noop,
+    onError: noop,
+    onFileAdded: noop,
+    onFileRemoved: noop,
+    onInitialize: noop,
+};
+
+export { Dropzone, Dropzone as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/EventForm/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/EventForm/index.js
new file mode 100644
index 00000000..bdb5365f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/EventForm/index.js
@@ -0,0 +1,665 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+
+import Reactium, {
+    useAsyncEffect,
+    useDerivedState,
+    useEventHandle,
+} from '@atomic-reactor/reactium-sdk-core';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect as useWinEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const ENUMS = {
+    STATUS: {
+        ERROR: 'ERROR',
+        SUBMITTING: 'SUBMITTING',
+        READY: 'READY',
+        VALIDATING: 'VALIDATING',
+    },
+};
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWinEffect : useEffect;
+
+const isBoolean = val =>
+    typeof val === 'boolean' ||
+    String(val).toLowerCase() === 'true' ||
+    String(val).toLowerCase() === 'false';
+
+const isBusy = status => {
+    const statuses = [ENUMS.STATUS.SUBMITTING, ENUMS.STATUS.VALIDATING];
+    return statuses.includes(String(status).toUpperCase());
+};
+
+const transformValue = val => {
+    if (typeof val === 'boolean') return val;
+    if (val === 'true') return true;
+    if (val === 'false') return false;
+    if (!isNaN(val)) return Number(val);
+    return val;
+};
+
+class FormEvent extends CustomEvent {
+    constructor(type, data) {
+        super(type, data);
+
+        Object.entries(data).forEach(([key, value]) => {
+            if (!this[key]) {
+                this[key] = value;
+            } else {
+                key = `__${key}`;
+                this[nkey] = value;
+            }
+        });
+    }
+
+    get detail() {
+        return op.get(this, '__detail');
+    }
+
+    set detail(value) {
+        op.set(this, '__detail', value);
+    }
+
+    get element() {
+        return op.get(this, '__element');
+    }
+
+    set element(value) {
+        op.set(this, '__element', value);
+    }
+
+    get element() {
+        return op.get(this, '__element');
+    }
+
+    set element(value) {
+        op.set(this, '__element', value);
+    }
+
+    get target() {
+        return op.get(this, '__target');
+    }
+
+    set target(value) {
+        op.set(this, '__target', value);
+    }
+
+    get value() {
+        return op.get(this, '__value');
+    }
+
+    set value(value) {
+        op.set(this, '__value', value);
+    }
+}
+
+let EventForm = (initialProps, ref) => {
+    // -------------------------------------------------------------------------
+    // Refs
+    // -------------------------------------------------------------------------
+    const formRef = useRef();
+    const temp = useRef({
+        id: uuid(),
+        watch: {},
+    });
+
+    // -------------------------------------------------------------------------
+    // State
+    // -------------------------------------------------------------------------
+    const {
+        children,
+        className,
+        controlled,
+        defaultValue,
+        namespace,
+        onChange,
+        onError,
+        onSubmit,
+        required,
+        throttleChanges: throttle,
+        validator,
+        value: initialValue,
+        ...props
+    } = initialProps;
+
+    const [state, setNewState] = useDerivedState({
+        count: 0,
+        error: null,
+        status: ENUMS.STATUS.READY,
+        ready: false,
+        throttleChanges: throttle,
+    });
+
+    const valueRef = useRef(initialValue || defaultValue || {});
+    const value = valueRef.current;
+    const setNewValue = newValue => {
+        if (unMounted()) return;
+        newValue = newValue === null ? {} : newValue;
+
+        // cleanup value ref
+        Object.keys(valueRef.current).forEach(key => {
+            if (!newValue || !(key in newValue)) op.del(valueRef.current, key);
+        });
+
+        Object.entries(newValue).forEach(([key, val]) =>
+            op.set(valueRef.current, key, val),
+        );
+    };
+
+    const isToggle = type => ['checkbox', 'radio'].includes(type);
+
+    // applyValue called in number of useEffects
+    // can async override call on form.setValue(null)
+    // interpret clear, null, or {} as a clear
+    const isClearSignal = (newValue, clear = false) =>
+        clear === true ||
+        newValue === null ||
+        (typeof newValue === 'object' && Object.keys(newValue).length === 0);
+
+    // -------------------------------------------------------------------------
+    // Functions
+    // -------------------------------------------------------------------------
+    const applyValue = async (newValue, clear = false) => {
+        // double-check for clear signal because of useEffects
+        clear = isClearSignal(newValue, clear);
+
+        if (unMounted()) return;
+        if (controlled === true || typeof newValue === 'undefined') return;
+        const elements = getElements();
+
+        if (clear) {
+            clearForm(elements);
+            newValue = null;
+        } else {
+            newValue = { ...value, ...newValue };
+        }
+
+        Object.entries(elements).forEach(([name, element]) => {
+            let val = op.get(newValue, name);
+
+            if (Array.isArray(element)) {
+                element.forEach((elm, i) => {
+                    const type = elm.type;
+                    if (isToggle(type)) {
+                        // checkbox & radio
+                        elm.checked = _.flatten([val]).includes(elm.value);
+                    } else {
+                        elm.value = op.get(val, i, elm.defaultValue);
+                    }
+                });
+            } else {
+                const type = element.type;
+                if (element.value === val) return;
+
+                if (isToggle(type)) {
+                    // checkbox & radio
+                    if (!val) {
+                        element.checked = element.defaultChecked;
+                        return;
+                    }
+
+                    element.checked = isBoolean(val)
+                        ? Boolean(val)
+                        : val === element.value;
+
+                    return;
+                }
+
+                if (type === 'select-multiple') {
+                    const options = Object.keys(element.options)
+                        .filter(key => !isNaN(key))
+                        .map(i => element.options[i]);
+
+                    options.forEach(option => {
+                        const v = !isNaN(option.value)
+                            ? Number(option.value)
+                            : option.value;
+                        option.selected = _.flatten([val]).includes(v);
+                    });
+
+                    return;
+                }
+
+                val = val || element.defaultValue;
+                element.value = val ? val : null;
+            }
+        });
+    };
+
+    const clearForm = elements => {
+        elements = elements || getElements();
+        Object.entries(elements).forEach(([name, element]) =>
+            _.flatten([element]).forEach(elm => {
+                if (!elm.type) return;
+
+                const type = elm.type;
+
+                if (isToggle(type)) {
+                    elm.checked = false;
+                    return;
+                }
+
+                if (type === 'select-multiple') {
+                    const ids = Object.keys(elm.options).filter(
+                        key => !isNaN(key),
+                    );
+                    const options = ids.map(i => elm.options[i]);
+                    options.forEach(option => (option.selected = false));
+                    return;
+                }
+
+                elm.value = null;
+            }),
+        );
+    };
+
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const childWatch = () => {
+        if (unMounted()) return;
+
+        const elms = getElements();
+        const count = Object.keys(elms).length;
+
+        if (count !== state.count) {
+            setCount(count);
+
+            const evt = new FormEvent('element-change', {
+                target: formRef.current,
+                element: op.get(event, 'target', formRef.current),
+                value,
+                elements: elms,
+            });
+
+            handle.dispatchEvent(evt);
+        }
+    };
+
+    const _dispatchChange = (args = {}) => {
+        if (unMounted()) return;
+
+        let event = op.get(args, 'event', {});
+        let newValue = op.get(args, 'value', getValue());
+        newValue = newValue || getValue();
+
+        const evt = new FormEvent('change', {
+            target: formRef.current,
+            element: op.get(event, 'target', formRef.current),
+            value: newValue,
+        });
+
+        if (controlled !== true) setNewValue(newValue);
+
+        handle.dispatchEvent(evt);
+        onChange(evt);
+    };
+
+    const dispatchChange = _.throttle(_dispatchChange, state.throttleChanges, {
+        leading: false,
+    });
+
+    const focus = name => {
+        if (unMounted()) return;
+
+        const elements = getElements();
+        const element = op.get(elements, name);
+        if (element) element.focus();
+    };
+
+    const getElements = () => {
+        if (unMounted()) return {};
+
+        const elements = formRef.current.elements;
+
+        let elms = [];
+        for (const element of elements) {
+            if (element.type) {
+                const name = element.name || element.getAttribute('name');
+                if (name) elms.push({ name, element });
+            }
+        }
+
+        elms = _.groupBy(elms, 'name');
+        Object.entries(elms).forEach(([key, val]) => {
+            val = _.pluck(val, 'element');
+            elms[key] = val.length > 1 ? val : val[0];
+        });
+
+        return elms;
+    };
+
+    const getValue = k => {
+        if (unMounted()) return {};
+
+        const form = formRef.current;
+        const elements = getElements(form);
+        const keys = Object.keys(elements);
+        const formData = new FormData(form);
+
+        for (const key of formData.keys()) {
+            keys.push(key);
+        }
+
+        const currentValue = keys.reduce((obj, key) => {
+            let v = _.compact(_.uniq(formData.getAll(key))) || [];
+
+            v = v.length === 1 && v.length !== 0 ? v[0] : v;
+            v = v.length === 0 ? null : v;
+            if (v !== null) {
+                v = transformValue(v);
+            }
+
+            op.set(obj, key, v);
+
+            return obj;
+        }, {});
+
+        if (k) {
+            return op.get(currentValue, k);
+        } else {
+            return currentValue;
+        }
+    };
+
+    const isEmpty = () => {
+        let empty = true;
+
+        Object.values(value).forEach(val => {
+            if (_.isObject(val)) return;
+            if (!_.isEmpty(val)) empty = false;
+        });
+
+        return empty;
+    };
+
+    const setCount = count => {
+        setState({ count });
+    };
+
+    const setHandle = newHandle => {
+        if (unMounted()) return;
+        setNewHandle(newHandle);
+    };
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    const setValue = newValue => {
+        if (unMounted()) return;
+
+        const clear = isClearSignal(newValue);
+        setNewValue(newValue);
+        applyValue(newValue, clear);
+        dispatchChange({
+            value: clear ? {} : newValue,
+            event: formRef.current,
+        });
+    };
+
+    const unMounted = () => !formRef.current;
+
+    const validate = async currentValue => {
+        if (unMounted()) return;
+
+        currentValue = currentValue || getValue();
+
+        let context = {
+            error: {},
+            valid: true,
+            value: currentValue,
+        };
+
+        const missing = required.filter(k =>
+            _.isEmpty(op.get(currentValue, k)),
+        );
+        const elements = getElements();
+
+        if (missing.length > 0) {
+            context.valid = false;
+            missing.forEach(field => {
+                context.error[field] = {
+                    field,
+                    focus: elements[field],
+                    message: `${field} is a required field`,
+                };
+            });
+        }
+
+        // Validators should return :
+        // Object: {
+        //      valid:Boolean,
+        //      error: [Object, {
+        //        field:String,
+        //        focus:Element,
+        //        message:String,
+        //        value:Mixed
+        //      }],
+        //  }
+        if (validator) context = await validator(context);
+        return context;
+    };
+
+    // -------------------------------------------------------------------------
+    // Event Handlers
+    // -------------------------------------------------------------------------
+    const _onChange = e => {
+        if (!e.target.name) return;
+        if (unMounted()) return;
+        e.stopPropagation();
+        //applyValue();
+        dispatchChange();
+    };
+
+    const _onSubmit = async e => {
+        if (unMounted()) return;
+
+        if (e) {
+            e.preventDefault();
+            e.stopPropagation();
+        }
+
+        let evt;
+        const { status } = state;
+        if (isBusy(status)) return;
+
+        // validate
+        setState({ error: null, status: ENUMS.STATUS.VALIDATING });
+
+        const _value = getValue();
+
+        const { valid, error } = await validate(_value);
+
+        if (valid !== true || Object.keys(error).length > 0) {
+            setState({ error, status: ENUMS.STATUS.ERROR });
+
+            evt = new FormEvent('error', {
+                element: formRef.current,
+                error,
+                target: handle,
+                value: _value,
+            });
+
+            handle.dispatchEvent(evt);
+            try {
+                await onError(evt);
+            } catch (err) {}
+
+            setState({ status: ENUMS.STATUS.READY });
+            return;
+        }
+
+        setState({ status: ENUMS.STATUS.SUBMITTING });
+
+        evt = new FormEvent('submit', {
+            element: formRef.current,
+            target: handle,
+            value: _value,
+        });
+
+        handle.dispatchEvent(evt);
+        _.defer(() => setState({ status: ENUMS.STATUS.READY }));
+
+        if (typeof onSubmit === 'function') {
+            try {
+                await onSubmit(evt);
+            } catch (err) {}
+        }
+    };
+
+    // -------------------------------------------------------------------------
+    // Handle
+    // -------------------------------------------------------------------------
+    const _handle = () => ({
+        ENUMS,
+        defaultValue,
+        elements: getElements(),
+        error: op.get(state, 'error'),
+        focus,
+        form: formRef.current,
+        getValue,
+        props: initialProps,
+        state,
+        setCount,
+        setState,
+        setValue,
+        submit: _onSubmit,
+        unMounted,
+        validate,
+        value: getValue(),
+    });
+
+    const [handle, setNewHandle] = useEventHandle(_handle());
+
+    useImperativeHandle(ref, () => handle, [handle]);
+
+    // -------------------------------------------------------------------------
+    // Side effects
+    // -------------------------------------------------------------------------
+
+    // Apply value
+    useLayoutEffect(() => {
+        if (!isEmpty() && state.ready !== true) {
+            setState({ ready: true });
+        }
+    });
+
+    useEffect(() => {
+        if (state.ready === true && state.count > 0)
+            applyValue(valueRef.current);
+    }, [state.count]);
+
+    // Update handle on change
+    useEffect(() => {
+        const newHandle = { ...handle };
+        op.set(newHandle, 'value', getValue());
+        op.set(newHandle, 'elements', getElements());
+        op.set(newHandle, 'error', op.get(state, 'error'));
+        op.set(newHandle, 'form', formRef.current);
+        setHandle(newHandle);
+    }, [formRef.current, state.count, state.errors, Object.values(value)]);
+
+    // update value from props
+    useEffect(() => {
+        // ignore when would result in no change or when undefined
+        if (initialValue === undefined || _.isEqual(value, initialValue))
+            return;
+
+        setValue(initialValue);
+        dispatchChange({ value: initialValue });
+    }, [initialValue]);
+
+    // status
+    useEffect(() => {
+        if (unMounted()) return;
+
+        handle.dispatchEvent(
+            new FormEvent('status', {
+                detail: op.get(state, 'status'),
+                element: formRef.current,
+                target: handle,
+                value,
+            }),
+        );
+    }, [state.status]);
+
+    // change flush
+    useEffect(() => {
+        if (op.get(temp.current, 'watch.children')) {
+            clearInterval(temp.current.watch.children);
+        }
+
+        temp.current['watch'] = {
+            children: setInterval(() => childWatch(), 1),
+        };
+
+        return () => {
+            Object.keys(temp.current.watch).forEach(clearInterval);
+        };
+    });
+
+    // -------------------------------------------------------------------------
+    // Render
+    // -------------------------------------------------------------------------
+    return (
+        <form
+            {...props}
+            className={cn(className, cx())}
+            onChange={_onChange}
+            onSubmit={_onSubmit}
+            ref={formRef}>
+            {children}
+        </form>
+    );
+};
+
+EventForm = forwardRef(EventForm);
+
+EventForm.ENUMS = ENUMS;
+
+EventForm.Event = FormEvent;
+
+EventForm.propTypes = {
+    className: PropTypes.string,
+    controlled: PropTypes.bool,
+    defaultValue: PropTypes.object,
+    id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+    required: PropTypes.array.isRequired,
+    name: PropTypes.string,
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    onError: PropTypes.func,
+    onSubmit: PropTypes.func,
+    throttleChanges: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),
+    value: PropTypes.object,
+    validator: PropTypes.func,
+};
+
+EventForm.defaultProps = {
+    controlled: false,
+    defaultValue: {},
+    id: uuid(),
+    name: 'form',
+    namespace: 'ar-event-form',
+    onChange: noop,
+    onError: noop,
+    throttleChanges: 1500,
+    required: [],
+    value: undefined,
+};
+
+export { EventForm, EventForm as default, FormEvent };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-atoms.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-atoms.scss
new file mode 100644
index 00000000..625d5666
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-atoms.scss
@@ -0,0 +1,24 @@
+$input-color-error: $color-danger !default;
+
+.form-group,
+.input-group {
+    *[aria-invalid='true'] {
+        &:not([type='checkbox']) {
+            &:not([type='radio']) {
+                @include inputStyleFocus($input-color-error);
+
+                &:focus,
+                &.focus {
+                    border: 1px solid $input-color-error;
+                    box-shadow: none !important;
+                }
+            }
+        }
+    }
+
+    .error-message {
+        color: $input-color-error;
+        margin-top: 8px;
+        font-size: 12px;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-mixins.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-mixins.scss
new file mode 100644
index 00000000..77e36e71
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-mixins.scss
@@ -0,0 +1,34 @@
+@mixin inputStyleFocus($clr: $input-color-focus) {
+    box-shadow: 0 0 0 3px rgba(lighten($clr, 5%), 0.25);
+    border-color: $clr;
+    transition: box-shadow 0.125s;
+}
+
+@mixin inputStyle($clr: $input-color-focus,
+    $clr-border: $input-color-border,
+    $radius: $input-radius) {
+    flex-grow: 1;
+    font-family: #{map-get($fonts, helvetica-neue)};
+    font-weight: #{map-get($font-weights, medium)};
+    font-size: 16px;
+    outline: none;
+    border: 1px solid $clr-border;
+    border-radius: $radius;
+    box-shadow: 0 0 0 3px rgba($clr, 0);
+    margin: 0;
+    padding: 10px 10px 8px 12px;
+    width: 100%;
+    min-height: 43px;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+
+    &:focus,
+    &.focus {
+        @include inputStyleFocus($clr);
+    }
+
+    &:disabled {
+        opacity: 0.8;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/domain.js
new file mode 100644
index 00000000..5092abca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/domain.js
@@ -0,0 +1,3 @@
+module.exports = {
+    name: 'RUIForm',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/index.js
new file mode 100644
index 00000000..80c5625a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Form/index.js
@@ -0,0 +1,850 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+
+import Reactium, {
+    useDispatcher,
+    useEventEffect,
+    useHookComponent,
+    useRefs,
+    useStatus,
+    useSyncState,
+} from '@atomic-reactor/reactium-core/sdk';
+
+import React, {
+    forwardRef,
+    useCallback,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+    useState,
+} from 'react';
+
+const filteredProps = (props) =>
+    Object.entries(props).reduce((obj, [key, val]) => {
+        if (!String(key).startsWith('on')) {
+            obj[key] = val;
+        }
+
+        return obj;
+    }, {});
+
+const inputTypes = [
+    'input',
+    'textarea',
+    'select',
+    'select-one',
+    'checkbox',
+    'color',
+    'date',
+    'datetime-local',
+    'email',
+    'file',
+    'hidden',
+    'month',
+    'number',
+    'password',
+    'radio',
+    'range',
+    'search',
+    'tel',
+    'text',
+    'time',
+    'url',
+    'week',
+    'meter',
+    'progress',
+];
+
+/**
+ * -----------------------------------------------------------------------------
+ * Context FormContext
+ * -----------------------------------------------------------------------------
+ */
+
+const defaultContext = [
+    'addEventListener',
+    'childClone',
+    'complete',
+    'dispatch',
+    'get',
+    'elements',
+    'error',
+    'isStatus',
+    'removeEventListener',
+    'register',
+    'reset',
+    'set',
+    'asyncValidator',
+    'setStatus',
+    'setValue',
+    'submit',
+    'unregister',
+    'validate',
+].reduce(
+    (obj, method) => {
+        obj[method] = _.noop;
+        return obj;
+    },
+    {
+        props: {},
+        empty: true,
+        refs: { get: _.noop, set: _.noop },
+        status: 'pending',
+        value: {},
+        childrenMap: (children) => children,
+    },
+);
+
+const FormContext = React.createContext(defaultContext);
+FormContext.displayName = 'FormContext';
+
+const FormError = ({ children, name, ...props }) => {
+    const { FormContext } = useHookComponent('ReactiumUI');
+    const Form = React.useContext(FormContext);
+
+    const [error, setError] = useState(Form.error(name));
+
+    const _onError = () => {
+        setError(Form.error(name));
+    };
+
+    const _onErrorClear = ({ detail }) => {
+        const { fieldName } = detail;
+        if (fieldName === name) setError(null);
+    };
+
+    const clear = () => setError(null);
+
+    useEventEffect(Form, {
+        reset: clear,
+        error: _onError,
+        'before-submit': clear,
+        'clear-error': _onErrorClear,
+    });
+
+    return error ? <div {...props} children={children || error} /> : null;
+};
+
+FormError.propTypes = {
+    children: PropTypes.node,
+    className: PropTypes.string,
+    name: PropTypes.string.isRequired,
+};
+
+FormError.defaultProps = {
+    className: 'error-message',
+};
+
+const FormRegister = ({ children }) => {
+    const { FormContext } = useHookComponent('ReactiumUI');
+    const Form = React.useContext(FormContext);
+    return Form.childrenMap(children);
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Form
+ * -----------------------------------------------------------------------------
+ */
+let Form = (
+    {
+        className,
+        children,
+        defaultValue,
+        id = uuid(),
+        namespace,
+        style,
+        value: initialValue,
+        ...props
+    },
+    ref,
+) => {
+    if (initialValue && defaultValue) {
+        throw new Error(
+            'Form component cannot supply both `defaultValue` and `value` properties',
+        );
+    }
+
+    if (initialValue && !op.get(props, 'onChange')) {
+        throw new Error(
+            'Form component must supply `onChange` prop when specifying `value` prop',
+        );
+    }
+
+    const [status, setStatus, isStatus] = useStatus(Form.STATUS.INIT);
+
+    const refs = useRefs({ elements: {}, id });
+
+    const initVal = _.chain([initialValue, defaultValue])
+        .compact()
+        .first()
+        .value();
+
+    const state = useSyncState({
+        errors: null,
+        id: refs.get('id'),
+        asyncValidators: [],
+        value: initVal,
+        resetValue: initVal,
+    });
+
+    state.value = state.get('value');
+
+    const inputs = useMemo(() => {
+        let arr = _.clone(inputTypes);
+        Reactium.Hook.runSync('form-input-types', arr);
+        Reactium.Hook.runSync(`form-input-types-${refs.get('id')}`, arr);
+        return arr;
+    }, []);
+
+    const applyValues = useCallback((values) => {
+        state.value = values;
+
+        const fields = getElements();
+
+        if (Object.keys(values).length > 0 && fields.length < 1) {
+            return _.defer(() => applyValues(values));
+        }
+
+        fields.forEach((item) => {
+            if (!item.ref || item.typeahead) return;
+
+            if (!error(item.key)) {
+                item.ref.removeAttribute('aria-invalid');
+            }
+
+            let val = op.get(values, item.key);
+            val = val === 'true' ? true : val;
+
+            switch (item.type) {
+                case 'radio':
+                case 'checkbox':
+                    val = !val ? false : val;
+
+                    let ival = item.ref.value || true;
+
+                    ival = ival === 'true' ? true : ival;
+                    ival = !ival && ival !== 0 ? false : ival;
+
+                    item.ref.checked = String(val) === String(ival);
+                    break;
+
+                case 'date':
+                case 'week':
+                case 'time':
+                case 'range':
+                case 'month':
+                case 'number':
+                case 'datetime-local':
+                    item.value = val;
+                    item.ref.value =
+                        typeof val === 'undefined' ? item.ref.min || '0' : val;
+                    break;
+
+                default:
+                    item.value = val;
+                    item.ref.value = typeof val !== 'undefined' ? val : '';
+            }
+        });
+
+        return state;
+    }, []);
+
+    const childClone = useCallback((child) => {
+        if (!child) return null;
+        if (!child.type) return child;
+        if (_.isString(child)) return child;
+        if (_.isNumber(child)) return child;
+        if (_.isFunction(child)) return child;
+
+        if (inputs.includes(child.type) && child.props.name) {
+            const name = String(child.props.name);
+            const narr = name.split('.');
+            const refkey = `elements.${name}`;
+
+            if (isStatus(Form.STATUS.INIT)) {
+                const val = isControlled()
+                    ? child.props.value
+                    : child.props.defaultValue;
+                state.set(['value', name], val, false);
+            }
+
+            if (narr.length > 1) {
+                narr.pop();
+                refs.set(`elements.${narr.join('.')}`, {});
+            }
+
+            const cloned = React.cloneElement(
+                child,
+                {
+                    'aria-required': op.get(
+                        child.props,
+                        'aria-required',
+                        op.get(child.props, 'required'),
+                    ),
+                    required: undefined,
+                    ref: (elm) => {
+                        if (!elm) return;
+
+                        refs.set(refkey, elm);
+
+                        if (child.ref) {
+                            if (_.isFunction(child.ref)) {
+                                child.ref(elm);
+                            } else if (_.isObject(child.ref)) {
+                                child.ref.current = elm;
+                            }
+                        }
+                    },
+                    onChange: (e) => _onInputChange(e, child.props.onChange),
+                    defaultValue: isControlled()
+                        ? undefined
+                        : !child.props.value
+                        ? child.props.defaultValue
+                        : undefined,
+                    value: isControlled()
+                        ? undefined
+                        : child.props.value || undefined,
+                },
+                childrenMap(child.props.children),
+            );
+
+            dispatch('register', { element: cloned });
+
+            return cloned;
+        }
+
+        return React.cloneElement(
+            child,
+            null,
+            childrenMap(child.props.children),
+        );
+    }, []);
+
+    const childrenMap = useCallback(
+        (carr) => React.Children.map(carr, childClone),
+        [],
+    );
+
+    const complete = useCallback((results) => {
+        _onComplete(results);
+        return state;
+    }, []);
+
+    const _dispatch = useDispatcher({ props, state });
+
+    const dispatch = (...args) => {
+        _dispatch(...args);
+        return state;
+    };
+
+    const error = useCallback((key) => {
+        const errors = state.get('errors', {}) || {};
+        return key ? errors[key] : errors;
+    }, []);
+
+    const formatValue = useCallback((key, value) => {
+        const obj = { [key]: value };
+        Reactium.Hook.runSync('form-input-value', obj);
+        Reactium.Hook.runSync(`form-input-value-${refs.get('id')}`, obj);
+        return obj[key];
+    }, []);
+
+    const getElements = () => {
+        const keys = [];
+
+        const elms = _.compact(
+            Array.from(Object.entries(refs.get('elements'))),
+        );
+
+        while (elms.length > 0) {
+            const [key, elm] = elms.shift();
+            if (!elm) continue;
+
+            let tag;
+
+            try {
+                tag = elm.tagName ? elm.tagName.toLowerCase() : null;
+            } catch (err) {}
+
+            if (tag) {
+                keys.push(key);
+            } else {
+                Object.keys(elm).forEach((k) =>
+                    elms.push([`${key}.${k}`, elm[k]]),
+                );
+            }
+        }
+
+        const values = state.get('value');
+
+        const output = keys.reduce((arr, key) => {
+            const ref = refs.get(`elements.${key}`);
+            if (!ref) return arr;
+
+            const tag = ref.tagName.toLowerCase();
+
+            const type = ref.type;
+
+            let val = op.get(values, key);
+
+            let checked;
+            if (type === 'checkbox' || type === 'radio') {
+                checked = ref.checked;
+            }
+
+            const typeahead = !!ref.closest('.typeahead');
+
+            arr.push({ key, ref, tag, type, value: val, checked, typeahead });
+            return arr;
+        }, []);
+
+        return output;
+    };
+
+    const getFormValues = useCallback(() => {
+        if (!refs.get('form')) return {};
+
+        const formData = new FormData(refs.get('form'));
+        const formValue = Object.fromEntries(formData.entries());
+
+        const output = Object.entries(formValue).reduce((obj, [key, value]) => {
+            let v = formatValue(key, value);
+
+            if (!_.isEmpty(v) || v === 0) {
+                op.set(obj, key, v);
+            }
+
+            return obj;
+        }, {});
+
+        return output;
+    }, []);
+
+    const getValueKeys = (v) => {
+        const keys = Object.keys(v);
+        const karr = [];
+        while (keys.length > 0) {
+            const key = keys.shift();
+            const val = op.get(v, key);
+
+            if (_.isArray(val)) {
+                karr.push(key);
+            } else {
+                if (_.isObject(val)) {
+                    Object.keys(val).forEach((k) => karr.push(`${key}.${k}`));
+                } else {
+                    karr.push(key);
+                }
+            }
+        }
+
+        return karr;
+    };
+
+    const isControlled = useCallback(
+        () => Boolean(initialValue && op.has(props, 'onChange')),
+        [],
+    );
+
+    const register = useCallback((elm) => {
+        if (!elm) return;
+        if (!elm.name) return;
+
+        let elements = refs.get('elements');
+        op.ensureExists(elements, elm.name);
+
+        op.set(elements, elm.name, elm);
+
+        refs.set('elements', elements);
+        return state;
+    }, []);
+
+    const reset = useCallback(() => {
+        const values = state.get('resetValue', {});
+
+        setError();
+
+        applyValues(values);
+
+        dispatch('reset');
+
+        _onChange();
+
+        setStatus(Form.STATUS.READY);
+
+        return state;
+    }, []);
+
+    const runAsyncValidator = useCallback((prom) => {
+        const validators = state.get('asyncValidators', []);
+        validators.push(prom);
+        state.set('asyncValidators', validators);
+        return prom;
+    }, []);
+
+    const setError = useCallback((key, message, emit = false) => {
+        const elms = getElements();
+
+        if (!key || !message) {
+            state.set('errors', null, false);
+            elms.forEach((item) => item.ref.removeAttribute('aria-invalid'));
+        } else {
+            const errors = error();
+            op.set(errors, key, message);
+            state.set('errors', errors, emit);
+        }
+
+        return state;
+    }, []);
+
+    const clearError = (fieldName) => {
+        if (!fieldName) {
+            return setError();
+        } else {
+            const errors = state.get('errors') || {};
+
+            op.del(errors, fieldName);
+
+            state.set('errors', null, false);
+
+            state.set('errors', errors);
+
+            dispatch('clear-error', { detail: { fieldName } });
+
+            return state;
+        }
+    };
+
+    const setValue = useCallback((key, value = null) => {
+        if (!key || (_.isObject(key) && Object.keys(key).length < 1)) {
+            state.set('value', null, false);
+            state.set('value', {}, false);
+        } else {
+            if (_.isObject(key)) {
+                state.set('value', key, false);
+            } else {
+                state.set(`value.${key}`, value, false);
+            }
+        }
+
+        applyValues(state.get('value'));
+
+        return state;
+    }, []);
+
+    const submit = useCallback(async () => {
+        if (isStatus(Form.STATUS.PROCESSING)) return state;
+
+        const value = { ...state.value };
+
+        getValueKeys(value).forEach((k) => {
+            const v = op.get(value, k);
+            const val = _.isArray(v) ? _.compact(v) : v;
+            op.set(value, k, val);
+        });
+
+        dispatch('before-submit', { value });
+
+        const isValid = await validate(value);
+
+        if (isValid !== true) {
+            setStatus(Form.STATUS.INVALID, true);
+            return state;
+        }
+
+        setStatus(Form.STATUS.READY, true);
+
+        dispatch('submit', { value });
+
+        return state;
+    }, []);
+
+    const unregister = useCallback((name) => {
+        refs.set(`elements.${name}`, null);
+        return state;
+    }, []);
+
+    const validate = useCallback(async (values) => {
+        state.set('asyncValidators', [], false);
+
+        const elms = getElements();
+
+        // clear errors
+        setError();
+
+        const reqs = elms.filter((item) => {
+            return item.ref.getAttribute('aria-required') === 'true';
+        });
+
+        reqs.forEach((item) => {
+            if (!op.get(values, item.key)) {
+                const message =
+                    item.ref.getAttribute('aria-errormessage') ||
+                    `${item.key} is a required field`;
+
+                setError(item.key, message);
+            }
+        });
+
+        let errors = error();
+
+        dispatch('validate', { errors, values });
+
+        const asyncValidators = state.get('asyncValidators', []);
+        await Promise.all(asyncValidators);
+
+        state.set('asyncValidators', [], false);
+
+        errors = error();
+
+        return Object.keys(errors).length < 1 || errors;
+    }, []);
+
+    const _onChange = useCallback((e) => {
+        if (e && e.target) {
+            const field = e.target.name;
+            if (!field) return;
+
+            const checks = ['checkbox', 'radio'];
+            const type = e.target.getAttribute('type');
+            const isCheckable = type ? checks.includes(type) : false;
+
+            let value = isCheckable
+                ? e.target.checked
+                    ? e.target.value || true
+                    : null
+                : e.target.value;
+
+            value = value === 'true' ? true : value;
+
+            const previous = op.get(state.get('value'), field);
+            const changed = { field, value, previous };
+
+            if (isControlled()) {
+                setValue(initialValue);
+            } else {
+                setValue(field, value);
+            }
+
+            if (op.get(previous, changed.field) !== changed.value) {
+                dispatch('change', { detail: { changed } });
+            }
+        } else {
+            setValue(getFormValues());
+        }
+    }, []);
+
+    const _dispatchChanges = (prev = {}, curr = {}) =>
+        _.chain([Object.keys(prev), Object.keys(curr)])
+            .flatten()
+            .uniq()
+            .value()
+            .forEach((field) => {
+                const p = op.get(prev, field);
+                const c = op.get(curr, field);
+
+                if (p !== c) {
+                    const changed = { field, previous: p, value: c };
+                    dispatch('change', { detail: { changed } });
+                }
+            });
+
+    const _onComplete = useCallback((results) => {
+        setStatus('complete', true);
+        dispatch(Form.STATUS.COMPLETE, { results });
+    }, []);
+
+    const _onInputChange = useCallback((e, callback) => {
+        if (_.isFunction(callback)) {
+            callback(e);
+        }
+
+        if (e.defaultPrevented) return;
+
+        const name = e.target.name;
+        const current = state.get(['value', name]);
+
+        if (current !== e.target.value) {
+            dispatch('input', { element: e.target, detail: e });
+        }
+    }, []);
+
+    const _onError = useCallback(() => {
+        if (Object.keys(error()).length < 1) return;
+
+        const elms = getElements();
+
+        const earr = [];
+
+        elms.forEach((item) => {
+            if (error(item.key)) {
+                item.ref.setAttribute('aria-invalid', 'true');
+                earr.push(item.ref);
+            } else {
+                item.ref.removeAttribute('aria-invalid');
+            }
+        });
+
+        dispatch('error', { errors: error(), elements: earr });
+
+        setStatus('ready', true);
+    }, []);
+
+    const _onReset = useCallback(() => {
+        reset();
+    }, []);
+
+    const _onSubmit = useCallback((e) => {
+        e.preventDefault();
+        submit();
+    }, []);
+
+    const _setError = (key, message, emit = true) =>
+        setError(key, message, emit);
+
+    const _setStatus = (...args) => {
+        setStatus(...args);
+        return state;
+    };
+
+    const _setValue = (...args) => {
+        if (isControlled()) {
+            console.warn(
+                'Form.setValue() can only be called on an uncontrolled form',
+            );
+            return;
+        }
+
+        const previous = { ...state.value };
+
+        setValue(...args);
+        state.set('update', Date.now());
+
+        _dispatchChanges(previous, state.get('value', {}));
+
+        return state;
+    };
+
+    // External interface
+    state.refs = refs;
+    state.props = props;
+    state.status = status;
+    state.controlled = isControlled();
+
+    state.extend('childrenMap', childrenMap);
+    state.extend('childClone', childClone);
+    state.extend('clearError', clearError);
+    state.extend('complete', complete);
+    state.extend('dispatch', dispatch);
+    state.extend('elements', getElements);
+    state.extend('error', error);
+    state.extend('isStatus', isStatus);
+    state.extend('register', register);
+    state.extend('reset', reset);
+    state.extend('submit', submit);
+    state.extend('runAsyncValidator', runAsyncValidator);
+    state.extend('setError', _setError);
+    state.extend('setStatus', _setStatus);
+    state.extend('setValue', _setValue);
+    state.extend('unregister', unregister);
+    state.extend('validate', validate);
+
+    useImperativeHandle(ref, () => state);
+
+    /**
+     * -------------------------------------------------------
+     * Side Effects
+     * -------------------------------------------------------
+     */
+
+    // 1.0
+    useEffect(() => {
+        if (!initVal) return;
+        state.set('resetValue', initVal, true);
+        setValue(_.isObject(initVal) ? initVal : {});
+    }, [initVal]);
+
+    // 2.0
+    useEffect(() => {
+        applyValues(state.get('value', {}));
+        state.set('update', Date.now());
+    }, [state.get('value')]);
+
+    // 3.0
+    useEffect(() => {
+        state.status = status;
+        dispatch('status', { status });
+
+        if (isStatus(Form.STATUS.COMPLETE)) setStatus('ready');
+
+        state.set('update', Date.now());
+    }, [status]);
+
+    // 4.0
+    useEffect(_onError, [state.get('errors')]);
+
+    // 5.0
+    useEffect(() => {
+        if (!isStatus('init')) return;
+        if (!refs.get('form')) return;
+        setValue(getFormValues());
+        setStatus(Form.STATUS.READY, true);
+    });
+
+    // 6.0
+
+    // Render
+    return (
+        <form
+            noValidate
+            style={style}
+            id={refs.get('id')}
+            onReset={_onReset}
+            onChange={_onChange}
+            onSubmit={_onSubmit}
+            className={cn(namespace, className)}
+            {...filteredProps(props)}
+            ref={(elm) => refs.set('form', elm)}
+        >
+            <FormContext.Provider value={state}>
+                {childrenMap(children)}
+            </FormContext.Provider>
+        </form>
+    );
+};
+
+Form = forwardRef(Form);
+
+Form.propTypes = {
+    className: PropTypes.string,
+    defaultValue: PropTypes.object,
+    id: PropTypes.string,
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    onComplete: PropTypes.func,
+    onError: PropTypes.func,
+    onRegister: PropTypes.func,
+    onSubmit: PropTypes.func,
+    onValidate: PropTypes.func,
+    style: PropTypes.object,
+    value: PropTypes.object,
+};
+
+Form.defaultProps = {
+    namespace: 'form-group',
+    style: {},
+};
+
+Form.STATUS = {
+    COMPLETE: 'complete',
+    INVALID: 'invalid',
+    INIT: 'init',
+    PROCESSING: 'processing',
+    READY: 'ready',
+};
+
+export { Form, FormContext, FormError, FormRegister };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/index.js
new file mode 100644
index 00000000..8298bf7f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/index.js
@@ -0,0 +1,808 @@
+// THIS FILE IS GENERATED BY THE `$ arcli icons` command
+// DO NOT DIRECTLY EDIT !!!!!!!!!!!!!!!!
+
+import Activity from './svgs/Activity';
+import Airplay from './svgs/Airplay';
+import AlertCircle from './svgs/AlertCircle';
+import AlertOctagon from './svgs/AlertOctagon';
+import AlertTriangle from './svgs/AlertTriangle';
+import AlignCenter from './svgs/AlignCenter';
+import AlignJustify from './svgs/AlignJustify';
+import AlignLeft from './svgs/AlignLeft';
+import AlignRight from './svgs/AlignRight';
+import Anchor from './svgs/Anchor';
+import Aperture from './svgs/Aperture';
+import Archive from './svgs/Archive';
+import ArrowDown from './svgs/ArrowDown';
+import ArrowDownCircle from './svgs/ArrowDownCircle';
+import ArrowDownLeft from './svgs/ArrowDownLeft';
+import ArrowDownRight from './svgs/ArrowDownRight';
+import ArrowLeft from './svgs/ArrowLeft';
+import ArrowLeftCircle from './svgs/ArrowLeftCircle';
+import ArrowRight from './svgs/ArrowRight';
+import ArrowRightCircle from './svgs/ArrowRightCircle';
+import ArrowUp from './svgs/ArrowUp';
+import ArrowUpCircle from './svgs/ArrowUpCircle';
+import ArrowUpLeft from './svgs/ArrowUpLeft';
+import ArrowUpRight from './svgs/ArrowUpRight';
+import AtSign from './svgs/AtSign';
+import Award from './svgs/Award';
+import BarChart from './svgs/BarChart';
+import BarChart2 from './svgs/BarChart2';
+import Battery from './svgs/Battery';
+import BatteryCharging from './svgs/BatteryCharging';
+import Bell from './svgs/Bell';
+import BellOff from './svgs/BellOff';
+import Bluetooth from './svgs/Bluetooth';
+import Bold from './svgs/Bold';
+import Book from './svgs/Book';
+import BookOpen from './svgs/BookOpen';
+import Bookmark from './svgs/Bookmark';
+import Box from './svgs/Box';
+import Briefcase from './svgs/Briefcase';
+import Calendar from './svgs/Calendar';
+import Camera from './svgs/Camera';
+import CameraOff from './svgs/CameraOff';
+import Cast from './svgs/Cast';
+import Check from './svgs/Check';
+import CheckCircle from './svgs/CheckCircle';
+import CheckSquare from './svgs/CheckSquare';
+import ChevronDown from './svgs/ChevronDown';
+import ChevronLeft from './svgs/ChevronLeft';
+import ChevronRight from './svgs/ChevronRight';
+import ChevronUp from './svgs/ChevronUp';
+import ChevronsDown from './svgs/ChevronsDown';
+import ChevronsLeft from './svgs/ChevronsLeft';
+import ChevronsRight from './svgs/ChevronsRight';
+import ChevronsUp from './svgs/ChevronsUp';
+import Chrome from './svgs/Chrome';
+import Circle from './svgs/Circle';
+import Clipboard from './svgs/Clipboard';
+import Clock from './svgs/Clock';
+import Cloud from './svgs/Cloud';
+import CloudDrizzle from './svgs/CloudDrizzle';
+import CloudLightning from './svgs/CloudLightning';
+import CloudOff from './svgs/CloudOff';
+import CloudRain from './svgs/CloudRain';
+import CloudSnow from './svgs/CloudSnow';
+import Code from './svgs/Code';
+import Codepen from './svgs/Codepen';
+import Command from './svgs/Command';
+import Compass from './svgs/Compass';
+import Copy from './svgs/Copy';
+import CornerDownLeft from './svgs/CornerDownLeft';
+import CornerDownRight from './svgs/CornerDownRight';
+import CornerLeftDown from './svgs/CornerLeftDown';
+import CornerLeftUp from './svgs/CornerLeftUp';
+import CornerRightDown from './svgs/CornerRightDown';
+import CornerRightUp from './svgs/CornerRightUp';
+import CornerUpLeft from './svgs/CornerUpLeft';
+import CornerUpRight from './svgs/CornerUpRight';
+import Cpu from './svgs/Cpu';
+import CreditCard from './svgs/CreditCard';
+import Crop from './svgs/Crop';
+import Crosshair from './svgs/Crosshair';
+import Database from './svgs/Database';
+import Delete from './svgs/Delete';
+import Disc from './svgs/Disc';
+import DollarSign from './svgs/DollarSign';
+import Download from './svgs/Download';
+import DownloadCloud from './svgs/DownloadCloud';
+import Droplet from './svgs/Droplet';
+import Edit from './svgs/Edit';
+import Edit2 from './svgs/Edit2';
+import Edit3 from './svgs/Edit3';
+import ExternalLink from './svgs/ExternalLink';
+import Eye from './svgs/Eye';
+import EyeOff from './svgs/EyeOff';
+import Facebook from './svgs/Facebook';
+import FastForward from './svgs/FastForward';
+import Feather from './svgs/Feather';
+import File from './svgs/File';
+import FileMinus from './svgs/FileMinus';
+import FilePlus from './svgs/FilePlus';
+import FileText from './svgs/FileText';
+import Film from './svgs/Film';
+import Filter from './svgs/Filter';
+import Flag from './svgs/Flag';
+import Folder from './svgs/Folder';
+import FolderMinus from './svgs/FolderMinus';
+import FolderPlus from './svgs/FolderPlus';
+import Gift from './svgs/Gift';
+import GitBranch from './svgs/GitBranch';
+import GitCommit from './svgs/GitCommit';
+import GitMerge from './svgs/GitMerge';
+import GitPullRequest from './svgs/GitPullRequest';
+import Github from './svgs/Github';
+import Gitlab from './svgs/Gitlab';
+import Globe from './svgs/Globe';
+import Grid from './svgs/Grid';
+import HardDrive from './svgs/HardDrive';
+import Hash from './svgs/Hash';
+import Headphones from './svgs/Headphones';
+import Heart from './svgs/Heart';
+import HelpCircle from './svgs/HelpCircle';
+import Home from './svgs/Home';
+import Image from './svgs/Image';
+import Inbox from './svgs/Inbox';
+import Info from './svgs/Info';
+import Instagram from './svgs/Instagram';
+import Italic from './svgs/Italic';
+import Layers from './svgs/Layers';
+import Layout from './svgs/Layout';
+import LifeBuoy from './svgs/LifeBuoy';
+import Link from './svgs/Link';
+import Link2 from './svgs/Link2';
+import Linkedin from './svgs/Linkedin';
+import List from './svgs/List';
+import Loader from './svgs/Loader';
+import Lock from './svgs/Lock';
+import LogIn from './svgs/LogIn';
+import LogOut from './svgs/LogOut';
+import Mail from './svgs/Mail';
+import Map from './svgs/Map';
+import MapPin from './svgs/MapPin';
+import Maximize from './svgs/Maximize';
+import Maximize2 from './svgs/Maximize2';
+import Menu from './svgs/Menu';
+import MessageCircle from './svgs/MessageCircle';
+import MessageSquare from './svgs/MessageSquare';
+import Mic from './svgs/Mic';
+import MicOff from './svgs/MicOff';
+import Minimize from './svgs/Minimize';
+import Minimize2 from './svgs/Minimize2';
+import Minus from './svgs/Minus';
+import MinusCircle from './svgs/MinusCircle';
+import MinusSquare from './svgs/MinusSquare';
+import Monitor from './svgs/Monitor';
+import Moon from './svgs/Moon';
+import MoreHorizontal from './svgs/MoreHorizontal';
+import MoreVertical from './svgs/MoreVertical';
+import Move from './svgs/Move';
+import Music from './svgs/Music';
+import Navigation from './svgs/Navigation';
+import Navigation2 from './svgs/Navigation2';
+import Octagon from './svgs/Octagon';
+import Package from './svgs/Package';
+import Paperclip from './svgs/Paperclip';
+import Pause from './svgs/Pause';
+import PauseCircle from './svgs/PauseCircle';
+import Percent from './svgs/Percent';
+import Phone from './svgs/Phone';
+import PhoneCall from './svgs/PhoneCall';
+import PhoneForwarded from './svgs/PhoneForwarded';
+import PhoneIncoming from './svgs/PhoneIncoming';
+import PhoneMissed from './svgs/PhoneMissed';
+import PhoneOff from './svgs/PhoneOff';
+import PhoneOutgoing from './svgs/PhoneOutgoing';
+import PieChart from './svgs/PieChart';
+import Play from './svgs/Play';
+import PlayCircle from './svgs/PlayCircle';
+import Plus from './svgs/Plus';
+import PlusCircle from './svgs/PlusCircle';
+import PlusSquare from './svgs/PlusSquare';
+import Pocket from './svgs/Pocket';
+import Power from './svgs/Power';
+import Printer from './svgs/Printer';
+import Radio from './svgs/Radio';
+import RefreshCcw from './svgs/RefreshCcw';
+import RefreshCw from './svgs/RefreshCw';
+import Repeat from './svgs/Repeat';
+import Rewind from './svgs/Rewind';
+import RotateCcw from './svgs/RotateCcw';
+import RotateCw from './svgs/RotateCw';
+import Rss from './svgs/Rss';
+import Save from './svgs/Save';
+import Scissors from './svgs/Scissors';
+import Search from './svgs/Search';
+import Send from './svgs/Send';
+import Server from './svgs/Server';
+import Settings from './svgs/Settings';
+import Share from './svgs/Share';
+import Share2 from './svgs/Share2';
+import Shield from './svgs/Shield';
+import ShieldOff from './svgs/ShieldOff';
+import ShoppingBag from './svgs/ShoppingBag';
+import ShoppingCart from './svgs/ShoppingCart';
+import Shuffle from './svgs/Shuffle';
+import Sidebar from './svgs/Sidebar';
+import SkipBack from './svgs/SkipBack';
+import SkipForward from './svgs/SkipForward';
+import Slack from './svgs/Slack';
+import Slash from './svgs/Slash';
+import Sliders from './svgs/Sliders';
+import Smartphone from './svgs/Smartphone';
+import Speaker from './svgs/Speaker';
+import Square from './svgs/Square';
+import Star from './svgs/Star';
+import StopCircle from './svgs/StopCircle';
+import Sun from './svgs/Sun';
+import Sunrise from './svgs/Sunrise';
+import Sunset from './svgs/Sunset';
+import Tablet from './svgs/Tablet';
+import Tag from './svgs/Tag';
+import Target from './svgs/Target';
+import Terminal from './svgs/Terminal';
+import Thermometer from './svgs/Thermometer';
+import ThumbsDown from './svgs/ThumbsDown';
+import ThumbsUp from './svgs/ThumbsUp';
+import ToggleLeft from './svgs/ToggleLeft';
+import ToggleRight from './svgs/ToggleRight';
+import Trash from './svgs/Trash';
+import Trash2 from './svgs/Trash2';
+import TrendingDown from './svgs/TrendingDown';
+import TrendingUp from './svgs/TrendingUp';
+import Triangle from './svgs/Triangle';
+import Truck from './svgs/Truck';
+import Tv from './svgs/Tv';
+import Twitter from './svgs/Twitter';
+import Type from './svgs/Type';
+import Umbrella from './svgs/Umbrella';
+import Underline from './svgs/Underline';
+import Unlock from './svgs/Unlock';
+import Upload from './svgs/Upload';
+import UploadCloud from './svgs/UploadCloud';
+import User from './svgs/User';
+import UserCheck from './svgs/UserCheck';
+import UserMinus from './svgs/UserMinus';
+import UserPlus from './svgs/UserPlus';
+import UserX from './svgs/UserX';
+import Users from './svgs/Users';
+import Video from './svgs/Video';
+import VideoOff from './svgs/VideoOff';
+import Voicemail from './svgs/Voicemail';
+import Volume from './svgs/Volume';
+import Volume1 from './svgs/Volume1';
+import Volume2 from './svgs/Volume2';
+import VolumeX from './svgs/VolumeX';
+import Watch from './svgs/Watch';
+import Wifi from './svgs/Wifi';
+import WifiOff from './svgs/WifiOff';
+import Wind from './svgs/Wind';
+import X from './svgs/X';
+import XCircle from './svgs/XCircle';
+import XSquare from './svgs/XSquare';
+import Youtube from './svgs/Youtube';
+import Zap from './svgs/Zap';
+import ZapOff from './svgs/ZapOff';
+import ZoomIn from './svgs/ZoomIn';
+import ZoomOut from './svgs/ZoomOut';
+
+const icons = {
+    Activity,
+    Airplay,
+    AlertCircle,
+    AlertOctagon,
+    AlertTriangle,
+    AlignCenter,
+    AlignJustify,
+    AlignLeft,
+    AlignRight,
+    Anchor,
+    Aperture,
+    Archive,
+    ArrowDown,
+    ArrowDownCircle,
+    ArrowDownLeft,
+    ArrowDownRight,
+    ArrowLeft,
+    ArrowLeftCircle,
+    ArrowRight,
+    ArrowRightCircle,
+    ArrowUp,
+    ArrowUpCircle,
+    ArrowUpLeft,
+    ArrowUpRight,
+    AtSign,
+    Award,
+    BarChart,
+    BarChart2,
+    Battery,
+    BatteryCharging,
+    Bell,
+    BellOff,
+    Bluetooth,
+    Bold,
+    Book,
+    BookOpen,
+    Bookmark,
+    Box,
+    Briefcase,
+    Calendar,
+    Camera,
+    CameraOff,
+    Cast,
+    Check,
+    CheckCircle,
+    CheckSquare,
+    ChevronDown,
+    ChevronLeft,
+    ChevronRight,
+    ChevronUp,
+    ChevronsDown,
+    ChevronsLeft,
+    ChevronsRight,
+    ChevronsUp,
+    Chrome,
+    Circle,
+    Clipboard,
+    Clock,
+    Cloud,
+    CloudDrizzle,
+    CloudLightning,
+    CloudOff,
+    CloudRain,
+    CloudSnow,
+    Code,
+    Codepen,
+    Command,
+    Compass,
+    Copy,
+    CornerDownLeft,
+    CornerDownRight,
+    CornerLeftDown,
+    CornerLeftUp,
+    CornerRightDown,
+    CornerRightUp,
+    CornerUpLeft,
+    CornerUpRight,
+    Cpu,
+    CreditCard,
+    Crop,
+    Crosshair,
+    Database,
+    Delete,
+    Disc,
+    DollarSign,
+    Download,
+    DownloadCloud,
+    Droplet,
+    Edit,
+    Edit2,
+    Edit3,
+    ExternalLink,
+    Eye,
+    EyeOff,
+    Facebook,
+    FastForward,
+    Feather,
+    File,
+    FileMinus,
+    FilePlus,
+    FileText,
+    Film,
+    Filter,
+    Flag,
+    Folder,
+    FolderMinus,
+    FolderPlus,
+    Gift,
+    GitBranch,
+    GitCommit,
+    GitMerge,
+    GitPullRequest,
+    Github,
+    Gitlab,
+    Globe,
+    Grid,
+    HardDrive,
+    Hash,
+    Headphones,
+    Heart,
+    HelpCircle,
+    Home,
+    Image,
+    Inbox,
+    Info,
+    Instagram,
+    Italic,
+    Layers,
+    Layout,
+    LifeBuoy,
+    Link,
+    Link2,
+    Linkedin,
+    List,
+    Loader,
+    Lock,
+    LogIn,
+    LogOut,
+    Mail,
+    Map,
+    MapPin,
+    Maximize,
+    Maximize2,
+    Menu,
+    MessageCircle,
+    MessageSquare,
+    Mic,
+    MicOff,
+    Minimize,
+    Minimize2,
+    Minus,
+    MinusCircle,
+    MinusSquare,
+    Monitor,
+    Moon,
+    MoreHorizontal,
+    MoreVertical,
+    Move,
+    Music,
+    Navigation,
+    Navigation2,
+    Octagon,
+    Package,
+    Paperclip,
+    Pause,
+    PauseCircle,
+    Percent,
+    Phone,
+    PhoneCall,
+    PhoneForwarded,
+    PhoneIncoming,
+    PhoneMissed,
+    PhoneOff,
+    PhoneOutgoing,
+    PieChart,
+    Play,
+    PlayCircle,
+    Plus,
+    PlusCircle,
+    PlusSquare,
+    Pocket,
+    Power,
+    Printer,
+    Radio,
+    RefreshCcw,
+    RefreshCw,
+    Repeat,
+    Rewind,
+    RotateCcw,
+    RotateCw,
+    Rss,
+    Save,
+    Scissors,
+    Search,
+    Send,
+    Server,
+    Settings,
+    Share,
+    Share2,
+    Shield,
+    ShieldOff,
+    ShoppingBag,
+    ShoppingCart,
+    Shuffle,
+    Sidebar,
+    SkipBack,
+    SkipForward,
+    Slack,
+    Slash,
+    Sliders,
+    Smartphone,
+    Speaker,
+    Square,
+    Star,
+    StopCircle,
+    Sun,
+    Sunrise,
+    Sunset,
+    Tablet,
+    Tag,
+    Target,
+    Terminal,
+    Thermometer,
+    ThumbsDown,
+    ThumbsUp,
+    ToggleLeft,
+    ToggleRight,
+    Trash,
+    Trash2,
+    TrendingDown,
+    TrendingUp,
+    Triangle,
+    Truck,
+    Tv,
+    Twitter,
+    Type,
+    Umbrella,
+    Underline,
+    Unlock,
+    Upload,
+    UploadCloud,
+    User,
+    UserCheck,
+    UserMinus,
+    UserPlus,
+    UserX,
+    Users,
+    Video,
+    VideoOff,
+    Voicemail,
+    Volume,
+    Volume1,
+    Volume2,
+    VolumeX,
+    Watch,
+    Wifi,
+    WifiOff,
+    Wind,
+    X,
+    XCircle,
+    XSquare,
+    Youtube,
+    Zap,
+    ZapOff,
+    ZoomIn,
+    ZoomOut,
+};
+
+export {
+    icons as default,
+    Activity,
+    Airplay,
+    AlertCircle,
+    AlertOctagon,
+    AlertTriangle,
+    AlignCenter,
+    AlignJustify,
+    AlignLeft,
+    AlignRight,
+    Anchor,
+    Aperture,
+    Archive,
+    ArrowDown,
+    ArrowDownCircle,
+    ArrowDownLeft,
+    ArrowDownRight,
+    ArrowLeft,
+    ArrowLeftCircle,
+    ArrowRight,
+    ArrowRightCircle,
+    ArrowUp,
+    ArrowUpCircle,
+    ArrowUpLeft,
+    ArrowUpRight,
+    AtSign,
+    Award,
+    BarChart,
+    BarChart2,
+    Battery,
+    BatteryCharging,
+    Bell,
+    BellOff,
+    Bluetooth,
+    Bold,
+    Book,
+    BookOpen,
+    Bookmark,
+    Box,
+    Briefcase,
+    Calendar,
+    Camera,
+    CameraOff,
+    Cast,
+    Check,
+    CheckCircle,
+    CheckSquare,
+    ChevronDown,
+    ChevronLeft,
+    ChevronRight,
+    ChevronUp,
+    ChevronsDown,
+    ChevronsLeft,
+    ChevronsRight,
+    ChevronsUp,
+    Chrome,
+    Circle,
+    Clipboard,
+    Clock,
+    Cloud,
+    CloudDrizzle,
+    CloudLightning,
+    CloudOff,
+    CloudRain,
+    CloudSnow,
+    Code,
+    Codepen,
+    Command,
+    Compass,
+    Copy,
+    CornerDownLeft,
+    CornerDownRight,
+    CornerLeftDown,
+    CornerLeftUp,
+    CornerRightDown,
+    CornerRightUp,
+    CornerUpLeft,
+    CornerUpRight,
+    Cpu,
+    CreditCard,
+    Crop,
+    Crosshair,
+    Database,
+    Delete,
+    Disc,
+    DollarSign,
+    Download,
+    DownloadCloud,
+    Droplet,
+    Edit,
+    Edit2,
+    Edit3,
+    ExternalLink,
+    Eye,
+    EyeOff,
+    Facebook,
+    FastForward,
+    Feather,
+    File,
+    FileMinus,
+    FilePlus,
+    FileText,
+    Film,
+    Filter,
+    Flag,
+    Folder,
+    FolderMinus,
+    FolderPlus,
+    Gift,
+    GitBranch,
+    GitCommit,
+    GitMerge,
+    GitPullRequest,
+    Github,
+    Gitlab,
+    Globe,
+    Grid,
+    HardDrive,
+    Hash,
+    Headphones,
+    Heart,
+    HelpCircle,
+    Home,
+    Image,
+    Inbox,
+    Info,
+    Instagram,
+    Italic,
+    Layers,
+    Layout,
+    LifeBuoy,
+    Link,
+    Link2,
+    Linkedin,
+    List,
+    Loader,
+    Lock,
+    LogIn,
+    LogOut,
+    Mail,
+    Map,
+    MapPin,
+    Maximize,
+    Maximize2,
+    Menu,
+    MessageCircle,
+    MessageSquare,
+    Mic,
+    MicOff,
+    Minimize,
+    Minimize2,
+    Minus,
+    MinusCircle,
+    MinusSquare,
+    Monitor,
+    Moon,
+    MoreHorizontal,
+    MoreVertical,
+    Move,
+    Music,
+    Navigation,
+    Navigation2,
+    Octagon,
+    Package,
+    Paperclip,
+    Pause,
+    PauseCircle,
+    Percent,
+    Phone,
+    PhoneCall,
+    PhoneForwarded,
+    PhoneIncoming,
+    PhoneMissed,
+    PhoneOff,
+    PhoneOutgoing,
+    PieChart,
+    Play,
+    PlayCircle,
+    Plus,
+    PlusCircle,
+    PlusSquare,
+    Pocket,
+    Power,
+    Printer,
+    Radio,
+    RefreshCcw,
+    RefreshCw,
+    Repeat,
+    Rewind,
+    RotateCcw,
+    RotateCw,
+    Rss,
+    Save,
+    Scissors,
+    Search,
+    Send,
+    Server,
+    Settings,
+    Share,
+    Share2,
+    Shield,
+    ShieldOff,
+    ShoppingBag,
+    ShoppingCart,
+    Shuffle,
+    Sidebar,
+    SkipBack,
+    SkipForward,
+    Slack,
+    Slash,
+    Sliders,
+    Smartphone,
+    Speaker,
+    Square,
+    Star,
+    StopCircle,
+    Sun,
+    Sunrise,
+    Sunset,
+    Tablet,
+    Tag,
+    Target,
+    Terminal,
+    Thermometer,
+    ThumbsDown,
+    ThumbsUp,
+    ToggleLeft,
+    ToggleRight,
+    Trash,
+    Trash2,
+    TrendingDown,
+    TrendingUp,
+    Triangle,
+    Truck,
+    Tv,
+    Twitter,
+    Type,
+    Umbrella,
+    Underline,
+    Unlock,
+    Upload,
+    UploadCloud,
+    User,
+    UserCheck,
+    UserMinus,
+    UserPlus,
+    UserX,
+    Users,
+    Video,
+    VideoOff,
+    Voicemail,
+    Volume,
+    Volume1,
+    Volume2,
+    VolumeX,
+    Watch,
+    Wifi,
+    WifiOff,
+    Wind,
+    X,
+    XCircle,
+    XSquare,
+    Youtube,
+    Zap,
+    ZapOff,
+    ZoomIn,
+    ZoomOut,
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Activity.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Activity.js
new file mode 100644
index 00000000..2e9cfd04
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Activity.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Activity
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 469.333h-170.667c-17.067 0-34.133 12.8-38.4 29.867l-89.6 260.267-217.6-644.267c-4.267-17.067-21.333-29.867-38.4-29.867s-34.133 12.8-38.4 29.867l-119.467 354.133h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c17.067 0 34.133-12.8 38.4-29.867l89.6-260.267 217.6 648.533c4.267 17.067 21.333 29.867 38.4 29.867s34.133-12.8 38.4-29.867l119.467-354.133h140.8c25.6 0 42.667-17.067 42.667-42.667s-17.067-46.933-42.667-46.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Airplay.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Airplay.js
new file mode 100644
index 00000000..be0eb1e9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Airplay.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Airplay
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v426.667c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128z' />
+            <path d='M546.133 614.4c-17.067-21.333-51.2-21.333-64 0l-213.333 256c-8.533 12.8-12.8 29.867-4.267 46.933 4.267 12.8 17.067 21.333 34.133 21.333h426.667c17.067 0 29.867-8.533 38.4-25.6s4.267-34.133-4.267-46.933l-213.333-251.733zM388.267 853.333l123.733-145.067 123.733 145.067h-247.467z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertCircle.js
new file mode 100644
index 00000000..90a86837
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertCircle.js
@@ -0,0 +1,14 @@
+// Icon: Feather.AlertCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M512 298.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertOctagon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertOctagon.js
new file mode 100644
index 00000000..e1ae1a9e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertOctagon.js
@@ -0,0 +1,14 @@
+// Icon: Feather.AlertOctagon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.533 307.2l-251.733-251.733c-4.267-8.533-17.067-12.8-29.867-12.8h-349.867c-12.8 0-25.6 4.267-29.867 12.8l-251.733 251.733c-8.533 4.267-12.8 17.067-12.8 29.867v354.133c0 12.8 4.267 21.333 12.8 29.867l251.733 251.733c4.267 4.267 17.067 8.533 29.867 8.533h354.133c12.8 0 21.333-4.267 29.867-12.8l251.733-251.733c8.533-8.533 12.8-17.067 12.8-29.867v-349.867c-4.267-12.8-8.533-25.6-17.067-29.867zM896 669.867l-226.133 226.133h-315.733l-226.133-226.133v-315.733l226.133-226.133h320l221.867 226.133v315.733z' />
+            <path d='M512 298.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertTriangle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertTriangle.js
new file mode 100644
index 00000000..96b82716
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlertTriangle.js
@@ -0,0 +1,14 @@
+// Icon: Feather.AlertTriangle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 746.667l-358.4-605.867c-17.067-29.867-46.933-51.2-81.067-59.733s-68.267-4.267-98.133 12.8c-17.067 8.533-34.133 25.6-42.667 42.667 0 0 0 0 0 0l-358.4 610.133c-34.133 59.733-12.8 140.8 46.933 174.933 17.067 12.8 38.4 17.067 59.733 17.067h725.333c34.133 0 68.267-12.8 89.6-38.4 25.6-25.6 38.4-55.467 38.4-89.6-4.267-21.333-8.533-46.933-21.333-64zM904.533 840.533c-8.533 8.533-21.333 12.8-29.867 12.8h-725.333c-8.533 0-12.8 0-21.333-4.267-21.333-12.8-25.6-38.4-17.067-59.733l362.667-601.6c4.267-4.267 8.533-12.8 12.8-12.8 21.333-12.8 46.933-4.267 59.733 12.8l362.667 601.6c4.267 4.267 4.267 12.8 4.267 21.333 4.267 12.8-4.267 21.333-8.533 29.867z' />
+            <path d='M512 341.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 695.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignCenter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignCenter.js
new file mode 100644
index 00000000..72c395da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignCenter.js
@@ -0,0 +1,15 @@
+// Icon: Feather.AlignCenter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-512z' />
+            <path d='M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M768 725.333h-512c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignJustify.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignJustify.js
new file mode 100644
index 00000000..2275ecb7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignJustify.js
@@ -0,0 +1,15 @@
+// Icon: Feather.AlignJustify
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 384h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M896 725.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignLeft.js
new file mode 100644
index 00000000..43deda76
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignLeft.js
@@ -0,0 +1,15 @@
+// Icon: Feather.AlignLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 469.333h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M725.333 725.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignRight.js
new file mode 100644
index 00000000..9bc66efb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AlignRight.js
@@ -0,0 +1,15 @@
+// Icon: Feather.AlignRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 384h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M896 725.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Anchor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Anchor.js
new file mode 100644
index 00000000..d769ba0f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Anchor.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Anchor
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 469.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h81.067c-21.333 179.2-162.133 320-337.067 337.067v-512c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667c0 81.067 55.467 145.067 128 166.4v516.267c-179.2-21.333-320-162.133-337.067-337.067h81.067c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-25.6 0-42.667 17.067-42.667 42.667 0 260.267 209.067 469.333 469.333 469.333s469.333-209.067 469.333-469.333c0-29.867-17.067-46.933-42.667-46.933zM426.667 213.333c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333c-46.933 0-85.333-38.4-85.333-85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Aperture.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Aperture.js
new file mode 100644
index 00000000..ac6a08bf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Aperture.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Aperture
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 785.067c55.467-76.8 89.6-170.667 89.6-273.067 0-64-12.8-128-38.4-183.467 0 0 0-4.267 0-4.267-64-149.333-204.8-256-375.467-277.333 0 0-4.267 0-4.267 0-17.067-4.267-34.133-4.267-51.2-4.267-153.6 0-290.133 72.533-375.467 187.733 0 4.267-4.267 4.267-4.267 8.533-55.467 76.8-89.6 170.667-89.6 273.067 0 64 12.8 128 38.4 187.733 0 0 0 4.267 0 4.267 64 145.067 204.8 256 371.2 277.333 0 0 4.267 0 4.267 0 17.067 0 34.133 4.267 51.2 4.267 153.6 0 290.133-72.533 375.467-187.733 4.267-4.267 8.533-8.533 8.533-12.8zM584.533 640h-149.333l-72.533-128 72.533-128h149.333l72.533 128-72.533 128zM128 512c0-59.733 12.8-119.467 38.4-170.667l170.667 298.667h-187.733c-12.8-38.4-21.333-81.067-21.333-128zM682.667 384h187.733c12.8 38.4 21.333 81.067 21.333 128 0 59.733-12.8 119.467-38.4 170.667l-170.667-298.667zM832 298.667h-345.6l93.867-162.133c106.667 17.067 196.267 76.8 251.733 162.133zM486.4 128l-170.667 298.667-93.867-162.133c64-76.8 157.867-128 264.533-136.533zM192 725.333h345.6l-93.867 162.133c-106.667-17.067-196.267-76.8-251.733-162.133zM537.6 896l170.667-298.667 93.867 162.133c-64 76.8-157.867 128-264.533 136.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Archive.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Archive.js
new file mode 100644
index 00000000..690f0795
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Archive.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Archive
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 85.333h-938.667c-25.6 0-42.667 17.067-42.667 42.667v213.333c0 25.6 17.067 42.667 42.667 42.667h42.667v512c0 25.6 17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667v-512h42.667c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-25.6-17.067-42.667-42.667-42.667zM853.333 853.333h-682.667v-469.333h682.667v469.333zM938.667 298.667h-853.333v-128h853.333v128z' />
+            <path d='M426.667 554.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDown.js
new file mode 100644
index 00000000..e9835051
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M840.533 482.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-494.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v494.933l-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l298.667 298.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l298.667-298.667c17.067-17.067 17.067-42.667-0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownCircle.js
new file mode 100644
index 00000000..d856e2f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ArrowDownCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M652.8 482.133l-98.133 98.133v-238.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v238.933l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownLeft.js
new file mode 100644
index 00000000..bacf68fc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowDownLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M725.333 682.667h-324.267l354.133-354.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-354.133 354.133v-324.267c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v426.667c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h426.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownRight.js
new file mode 100644
index 00000000..1dd32675
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowDownRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowDownRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v324.267l-354.133-354.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l354.133 354.133h-324.267c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h426.667c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-426.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeft.js
new file mode 100644
index 00000000..eb825c62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 469.333h-494.933l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-298.667 298.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l298.667 298.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133h494.933c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeftCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeftCircle.js
new file mode 100644
index 00000000..01618001
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowLeftCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ArrowLeftCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M682.667 469.333h-238.933l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-170.667 170.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l170.667 170.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133h238.933c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRight.js
new file mode 100644
index 00000000..f5d7e32a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M849.067 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-298.667-298.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133h-494.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h494.933l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l298.667-298.667c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRightCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRightCircle.js
new file mode 100644
index 00000000..01a5420a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowRightCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ArrowRightCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M721.067 494.933c-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-238.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h238.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8 4.267-12.8 4.267-21.333 0-34.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUp.js
new file mode 100644
index 00000000..a15ff2a2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M840.533 482.133l-298.667-298.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-298.667 298.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l226.133-226.133v494.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-494.933l226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpCircle.js
new file mode 100644
index 00000000..824c4cef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ArrowUpCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M541.867 311.467c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l98.133-98.133v238.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-238.933l98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpLeft.js
new file mode 100644
index 00000000..8ac962ca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowUpLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M401.067 341.333h324.267c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-426.667c-4.267 0-12.8 0-17.067 4.267-8.533 4.267-17.067 12.8-21.333 21.333-4.267 4.267-4.267 12.8-4.267 17.067v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-324.267l354.133 354.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-354.133-354.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpRight.js
new file mode 100644
index 00000000..c6f4ba80
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ArrowUpRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ArrowUpRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M763.733 281.6c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-426.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h324.267l-354.133 354.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l354.133-354.133v324.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-4.267 0-12.8-4.267-17.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AtSign.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AtSign.js
new file mode 100644
index 00000000..d628b2ce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/AtSign.js
@@ -0,0 +1,12 @@
+// Icon: Feather.AtSign
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-123.733 0-243.2 46.933-332.8 136.533s-136.533 209.067-136.533 332.8c0 260.267 209.067 469.333 469.333 469.333 102.4 0 204.8-34.133 285.867-98.133 17.067-12.8 21.333-42.667 8.533-59.733s-42.667-21.333-59.733-8.533c-68.267 51.2-149.333 81.067-234.667 81.067-213.333 0-384-170.667-384-384 0-102.4 38.4-200.533 110.933-273.067s170.667-110.933 273.067-110.933c213.333 0 384 170.667 384 384v42.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-213.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v0c-34.133-25.6-81.067-42.667-128-42.667-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333c64 0 119.467-29.867 157.867-72.533 29.867 42.667 81.067 72.533 140.8 72.533 93.867 0 170.667-76.8 170.667-170.667v-42.667c0-260.267-209.067-469.333-469.333-469.333zM512 640c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Award.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Award.js
new file mode 100644
index 00000000..c47e6f33
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Award.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Award
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 341.333c0-187.733-153.6-341.333-341.333-341.333s-341.333 153.6-341.333 341.333c0 110.933 51.2 209.067 132.267 268.8l-46.933 366.933c-4.267 17.067 4.267 34.133 17.067 42.667s29.867 8.533 46.933 0l192-115.2 192 115.2c4.267 4.267 12.8 4.267 21.333 4.267s17.067-4.267 21.333-8.533 21.333-25.6 17.067-42.667l-46.933-362.667c85.333-59.733 136.533-157.867 136.533-268.8zM256 341.333c0-140.8 115.2-256 256-256s256 115.2 256 256-115.2 256-256 256-256-115.2-256-256zM669.867 900.267l-136.533-81.067c-12.8-8.533-29.867-8.533-42.667 0l-136.533 81.067 29.867-243.2c38.4 17.067 81.067 25.6 128 25.6s89.6-8.533 128-25.6l29.867 243.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart.js
new file mode 100644
index 00000000..eac44f92
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart.js
@@ -0,0 +1,14 @@
+// Icon: Feather.BarChart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 384c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M768 128c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M256 640c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart2.js
new file mode 100644
index 00000000..293cff5b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BarChart2.js
@@ -0,0 +1,14 @@
+// Icon: Feather.BarChart2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 384c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M512 128c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M256 554.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Battery.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Battery.js
new file mode 100644
index 00000000..e5b4bc72
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Battery.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Battery
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M725.333 213.333h-597.333c-72.533 0-128 55.467-128 128v341.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-341.333c0-72.533-55.467-128-128-128zM768 682.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v341.333z' />
+            <path d='M981.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BatteryCharging.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BatteryCharging.js
new file mode 100644
index 00000000..0e82206e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BatteryCharging.js
@@ -0,0 +1,15 @@
+// Icon: Feather.BatteryCharging
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M213.333 725.333h-85.333c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6 17.067-42.667 42.667-42.667h136.533c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-136.533c-72.533 0-128 55.467-128 128v341.333c0 72.533 55.467 128 128 128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M725.333 213.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667 17.067 42.667 42.667v341.333c0 25.6-17.067 42.667-42.667 42.667h-136.533c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h136.533c72.533 0 128-55.467 128-128v-341.333c0-72.533-55.467-128-128-128z' />
+            <path d='M981.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M593.067 490.667c-8.533-12.8-21.333-21.333-38.4-21.333h-174.933l128-187.733c12.8-21.333 8.533-46.933-12.8-59.733s-46.933-8.533-59.733 12.8l-170.667 256c-8.533 12.8-8.533 29.867 0 42.667 4.267 12.8 17.067 21.333 34.133 21.333h174.933l-128 187.733c-12.8 21.333-8.533 46.933 12.8 59.733 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-8.533 34.133-17.067l170.667-256c8.533-17.067 12.8-29.867 4.267-46.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bell.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bell.js
new file mode 100644
index 00000000..7bb69a03
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bell.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Bell
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M605.867 857.6c-21.333-12.8-46.933-4.267-59.733 17.067s-38.4 25.6-59.733 17.067c-8.533-4.267-12.8-8.533-17.067-17.067-12.8-21.333-38.4-25.6-59.733-17.067-21.333 12.8-25.6 38.4-17.067 59.733 12.8 21.333 25.6 34.133 46.933 46.933s42.667 17.067 64 17.067c42.667 0 85.333-21.333 110.933-64 21.333-21.333 12.8-46.933-8.533-59.733z' />
+            <path d='M938.667 682.667c-46.933 0-85.333-38.4-85.333-85.333v-213.333c0-187.733-153.6-341.333-341.333-341.333s-341.333 153.6-341.333 341.333v213.333c0 46.933-38.4 85.333-85.333 85.333-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h853.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM234.667 682.667c12.8-25.6 21.333-55.467 21.333-85.333v-213.333c0-140.8 115.2-256 256-256s256 115.2 256 256v213.333c0 29.867 8.533 59.733 21.333 85.333h-554.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BellOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BellOff.js
new file mode 100644
index 00000000..f54b9ea0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BellOff.js
@@ -0,0 +1,14 @@
+// Icon: Feather.BellOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M605.867 857.6c-21.333-12.8-46.933-4.267-59.733 17.067s-38.4 25.6-59.733 17.067c-8.533-4.267-12.8-8.533-17.067-17.067-12.8-21.333-38.4-25.6-59.733-17.067-21.333 12.8-25.6 38.4-17.067 59.733 12.8 21.333 25.6 34.133 46.933 46.933s42.667 17.067 64 17.067c42.667 0 85.333-21.333 110.933-64 21.333-21.333 12.8-46.933-8.533-59.733z' />
+            <path d='M388.267 162.133c123.733-68.267 277.333-25.6 349.867 98.133 17.067 34.133 29.867 81.067 29.867 123.733v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-59.733-17.067-115.2-42.667-166.4-93.867-162.133-302.933-221.867-465.067-128-21.333 8.533-29.867 34.133-17.067 55.467s38.4 25.6 59.733 17.067z' />
+            <path d='M1011.2 951.467l-256-256c0 0 0 0 0 0l-682.667-682.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467c-17.067 42.667-25.6 85.333-25.6 128v213.333c0 46.933-38.4 85.333-85.333 85.333-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h622.933l243.2 243.2c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM234.667 682.667c12.8-25.6 21.333-55.467 21.333-85.333v-213.333c0-21.333 4.267-42.667 8.533-59.733l358.4 358.4h-388.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bluetooth.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bluetooth.js
new file mode 100644
index 00000000..a8219a18
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bluetooth.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Bluetooth
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M571.733 512l204.8-204.8c17.067-17.067 17.067-42.667 0-59.733l-234.667-234.667c-12.8-12.8-29.867-17.067-46.933-8.533-17.067 4.267-25.6 21.333-25.6 38.4v366.933l-162.133-162.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l204.8 204.8-204.8 204.8c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l162.133-162.133v366.933c0 17.067 8.533 34.133 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8l234.667-234.667c17.067-17.067 17.067-42.667 0-59.733l-204.8-204.8zM554.667 145.067l132.267 132.267-132.267 132.267v-264.533zM554.667 878.933v-264.533l132.267 132.267-132.267 132.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bold.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bold.js
new file mode 100644
index 00000000..cfae99f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bold.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Bold
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 494.933c42.667-38.4 68.267-93.867 68.267-153.6 0-119.467-93.867-213.333-213.333-213.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h384c119.467 0 213.333-93.867 213.333-213.333 0-81.067-46.933-149.333-110.933-187.733zM298.667 213.333h298.667c72.533 0 128 55.467 128 128s-55.467 128-128 128h-298.667v-256zM640 810.667h-341.333v-256h341.333c72.533 0 128 55.467 128 128s-55.467 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Book.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Book.js
new file mode 100644
index 00000000..f6b32ca5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Book.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Book
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 42.667h-576c-81.067 0-149.333 68.267-149.333 149.333v640c0 81.067 68.267 149.333 149.333 149.333h576c25.6 0 42.667-17.067 42.667-42.667v-853.333c0-25.6-17.067-42.667-42.667-42.667zM277.333 128h533.333v554.667h-533.333c-21.333 0-42.667 4.267-64 17.067v-507.733c0-34.133 29.867-64 64-64zM277.333 896c-34.133 0-64-29.867-64-64s29.867-64 64-64h533.333v128h-533.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BookOpen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BookOpen.js
new file mode 100644
index 00000000..e64dd62c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/BookOpen.js
@@ -0,0 +1,12 @@
+// Icon: Feather.BookOpen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 85.333h-256c-68.267 0-132.267 34.133-170.667 85.333-38.4-51.2-102.4-85.333-170.667-85.333h-256c-25.6 0-42.667 17.067-42.667 42.667v640c0 25.6 17.067 42.667 42.667 42.667h298.667c46.933 0 85.333 38.4 85.333 85.333 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-46.933 38.4-85.333 85.333-85.333h298.667c25.6 0 42.667-17.067 42.667-42.667v-640c0-25.6-17.067-42.667-42.667-42.667zM469.333 746.667c-25.6-12.8-55.467-21.333-85.333-21.333h-256v-554.667h213.333c72.533 0 128 55.467 128 128v448zM896 725.333h-256c-29.867 0-59.733 8.533-85.333 21.333v-448c0-72.533 55.467-128 128-128h213.333v554.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bookmark.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bookmark.js
new file mode 100644
index 00000000..a1a51c1f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Bookmark.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Bookmark
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M725.333 85.333h-426.667c-72.533 0-128 55.467-128 128v682.667c0 17.067 8.533 29.867 21.333 38.4s29.867 4.267 42.667-4.267l273.067-196.267 273.067 196.267c8.533 4.267 17.067 8.533 25.6 8.533s12.8 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-682.667c4.267-72.533-51.2-128-123.733-128zM768 814.933l-230.4-166.4c-8.533-4.267-17.067-8.533-25.6-8.533s-17.067 4.267-25.6 8.533l-230.4 166.4v-601.6c0-25.6 17.067-42.667 42.667-42.667h426.667c25.6 0 42.667 17.067 42.667 42.667v601.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Box.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Box.js
new file mode 100644
index 00000000..e7b39a1b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Box.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Box
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M908.8 196.267l-341.333-170.667c0 0 0 0 0 0-34.133-17.067-76.8-17.067-115.2 0l-341.333 170.667c-42.667 21.333-68.267 64-68.267 110.933v405.333c0 46.933 25.6 93.867 72.533 115.2l341.333 170.667c17.067 8.533 38.4 12.8 55.467 12.8 21.333 0 38.4-4.267 55.467-12.8l341.333-170.667c42.667-21.333 72.533-64 72.533-115.2v-405.333c0-46.933-25.6-89.6-72.533-110.933zM494.933 98.133c4.267-4.267 12.8-4.267 17.067-4.267 8.533 0 12.8 0 17.067 4.267l315.733 157.867-332.8 166.4-332.8-166.4 315.733-157.867zM149.333 755.2c-12.8-8.533-21.333-25.6-21.333-38.4v-392.533l341.333 170.667v418.133l-320-157.867zM870.4 755.2l-315.733 157.867v-418.133l341.333-170.667v392.533c0 17.067-8.533 29.867-25.6 38.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Briefcase.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Briefcase.js
new file mode 100644
index 00000000..e9d59f61
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Briefcase.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Briefcase
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 256h-128v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-128c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM384 213.333c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM640 341.333v512h-256v-512h256zM128 810.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h128v512h-128c-25.6 0-42.667-17.067-42.667-42.667zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-128v-512h128c25.6 0 42.667 17.067 42.667 42.667v426.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Calendar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Calendar.js
new file mode 100644
index 00000000..5c7083c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Calendar.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Calendar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 128h-85.333v-42.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v42.667h-256v-42.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v42.667h-85.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM213.333 213.333h85.333v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667h256v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667h85.333c25.6 0 42.667 17.067 42.667 42.667v128h-682.667v-128c0-25.6 17.067-42.667 42.667-42.667zM810.667 896h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-384h682.667v384c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Camera.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Camera.js
new file mode 100644
index 00000000..fe1ffdff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Camera.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Camera
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 213.333h-149.333l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-256c-12.8 0-25.6 8.533-34.133 17.067l-72.533 110.933h-149.333c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h768c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM938.667 810.667c0 25.6-17.067 42.667-42.667 42.667h-768c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h170.667c12.8 0 25.6-8.533 34.133-17.067l72.533-110.933h209.067l72.533 110.933c12.8 8.533 25.6 17.067 38.4 17.067h170.667c25.6 0 42.667 17.067 42.667 42.667v469.333z' />
+            <path d='M512 341.333c-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333 213.333-93.867 213.333-213.333-93.867-213.333-213.333-213.333zM512 682.667c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CameraOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CameraOff.js
new file mode 100644
index 00000000..ebcdc436
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CameraOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.CameraOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 866.133c0 0 0 0 0 0l-640-640c0 0 0 0 0 0l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-25.6c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h750.933l72.533 72.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-85.333-85.333zM405.333 482.133c4.267-4.267 4.267-4.267 8.533-8.533l179.2 179.2c-17.067 12.8-38.4 25.6-59.733 29.867-34.133 4.267-68.267 0-93.867-21.333-29.867-21.333-46.933-46.933-55.467-81.067-4.267-34.133 4.267-68.267 21.333-98.133zM128 853.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h110.933l115.2 115.2c-8.533 8.533-12.8 12.8-17.067 21.333-34.133 46.933-42.667 102.4-34.133 157.867s42.667 106.667 89.6 136.533c34.133 25.6 76.8 38.4 119.467 38.4 12.8 0 25.6 0 38.4-4.267 38.4-8.533 72.533-25.6 102.4-51.2l140.8 140.8h-665.6z' />
+            <path d='M896 213.333h-149.333l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h234.667l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h170.667c25.6 0 42.667 17.067 42.667 42.667v396.8c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-396.8c0-72.533-55.467-128-128-128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cast.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cast.js
new file mode 100644
index 00000000..87aceeaf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cast.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Cast
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M93.867 644.267c-21.333-4.267-46.933 12.8-51.2 34.133s8.533 46.933 34.133 51.2c68.267 12.8 119.467 64 132.267 132.267 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 21.333-4.267 38.4-25.6 34.133-51.2-21.333-102.4-98.133-179.2-200.533-200.533z' />
+            <path d='M853.333 128h-682.667c-72.533 0-128 55.467-128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v512c0 25.6-17.067 42.667-42.667 42.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128z' />
+            <path d='M89.6 473.6c-21.333-4.267-42.667 12.8-46.933 38.4-4.267 21.333 12.8 42.667 38.4 46.933 157.867 17.067 281.6 140.8 302.933 302.933 0 17.067 17.067 34.133 38.4 34.133 0 0 4.267 0 4.267 0 21.333-4.267 38.4-25.6 38.4-46.933-21.333-200.533-174.933-354.133-375.467-375.467z' />
+            <path d='M55.467 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Check.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Check.js
new file mode 100644
index 00000000..d433ab93
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Check.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Check
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M883.2 226.133c-17.067-17.067-42.667-17.067-59.733 0l-439.467 439.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l469.333-469.333c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckCircle.js
new file mode 100644
index 00000000..31d3d8a7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.CheckCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 430.933c-25.6 0-42.667 17.067-42.667 42.667v38.4c0 213.333-170.667 384-384 384 0 0 0 0 0 0-213.333 0-384-170.667-384-384s170.667-384 384-384c0 0 0 0 0 0 55.467 0 106.667 12.8 157.867 34.133 21.333 8.533 46.933 0 55.467-21.333s0-46.933-21.333-55.467c-59.733-25.6-123.733-42.667-192-42.667 0 0 0 0 0 0-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333c0 0 0 0 0 0 260.267 0 469.333-209.067 469.333-469.333v-38.4c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M413.867 439.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-396.8 396.8-98.133-98.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckSquare.js
new file mode 100644
index 00000000..c7211078
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CheckSquare.js
@@ -0,0 +1,13 @@
+// Icon: Feather.CheckSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.533 140.8c-17.067-17.067-42.667-17.067-59.733 0l-396.8 396.8-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M896 469.333c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h469.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-469.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronDown.js
new file mode 100644
index 00000000..b195eeb1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ChevronDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M797.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l256 256c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronLeft.js
new file mode 100644
index 00000000..f5a68d65
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ChevronLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M443.733 512l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733l256 256c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronRight.js
new file mode 100644
index 00000000..828e73aa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ChevronRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M669.867 482.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronUp.js
new file mode 100644
index 00000000..692ad426
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ChevronUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M797.867 610.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l226.133-226.133 226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsDown.js
new file mode 100644
index 00000000..2b16ebf9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsDown.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ChevronsDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M695.467 524.8l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733-0z' />
+            <path d='M482.133 499.2c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsLeft.js
new file mode 100644
index 00000000..3545b488
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsLeft.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ChevronsLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M315.733 512l183.467-183.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-183.467-183.467z' />
+            <path d='M614.4 512l183.467-183.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-183.467-183.467z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsRight.js
new file mode 100644
index 00000000..11830b7f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsRight.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ChevronsRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M797.867 482.133l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467-183.467 183.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M499.2 482.133l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467-183.467 183.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsUp.js
new file mode 100644
index 00000000..b003a60d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ChevronsUp.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ChevronsUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M328.533 499.2l183.467-183.467 183.467 183.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z' />
+            <path d='M541.867 524.8c-17.067-17.067-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l183.467-183.467 183.467 183.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Chrome.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Chrome.js
new file mode 100644
index 00000000..335ffb70
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Chrome.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Chrome
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M942.933 328.533c0-4.267 0-4.267 0 0-76.8-170.667-238.933-285.867-430.933-285.867-153.6 0-290.133 72.533-375.467 187.733 0 4.267-4.267 4.267-4.267 8.533-55.467 76.8-89.6 170.667-89.6 273.067 0 238.933 179.2 435.2 409.6 465.067 0 0 4.267 0 4.267 0 17.067 0 34.133 4.267 51.2 4.267 260.267 0 469.333-209.067 469.333-469.333 4.267-64-8.533-128-34.133-183.467zM512 128c132.267 0 251.733 68.267 320 170.667h-320c-89.6 0-162.133 55.467-196.267 128l-93.867-162.133c68.267-85.333 174.933-136.533 290.133-136.533zM640 512c0 72.533-55.467 128-128 128s-128-55.467-128-128 55.467-128 128-128 128 55.467 128 128zM128 512c0-59.733 12.8-119.467 38.4-170.667l157.867 277.333c0 0 0 4.267 4.267 4.267 38.4 59.733 106.667 102.4 183.467 102.4 8.533 0 17.067 0 25.6-4.267l-98.133 166.4c-174.933-29.867-311.467-187.733-311.467-375.467zM537.6 896l157.867-277.333c0 0 0-4.267 0-4.267 17.067-29.867 25.6-64 25.6-102.4 0-46.933-17.067-93.867-42.667-128h192c12.8 38.4 21.333 81.067 21.333 128 4.267 204.8-153.6 371.2-354.133 384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Circle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Circle.js
new file mode 100644
index 00000000..cd852dbc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Circle.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Circle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clipboard.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clipboard.js
new file mode 100644
index 00000000..9c5235e8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clipboard.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Clipboard
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 128h-42.667c0-46.933-38.4-85.333-85.333-85.333h-256c-46.933 0-85.333 38.4-85.333 85.333h-42.667c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM384 128h256v85.333h-256v-42.667c0 0 0 0 0 0s0 0 0 0v-42.667zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h42.667c0 46.933 38.4 85.333 85.333 85.333h256c46.933 0 85.333-38.4 85.333-85.333h42.667c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clock.js
new file mode 100644
index 00000000..d2a4a763
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Clock.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Clock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M699.733 558.933l-145.067-72.533v-230.4c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 17.067 8.533 29.867 25.6 38.4l170.667 85.333c4.267 4.267 8.533 4.267 17.067 4.267 17.067 0 29.867-8.533 38.4-25.6s0-42.667-21.333-55.467z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cloud.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cloud.js
new file mode 100644
index 00000000..73cba7a2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cloud.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Cloud
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 384h-21.333c-29.867-85.333-89.6-157.867-166.4-204.8-89.6-51.2-192-68.267-290.133-42.667-102.4 29.867-183.467 93.867-238.933 179.2-51.2 89.6-68.267 192-42.667 290.133 42.667 170.667 196.267 290.133 371.2 290.133 0 0 0 0 0 0h384c140.8 0 256-115.2 256-256s-110.933-256-251.733-256zM768 810.667h-384c0 0 0 0 0 0-136.533 0-256-93.867-290.133-221.867-21.333-81.067-8.533-157.867 34.133-230.4s106.667-119.467 183.467-136.533c21.333-4.267 46.933-8.533 72.533-8.533 132.267 0 256 89.6 290.133 226.133 4.267 17.067 21.333 34.133 42.667 34.133h51.2c93.867 0 170.667 76.8 170.667 170.667 0 89.6-76.8 166.4-170.667 166.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudDrizzle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudDrizzle.js
new file mode 100644
index 00000000..b2a24cf1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudDrizzle.js
@@ -0,0 +1,18 @@
+// Icon: Feather.CloudDrizzle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M341.333 768c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M341.333 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M682.667 768c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M682.667 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M512 853.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M512 597.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M1002.667 409.6c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudLightning.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudLightning.js
new file mode 100644
index 00000000..0e4dd974
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudLightning.js
@@ -0,0 +1,13 @@
+// Icon: Feather.CloudLightning
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 460.8c-25.6-119.467-132.267-204.8-251.733-204.8 0 0 0 0 0 0h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 89.6-238.933 174.933-51.2 89.6-68.267 192-42.667 290.133 25.6 102.4 93.867 187.733 187.733 238.933 21.333 12.8 46.933 8.533 59.733-12.8s4.267-46.933-17.067-59.733c-72.533-38.4-123.733-106.667-145.067-187.733-21.333-76.8-8.533-153.6 34.133-226.133 38.4-68.267 106.667-119.467 183.467-136.533 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 81.067 0 149.333 55.467 166.4 136.533 17.067 93.867-42.667 183.467-132.267 200.533-21.333 4.267-38.4 25.6-34.133 51.2 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 136.533-29.867 226.133-166.4 200.533-302.933z' />
+            <path d='M640 682.667h-174.933l128-187.733c12.8-21.333 8.533-46.933-12.8-59.733s-46.933-8.533-59.733 12.8l-170.667 256c-8.533 12.8-8.533 29.867 0 42.667 4.267 12.8 17.067 21.333 34.133 21.333h174.933l-128 187.733c-12.8 21.333-8.533 46.933 12.8 59.733 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-8.533 34.133-17.067l170.667-256c8.533-12.8 8.533-29.867 0-42.667s-17.067-25.6-34.133-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudOff.js
new file mode 100644
index 00000000..852e5da4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.CloudOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 213.333c128 12.8 230.4 102.4 264.533 221.867 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 21.333 0 46.933 4.267 68.267 12.8 85.333 38.4 128 136.533 89.6 221.867-8.533 21.333 0 46.933 21.333 55.467 4.267 4.267 12.8 4.267 17.067 4.267 17.067 0 34.133-8.533 38.4-25.6 55.467-128-4.267-281.6-136.533-337.067-29.867-8.533-64-17.067-98.133-17.067h-21.333c-51.2-140.8-179.2-243.2-328.533-256-25.6 0-42.667 17.067-46.933 38.4-4.267 25.6 17.067 42.667 38.4 46.933z' />
+            <path d='M72.533 12.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l132.267 132.267c-64 51.2-110.933 119.467-136.533 200.533-29.867 98.133-17.067 200.533 34.133 290.133 68.267 123.733 196.267 200.533 337.067 200.533 0 0 4.267 0 4.267 0h384c21.333 0 38.4-4.267 59.733-8.533l123.733 123.733c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-938.667-938.667zM384 810.667c-110.933 4.267-213.333-55.467-264.533-153.6-38.4-68.267-46.933-149.333-25.6-226.133 17.067-68.267 59.733-123.733 115.2-162.133l541.867 541.867h-366.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudRain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudRain.js
new file mode 100644
index 00000000..3933973b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudRain.js
@@ -0,0 +1,15 @@
+// Icon: Feather.CloudRain
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 512c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M341.333 512c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M512 597.333c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M1002.667 409.6c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudSnow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudSnow.js
new file mode 100644
index 00000000..0f9df08c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CloudSnow.js
@@ -0,0 +1,18 @@
+// Icon: Feather.CloudSnow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.667 452.267c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z' />
+            <path d='M311.467 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M311.467 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M482.133 908.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M652.8 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M652.8 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Code.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Code.js
new file mode 100644
index 00000000..f7e8f4fa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Code.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Code
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.533 482.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M371.2 226.133c-17.067-17.067-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733l256 256c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133 226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Codepen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Codepen.js
new file mode 100644
index 00000000..c972a28f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Codepen.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Codepen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 669.867c0-4.267 0-4.267 0-8.533v-298.667c0-4.267 0-4.267 0-8.533 0 0 0 0 0-4.267s-4.267-8.533-4.267-12.8c0 0 0 0 0 0s0 0 0 0c-4.267-4.267-4.267-8.533-8.533-8.533v0c0 0 0 0 0 0l-426.667-277.333c0 0-4.267 0-4.267 0s-4.267 0-4.267 0c-8.533-4.267-21.333-4.267-29.867 0 0 0-4.267 0-4.267 0s-4.267 0-4.267 0l-426.667 277.333c-8.533-0-12.8 4.267-17.067 8.533 0 0 0 0 0 0s0 0 0 0c-4.267 8.533-4.267 12.8-8.533 17.067 0 0 0 0 0 4.267s0 4.267 0 8.533v298.667c0 4.267 0 4.267 0 8.533 0 0 0 0 0 4.267s4.267 8.533 4.267 12.8c0 0 0 0 0 0s0 0 0 0c4.267 4.267 4.267 8.533 8.533 8.533l426.667 277.333c0 0 4.267 0 4.267 0s4.267 0 4.267 0 8.533 4.267 12.8 4.267 8.533 0 12.8-4.267c0 0 4.267 0 4.267 0s4.267 0 4.267 0l426.667-277.333c4.267-4.267 8.533-8.533 12.8-8.533 0 0 0 0 0 0s0 0 0 0c12.8-12.8 12.8-17.067 17.067-21.333 0 0 0 0 0 0zM128 443.733l98.133 68.267-98.133 68.267v-136.533zM512 610.133l-140.8-98.133 140.8-98.133 140.8 98.133-140.8 98.133zM554.667 341.333v-179.2l307.2 200.533-136.533 98.133-170.667-119.467zM469.333 341.333l-170.667 119.467-136.533-98.133 307.2-200.533v179.2zM298.667 563.2l170.667 119.467v174.933l-307.2-200.533 136.533-93.867zM554.667 682.667l170.667-119.467 136.533 93.867-307.2 204.8v-179.2zM797.867 512l98.133-68.267v136.533l-98.133-68.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Command.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Command.js
new file mode 100644
index 00000000..86528df8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Command.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Command
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 597.333h-85.333v-170.667h85.333c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667-170.667 76.8-170.667 170.667v85.333h-170.667v-85.333c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667 76.8 170.667 170.667 170.667h85.333v170.667h-85.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667v-85.333h170.667v85.333c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667-76.8-170.667-170.667-170.667zM682.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333h-85.333v-85.333zM341.333 768c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333h85.333v85.333zM341.333 341.333h-85.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333v85.333zM597.333 597.333h-170.667v-170.667h170.667v170.667zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333v-85.333h85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Compass.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Compass.js
new file mode 100644
index 00000000..1c3f4697
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Compass.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Compass
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M678.4 290.133l-268.8 89.6c-12.8 4.267-25.6 17.067-29.867 29.867l-89.6 273.067c-4.267 17.067 0 34.133 8.533 42.667s17.067 12.8 29.867 12.8c4.267 0 8.533 0 12.8-4.267l273.067-89.6c12.8-4.267 21.333-12.8 25.6-25.6l89.6-273.067c4.267-17.067 0-34.133-8.533-42.667-8.533-12.8-25.6-17.067-42.667-12.8zM567.467 567.467l-170.667 55.467 55.467-170.667 170.667-55.467-55.467 170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Copy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Copy.js
new file mode 100644
index 00000000..1e7642ff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Copy.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Copy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 341.333h-384c-72.533 0-128 55.467-128 128v384c0 72.533 55.467 128 128 128h384c72.533 0 128-55.467 128-128v-384c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-384c-25.6 0-42.667-17.067-42.667-42.667v-384c0-25.6 17.067-42.667 42.667-42.667h384c25.6 0 42.667 17.067 42.667 42.667v384z' />
+            <path d='M213.333 597.333h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-384c0-25.6 17.067-42.667 42.667-42.667h384c25.6 0 42.667 17.067 42.667 42.667v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667c0-72.533-55.467-128-128-128h-384c-72.533 0-128 55.467-128 128v384c0 72.533 55.467 128 128 128h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownLeft.js
new file mode 100644
index 00000000..e210501d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerDownLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 128c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 72.533-55.467 128-128 128h-409.6l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-140.8-140.8h409.6c119.467 0 213.333-93.867 213.333-213.333v-298.667c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownRight.js
new file mode 100644
index 00000000..b13f4554
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerDownRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerDownRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 657.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-72.533 0-128-55.467-128-128v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 119.467 93.867 213.333 213.333 213.333h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftDown.js
new file mode 100644
index 00000000..0d935715
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerLeftDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 128h-298.667c-119.467 0-213.333 93.867-213.333 213.333v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-72.533 55.467-128 128-128h298.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftUp.js
new file mode 100644
index 00000000..2e427813
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerLeftUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerLeftUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 810.667h-298.667c-72.533 0-128-55.467-128-128v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-12.8-4.267-21.333-4.267-34.133 0-4.267 0-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l140.8-140.8v409.6c0 119.467 93.867 213.333 213.333 213.333h298.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightDown.js
new file mode 100644
index 00000000..19b711d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerRightDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M883.2 610.133c-17.067-17.067-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-119.467-93.867-213.333-213.333-213.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h298.667c72.533 0 128 55.467 128 128v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667-0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightUp.js
new file mode 100644
index 00000000..3ed65928
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerRightUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerRightUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M883.2 354.133l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l140.8-140.8v409.6c0 72.533-55.467 128-128 128h-298.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h298.667c119.467 0 213.333-93.867 213.333-213.333v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpLeft.js
new file mode 100644
index 00000000..69542e5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpLeft.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerUpLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 341.333h-409.6l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 12.8-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-140.8-140.8h409.6c72.533 0 128 55.467 128 128v298.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-298.667c0-119.467-93.867-213.333-213.333-213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpRight.js
new file mode 100644
index 00000000..c93af19a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CornerUpRight.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CornerUpRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 401.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-119.467 0-213.333 93.867-213.333 213.333v298.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-298.667c0-72.533 55.467-128 128-128h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cpu.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cpu.js
new file mode 100644
index 00000000..e672ce41
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Cpu.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Cpu
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 341.333h-256c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667zM597.333 597.333h-170.667v-170.667h170.667v170.667z' />
+            <path d='M981.333 554.667h-85.333v-128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333v-85.333c0-72.533-55.467-128-128-128h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-170.667v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-72.533 0-128 55.467-128 128v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v128h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v128c0 72.533 55.467 128 128 128h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h170.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c72.533 0 128-55.467 128-128v-128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM810.667 768c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-512c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CreditCard.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CreditCard.js
new file mode 100644
index 00000000..0df65f6a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/CreditCard.js
@@ -0,0 +1,12 @@
+// Icon: Feather.CreditCard
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 128h-768c-72.533 0-128 55.467-128 128v512c0 72.533 55.467 128 128 128h768c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM128 213.333h768c25.6 0 42.667 17.067 42.667 42.667v128h-853.333v-128c0-25.6 17.067-42.667 42.667-42.667zM896 810.667h-768c-25.6 0-42.667-17.067-42.667-42.667v-298.667h853.333v298.667c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crop.js
new file mode 100644
index 00000000..a54aca0c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crop.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Crop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 725.333h-170.667v-384c0-72.533-55.467-128-128-128l-379.733 4.267v-174.933c0-25.6-17.067-42.667-42.667-42.667 0 0 0 0 0 0-21.333 0-42.667 17.067-42.667 42.667v174.933h-174.933c-25.6 0-42.667 21.333-42.667 42.667s21.333 42.667 42.667 42.667c0 0 0 0 0 0h174.933l-4.267 379.733c0 72.533 55.467 128 128 128h384v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM341.333 725.333c-25.6 0-42.667-17.067-42.667-42.667l4.267-379.733 379.733-4.267c25.6 0 42.667 17.067 42.667 42.667v384h-384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crosshair.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crosshair.js
new file mode 100644
index 00000000..a5889003
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Crosshair.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Crosshair
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM554.667 891.733v-123.733c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v123.733c-179.2-21.333-320-162.133-337.067-337.067h123.733c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-123.733c17.067-179.2 157.867-320 337.067-337.067v123.733c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-123.733c179.2 21.333 320 162.133 337.067 337.067h-123.733c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h123.733c-17.067 179.2-157.867 320-337.067 337.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Database.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Database.js
new file mode 100644
index 00000000..b55d4a69
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Database.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Database
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-204.8 0-426.667 55.467-426.667 170.667v597.333c0 115.2 221.867 170.667 426.667 170.667s426.667-55.467 426.667-170.667v-597.333c0-115.2-221.867-170.667-426.667-170.667zM853.333 512c0 21.333-106.667 85.333-341.333 85.333s-341.333-64-341.333-85.333v-192c81.067 42.667 213.333 64 341.333 64s260.267-21.333 341.333-64v192zM512 128c221.867 0 341.333 64 341.333 85.333s-119.467 85.333-341.333 85.333c-221.867 0-341.333-64-341.333-85.333s119.467-85.333 341.333-85.333zM512 896c-234.667 0-341.333-64-341.333-85.333v-192c81.067 42.667 213.333 64 341.333 64s260.267-21.333 341.333-64v192c0 21.333-106.667 85.333-341.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Delete.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Delete.js
new file mode 100644
index 00000000..c63bf7f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Delete.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Delete
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 128h-554.667c-12.8 0-25.6 4.267-34.133 12.8l-298.667 341.333c-12.8 17.067-12.8 38.4 0 55.467l298.667 341.333c8.533 12.8 21.333 17.067 34.133 17.067h554.667c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM938.667 768c0 25.6-17.067 42.667-42.667 42.667h-533.333l-260.267-298.667 260.267-298.667h533.333c25.6 0 42.667 17.067 42.667 42.667v512z' />
+            <path d='M797.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Disc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Disc.js
new file mode 100644
index 00000000..e05b63a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Disc.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Disc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DollarSign.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DollarSign.js
new file mode 100644
index 00000000..2047e4a9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DollarSign.js
@@ -0,0 +1,12 @@
+// Icon: Feather.DollarSign
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M618.667 469.333h-64v-213.333h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-64c-106.667 0-192 85.333-192 192s85.333 192 192 192h64v213.333h-213.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h213.333v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h64c106.667 0 192-85.333 192-192s-85.333-192-192-192zM405.333 469.333c-59.733 0-106.667-46.933-106.667-106.667s46.933-106.667 106.667-106.667h64v213.333h-64zM618.667 768h-64v-213.333h64c59.733 0 106.667 46.933 106.667 106.667s-46.933 106.667-106.667 106.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Download.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Download.js
new file mode 100644
index 00000000..5f2e0e61
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Download.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Download
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 597.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 669.867c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DownloadCloud.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DownloadCloud.js
new file mode 100644
index 00000000..ea550372
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/DownloadCloud.js
@@ -0,0 +1,13 @@
+// Icon: Feather.DownloadCloud
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M652.8 695.467l-98.133 98.133v-281.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v281.6l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z' />
+            <path d='M977.067 448c-46.933-64-123.733-106.667-209.067-106.667 0 0 0 0 0 0h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 85.333-238.933 174.933-51.2 89.6-68.267 192-42.667 290.133 17.067 59.733 42.667 115.2 85.333 157.867 17.067 17.067 42.667 21.333 59.733 4.267s21.333-42.667 4.267-59.733c-29.867-34.133-55.467-76.8-64-123.733-21.333-76.8-8.533-157.867 34.133-226.133s106.667-119.467 183.467-136.533c157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 55.467 0 106.667 25.6 140.8 72.533 25.6 38.4 38.4 81.067 29.867 128s-34.133 85.333-68.267 110.933c-21.333 12.8-25.6 38.4-8.533 59.733 8.533 12.8 21.333 17.067 34.133 17.067 8.533 0 17.067-4.267 25.6-8.533 55.467-38.4 93.867-98.133 106.667-166.4s-12.8-132.267-51.2-192z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Droplet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Droplet.js
new file mode 100644
index 00000000..2b36946b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Droplet.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Droplet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M785.067 324.267l-243.2-238.933c-8.533-8.533-17.067-12.8-29.867-12.8v0c-12.8 0-21.333 4.267-29.867 12.8l-238.933 238.933c0 0 0 0 0 0-76.8 72.533-115.2 170.667-115.2 273.067s38.4 200.533 110.933 273.067c72.533 72.533 170.667 110.933 273.067 110.933 0 0 0 0 0 0 102.4 0 200.533-38.4 273.067-110.933 149.333-149.333 149.333-392.533 0-546.133zM725.333 810.667c-59.733 55.467-132.267 85.333-213.333 85.333 0 0 0 0 0 0-81.067 0-153.6-29.867-209.067-85.333-59.733-59.733-89.6-132.267-89.6-213.333s29.867-153.6 85.333-209.067c0 0 0 0 0 0l209.067-213.333 213.333 213.333c119.467 115.2 119.467 302.933 4.267 422.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit.js
new file mode 100644
index 00000000..abf6264f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Edit
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 584.533c-25.6 0-42.667 17.067-42.667 42.667v226.133c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h226.133c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-226.133c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-226.133c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M968.533 226.133l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0l-426.667 426.667c-8.533 8.533-12.8 17.067-12.8 29.867v170.667c0 25.6 17.067 42.667 42.667 42.667h170.667c12.8 0 21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733zM494.933 640h-110.933v-110.933l384-384 110.933 110.933-384 384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit2.js
new file mode 100644
index 00000000..d24f3321
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit2.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Edit2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 311.467l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0l-554.667 554.667c-8.533 8.533-12.8 17.067-12.8 29.867v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333c12.8 0 21.333-4.267 29.867-12.8l554.667-554.667c17.067-17.067 17.067-42.667 0-59.733zM324.267 853.333h-153.6v-153.6l512-512 153.6 153.6-512 512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit3.js
new file mode 100644
index 00000000..cea01ec1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Edit3.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Edit3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 768h170.667c12.8 0 21.333-4.267 29.867-12.8l469.333-469.333c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0l-469.333 469.333c-8.533 8.533-12.8 17.067-12.8 29.867v170.667c0 25.6 17.067 42.667 42.667 42.667zM170.667 571.733l426.667-426.667 110.933 110.933-426.667 426.667h-110.933v-110.933z' />
+            <path d='M896 896h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ExternalLink.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ExternalLink.js
new file mode 100644
index 00000000..ede63e2e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ExternalLink.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ExternalLink
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 512c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-396.8 396.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l396.8-396.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Eye.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Eye.js
new file mode 100644
index 00000000..099808aa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Eye.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Eye
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 494.933c-8.533-17.067-187.733-366.933-507.733-366.933s-499.2 349.867-507.733 366.933c-4.267 12.8-4.267 25.6 0 38.4 8.533 12.8 187.733 362.667 507.733 362.667s499.2-349.867 507.733-366.933c4.267-8.533 4.267-25.6 0-34.133zM512 810.667c-230.4 0-379.733-230.4-422.4-298.667 38.4-68.267 192-298.667 422.4-298.667s379.733 230.4 422.4 298.667c-42.667 68.267-192 298.667-422.4 298.667z' />
+            <path d='M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/EyeOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/EyeOff.js
new file mode 100644
index 00000000..9cfd1bc4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/EyeOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.EyeOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M430.933 221.867c25.6-4.267 55.467-8.533 81.067-8.533 230.4 0 379.733 230.4 422.4 298.667-21.333 38.4-46.933 76.8-76.8 106.667-17.067 17.067-12.8 46.933 4.267 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 38.4-42.667 68.267-93.867 98.133-145.067 8.533-12.8 8.533-25.6 0-38.4-8.533-8.533-187.733-358.4-507.733-358.4-34.133 0-68.267 4.267-98.133 12.8-25.6 4.267-38.4 25.6-34.133 51.2 8.533 21.333 29.867 34.133 51.2 29.867z' />
+            <path d='M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467c-76.8 68.267-140.8 145.067-192 234.667-8.533 12.8-8.533 25.6 0 38.4 8.533 17.067 187.733 366.933 507.733 366.933 89.6 0 174.933-25.6 247.467-76.8l192 192c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM426.667 486.4l106.667 106.667c-8.533 4.267-17.067 4.267-25.6 4.267-21.333 0-42.667-8.533-59.733-21.333-17.067-17.067-25.6-38.4-25.6-59.733 0-8.533 4.267-17.067 4.267-29.867zM512 810.667c-230.4 0-379.733-230.4-422.4-298.667 42.667-76.8 98.133-140.8 166.4-196.267l106.667 110.933c-17.067 29.867-25.6 64-25.6 98.133 0 46.933 21.333 89.6 55.467 119.467 29.867 29.867 72.533 46.933 115.2 46.933 0 0 4.267 0 4.267 0 29.867 0 59.733-12.8 85.333-25.6l98.133 98.133c-55.467 29.867-119.467 46.933-183.467 46.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Facebook.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Facebook.js
new file mode 100644
index 00000000..631a6b83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Facebook.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Facebook
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 298.667c25.6 0 42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667h-128c-140.8 0-256 115.2-256 256v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667h85.333v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667h85.333c21.333 0 38.4-12.8 42.667-34.133l42.667-170.667c4.267-12.8 0-25.6-8.533-38.4s-21.333-12.8-34.133-12.8h-128v-85.333h128zM597.333 469.333h115.2l-21.333 85.333h-93.867c-25.6 0-42.667 17.067-42.667 42.667v298.667h-85.333v-298.667c0-25.6-17.067-42.667-42.667-42.667h-85.333v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667v-128c0-93.867 76.8-170.667 170.667-170.667h85.333v85.333h-85.333c-46.933 0-85.333 38.4-85.333 85.333v128c0 25.6 17.067 42.667 42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FastForward.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FastForward.js
new file mode 100644
index 00000000..f1233c73
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FastForward.js
@@ -0,0 +1,13 @@
+// Icon: Feather.FastForward
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M964.267 477.867l-384-298.667c-12.8-8.533-29.867-12.8-46.933-4.267-12.8 8.533-21.333 21.333-21.333 38.4v597.333c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l384-298.667c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133zM597.333 725.333v-426.667l273.067 213.333-273.067 213.333z' />
+            <path d='M110.933 179.2c-12.8-8.533-29.867-12.8-42.667-4.267-17.067 8.533-25.6 21.333-25.6 38.4v597.333c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l384-298.667c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133l-384-298.667zM128 725.333v-426.667l273.067 213.333-273.067 213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Feather.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Feather.js
new file mode 100644
index 00000000..fa56ccf0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Feather.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Feather
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 128c-115.2-115.2-307.2-115.2-422.4 0l-285.867 290.133c-8.533 8.533-12.8 17.067-12.8 29.867v345.6l-115.2 115.2c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l115.2-115.2h345.6c12.8 0 21.333-4.267 29.867-12.8l285.867-290.133c119.467-115.2 119.467-302.933 0-422.4zM558.933 768h-243.2l85.333-85.333h243.2l-85.333 85.333zM832 490.667c0 0 0 0 0 0l-102.4 106.667c0 0 0 0-4.267 0h-238.933l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-298.667 298.667c0 0 0 0 0 0l-98.133 98.133v-243.2l277.333-277.333c85.333-85.333 217.6-85.333 302.933 0 81.067 85.333 81.067 221.867-4.267 302.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/File.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/File.js
new file mode 100644
index 00000000..d5423a64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/File.js
@@ -0,0 +1,12 @@
+// Icon: Feather.File
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 366.933c-4.267-4.267-4.267-8.533-8.533-12.8l-298.667-298.667c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-298.667c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-469.333c0-4.267 0-12.8-4.267-17.067zM597.333 187.733l153.6 153.6h-153.6v-153.6zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h256v256c0 25.6 17.067 42.667 42.667 42.667h256v426.667c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileMinus.js
new file mode 100644
index 00000000..11f7bc78
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileMinus.js
@@ -0,0 +1,13 @@
+// Icon: Feather.FileMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M640 597.333h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FilePlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FilePlus.js
new file mode 100644
index 00000000..3b4ac2c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FilePlus.js
@@ -0,0 +1,13 @@
+// Icon: Feather.FilePlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M640 597.333h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileText.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileText.js
new file mode 100644
index 00000000..b40a8bce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FileText.js
@@ -0,0 +1,15 @@
+// Icon: Feather.FileText
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M682.667 512h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M682.667 682.667h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M341.333 426.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Film.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Film.js
new file mode 100644
index 00000000..83836330
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Film.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Film
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 42.667h-665.6c-76.8 0-136.533 59.733-136.533 136.533v665.6c0 76.8 59.733 136.533 136.533 136.533h665.6c76.8 0 136.533-59.733 136.533-136.533v-665.6c0-76.8-59.733-136.533-136.533-136.533zM768 341.333h128v128h-128v-128zM682.667 469.333h-341.333v-341.333h341.333v341.333zM256 469.333h-128v-128h128v128zM128 554.667h128v128h-128v-128zM341.333 554.667h341.333v341.333h-341.333v-341.333zM768 554.667h128v128h-128v-128zM896 179.2v76.8h-128v-128h76.8c29.867 0 51.2 21.333 51.2 51.2zM179.2 128h76.8v128h-128v-76.8c0-29.867 21.333-51.2 51.2-51.2zM128 844.8v-76.8h128v128h-76.8c-29.867 0-51.2-21.333-51.2-51.2zM844.8 896h-76.8v-128h128v76.8c0 29.867-21.333 51.2-51.2 51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Filter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Filter.js
new file mode 100644
index 00000000..65ea3145
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Filter.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Filter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.067 110.933c-8.533-17.067-21.333-25.6-38.4-25.6h-853.333c-17.067 0-29.867 8.533-38.4 25.6-8.533 12.8-4.267 29.867 4.267 42.667l332.8 392.533v264.533c0 17.067 8.533 29.867 25.6 38.4l170.667 85.333c4.267 4.267 8.533 4.267 17.067 4.267s17.067 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-349.867l332.8-392.533c8.533-12.8 12.8-29.867 4.267-42.667zM563.2 503.467c-4.267 8.533-8.533 17.067-8.533 29.867v294.4l-85.333-42.667v-251.733c0-8.533-4.267-21.333-8.533-25.6l-281.6-337.067h669.867l-285.867 332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Flag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Flag.js
new file mode 100644
index 00000000..0da57bd2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Flag.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Flag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 89.6c-17.067-8.533-34.133-4.267-46.933 8.533 0 0-38.4 29.867-140.8 29.867-55.467 0-102.4-21.333-153.6-38.4-55.467-25.6-115.2-46.933-187.733-46.933-136.533 0-192 46.933-200.533 55.467s-12.8 17.067-12.8 29.867v810.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-277.333c17.067-8.533 59.733-21.333 128-21.333 55.467 0 102.4 21.333 153.6 38.4 55.467 21.333 115.2 46.933 187.733 46.933 136.533 0 192-46.933 200.533-55.467s12.8-17.067 12.8-29.867v-512c0-17.067-8.533-29.867-25.6-38.4zM810.667 618.667c-17.067 8.533-59.733 21.333-128 21.333-55.467 0-102.4-21.333-153.6-38.4-55.467-25.6-115.2-46.933-187.733-46.933-55.467 0-98.133 8.533-128 17.067v-422.4c17.067-8.533 59.733-21.333 128-21.333 55.467 0 102.4 21.333 153.6 38.4 55.467 25.6 115.2 46.933 187.733 46.933 55.467 0 98.133-8.533 128-17.067v422.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Folder.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Folder.js
new file mode 100644
index 00000000..93e11f75
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Folder.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Folder
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderMinus.js
new file mode 100644
index 00000000..748c6253
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderMinus.js
@@ -0,0 +1,13 @@
+// Icon: Feather.FolderMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z' />
+            <path d='M640 554.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderPlus.js
new file mode 100644
index 00000000..2e553169
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/FolderPlus.js
@@ -0,0 +1,13 @@
+// Icon: Feather.FolderPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z' />
+            <path d='M640 554.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gift.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gift.js
new file mode 100644
index 00000000..0258087d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gift.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Gift
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 256h-102.4c12.8-21.333 17.067-42.667 17.067-64 0-81.067-68.267-149.333-149.333-149.333-98.133 0-157.867 68.267-192 132.267-34.133-64-93.867-132.267-192-132.267-81.067 0-149.333 68.267-149.333 149.333 0 21.333 4.267 42.667 17.067 64h-102.4c-25.6 0-42.667 17.067-42.667 42.667v213.333c0 25.6 17.067 42.667 42.667 42.667h42.667v384c0 25.6 17.067 42.667 42.667 42.667h682.667c25.6 0 42.667-17.067 42.667-42.667v-384h42.667c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-25.6-17.067-42.667-42.667-42.667zM704 128c34.133 0 64 29.867 64 64s-29.867 64-64 64h-136.533c21.333-51.2 64-128 136.533-128zM256 192c0-34.133 29.867-64 64-64 72.533 0 115.2 76.8 136.533 128h-136.533c-34.133 0-64-29.867-64-64zM128 341.333h341.333v128h-341.333v-128zM213.333 554.667h256v341.333h-256v-341.333zM810.667 896h-256v-341.333h256v341.333zM896 469.333h-341.333v-128h341.333v128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitBranch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitBranch.js
new file mode 100644
index 00000000..ba96a83b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitBranch.js
@@ -0,0 +1,12 @@
+// Icon: Feather.GitBranch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 256c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667c0 76.8 55.467 145.067 128 162.133-17.067 157.867-145.067 285.867-302.933 302.933-17.067-59.733-64-106.667-119.467-119.467v-473.6c0-25.6-17.067-42.667-42.667-42.667s-46.933 17.067-46.933 42.667v473.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667 81.067 0 145.067-55.467 166.4-128 204.8-17.067 371.2-183.467 388.267-388.267 72.533-21.333 128-85.333 128-166.4zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 341.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitCommit.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitCommit.js
new file mode 100644
index 00000000..2dce20e9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitCommit.js
@@ -0,0 +1,12 @@
+// Icon: Feather.GitCommit
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 469.333h-256c0 0-4.267 0-4.267 0-21.333-98.133-106.667-170.667-209.067-170.667s-187.733 72.533-209.067 170.667c0 0-4.267 0-4.267 0h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c0 0 4.267 0 4.267 0 21.333 98.133 106.667 170.667 209.067 170.667s187.733-72.533 209.067-170.667c0 0 4.267 0 4.267 0h256c25.6 0 42.667-17.067 42.667-42.667s-21.333-42.667-42.667-42.667zM512 640c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitMerge.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitMerge.js
new file mode 100644
index 00000000..f2314436
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitMerge.js
@@ -0,0 +1,12 @@
+// Icon: Feather.GitMerge
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 597.333c-76.8 0-145.067 55.467-162.133 128-157.867-17.067-285.867-145.067-302.933-302.933 72.533-21.333 128-85.333 128-162.133 0-93.867-76.8-170.667-170.667-170.667s-174.933 72.533-174.933 166.4c0 81.067 55.467 145.067 128 166.4v473.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c72.533 93.867 179.2 157.867 302.933 170.667 17.067 72.533 85.333 132.267 166.4 132.267 93.867 0 170.667-76.8 170.667-170.667s-76.8-174.933-170.667-174.933zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitPullRequest.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitPullRequest.js
new file mode 100644
index 00000000..6eb9c14d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/GitPullRequest.js
@@ -0,0 +1,13 @@
+// Icon: Feather.GitPullRequest
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 601.6v-260.267c0-72.533-55.467-128-128-128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v260.267c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667c0-81.067-55.467-145.067-128-166.4zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z' />
+            <path d='M256 85.333c-93.867 0-170.667 76.8-170.667 170.667 0 81.067 55.467 145.067 128 166.4v473.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-473.6c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667zM256 341.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Github.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Github.js
new file mode 100644
index 00000000..254a4066
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Github.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Github
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M960 362.667c0-64-21.333-119.467-59.733-170.667 12.8-55.467 8.533-115.2-12.8-166.4-4.267-12.8-12.8-21.333-25.6-25.6-17.067-4.267-72.533-12.8-187.733 59.733-93.867-21.333-192-21.333-281.6 0-115.2-72.533-170.667-64-187.733-59.733-12.8 4.267-21.333 12.8-25.6 25.6-25.6 55.467-29.867 110.933-12.8 166.4-38.4 51.2-59.733 110.933-59.733 170.667 0 230.4 128 302.933 247.467 328.533-8.533 29.867-12.8 55.467-12.8 81.067v4.267c-89.6 17.067-119.467-17.067-153.6-64-21.333-29.867-46.933-64-93.867-72.533-21.333-4.267-46.933 8.533-51.2 29.867s8.533 46.933 29.867 51.2c12.8 4.267 29.867 21.333 46.933 42.667 38.4 51.2 93.867 119.467 221.867 102.4v72.533c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-123.733c0 0 0-4.267 0-4.267v-38.4c0-29.867 8.533-55.467 29.867-76.8 12.8-12.8 17.067-29.867 8.533-42.667-4.267-17.067-17.067-25.6-34.133-29.867-123.733-17.067-238.933-55.467-238.933-256 0-51.2 17.067-93.867 51.2-132.267 12.8-12.8 12.8-29.867 8.533-42.667-12.8-38.4-12.8-72.533-4.267-106.667 21.333 4.267 59.733 17.067 110.933 55.467 12.8 8.533 25.6 8.533 38.4 4.267 89.6-25.6 187.733-25.6 277.333 0 12.8 4.267 25.6 0 34.133-4.267 55.467-38.4 93.867-51.2 110.933-55.467 8.533 34.133 8.533 68.267-4.267 102.4-4.267 17.067-4.267 34.133 8.533 42.667 34.133 34.133 51.2 81.067 51.2 132.267 0 200.533-115.2 243.2-238.933 256-17.067 0-29.867 12.8-34.133 29.867s0 34.133 8.533 42.667c21.333 21.333 29.867 51.2 29.867 81.067v166.4c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-162.133c4.267-29.867 0-55.467-12.8-81.067 102.4-21.333 247.467-89.6 247.467-332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gitlab.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gitlab.js
new file mode 100644
index 00000000..3a1fcb27
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Gitlab.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Gitlab
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 558.933l-157.867-477.867c-4.267-8.533-8.533-17.067-17.067-25.6-21.333-21.333-59.733-21.333-81.067 0-8.533 4.267-12.8 12.8-17.067 25.6l-93.867 290.133h-281.6l-93.867-290.133c-4.267-8.533-8.533-17.067-17.067-25.6-21.333-21.333-59.733-21.333-81.067 0-8.533 4.267-12.8 12.8-17.067 25.6l-157.867 477.867c-12.8 34.133 0 68.267 29.867 89.6l452.267 328.533c8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533l452.267-328.533c29.867-17.067 42.667-55.467 29.867-89.6zM512 891.733l-426.667-307.2 132.267-405.333 81.067 247.467c4.267 17.067 21.333 29.867 42.667 29.867h341.333c17.067 0 34.133-12.8 42.667-29.867l81.067-247.467 81.067 247.467 51.2 153.6-426.667 311.467z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Globe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Globe.js
new file mode 100644
index 00000000..a6a3b869
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Globe.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Globe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM891.733 469.333h-170.667c-8.533-119.467-46.933-230.4-115.2-328.533 153.6 38.4 268.8 170.667 285.867 328.533zM388.267 554.667h251.733c-12.8 115.2-55.467 226.133-123.733 315.733-76.8-89.6-119.467-200.533-128-315.733zM388.267 469.333c12.8-115.2 55.467-226.133 123.733-315.733 72.533 93.867 115.2 204.8 123.733 315.733h-247.467zM413.867 140.8c-64 98.133-102.4 209.067-110.933 328.533h-170.667c17.067-157.867 132.267-290.133 281.6-328.533zM132.267 554.667h170.667c8.533 119.467 46.933 230.4 115.2 328.533-153.6-38.4-268.8-170.667-285.867-328.533zM610.133 883.2c64-98.133 102.4-209.067 115.2-328.533h170.667c-21.333 157.867-136.533 290.133-285.867 328.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Grid.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Grid.js
new file mode 100644
index 00000000..761dd2a0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Grid.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Grid
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M426.667 85.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM384 384h-213.333v-213.333h213.333v213.333z' />
+            <path d='M896 85.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM853.333 384h-213.333v-213.333h213.333v213.333z' />
+            <path d='M896 554.667h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM853.333 853.333h-213.333v-213.333h213.333v213.333z' />
+            <path d='M426.667 554.667h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM384 853.333h-213.333v-213.333h213.333v213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HardDrive.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HardDrive.js
new file mode 100644
index 00000000..14c4cbe6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HardDrive.js
@@ -0,0 +1,14 @@
+// Icon: Feather.HardDrive
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.067 494.933c0 0 0 0 0 0l-149.333-294.4c-21.333-42.667-64-72.533-115.2-72.533h-405.333c-46.933 0-89.6 25.6-110.933 72.533l-145.067 294.4c0 0 0 0 0 0-8.533 4.267-8.533 8.533-8.533 17.067v256c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-256c0-8.533 0-12.8-4.267-17.067zM268.8 238.933c0 0 0 0 0 0 8.533-17.067 25.6-25.6 38.4-25.6h405.333c17.067 0 29.867 8.533 38.4 25.6l115.2 230.4h-712.533l115.2-230.4zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333h768v213.333c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M226.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M396.8 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Hash.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Hash.js
new file mode 100644
index 00000000..4681fb67
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Hash.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Hash
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 597.333h-179.2l17.067-170.667h162.133c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-149.333l21.333-209.067c4.267-21.333-12.8-42.667-38.4-46.933-21.333-4.267-42.667 12.8-46.933 38.4l-25.6 217.6h-170.667l25.6-209.067c4.267-21.333-12.8-42.667-38.4-46.933-21.333-4.267-42.667 12.8-46.933 38.4l-25.6 217.6h-187.733c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h179.2l-17.067 170.667h-162.133c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h149.333l-21.333 209.067c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l25.6-217.6h170.667l-25.6 209.067c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l25.6-217.6h187.733c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM418.133 597.333l17.067-170.667h170.667l-17.067 170.667h-170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Headphones.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Headphones.js
new file mode 100644
index 00000000..cf733ac1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Headphones.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Headphones
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 85.333c-234.667 0-426.667 192-426.667 426.667v298.667c0 72.533 55.467 128 128 128h42.667c72.533 0 128-55.467 128-128v-128c0-72.533-55.467-128-128-128h-85.333v-42.667c0-187.733 153.6-341.333 341.333-341.333s341.333 153.6 341.333 341.333v42.667h-85.333c-72.533 0-128 55.467-128 128v128c0 72.533 55.467 128 128 128h42.667c72.533 0 128-55.467 128-128v-298.667c0-234.667-192-426.667-426.667-426.667zM256 640c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667h85.333zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h85.333v170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Heart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Heart.js
new file mode 100644
index 00000000..d774fe37
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Heart.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Heart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M917.333 166.4v0c-51.2-51.2-119.467-81.067-192-81.067v0c-72.533 0-145.067 29.867-196.267 81.067 0 0 0 0 0 0l-17.067 17.067-17.067-17.067c-51.2-51.2-119.467-81.067-196.267-81.067-72.533 0-140.8 29.867-192 81.067s-85.333 123.733-85.333 196.267 29.867 145.067 81.067 196.267l375.467 375.467c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l375.467-375.467c115.2-106.667 115.2-285.867 4.267-392.533zM857.6 499.2l-345.6 345.6-345.6-345.6c-76.8-76.8-76.8-196.267 0-273.067 34.133-38.4 85.333-55.467 132.267-55.467 51.2 0 98.133 17.067 136.533 55.467l46.933 46.933c17.067 17.067 42.667 17.067 59.733 0l42.667-46.933c0 0 0 0 0 0 38.4-34.133 85.333-55.467 140.8-55.467 0 0 0 0 0 0 51.2 0 98.133 21.333 136.533 55.467v0c34.133 38.4 55.467 85.333 55.467 136.533s-21.333 98.133-59.733 136.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HelpCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HelpCircle.js
new file mode 100644
index 00000000..31629ee8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/HelpCircle.js
@@ -0,0 +1,14 @@
+// Icon: Feather.HelpCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M563.2 264.533c-89.6-29.867-187.733 17.067-217.6 102.4-4.267 25.6 4.267 51.2 29.867 55.467 21.333 8.533 46.933-4.267 55.467-25.6 17.067-42.667 64-68.267 110.933-51.2 34.133 12.8 55.467 42.667 55.467 81.067 0 42.667-72.533 76.8-98.133 89.6-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 17.067-4.267 157.867-55.467 157.867-166.4-4.267-76.8-51.2-140.8-119.467-166.4z' />
+            <path d='M482.133 695.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Home.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Home.js
new file mode 100644
index 00000000..1eaa8daa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Home.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Home
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 349.867l-384-298.667c-17.067-12.8-38.4-12.8-51.2 0l-384 298.667c-12.8 8.533-17.067 21.333-17.067 34.133v469.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-469.333c0-12.8-4.267-25.6-17.067-34.133zM597.333 896h-170.667v-341.333h170.667v341.333zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-128v-384c0-25.6-17.067-42.667-42.667-42.667h-256c-25.6 0-42.667 17.067-42.667 42.667v384h-128c-25.6 0-42.667-17.067-42.667-42.667v-448l341.333-264.533 341.333 264.533v448z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Image.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Image.js
new file mode 100644
index 00000000..54cd8562
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Image.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Image
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM170.667 213.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v324.267l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0l-452.267 452.267c-17.067-4.267-29.867-21.333-29.867-38.4v-597.333zM810.667 853.333h-494.933l366.933-366.933 170.667 170.667v153.6c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M362.667 469.333c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667-106.667 46.933-106.667 106.667 46.933 106.667 106.667 106.667zM362.667 341.333c12.8 0 21.333 8.533 21.333 21.333s-8.533 21.333-21.333 21.333-21.333-8.533-21.333-21.333 8.533-21.333 21.333-21.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Inbox.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Inbox.js
new file mode 100644
index 00000000..e610a357
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Inbox.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Inbox
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.067 494.933c0 0 0 0 0 0l-149.333-294.4c-21.333-42.667-64-72.533-115.2-72.533h-405.333c-46.933 0-89.6 25.6-110.933 72.533l-145.067 294.4c0 0 0 0 0 0-8.533 4.267-8.533 8.533-8.533 17.067v256c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-256c0-8.533 0-12.8-4.267-17.067zM268.8 238.933c0 0 0 0 0 0 8.533-17.067 25.6-25.6 38.4-25.6h405.333c17.067 0 29.867 8.533 38.4 25.6l115.2 230.4h-183.467c-12.8 0-25.6 8.533-34.133 17.067l-72.533 110.933h-123.733l-72.533-110.933c-12.8-8.533-25.6-17.067-38.4-17.067h-187.733l115.2-230.4zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h170.667c12.8 0 25.6-8.533 34.133-17.067l72.533-110.933h192v213.333c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Info.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Info.js
new file mode 100644
index 00000000..61da6be7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Info.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Info
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M512 469.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 311.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Instagram.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Instagram.js
new file mode 100644
index 00000000..b988a133
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Instagram.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Instagram
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M725.333 42.667h-426.667c-140.8 0-256 115.2-256 256v426.667c0 140.8 115.2 256 256 256h426.667c140.8 0 256-115.2 256-256v-426.667c0-140.8-115.2-256-256-256zM896 725.333c0 93.867-76.8 170.667-170.667 170.667h-426.667c-93.867 0-170.667-76.8-170.667-170.667v-426.667c0-93.867 76.8-170.667 170.667-170.667h426.667c93.867 0 170.667 76.8 170.667 170.667v426.667z' />
+            <path d='M546.133 298.667c-21.333-4.267-42.667-4.267-64 0-115.2 17.067-196.267 128-179.2 243.2 8.533 55.467 38.4 106.667 85.333 140.8 38.4 25.6 81.067 42.667 128 42.667 8.533 0 21.333 0 29.867-4.267 55.467-8.533 106.667-38.4 140.8-85.333s46.933-102.4 38.4-157.867c-12.8-93.867-85.333-166.4-179.2-179.2zM618.667 584.533c-21.333 25.6-51.2 46.933-85.333 51.2-68.267 8.533-136.533-38.4-145.067-106.667-12.8-68.267 38.4-136.533 106.667-145.067 4.267 0 12.8 0 17.067 0s12.8 0 17.067 0c55.467 8.533 98.133 51.2 106.667 106.667 8.533 34.133 0 68.267-17.067 93.867z' />
+            <path d='M716.8 247.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8 12.8 0 21.333-4.267 29.867-12.8s12.8-21.333 12.8-29.867c0-12.8-4.267-21.333-12.8-29.867-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Italic.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Italic.js
new file mode 100644
index 00000000..63674e20
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Italic.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Italic
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 128h-384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 597.333h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h384c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l221.867-597.333h145.067c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layers.js
new file mode 100644
index 00000000..27bd5d06
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layers.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Layers
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M68.267 337.067l426.667 213.333c4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 17.067-4.267l426.667-213.333c17.067-8.533 25.6-21.333 25.6-38.4s-8.533-29.867-25.6-38.4l-426.667-213.333c-12.8-4.267-25.6-4.267-38.4 0l-426.667 213.333c-12.8 8.533-21.333 21.333-21.333 38.4s8.533 29.867 25.6 38.4zM512 132.267l332.8 166.4-332.8 166.4-332.8-166.4 332.8-166.4z' />
+            <path d='M921.6 686.933l-409.6 204.8-409.6-204.8c-21.333-8.533-46.933 0-55.467 17.067s0 46.933 17.067 55.467l426.667 213.333c8.533 8.533 12.8 8.533 21.333 8.533s12.8 0 17.067-4.267l426.667-213.333c21.333-8.533 29.867-34.133 17.067-55.467-8.533-21.333-34.133-29.867-51.2-21.333z' />
+            <path d='M921.6 473.6l-409.6 204.8-409.6-204.8c-21.333-8.533-46.933 0-55.467 17.067-8.533 21.333 0 46.933 17.067 55.467l426.667 213.333c8.533 8.533 12.8 8.533 21.333 8.533s12.8 0 17.067-4.267l426.667-213.333c21.333-8.533 29.867-34.133 17.067-55.467-8.533-21.333-34.133-29.867-51.2-21.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layout.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layout.js
new file mode 100644
index 00000000..26acbaab
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Layout.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Layout
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM213.333 170.667h597.333c25.6 0 42.667 17.067 42.667 42.667v128h-682.667v-128c0-25.6 17.067-42.667 42.667-42.667zM170.667 810.667v-384h170.667v426.667h-128c-25.6 0-42.667-17.067-42.667-42.667zM810.667 853.333h-384v-426.667h426.667v384c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LifeBuoy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LifeBuoy.js
new file mode 100644
index 00000000..108a2854
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LifeBuoy.js
@@ -0,0 +1,12 @@
+// Icon: Feather.LifeBuoy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 844.8c85.333-85.333 136.533-200.533 136.533-332.8 0-128-51.2-247.467-136.533-332.8 0 0 0 0 0 0s0 0 0 0c-85.333-85.333-204.8-136.533-332.8-136.533s-247.467 51.2-332.8 136.533c0 0 0 0 0 0s0 0 0 0c-85.333 85.333-136.533 204.8-136.533 332.8s51.2 247.467 136.533 332.8c0 0 0 0 0 0s0 0 0 0c85.333 85.333 200.533 136.533 332.8 136.533 128 0 247.467-51.2 332.8-136.533 0 0 0 0 0 0s0 0 0 0zM810.667 750.933l-123.733-123.733c25.6-29.867 38.4-72.533 38.4-115.2s-12.8-85.333-34.133-119.467l119.467-119.467c51.2 64 85.333 149.333 85.333 238.933s-29.867 174.933-85.333 238.933zM384 512c0-72.533 55.467-128 128-128s128 55.467 128 128-55.467 128-128 128-128-55.467-128-128zM750.933 213.333l-123.733 123.733c-29.867-25.6-72.533-38.4-115.2-38.4s-85.333 12.8-119.467 34.133l-119.467-119.467c64-55.467 149.333-85.333 238.933-85.333s174.933 29.867 238.933 85.333zM213.333 273.067l123.733 123.733c-25.6 29.867-38.4 72.533-38.4 115.2s12.8 85.333 34.133 119.467l-119.467 119.467c-51.2-64-85.333-149.333-85.333-238.933s29.867-174.933 85.333-238.933zM273.067 810.667l123.733-123.733c29.867 25.6 72.533 38.4 115.2 38.4s85.333-12.8 119.467-34.133l123.733 123.733c-64 51.2-149.333 85.333-238.933 85.333-93.867-4.267-179.2-34.133-243.2-89.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link.js
new file mode 100644
index 00000000..27b5dc35
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Link
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M900.267 119.467c-98.133-98.133-256-98.133-354.133 0l-76.8 72.533c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l72.533-72.533c68.267-64 170.667-64 238.933 0s68.267 174.933 4.267 238.933l-128 128c-4.267 4.267-12.8 12.8-17.067 17.067-76.8 55.467-183.467 42.667-238.933-34.133-12.8-17.067-42.667-21.333-59.733-8.533s-21.333 42.667-8.533 59.733c51.2 68.267 128 102.4 204.8 102.4 51.2 0 106.667-17.067 153.6-51.2 8.533-8.533 17.067-17.067 29.867-25.6l128-128c98.133-98.133 93.867-264.533-8.533-358.4z' />
+            <path d='M490.667 772.267l-72.533 72.533c-68.267 64-170.667 64-238.933 0s-68.267-174.933-4.267-238.933l128-128c4.267-4.267 12.8-12.8 17.067-17.067 38.4-25.6 81.067-38.4 128-34.133 46.933 8.533 85.333 29.867 110.933 68.267 12.8 17.067 42.667 21.333 59.733 8.533s21.333-42.667 8.533-59.733c-42.667-55.467-102.4-89.6-166.4-98.133-64-12.8-132.267 4.267-187.733 46.933-8.533 8.533-17.067 17.067-25.6 25.6l-128 128c-98.133 102.4-93.867 264.533 4.267 362.667 51.2 46.933 115.2 72.533 179.2 72.533s128-25.6 179.2-72.533l72.533-72.533c17.067-17.067 17.067-42.667 0-59.733s-46.933-21.333-64-4.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link2.js
new file mode 100644
index 00000000..d81cd468
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Link2.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Link2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 682.667h-128c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-140.8 0-256 115.2-256 256s115.2 256 256 256h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M768 256h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c140.8 0 256-115.2 256-256s-115.2-256-256-256z' />
+            <path d='M298.667 512c0 25.6 17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-341.333c-25.6 0-42.667 17.067-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Linkedin.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Linkedin.js
new file mode 100644
index 00000000..a6d7c31c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Linkedin.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Linkedin
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 298.667c-166.4 0-298.667 132.267-298.667 298.667v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-166.4-132.267-298.667-298.667-298.667zM896 853.333h-85.333v-256c0-72.533-55.467-128-128-128s-128 55.467-128 128v256h-85.333v-256c0-119.467 93.867-213.333 213.333-213.333s213.333 93.867 213.333 213.333v256z' />
+            <path d='M256 341.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667v512c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-512c0-25.6-17.067-42.667-42.667-42.667zM213.333 853.333h-85.333v-426.667h85.333v426.667z' />
+            <path d='M170.667 42.667c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM170.667 213.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/List.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/List.js
new file mode 100644
index 00000000..3215fc5b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/List.js
@@ -0,0 +1,17 @@
+// Icon: Feather.List
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M341.333 298.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 469.333h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M896 725.333h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M98.133 226.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M98.133 482.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M98.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Loader.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Loader.js
new file mode 100644
index 00000000..886121b8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Loader.js
@@ -0,0 +1,19 @@
+// Icon: Feather.Loader
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M512 725.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M238.933 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-119.467-119.467z' />
+            <path d='M721.067 661.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-119.467-119.467z' />
+            <path d='M298.667 512c0-25.6-17.067-42.667-42.667-42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667z' />
+            <path d='M938.667 469.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M302.933 661.333l-119.467 119.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l119.467-119.467c17.067-17.067 17.067-42.667 0-59.733s-46.933-17.067-59.733 0z' />
+            <path d='M691.2 375.467c12.8 0 21.333-4.267 29.867-12.8l119.467-119.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-119.467 119.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Lock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Lock.js
new file mode 100644
index 00000000..dc75bae3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Lock.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Lock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 426.667h-42.667v-128c0-140.8-115.2-256-256-256s-256 115.2-256 256v128h-42.667c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-72.533-55.467-128-128-128zM341.333 298.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667v128h-341.333v-128zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v298.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogIn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogIn.js
new file mode 100644
index 00000000..e34c7942
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogIn.js
@@ -0,0 +1,13 @@
+// Icon: Feather.LogIn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v597.333c0 25.6-17.067 42.667-42.667 42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128z' />
+            <path d='M678.4 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogOut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogOut.js
new file mode 100644
index 00000000..b8e95bec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/LogOut.js
@@ -0,0 +1,13 @@
+// Icon: Feather.LogOut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 853.333h-170.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M934.4 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mail.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mail.js
new file mode 100644
index 00000000..6ee9bb66
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mail.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Mail
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 128h-682.667c-72.533 0-128 55.467-128 128v512c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM170.667 213.333h682.667c17.067 0 29.867 8.533 38.4 25.6l-379.733 264.533-379.733-264.533c8.533-17.067 21.333-25.6 38.4-25.6zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-430.933l358.4 251.733c8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533l358.4-251.733v430.933c0 25.6-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Map.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Map.js
new file mode 100644
index 00000000..3c9436b9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Map.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Map
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.667 46.933c-12.8-8.533-29.867-8.533-42.667 0l-277.333 162.133-324.267-162.133c0 0 0 0 0 0s0 0-4.267 0c-4.267-4.267-8.533-4.267-12.8-4.267 0 0 0 0 0 0s0 0 0 0c-4.267 0-8.533 0-17.067 4.267 0 0 0 0-4.267 0 0 0-4.267 0-4.267 0l-298.667 170.667c-8.533 8.533-17.067 21.333-17.067 38.4v682.667c0 17.067 8.533 29.867 21.333 38.4s29.867 8.533 42.667 0l277.333-162.133 320 162.133c0 0 0 0 0 0 8.533 4.267 12.8 4.267 21.333 4.267 4.267 0 8.533 0 12.8-4.267 0 0 4.267 0 4.267 0s0 0 4.267 0l298.667-170.667c12.8-8.533 21.333-21.333 21.333-38.4v-682.667c0-17.067-8.533-29.867-21.333-38.4zM384 153.6l256 128v588.8l-256-128v-588.8zM85.333 281.6l213.333-123.733v584.533l-213.333 123.733v-584.533zM938.667 742.4l-213.333 123.733v-584.533l213.333-123.733v584.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MapPin.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MapPin.js
new file mode 100644
index 00000000..49c9ed48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MapPin.js
@@ -0,0 +1,13 @@
+// Icon: Feather.MapPin
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 0c-234.667 0-426.667 192-426.667 426.667 0 315.733 388.267 580.267 401.067 588.8 8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533c12.8-8.533 401.067-273.067 401.067-588.8 0-234.667-192-426.667-426.667-426.667zM512 930.133c-81.067-59.733-341.333-273.067-341.333-503.467 0-187.733 153.6-341.333 341.333-341.333s341.333 153.6 341.333 341.333c0 230.4-260.267 443.733-341.333 503.467z' />
+            <path d='M512 256c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize.js
new file mode 100644
index 00000000..a0b0e370
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Maximize
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M341.333 853.333h-128c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 72.533 55.467 128 128 128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M341.333 85.333h-128c-72.533 0-128 55.467-128 128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M810.667 85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-72.533-55.467-128-128-128z' />
+            <path d='M896 640c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c72.533 0 128-55.467 128-128v-128c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize2.js
new file mode 100644
index 00000000..06589000
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Maximize2.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Maximize2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z' />
+            <path d='M396.8 567.467l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Menu.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Menu.js
new file mode 100644
index 00000000..1dec193e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Menu.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Menu
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 469.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M896 725.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageCircle.js
new file mode 100644
index 00000000..936b3ee0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageCircle.js
@@ -0,0 +1,12 @@
+// Icon: Feather.MessageCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M938.667 465.067c-12.8-204.8-174.933-371.2-384-379.733h-21.333c0 0 0 0 0 0-64 0-123.733 12.8-179.2 42.667-140.8 68.267-226.133 209.067-226.133 362.667 0 55.467 12.8 115.2 34.133 166.4l-76.8 226.133c-4.267 17.067 0 34.133 8.533 42.667 12.8 8.533 21.333 12.8 34.133 12.8 4.267 0 8.533 0 12.8-4.267l226.133-76.8c51.2 21.333 106.667 34.133 166.4 34.133 153.6 0 294.4-85.333 362.667-221.867 29.867-55.467 42.667-119.467 42.667-183.467v-21.333zM853.333 490.667c0 0 0 0 0 0 0 51.2-12.8 98.133-34.133 145.067-55.467 110.933-162.133 174.933-285.867 174.933-51.2 0-98.133-12.8-140.8-34.133-8.533-4.267-21.333-4.267-34.133-4.267l-162.133 55.467 55.467-162.133c4.267-12.8 4.267-21.333-4.267-34.133-21.333-42.667-34.133-93.867-34.133-140.8 0-123.733 68.267-230.4 179.2-285.867 42.667-21.333 93.867-34.133 140.8-34.133 0 0 0 0 0 0h17.067c162.133 8.533 290.133 136.533 302.933 298.667v21.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageSquare.js
new file mode 100644
index 00000000..533f9ed8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MessageSquare.js
@@ -0,0 +1,12 @@
+// Icon: Feather.MessageSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v682.667c0 17.067 8.533 34.133 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8l157.867-157.867h494.933c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM853.333 640c0 25.6-17.067 42.667-42.667 42.667h-512c-12.8 0-21.333 4.267-29.867 12.8l-98.133 98.133v-580.267c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v426.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mic.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mic.js
new file mode 100644
index 00000000..d181aa52
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Mic.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Mic
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 682.667c93.867 0 170.667-76.8 170.667-170.667v-341.333c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667v341.333c0 93.867 76.8 170.667 170.667 170.667zM426.667 170.667c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-341.333z' />
+            <path d='M810.667 384c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 140.8-115.2 256-256 256s-256-115.2-256-256v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 174.933 132.267 315.733 298.667 337.067v89.6h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-89.6c166.4-21.333 298.667-166.4 298.667-337.067v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MicOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MicOff.js
new file mode 100644
index 00000000..a978fbb6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MicOff.js
@@ -0,0 +1,14 @@
+// Icon: Feather.MicOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1011.2 951.467l-251.733-251.733c0-4.267-4.267-4.267-4.267-8.533 0 0-4.267-4.267-4.267-4.267l-337.067-332.8c0 0 0 0 0 0l-341.333-341.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l328.533 328.533v110.933c0 46.933 17.067 89.6 51.2 119.467 29.867 34.133 72.533 51.2 119.467 51.2 0 0 0 0 0 0 29.867 0 59.733-8.533 85.333-25.6l64 64c-42.667 29.867-89.6 46.933-140.8 46.933-4.267 0-4.267 0-8.533 0s-4.267 0-8.533 0c-64 0-123.733-25.6-170.667-72.533-51.2-46.933-76.8-115.2-76.8-183.467v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 93.867 38.4 183.467 102.4 247.467 55.467 55.467 123.733 85.333 196.267 93.867v85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-85.333c59.733-8.533 119.467-29.867 166.4-68.267l230.4 230.4c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-21.333 17.067-46.933 0-64zM512 597.333c0 0 0 0 0 0-21.333 0-42.667-8.533-59.733-25.6s-25.6-38.4-25.6-59.733v-25.6l106.667 106.667c-8.533 4.267-12.8 4.267-21.333 4.267z' />
+            <path d='M379.733 187.733c21.333 4.267 42.667-12.8 46.933-34.133 8.533-38.4 42.667-68.267 85.333-68.267 0 0 0 0 0 0 21.333 0 42.667 8.533 59.733 25.6s25.6 38.4 25.6 59.733v226.133c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-226.133c0-46.933-17.067-89.6-51.2-119.467-29.867-34.133-72.533-51.2-119.467-51.2 0 0 0 0 0 0-81.067 0-149.333 55.467-166.4 136.533-4.267 21.333 8.533 46.933 34.133 51.2z' />
+            <path d='M797.867 605.867c4.267 0 4.267 0 8.533 0 21.333 0 38.4-12.8 42.667-34.133s4.267-38.4 4.267-59.733v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 17.067 0 29.867-4.267 46.933-4.267 21.333 12.8 42.667 34.133 46.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize.js
new file mode 100644
index 00000000..acd0cf59
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Minimize
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 640h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-72.533-55.467-128-128-128z' />
+            <path d='M768 384h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 72.533 55.467 128 128 128z' />
+            <path d='M896 640h-128c-72.533 0-128 55.467-128 128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M341.333 85.333c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c72.533 0 128-55.467 128-128v-128c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize2.js
new file mode 100644
index 00000000..83c123ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minimize2.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Minimize2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M443.733 558.933c-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067-4.267-8.533-12.8-17.067-21.333-21.333z' />
+            <path d='M925.867 98.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minus.js
new file mode 100644
index 00000000..d6799bf3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Minus.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Minus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 469.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusCircle.js
new file mode 100644
index 00000000..b2b185a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.MinusCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusSquare.js
new file mode 100644
index 00000000..1deb12f8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MinusSquare.js
@@ -0,0 +1,13 @@
+// Icon: Feather.MinusSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+            <path d='M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Monitor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Monitor.js
new file mode 100644
index 00000000..179da420
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Monitor.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Monitor
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h298.667v85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-85.333h298.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM896 640c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v426.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Moon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Moon.js
new file mode 100644
index 00000000..fdaa8b96
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Moon.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Moon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M917.333 507.733c-12.8-8.533-34.133-8.533-46.933 4.267-89.6 68.267-213.333 68.267-302.933 0-115.2-85.333-140.8-243.2-55.467-358.4 8.533-12.8 12.8-29.867 4.267-46.933-8.533-12.8-25.6-21.333-42.667-21.333-204.8 17.067-366.933 179.2-384 384-21.333 234.667 149.333 443.733 384 465.067 12.8 0 25.6 0 38.4 0 98.133 0 196.267-34.133 273.067-98.133 89.6-72.533 140.8-174.933 153.6-290.133 0-12.8-8.533-29.867-21.333-38.4zM733.867 772.267c-68.267 59.733-157.867 85.333-247.467 76.8-187.733-17.067-324.267-183.467-307.2-371.2 12.8-132.267 102.4-247.467 221.867-290.133-51.2 136.533-4.267 298.667 119.467 392.533 93.867 68.267 213.333 85.333 320 46.933-25.6 55.467-59.733 106.667-106.667 145.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreHorizontal.js
new file mode 100644
index 00000000..5ceba16d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreHorizontal.js
@@ -0,0 +1,14 @@
+// Icon: Feather.MoreHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M597.333 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M896 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M298.667 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreVertical.js
new file mode 100644
index 00000000..6a5a023c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/MoreVertical.js
@@ -0,0 +1,14 @@
+// Icon: Feather.MoreVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M597.333 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M597.333 213.333c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M597.333 810.667c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Move.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Move.js
new file mode 100644
index 00000000..22fe066c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Move.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Move
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.067 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-128-128c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l55.467 55.467h-281.6v-281.6l55.467 55.467c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-128-128c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-128 128c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l55.467-55.467v281.6h-281.6l55.467-55.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-128 128c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l128 128c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-55.467-55.467h281.6v281.6l-55.467-55.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l128-128c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-55.467 55.467v-281.6h281.6l-55.467 55.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l128-128c4.267-4.267 8.533-8.533 8.533-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Music.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Music.js
new file mode 100644
index 00000000..d1d9d105
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Music.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Music
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 93.867c-8.533-8.533-21.333-8.533-34.133-8.533l-512 85.333c-17.067 4.267-34.133 21.333-34.133 42.667v469.333h-128c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333c72.533 0 128-55.467 128-128v-563.2l426.667-72.533v422.4h-128c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333c72.533 0 128-55.467 128-128v-597.333c0-12.8-4.267-25.6-17.067-34.133zM341.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-85.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h128v42.667zM853.333 725.333c0 25.6-17.067 42.667-42.667 42.667h-85.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h128v42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation.js
new file mode 100644
index 00000000..46a7ed92
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Navigation
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.533 55.467c-12.8-12.8-29.867-17.067-46.933-8.533l-810.667 384c-17.067 8.533-25.6 25.6-25.6 42.667s12.8 34.133 34.133 38.4l315.733 81.067 81.067 315.733c4.267 17.067 21.333 29.867 38.4 34.133 0 0 4.267 0 4.267 0 17.067 0 29.867-8.533 38.4-25.6l384-810.667c4.267-21.333-0-38.4-12.8-51.2zM567.467 768l-55.467-221.867c-4.267-17.067-17.067-25.6-29.867-29.867l-226.133-59.733 593.067-281.6-281.6 593.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation2.js
new file mode 100644
index 00000000..bb994e71
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Navigation2.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Navigation2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M849.067 883.2l-298.667-810.667c-4.267-17.067-21.333-29.867-38.4-29.867s-34.133 12.8-38.4 29.867l-298.667 810.667c-4.267 17.067 0 34.133 12.8 46.933s34.133 12.8 46.933 4.267l277.333-157.867 277.333 157.867c8.533 4.267 12.8 4.267 21.333 4.267s21.333-4.267 25.6-8.533c17.067-12.8 21.333-34.133 12.8-46.933zM533.333 686.933c-8.533-4.267-12.8-4.267-21.333-4.267s-12.8 0-21.333 4.267l-196.267 110.933 217.6-588.8 217.6 593.067-196.267-115.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Octagon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Octagon.js
new file mode 100644
index 00000000..8272e6e7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Octagon.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Octagon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.533 307.2l-251.733-251.733c-4.267-8.533-17.067-12.8-29.867-12.8h-349.867c-12.8 0-25.6 4.267-29.867 12.8l-251.733 251.733c-8.533 4.267-12.8 17.067-12.8 29.867v354.133c0 12.8 4.267 21.333 12.8 29.867l251.733 251.733c4.267 4.267 17.067 8.533 29.867 8.533h354.133c12.8 0 21.333-4.267 29.867-12.8l251.733-251.733c8.533-8.533 12.8-17.067 12.8-29.867v-349.867c-4.267-12.8-8.533-25.6-17.067-29.867zM896 669.867l-226.133 226.133h-315.733l-226.133-226.133v-315.733l226.133-226.133h320l221.867 226.133v315.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Package.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Package.js
new file mode 100644
index 00000000..9ccfcd78
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Package.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Package
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M908.8 196.267l-341.333-170.667c0 0 0 0 0 0-34.133-17.067-76.8-17.067-115.2 0l-341.333 170.667c-42.667 21.333-68.267 64-68.267 110.933v405.333c0 46.933 25.6 93.867 72.533 115.2l341.333 170.667c17.067 8.533 38.4 12.8 55.467 12.8 21.333 0 38.4-4.267 55.467-12.8l341.333-170.667c42.667-21.333 72.533-64 72.533-115.2v-405.333c0-46.933-25.6-89.6-72.533-110.933zM494.933 98.133c4.267-4.267 12.8-4.267 17.067-4.267 8.533 0 12.8 0 17.067 4.267l315.733 157.867-119.467 59.733-332.8-166.4 102.4-51.2zM512 422.4l-332.8-166.4 119.467-59.733 332.8 166.4-119.467 59.733zM149.333 755.2c-12.8-8.533-21.333-25.6-21.333-38.4v-392.533l341.333 170.667v418.133l-320-157.867zM870.4 755.2l-315.733 157.867v-418.133l341.333-170.667v392.533c0 17.067-8.533 29.867-25.6 38.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Paperclip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Paperclip.js
new file mode 100644
index 00000000..e5bdd012
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Paperclip.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Paperclip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M942.933 439.467c-17.067-17.067-42.667-17.067-59.733 0l-392.533 392.533c-85.333 85.333-217.6 85.333-302.933 0s-85.333-217.6 0-302.933l392.533-392.533c46.933-46.933 132.267-46.933 179.2 0 51.2 51.2 51.2 132.267 0 179.2l-392.533 392.533c-17.067 17.067-42.667 17.067-59.733 0-4.267-4.267-8.533-12.8-8.533-25.6s4.267-21.333 12.8-29.867l362.667-362.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-362.667 362.667c-25.6 21.333-38.4 55.467-38.4 89.6s12.8 68.267 38.4 89.6c51.2 51.2 132.267 51.2 179.2 0l392.533-392.533c85.333-85.333 85.333-217.6 0-302.933-38.4-38.4-93.867-64-149.333-64s-110.933 21.333-149.333 64l-392.533 392.533c-115.2 115.2-115.2 307.2 0 422.4 59.733 59.733 136.533 85.333 213.333 85.333s153.6-29.867 213.333-85.333l392.533-392.533c8.533-12.8 8.533-42.667-8.533-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pause.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pause.js
new file mode 100644
index 00000000..50122d18
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pause.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Pause
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M426.667 128h-170.667c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667zM384 810.667h-85.333v-597.333h85.333v597.333z' />
+            <path d='M768 128h-170.667c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667zM725.333 810.667h-85.333v-597.333h85.333v597.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PauseCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PauseCircle.js
new file mode 100644
index 00000000..061faf45
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PauseCircle.js
@@ -0,0 +1,14 @@
+// Icon: Feather.PauseCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M426.667 341.333c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M597.333 341.333c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Percent.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Percent.js
new file mode 100644
index 00000000..d4e657b0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Percent.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Percent
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M840.533 183.467c-17.067-17.067-42.667-17.067-59.733 0l-597.333 597.333c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l597.333-597.333c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M277.333 426.667c81.067 0 149.333-68.267 149.333-149.333s-68.267-149.333-149.333-149.333-149.333 68.267-149.333 149.333 68.267 149.333 149.333 149.333zM277.333 213.333c34.133 0 64 29.867 64 64s-29.867 64-64 64-64-29.867-64-64 29.867-64 64-64z' />
+            <path d='M746.667 597.333c-81.067 0-149.333 68.267-149.333 149.333s68.267 149.333 149.333 149.333 149.333-68.267 149.333-149.333-68.267-149.333-149.333-149.333zM746.667 810.667c-34.133 0-64-29.867-64-64s29.867-64 64-64 64 29.867 64 64-29.867 64-64 64z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Phone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Phone.js
new file mode 100644
index 00000000..f37c5c7b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Phone.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Phone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneCall.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneCall.js
new file mode 100644
index 00000000..6049cfff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneCall.js
@@ -0,0 +1,14 @@
+// Icon: Feather.PhoneCall
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+            <path d='M648.533 0c-21.333-4.267-42.667 12.8-46.933 38.4-4.267 21.333 12.8 42.667 38.4 46.933 157.867 17.067 281.6 140.8 302.933 302.933 4.267 21.333 21.333 38.4 42.667 38.4 0 0 4.267 0 4.267 0 21.333-4.267 38.4-25.6 38.4-46.933-25.6-200.533-183.467-358.4-379.733-379.733z' />
+            <path d='M768 388.267c4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 21.333-4.267 38.4-25.6 34.133-51.2-21.333-102.4-98.133-183.467-200.533-200.533-21.333-4.267-46.933 8.533-51.2 34.133s8.533 46.933 34.133 51.2c68.267 12.8 119.467 64 132.267 132.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneForwarded.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneForwarded.js
new file mode 100644
index 00000000..e3621c2f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneForwarded.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PhoneForwarded
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 230.4c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-238.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h238.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8z' />
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneIncoming.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneIncoming.js
new file mode 100644
index 00000000..87dd9f9d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneIncoming.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PhoneIncoming
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1011.2 12.8c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneMissed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneMissed.js
new file mode 100644
index 00000000..08f00ba4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneMissed.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PhoneMissed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M913.067 170.667l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133z' />
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOff.js
new file mode 100644
index 00000000..46a4b3d3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PhoneOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M221.867 588.8c8.533 0 17.067-4.267 21.333-8.533 21.333-12.8 25.6-38.4 12.8-59.733-68.267-102.4-110.933-221.867-123.733-345.6 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l55.467-55.467c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-12.8-59.733-68.267-106.667-132.267-106.667 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 8.533 8.533 25.6 17.067 38.4 17.067z' />
+            <path d='M1011.2 12.8c-17.067-17.067-42.667-17.067-59.733 0l-524.8 524.8c0 0 0 0 0 0s0 0 0 0l-413.867 413.867c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l264.533-264.533c38.4 34.133 76.8 64 119.467 89.6 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c0-64-46.933-119.467-110.933-128-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-25.6-17.067-51.2-38.4-76.8-59.733l490.667-490.667c17.067-17.067 17.067-42.667 0-59.733zM580.267 716.8c17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 21.333 4.267 38.4 21.333 38.4 42.667v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-38.4-21.333-72.533-51.2-102.4-81.067l59.733-59.733c34.133 34.133 76.8 64 119.467 89.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOutgoing.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOutgoing.js
new file mode 100644
index 00000000..39a06846
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PhoneOutgoing.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PhoneOutgoing
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 25.6c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z' />
+            <path d='M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PieChart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PieChart.js
new file mode 100644
index 00000000..393487ee
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PieChart.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PieChart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 640c-21.333-8.533-46.933 0-55.467 21.333-81.067 196.267-307.2 285.867-503.467 204.8s-285.867-307.2-204.8-503.467c38.4-89.6 110.933-162.133 200.533-200.533 21.333-8.533 29.867-34.133 21.333-55.467s-34.133-34.133-55.467-25.6c-110.933 46.933-196.267 136.533-243.2 247.467-102.4 238.933 12.8 516.267 247.467 614.4 59.733 25.6 123.733 38.4 183.467 38.4 183.467 0 358.4-106.667 430.933-285.867 8.533-21.333 0-46.933-21.333-55.467z' />
+            <path d='M512 42.667c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667h426.667c25.6 0 42.667-17.067 42.667-42.667 0-260.267-209.067-469.333-469.333-469.333zM554.667 469.333v-337.067c179.2 21.333 320 162.133 337.067 337.067h-337.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Play.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Play.js
new file mode 100644
index 00000000..e9a7b646
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Play.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Play
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M832 477.867l-597.333-384c-12.8-8.533-29.867-8.533-42.667 0-12.8 4.267-21.333 17.067-21.333 34.133v768c0 17.067 8.533 29.867 21.333 38.4 8.533 4.267 12.8 4.267 21.333 4.267s17.067-4.267 21.333-8.533l597.333-384c12.8-8.533 21.333-21.333 21.333-34.133s-8.533-29.867-21.333-34.133zM256 819.2v-614.4l477.867 307.2-477.867 307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlayCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlayCircle.js
new file mode 100644
index 00000000..a8f0569d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlayCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PlayCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M708.267 477.867l-256-170.667c-12.8-8.533-29.867-8.533-42.667 0-17.067 4.267-25.6 17.067-25.6 34.133v341.333c0 17.067 8.533 29.867 21.333 38.4 8.533 4.267 12.8 4.267 21.333 4.267s17.067-4.267 25.6-8.533l256-170.667c12.8-8.533 17.067-21.333 17.067-34.133s-8.533-25.6-17.067-34.133zM469.333 601.6v-179.2l136.533 89.6-136.533 89.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Plus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Plus.js
new file mode 100644
index 00000000..d2255e0d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Plus.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Plus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 469.333h-256v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusCircle.js
new file mode 100644
index 00000000..13156b2b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PlusCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusSquare.js
new file mode 100644
index 00000000..c7db8add
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/PlusSquare.js
@@ -0,0 +1,13 @@
+// Icon: Feather.PlusSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+            <path d='M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pocket.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pocket.js
new file mode 100644
index 00000000..2312f046
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Pocket.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Pocket
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v256c0 260.267 209.067 469.333 469.333 469.333s469.333-209.067 469.333-469.333v-256c0-72.533-55.467-128-128-128zM896 469.333c0 213.333-170.667 384-384 384s-384-170.667-384-384v-256c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v256z' />
+            <path d='M652.8 396.8l-140.8 140.8-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Power.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Power.js
new file mode 100644
index 00000000..60b1893f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Power.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Power
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M814.933 251.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c132.267 132.267 132.267 349.867 0 482.133s-349.867 132.267-482.133 0c-132.267-132.267-132.267-349.867 0-482.133 17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0c-170.667 166.4-170.667 439.467-4.267 605.867 85.333 81.067 192 123.733 302.933 123.733s217.6-42.667 302.933-123.733c166.4-166.4 166.4-439.467 0-605.867z' />
+            <path d='M512 554.667c25.6 0 42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Printer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Printer.js
new file mode 100644
index 00000000..b201bb1a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Printer.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Printer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 341.333h-42.667v-256c0-25.6-17.067-42.667-42.667-42.667h-512c-25.6 0-42.667 17.067-42.667 42.667v256h-42.667c-72.533 0-128 55.467-128 128v213.333c0 72.533 55.467 128 128 128h42.667v128c0 25.6 17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667v-128h42.667c72.533 0 128-55.467 128-128v-213.333c0-72.533-55.467-128-128-128zM298.667 128h426.667v213.333h-426.667v-213.333zM725.333 896h-426.667v-256h426.667v256zM896 682.667c0 25.6-17.067 42.667-42.667 42.667h-42.667v-128c0-25.6-17.067-42.667-42.667-42.667h-512c-25.6 0-42.667 17.067-42.667 42.667v128h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Radio.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Radio.js
new file mode 100644
index 00000000..b913d014
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Radio.js
@@ -0,0 +1,16 @@
+// Icon: Feather.Radio
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 384c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM512 554.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z' />
+            <path d='M844.8 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c149.333 149.333 149.333 392.533 0 541.867-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c183.467-179.2 183.467-477.867 0-661.333z' />
+            <path d='M238.933 238.933c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0c-183.467 183.467-183.467 482.133 0 665.6 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733-149.333-149.333-149.333-396.8 0-546.133z' />
+            <path d='M298.667 512c0-55.467 21.333-110.933 64-149.333 0 0 0 0 0 0 17.067-17.067 12.8-42.667 0-59.733-17.067-17.067-42.667-17.067-59.733 0 0 0 0 0 0 0-115.2 115.2-115.2 307.2 0 422.4 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733-42.667-42.667-64-98.133-64-153.6z' />
+            <path d='M721.067 302.933c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c85.333 81.067 85.333 217.6 4.267 298.667-4.267 4.267-8.533 8.533-12.8 12.8-8.533 21.333 0 46.933 17.067 55.467 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8 123.733-115.2 123.733-302.933 4.267-418.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCcw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCcw.js
new file mode 100644
index 00000000..c0d0c2d5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCcw.js
@@ -0,0 +1,13 @@
+// Icon: Feather.RefreshCcw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M42.667 469.333h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-149.333l119.467-115.2c34.133-34.133 81.067-64 128-81.067 85.333-29.867 179.2-25.6 260.267 12.8s145.067 106.667 174.933 196.267c8.533 21.333 34.133 34.133 55.467 25.6s34.133-34.133 25.6-55.467c-38.4-106.667-115.2-192-217.6-243.2s-217.6-55.467-324.267-17.067c-59.733 25.6-115.2 59.733-157.867 102.4l-128 119.467v-157.867c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 0 0 4.267 0 4.267 0 4.267 0 8.533 0 8.533 0 4.267 4.267 4.267 4.267 8.533 0 0 0 4.267 4.267 4.267 0 0 0 0 0 0 4.267 4.267 8.533 8.533 12.8 8.533 0 0 0 0 0 0 8.533 8.533 17.067 8.533 21.333 8.533z' />
+            <path d='M1024 588.8c0-4.267 0-4.267 0-8.533s-4.267-4.267-4.267-8.533c0 0 0-4.267-4.267-4.267 0 0 0 0 0 0-4.267-4.267-4.267-4.267-8.533-4.267 0 0-4.267-4.267-4.267-4.267s-4.267 0-4.267 0-8.533 0-12.8-4.267c0 0 0 0 0 0h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h149.333l-119.467 115.2c-132.267 132.267-349.867 132.267-482.133 0-34.133-34.133-64-81.067-81.067-128-8.533-21.333-34.133-34.133-55.467-25.6s-34.133 34.133-25.6 55.467c21.333 59.733 55.467 115.2 102.4 157.867 85.333 85.333 192 123.733 302.933 123.733s217.6-42.667 298.667-123.733l128-119.467v157.867c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c-8.533-4.267-8.533-4.267-8.533-8.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCw.js
new file mode 100644
index 00000000..f8615f0c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RefreshCw.js
@@ -0,0 +1,13 @@
+// Icon: Feather.RefreshCw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M887.467 601.6c-21.333-8.533-46.933 4.267-55.467 25.6-17.067 46.933-42.667 93.867-81.067 128-59.733 64-149.333 98.133-238.933 98.133 0 0 0 0 0 0-89.6 0-174.933-34.133-243.2-102.4l-119.467-110.933h149.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c0 0 0 0 0 0-4.267 0-8.533 0-8.533 4.267 0 0-4.267 0-4.267 0s-4.267 0-4.267 4.267c-4.267 0-8.533 4.267-8.533 8.533 0 0 0 0 0 0s0 4.267-4.267 4.267c0 4.267-4.267 4.267-4.267 8.533s0 4.267 0 8.533c0 0 0 4.267 0 4.267v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-157.867l123.733 119.467c72.533 81.067 179.2 123.733 294.4 123.733 0 0 0 0 0 0 115.2 0 221.867-42.667 302.933-123.733 42.667-42.667 81.067-98.133 102.4-157.867 4.267-25.6-8.533-51.2-29.867-55.467z' />
+            <path d='M1024 430.933c0 0 0-4.267 0-4.267v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v157.867l-123.733-119.467c-42.667-42.667-98.133-81.067-157.867-102.4-110.933-34.133-226.133-29.867-328.533 21.333-102.4 46.933-179.2 132.267-217.6 243.2-8.533 21.333 4.267 46.933 25.6 51.2 21.333 8.533 46.933-4.267 55.467-25.6 29.867-85.333 93.867-153.6 174.933-196.267 81.067-38.4 174.933-42.667 260.267-12.8 46.933 17.067 93.867 42.667 128 81.067l119.467 115.2h-149.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c4.267 0 12.8 0 17.067-4.267 0 0 0 0 0 0 4.267-4.267 8.533-4.267 12.8-8.533 0 0 0 0 0 0s0-4.267 4.267-4.267c0-4.267 4.267-4.267 4.267-8.533 4.267-4.267 4.267-8.533 4.267-12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Repeat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Repeat.js
new file mode 100644
index 00000000..6cf30370
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Repeat.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Repeat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 512c25.6 0 42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h494.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8 4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-494.933c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667z' />
+            <path d='M896 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 72.533-55.467 128-128 128h-494.933l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-170.667 170.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l170.667 170.667c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133h494.933c119.467 0 213.333-93.867 213.333-213.333v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rewind.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rewind.js
new file mode 100644
index 00000000..2e5450be
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rewind.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Rewind
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-384 298.667c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l384 298.667c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c0-17.067-8.533-29.867-25.6-38.4zM426.667 725.333l-273.067-213.333 273.067-213.333v426.667z' />
+            <path d='M955.733 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-384 298.667c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l384 298.667c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c0-17.067-8.533-29.867-25.6-38.4zM896 725.333l-273.067-213.333 273.067-213.333v426.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCcw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCcw.js
new file mode 100644
index 00000000..0fece015
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCcw.js
@@ -0,0 +1,12 @@
+// Icon: Feather.RotateCcw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M913.067 371.2c-38.4-106.667-115.2-192-217.6-243.2s-217.6-55.467-324.267-17.067c-59.733 21.333-115.2 55.467-157.867 98.133l-128 119.467v-157.867c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 0 0 4.267 0 4.267 0 4.267 0 8.533 0 8.533 0 4.267 4.267 4.267 4.267 8.533 0 0 0 4.267 4.267 4.267 0 0 0 0 0 0 4.267 4.267 4.267 4.267 8.533 4.267 0 0 4.267 4.267 4.267 4.267s4.267 0 4.267 0 8.533 0 8.533 0c0 0 0 0 0 0h256c25.6 0 42.667-17.067 42.667-42.667s-8.533-34.133-34.133-34.133h-149.333l119.467-115.2c34.133-34.133 81.067-64 128-81.067 85.333-29.867 179.2-25.6 260.267 12.8s145.067 106.667 174.933 196.267c29.867 85.333 25.6 179.2-12.8 260.267s-106.667 145.067-196.267 174.933c-179.2 64-371.2-29.867-435.2-209.067-8.533-21.333-34.133-34.133-55.467-25.6s-34.133 34.133-25.6 55.467c64 174.933 230.4 285.867 405.333 285.867 46.933 0 93.867-8.533 140.8-25.6 221.867-76.8 341.333-320 260.267-541.867z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCw.js
new file mode 100644
index 00000000..06ff2a36
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/RotateCw.js
@@ -0,0 +1,12 @@
+// Icon: Feather.RotateCw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 430.933c0 0 0-4.267 0-4.267v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v157.867l-123.733-119.467c-42.667-42.667-98.133-81.067-157.867-102.4-226.133-76.8-469.333 42.667-546.133 264.533s38.4 465.067 260.267 546.133c46.933 12.8 93.867 21.333 140.8 21.333 174.933 0 341.333-110.933 401.067-285.867 8.533-21.333-4.267-46.933-25.6-55.467s-46.933 4.267-55.467 25.6c-64 179.2-256 268.8-435.2 209.067-179.2-64-268.8-256-209.067-435.2 64-174.933 260.267-268.8 439.467-204.8 46.933 17.067 93.867 42.667 128 81.067l119.467 110.933h-149.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c0 0 0 0 0 0 4.267 0 8.533 0 8.533-4.267 0 0 4.267 0 4.267 0s4.267-4.267 4.267-4.267c4.267 0 8.533-4.267 8.533-8.533 0 0 0 0 0 0s0-4.267 4.267-4.267c0-4.267 4.267-4.267 4.267-8.533 8.533-0 8.533-4.267 8.533-8.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rss.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rss.js
new file mode 100644
index 00000000..15a74c9f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Rss.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Rss
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M170.667 426.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667c187.733 0 341.333 153.6 341.333 341.333 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-234.667-192-426.667-426.667-426.667z' />
+            <path d='M170.667 128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667c354.133 0 640 285.867 640 640 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-401.067-324.267-725.333-725.333-725.333z' />
+            <path d='M298.667 810.667c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Save.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Save.js
new file mode 100644
index 00000000..4abf02ea
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Save.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Save
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 311.467l-213.333-213.333c-8.533-8.533-17.067-12.8-29.867-12.8h-469.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-469.333c0-12.8-4.267-21.333-12.8-29.867zM682.667 853.333h-341.333v-256h341.333v256zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667h-426.667c-25.6 0-42.667 17.067-42.667 42.667v298.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h42.667v170.667c0 25.6 17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-298.667v-128h324.267l187.733 187.733v452.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Scissors.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Scissors.js
new file mode 100644
index 00000000..37d38c69
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Scissors.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Scissors
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M883.2 200.533c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-311.467 311.467-110.933-110.933c17.067-25.6 25.6-55.467 25.6-85.333 0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667 76.8 170.667 170.667 170.667c29.867 0 59.733-8.533 85.333-25.6l110.933 110.933-110.933 110.933c-25.6-17.067-55.467-25.6-85.333-25.6-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-29.867-8.533-59.733-25.6-85.333l482.133-482.133zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 25.6-8.533 42.667-25.6 59.733 0 0 0 0 0 0s0 0 0 0c-17.067 17.067-34.133 25.6-59.733 25.6-46.933 0-85.333-38.4-85.333-85.333zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c25.6 0 42.667 8.533 59.733 25.6 0 0 0 0 0 0s0 0 0 0c17.067 17.067 25.6 34.133 25.6 59.733 0 46.933-38.4 85.333-85.333 85.333z' />
+            <path d='M648.533 588.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l234.667 234.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-234.667-234.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Search.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Search.js
new file mode 100644
index 00000000..7ab86c08
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Search.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Search
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Send.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Send.js
new file mode 100644
index 00000000..4b9c0b72
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Send.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Send
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 81.067c0-4.267 0-8.533-4.267-12.8 0 0 0-4.267 0-4.267 0-4.267-4.267-8.533-8.533-12.8s-8.533-4.267-12.8-8.533c0 0-4.267 0-4.267 0-4.267 0-8.533 0-12.8-4.267 0 4.267 0 4.267 0 4.267-4.267 0-8.533 0-12.8 4.267l-853.333 298.667c-17.067 4.267-29.867 17.067-29.867 38.4 0 17.067 8.533 34.133 25.6 42.667l366.933 162.133 162.133 366.933c8.533 17.067 21.333 25.6 38.4 25.6 0 0 0 0 0 0 17.067 0 34.133-12.8 38.4-29.867l298.667-853.333c8.533-4.267 8.533-8.533 8.533-17.067 0 4.267 0 4.267 0 0zM776.533 187.733l-315.733 315.733-260.267-115.2 576-200.533zM635.733 823.467l-115.2-260.267 315.733-315.733-200.533 576z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Server.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Server.js
new file mode 100644
index 00000000..23d624bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Server.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Server
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 42.667h-682.667c-72.533 0-128 55.467-128 128v170.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-170.667c0-72.533-55.467-128-128-128zM896 341.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v170.667z' />
+            <path d='M853.333 554.667h-682.667c-72.533 0-128 55.467-128 128v170.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-170.667c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v170.667z' />
+            <path d='M226.133 226.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+            <path d='M226.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Settings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Settings.js
new file mode 100644
index 00000000..604d6b3a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Settings.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Settings
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+            <path d='M866.133 657.067c4.267-8.533 12.8-17.067 29.867-17.067 72.533 0 128-55.467 128-128s-55.467-128-128-128h-8.533c-8.533 0-17.067-4.267-21.333-12.8 0-4.267 0-4.267-4.267-8.533-4.267-8.533-4.267-21.333 8.533-34.133 51.2-51.2 51.2-132.267 0-179.2v0c0 0 0 0 0 0-25.6-25.6-55.467-38.4-89.6-38.4 0 0 0 0 0 0-34.133 0-68.267 12.8-93.867 38.4-8.533 8.533-21.333 8.533-29.867 4.267-8.533 0-17.067-12.8-17.067-25.6 0-72.533-55.467-128-128-128s-128 55.467-128 128v8.533c0 8.533-4.267 17.067-12.8 21.333-4.267 0-4.267 0-8.533 4.267-8.533 4.267-21.333 0-34.133-8.533-51.2-51.2-132.267-51.2-179.2 0-51.2 51.2-51.2 132.267 4.267 183.467 8.533 8.533 8.533 21.333 4.267 34.133-4.267 8.533-17.067 17.067-29.867 17.067-72.533 0-128 55.467-128 128s55.467 128 128 128h8.533c12.8 0 21.333 8.533 25.6 17.067s4.267 21.333-8.533 34.133c-25.6 25.6-38.4 55.467-38.4 89.6s12.8 64 38.4 89.6c0 0 0 0 0 0 51.2 51.2 132.267 51.2 183.467-4.267 8.533-8.533 21.333-8.533 34.133-4.267s17.067 12.8 17.067 29.867c0 72.533 55.467 128 128 128s128-55.467 128-128v-8.533c0-12.8 8.533-21.333 17.067-25.6s21.333-4.267 34.133 8.533c51.2 51.2 132.267 51.2 179.2 0 51.2-51.2 51.2-132.267-4.267-183.467-4.267-8.533-8.533-21.333-4.267-29.867 0 0 0 0 0 0zM789.333 622.933c-17.067 42.667-8.533 89.6 25.6 128 8.533 8.533 12.8 17.067 12.8 29.867s-4.267 21.333-12.8 29.867c-8.533 8.533-17.067 12.8-29.867 12.8 0 0 0 0 0 0-12.8 0-21.333-4.267-34.133-17.067-34.133-34.133-81.067-42.667-123.733-21.333-42.667 17.067-68.267 59.733-68.267 102.4v8.533c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667c0 0 0-4.267 0-4.267 0-46.933-29.867-85.333-72.533-102.4-12.8-8.533-29.867-8.533-46.933-8.533-29.867 0-59.733 12.8-81.067 34.133-17.067 17.067-42.667 17.067-59.733 0 0 0 0 0 0 0v0c-8.533-8.533-12.8-17.067-12.8-29.867s4.267-21.333 17.067-34.133c34.133-34.133 42.667-81.067 21.333-123.733-17.067-42.667-59.733-68.267-102.4-68.267h-8.533c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667c0 0 4.267 0 4.267 0 46.933 0 85.333-29.867 102.4-72.533s8.533-89.6-25.6-128c-17.067-17.067-17.067-42.667 0-59.733s42.667-17.067 64 4.267c29.867 29.867 76.8 38.4 115.2 25.6 4.267 0 8.533 0 12.8-4.267 42.667-17.067 68.267-59.733 68.267-102.4v-8.533c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 46.933c0 46.933 25.6 85.333 68.267 102.4s89.6 8.533 128-25.6c8.533-8.533 17.067-12.8 29.867-12.8v0c12.8 0 21.333 4.267 29.867 12.8 0 0 0 0 0 0 17.067 17.067 17.067 42.667-4.267 64-29.867 29.867-38.4 76.8-25.6 115.2 0 4.267 0 8.533 4.267 12.8 17.067 42.667 59.733 68.267 102.4 68.267h8.533c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-46.933 42.667c-42.667-0-85.333 25.6-102.4 68.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share.js
new file mode 100644
index 00000000..35405c49
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Share
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 469.333c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v341.333c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-341.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M371.2 285.867l98.133-98.133v452.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-452.267l98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share2.js
new file mode 100644
index 00000000..eeaf2f9b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Share2.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Share2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 640c-46.933 0-89.6 21.333-119.467 51.2l-226.133-132.267c0-17.067 4.267-29.867 4.267-46.933s-4.267-29.867-8.533-46.933l226.133-132.267c34.133 29.867 76.8 51.2 123.733 51.2 93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667-170.667 76.8-170.667 170.667c0 17.067 4.267 29.867 8.533 46.933l-230.4 132.267c-29.867-29.867-72.533-51.2-119.467-51.2-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c46.933 0 89.6-21.333 119.467-51.2l226.133 132.267c-0 17.067-4.267 29.867-4.267 46.933 0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667-76.8-170.667-170.667-170.667zM768 128c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM256 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333zM768 896c-46.933 0-85.333-38.4-85.333-85.333 0-17.067 4.267-29.867 12.8-42.667 0 0 0 0 0 0s0 0 0 0c12.8-25.6 42.667-42.667 72.533-42.667 46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shield.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shield.js
new file mode 100644
index 00000000..939adf21
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shield.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Shield
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 174.933l-341.333-128c-8.533-4.267-21.333-4.267-29.867 0l-341.333 128c-17.067 4.267-29.867 21.333-29.867 38.4v298.667c0 277.333 349.867 456.533 366.933 465.067 4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 17.067-4.267c17.067-8.533 366.933-187.733 366.933-465.067v-298.667c0-17.067-12.8-34.133-25.6-38.4zM810.667 512c0 192-230.4 337.067-298.667 379.733-68.267-38.4-298.667-183.467-298.667-379.733v-268.8l298.667-110.933 298.667 110.933v268.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShieldOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShieldOff.js
new file mode 100644
index 00000000..901f96f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShieldOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ShieldOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M392.533 174.933l119.467-42.667 298.667 110.933v268.8c0 25.6-4.267 51.2-12.8 72.533s4.267 46.933 29.867 51.2c4.267 0 8.533 0 12.8 0 17.067 0 34.133-12.8 42.667-29.867 8.533-29.867 12.8-64 17.067-98.133v-294.4c0-17.067-12.8-34.133-25.6-38.4l-341.333-128c-8.533-4.267-21.333-4.267-29.867 0l-140.8 46.933c-21.333 8.533-34.133 34.133-25.6 55.467s34.133 34.133 55.467 25.6z' />
+            <path d='M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c0 8.533-4.267 12.8-4.267 21.333v298.667c0 277.333 349.867 456.533 366.933 465.067 4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 21.333-4.267c81.067-42.667 153.6-98.133 221.867-162.133l200.533 200.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c12.8-21.333 12.8-46.933-4.267-64zM512 891.733c-68.267-38.4-298.667-183.467-298.667-379.733v-238.933l477.867 477.867c-51.2 55.467-110.933 102.4-179.2 140.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingBag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingBag.js
new file mode 100644
index 00000000..2341d4cd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingBag.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ShoppingBag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M934.4 238.933c0 0 0-4.267-4.267-4.267 0 0 0-4.267-4.267-4.267l-128-170.667c-4.267-12.8-17.067-17.067-29.867-17.067h-512c-12.8 0-25.6 4.267-34.133 17.067l-128 170.667c0 0 0 4.267-4.267 4.267 0 0 0 4.267-4.267 4.267 0 8.533 0 12.8 0 17.067v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-4.267 0-8.533-4.267-17.067zM277.333 128h469.333l64 85.333h-597.333l64-85.333zM810.667 896h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-554.667h682.667v554.667c0 25.6-17.067 42.667-42.667 42.667z' />
+            <path d='M682.667 384c-25.6 0-42.667 17.067-42.667 42.667 0 72.533-55.467 128-128 128s-128-55.467-128-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667c0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingCart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingCart.js
new file mode 100644
index 00000000..8dbb4a88
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ShoppingCart.js
@@ -0,0 +1,14 @@
+// Icon: Feather.ShoppingCart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M469.333 896c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M938.667 896c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z' />
+            <path d='M1015.467 230.4c-8.533-12.8-21.333-17.067-34.133-17.067h-691.2l-34.133-179.2c-4.267-21.333-21.333-34.133-42.667-34.133h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h136.533l34.133 179.2c0 0 0 4.267 0 4.267l72.533 354.133c12.8 59.733 64 102.4 123.733 102.4 0 0 0 0 4.267 0h413.867c64 0 115.2-42.667 128-102.4l68.267-358.4c0-12.8 0-25.6-8.533-34.133zM870.4 605.867c-4.267 21.333-21.333 34.133-42.667 34.133h-413.867c-21.333 0-38.4-12.8-42.667-34.133l-64-307.2h622.933l-59.733 307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shuffle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shuffle.js
new file mode 100644
index 00000000..05294dcc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Shuffle.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Shuffle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-213.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h110.933l-652.8 652.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l652.8-652.8v110.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-213.333c0-4.267 0-12.8-4.267-17.067z' />
+            <path d='M896 640c-25.6 0-42.667 17.067-42.667 42.667v110.933l-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467h-110.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h213.333c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-213.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M354.133 413.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sidebar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sidebar.js
new file mode 100644
index 00000000..b84f9b22
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sidebar.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Sidebar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM170.667 810.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h128v682.667h-128c-25.6 0-42.667-17.067-42.667-42.667zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-384v-682.667h384c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipBack.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipBack.js
new file mode 100644
index 00000000..dd8200c6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipBack.js
@@ -0,0 +1,13 @@
+// Icon: Feather.SkipBack
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M827.733 132.267c-12.8-8.533-34.133-4.267-46.933 4.267l-426.667 341.333c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l426.667 341.333c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-682.667c0-17.067-8.533-29.867-25.6-38.4zM768 763.733l-315.733-251.733 315.733-251.733v503.467z' />
+            <path d='M213.333 170.667c-25.6 0-42.667 17.067-42.667 42.667v597.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-597.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipForward.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipForward.js
new file mode 100644
index 00000000..0b109714
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/SkipForward.js
@@ -0,0 +1,13 @@
+// Icon: Feather.SkipForward
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M238.933 136.533c-12.8-8.533-29.867-12.8-42.667-4.267-17.067 8.533-25.6 21.333-25.6 38.4v682.667c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l426.667-341.333c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133l-426.667-341.333zM256 763.733v-503.467l315.733 251.733-315.733 251.733z' />
+            <path d='M810.667 170.667c-25.6 0-42.667 17.067-42.667 42.667v597.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-597.333c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slack.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slack.js
new file mode 100644
index 00000000..a41732c2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slack.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Slack
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 371.2c-55.467-179.2-119.467-281.6-217.6-332.8-89.6-51.2-213.333-51.2-392.533 4.267-345.6 102.4-435.2 268.8-328.533 610.133 76.8 256 187.733 371.2 379.733 371.2 68.267 0 140.8-12.8 230.4-38.4 341.333-106.667 435.2-273.067 328.533-614.4zM627.2 900.267c-298.667 89.6-413.867 25.6-503.467-273.067-89.6-294.4-25.6-413.867 273.067-503.467 85.333-25.6 153.6-38.4 209.067-38.4 46.933 0 89.6 8.533 123.733 25.6 72.533 38.4 128 128 174.933 281.6 0 0 0 0 0 0 85.333 298.667 21.333 418.133-277.333 507.733z' />
+            <path d='M755.2 494.933l-81.067 29.867-42.667-119.467 81.067-29.867c21.333-8.533 34.133-29.867 25.6-55.467-8.533-21.333-29.867-34.133-55.467-25.6l-81.067 29.867-29.867-81.067c-8.533-21.333-29.867-34.133-55.467-25.6-21.333 8.533-34.133 29.867-25.6 55.467l29.867 81.067-119.467 42.667-25.6-85.333c-8.533-21.333-34.133-34.133-55.467-25.6-21.333 4.267-34.133 29.867-25.6 51.2l29.867 81.067-81.067 29.867c-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267l81.067-29.867 42.667 119.467-81.067 29.867c-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267l81.067-29.867 29.867 81.067c4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 21.333-8.533 34.133-29.867 25.6-55.467l-29.867-81.067 119.467-42.667 29.867 81.067c4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 21.333-8.533 34.133-29.867 25.6-55.467l-29.867-81.067 81.067-29.867c21.333-8.533 34.133-29.867 25.6-55.467 4.267-12.8-21.333-25.6-42.667-17.067zM473.6 593.067l-42.667-119.467 119.467-42.667 42.667 119.467-119.467 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slash.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slash.js
new file mode 100644
index 00000000..f2e0621e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Slash.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Slash
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 844.8c85.333-85.333 136.533-200.533 136.533-332.8 0-260.267-209.067-469.333-469.333-469.333-128 0-247.467 51.2-332.8 136.533 0 0 0 0 0 0s0 0 0 0c-85.333 85.333-136.533 204.8-136.533 332.8 0 260.267 209.067 469.333 469.333 469.333 128 0 247.467-51.2 332.8-136.533 0 0 0 0 0 0s0 0 0 0zM896 512c0 89.6-29.867 174.933-85.333 238.933l-537.6-537.6c64-55.467 149.333-85.333 238.933-85.333 213.333 0 384 170.667 384 384zM128 512c0-89.6 29.867-174.933 85.333-238.933l537.6 537.6c-64 51.2-149.333 85.333-238.933 85.333-213.333 0-384-170.667-384-384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sliders.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sliders.js
new file mode 100644
index 00000000..baa57a63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sliders.js
@@ -0,0 +1,17 @@
+// Icon: Feather.Sliders
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M170.667 469.333c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667z' />
+            <path d='M512 469.333c-25.6 0-42.667 17.067-42.667 42.667v384c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-384c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M853.333 554.667c25.6 0 42.667-17.067 42.667-42.667v-384c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v384c0 25.6 17.067 42.667 42.667 42.667z' />
+            <path d='M298.667 554.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M640 298.667h-85.333v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M981.333 640h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Smartphone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Smartphone.js
new file mode 100644
index 00000000..82bced40
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Smartphone.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Smartphone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M725.333 42.667h-426.667c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h426.667c25.6 0 42.667 17.067 42.667 42.667v682.667z' />
+            <path d='M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Speaker.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Speaker.js
new file mode 100644
index 00000000..cb1e8434
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Speaker.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Speaker
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 42.667h-512c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v682.667z' />
+            <path d='M512 384c-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333 213.333-93.867 213.333-213.333-93.867-213.333-213.333-213.333zM512 725.333c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z' />
+            <path d='M512 298.667c12.8 0 21.333-4.267 29.867-12.8s12.8-17.067 12.8-29.867c0-12.8-4.267-21.333-12.8-29.867-17.067-17.067-46.933-17.067-59.733 0-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Square.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Square.js
new file mode 100644
index 00000000..0135d2a5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Square.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Square
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Star.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Star.js
new file mode 100644
index 00000000..e923239e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Star.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Star
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 384c-4.267-17.067-17.067-25.6-34.133-29.867l-273.067-38.4-123.733-247.467c-12.8-29.867-64-29.867-76.8 0l-123.733 243.2-268.8 42.667c-17.067 0-29.867 12.8-38.4 29.867-4.267 17.067 0 34.133 12.8 42.667l196.267 192-46.933 273.067c-4.267 17.067 4.267 34.133 17.067 42.667s29.867 12.8 46.933 4.267l243.2-128 243.2 128c8.533 0 12.8 0 21.333 0s17.067-4.267 25.6-8.533c12.8-8.533 21.333-25.6 17.067-42.667l-46.933-273.067 196.267-192c12.8-8.533 17.067-25.6 12.8-38.4zM695.467 571.733c-8.533 12.8-12.8 25.6-12.8 38.4l34.133 209.067-187.733-98.133c-12.8-8.533-25.6-8.533-38.4 0l-187.733 98.133 38.4-209.067c0-12.8-4.267-25.6-12.8-38.4l-153.6-145.067 209.067-29.867c12.8 0 25.6-12.8 34.133-21.333l93.867-192 93.867 187.733c4.267 12.8 17.067 21.333 34.133 21.333l209.067 29.867-153.6 149.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/StopCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/StopCircle.js
new file mode 100644
index 00000000..8bbe0aa8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/StopCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.StopCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M640 341.333h-256c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667zM597.333 597.333h-170.667v-170.667h170.667v170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sun.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sun.js
new file mode 100644
index 00000000..b27fd729
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sun.js
@@ -0,0 +1,20 @@
+// Icon: Feather.Sun
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 256c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM512 682.667c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667c93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667z' />
+            <path d='M512 170.667c25.6 0 42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667z' />
+            <path d='M512 853.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M209.067 268.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z' />
+            <path d='M814.933 755.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733z' />
+            <path d='M170.667 512c0-25.6-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667z' />
+            <path d='M981.333 469.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M209.067 755.2l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z' />
+            <path d='M785.067 281.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunrise.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunrise.js
new file mode 100644
index 00000000..dbdf5dc2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunrise.js
@@ -0,0 +1,18 @@
+// Icon: Feather.Sunrise
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 512c-140.8 0-256 115.2-256 256 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-140.8-115.2-256-256-256z' />
+            <path d='M209.067 524.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z' />
+            <path d='M42.667 810.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M853.333 768c0 25.6 17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667z' />
+            <path d='M785.067 537.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z' />
+            <path d='M981.333 896h-938.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h938.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M371.2 285.867l98.133-98.133v196.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-196.267l98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunset.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunset.js
new file mode 100644
index 00000000..b4e3cd65
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Sunset.js
@@ -0,0 +1,18 @@
+// Icon: Feather.Sunset
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 512c-140.8 0-256 115.2-256 256 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-140.8-115.2-256-256-256z' />
+            <path d='M209.067 524.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z' />
+            <path d='M42.667 810.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M853.333 768c0 25.6 17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667z' />
+            <path d='M785.067 537.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z' />
+            <path d='M981.333 896h-938.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h938.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+            <path d='M482.133 413.867c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133v-196.267c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v196.267l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tablet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tablet.js
new file mode 100644
index 00000000..343e93bb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tablet.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Tablet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 42.667h-512c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v682.667z' />
+            <path d='M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tag.js
new file mode 100644
index 00000000..b8ead01e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tag.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Tag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M908.8 422.4l-366.933-366.933c-8.533-8.533-17.067-12.8-29.867-12.8h-426.667c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 12.8 4.267 21.333 12.8 29.867l366.933 366.933c25.6 25.6 59.733 38.4 89.6 38.4 34.133 0 64-12.8 89.6-38.4l307.2-307.2c0 0 0 0 0 0 51.2-51.2 51.2-128 0-179.2zM849.067 541.867l-307.2 307.2c-17.067 17.067-42.667 17.067-59.733 0l-354.133-354.133v-366.933h366.933l354.133 354.133c17.067 17.067 17.067 42.667 0 59.733z' />
+            <path d='M268.8 268.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Target.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Target.js
new file mode 100644
index 00000000..0dec0887
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Target.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Target
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M512 213.333c-166.4 0-298.667 132.267-298.667 298.667s132.267 298.667 298.667 298.667c166.4 0 298.667-132.267 298.667-298.667s-132.267-298.667-298.667-298.667zM512 725.333c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333 213.333 93.867 213.333 213.333-93.867 213.333-213.333 213.333z' />
+            <path d='M512 384c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM512 554.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Terminal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Terminal.js
new file mode 100644
index 00000000..56424805
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Terminal.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Terminal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M456.533 439.467l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z' />
+            <path d='M853.333 768h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Thermometer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Thermometer.js
new file mode 100644
index 00000000..5faba780
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Thermometer.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Thermometer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M686.933 657.067c-12.8-21.333-29.867-34.133-46.933-51.2v-456.533c0-81.067-68.267-149.333-149.333-149.333s-149.333 68.267-149.333 149.333v460.8c-93.867 76.8-115.2 209.067-46.933 311.467 34.133 51.2 89.6 89.6 149.333 98.133 17.067 4.267 29.867 4.267 46.933 4.267 46.933 0 89.6-12.8 128-38.4 110.933-72.533 140.8-217.6 68.267-328.533zM571.733 913.067c-68.267 46.933-162.133 25.6-209.067-42.667-21.333-34.133-29.867-72.533-21.333-110.933s29.867-72.533 64-93.867c12.8-8.533 17.067-21.333 17.067-34.133v-482.133c4.267-34.133 34.133-64 68.267-64s64 29.867 64 64v482.133c0 12.8 8.533 25.6 17.067 34.133 17.067 12.8 29.867 25.6 42.667 42.667 46.933 68.267 25.6 157.867-42.667 204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsDown.js
new file mode 100644
index 00000000..cb5ad13f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ThumbsDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 166.4c-8.533-72.533-68.267-123.733-140.8-123.733 0 0 0 0-4.267 0h-593.067c-64 0-115.2 46.933-128 106.667l-59.733 384c-8.533 68.267 38.4 136.533 106.667 145.067 8.533 0 12.8 0 21.333 0h200.533v128c0 93.867 76.8 170.667 170.667 170.667 17.067 0 34.133-8.533 38.4-25.6l157.867-358.4h85.333c72.533 0 132.267-51.2 140.8-123.733 0 0 0-4.267 0-4.267v-294.4c4.267 0 4.267-4.267 4.267-4.267zM682.667 546.133l-153.6 345.6c-34.133-12.8-59.733-42.667-59.733-81.067v-170.667c0-25.6-17.067-42.667-42.667-42.667h-243.2c0 0-4.267 0-8.533 0-21.333-4.267-38.4-25.6-34.133-46.933l59.733-384c4.267-21.333 21.333-38.4 42.667-38.4h439.467v418.133zM896 465.067c-4.267 25.6-29.867 46.933-55.467 46.933h-72.533v-384h72.533c25.6-4.267 51.2 17.067 55.467 46.933v290.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsUp.js
new file mode 100644
index 00000000..5fc33f78
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ThumbsUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.ThumbsUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M942.933 392.533c-21.333-25.6-51.2-46.933-85.333-51.2-8.533 0-12.8 0-21.333 0h-196.267v-128c0-93.867-76.8-170.667-170.667-170.667-17.067 0-34.133 8.533-38.4 25.6l-157.867 358.4h-102.4c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h610.133c0 0 0 0 0 0 64 0 115.2-46.933 128-106.667l59.733-384c4.267-34.133-4.267-68.267-25.6-98.133zM256 896h-85.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h85.333v384zM823.467 861.867c-4.267 21.333-21.333 34.133-42.667 34.133 0 0 0 0 0 0h-439.467v-418.133l153.6-345.6c34.133 12.8 59.733 42.667 59.733 81.067v170.667c0 25.6 17.067 42.667 42.667 42.667h243.2c4.267 0 4.267 0 8.533 0 12.8 0 21.333 8.533 29.867 17.067s8.533 21.333 8.533 29.867l-64 388.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleLeft.js
new file mode 100644
index 00000000..6d93a9a7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleLeft.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ToggleLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 170.667h-341.333c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333h341.333c187.733 0 341.333-153.6 341.333-341.333s-153.6-341.333-341.333-341.333zM682.667 768h-341.333c-140.8 0-256-115.2-256-256s115.2-256 256-256h341.333c140.8 0 256 115.2 256 256s-115.2 256-256 256z' />
+            <path d='M341.333 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-93.867-76.8-170.667-170.667-170.667zM341.333 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleRight.js
new file mode 100644
index 00000000..9cd8fc37
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ToggleRight.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ToggleRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 170.667h-341.333c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333h341.333c187.733 0 341.333-153.6 341.333-341.333s-153.6-341.333-341.333-341.333zM682.667 768h-341.333c-140.8 0-256-115.2-256-256s115.2-256 256-256h341.333c140.8 0 256 115.2 256 256s-115.2 256-256 256z' />
+            <path d='M682.667 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-93.867-76.8-170.667-170.667-170.667zM682.667 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash.js
new file mode 100644
index 00000000..e39aae8e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Trash
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 213.333h-170.667v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667v554.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-554.667h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM384 170.667c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-554.667h512v554.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash2.js
new file mode 100644
index 00000000..facb7cff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Trash2.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Trash2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 213.333h-170.667v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667v554.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-554.667h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM384 170.667c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-554.667h512v554.667z' />
+            <path d='M426.667 426.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M597.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingDown.js
new file mode 100644
index 00000000..49e244b6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingDown.js
@@ -0,0 +1,12 @@
+// Icon: Feather.TrendingDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 512c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v153.6l-332.8-332.8c-17.067-17.067-42.667-17.067-59.733 0l-183.467 183.467-290.133-290.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l320 320c17.067 17.067 42.667 17.067 59.733 0l183.467-183.467 302.933 302.933h-153.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingUp.js
new file mode 100644
index 00000000..16468d49
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/TrendingUp.js
@@ -0,0 +1,12 @@
+// Icon: Feather.TrendingUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.733 238.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-302.933 302.933-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0l-320 320c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l290.133-290.133 183.467 183.467c17.067 17.067 42.667 17.067 59.733 0l332.8-332.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Triangle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Triangle.js
new file mode 100644
index 00000000..efe4ba8b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Triangle.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Triangle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.333 746.667l-358.4-605.867c-17.067-29.867-46.933-51.2-81.067-59.733s-68.267-4.267-98.133 12.8c-17.067 8.533-34.133 25.6-42.667 42.667 0 0 0 0 0 0l-358.4 610.133c-34.133 59.733-12.8 140.8 46.933 174.933 17.067 12.8 38.4 17.067 59.733 17.067h725.333c34.133 0 68.267-12.8 89.6-38.4 25.6-25.6 38.4-55.467 38.4-89.6-4.267-21.333-8.533-46.933-21.333-64zM904.533 840.533c-8.533 8.533-21.333 12.8-29.867 12.8h-725.333c-8.533 0-12.8 0-21.333-4.267-21.333-12.8-25.6-38.4-17.067-59.733l362.667-601.6c4.267-4.267 8.533-12.8 12.8-12.8 21.333-12.8 46.933-4.267 59.733 12.8l362.667 601.6c4.267 4.267 4.267 12.8 4.267 21.333 4.267 12.8-4.267 21.333-8.533 29.867z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Truck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Truck.js
new file mode 100644
index 00000000..b44a99fb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Truck.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Truck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1011.2 439.467l-128-128c-8.533-8.533-17.067-12.8-29.867-12.8h-128v-170.667c0-25.6-17.067-42.667-42.667-42.667h-640c-25.6 0-42.667 17.067-42.667 42.667v554.667c0 25.6 17.067 42.667 42.667 42.667h59.733c-12.8 21.333-17.067 42.667-17.067 64 0 81.067 68.267 149.333 149.333 149.333s149.333-68.267 149.333-149.333c0-21.333-4.267-42.667-17.067-64h285.867c-8.533 21.333-17.067 42.667-17.067 64 0 81.067 68.267 149.333 149.333 149.333s149.333-68.267 149.333-149.333c0-21.333-4.267-42.667-17.067-64h64c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-12.8-4.267-21.333-12.8-29.867zM85.333 170.667h554.667v469.333h-554.667v-469.333zM298.667 789.333c0 34.133-29.867 64-64 64s-64-29.867-64-64 29.867-64 64-64 64 29.867 64 64zM853.333 789.333c0 34.133-29.867 64-64 64s-64-29.867-64-64 29.867-64 64-64 64 29.867 64 64zM938.667 640h-213.333v-256h110.933l102.4 102.4v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tv.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tv.js
new file mode 100644
index 00000000..eeb43704
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Tv.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Tv
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 256h-238.933l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-238.933c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v469.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Twitter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Twitter.js
new file mode 100644
index 00000000..57012af7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Twitter.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Twitter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1006.933 93.867c-12.8-8.533-34.133-8.533-46.933 0-29.867 21.333-64 38.4-98.133 51.2-85.333-76.8-217.6-81.067-307.2-4.267-55.467 46.933-85.333 110.933-85.333 179.2-123.733-8.533-234.667-72.533-307.2-174.933-8.533-12.8-21.333-17.067-38.4-17.067s-29.867 12.8-34.133 25.6c-4.267 4.267-46.933 106.667-42.667 230.4 4.267 106.667 46.933 243.2 204.8 341.333-64 29.867-136.533 42.667-209.067 42.667-17.067 0-38.4 12.8-42.667 29.867s4.267 38.4 21.333 46.933c106.667 59.733 221.867 89.6 328.533 89.6s209.067-25.6 302.933-81.067c183.467-102.4 285.867-298.667 285.867-533.333 0-8.533 0-12.8 0-21.333 42.667-46.933 72.533-102.4 85.333-162.133 4.267-17.067-4.267-34.133-17.067-42.667zM861.867 256c-8.533 8.533-12.8 25.6-12.8 38.4 4.267 8.533 4.267 17.067 4.267 25.6 0 204.8-89.6 371.2-243.2 460.8-119.467 68.267-260.267 85.333-401.067 51.2 55.467-17.067 106.667-38.4 153.6-72.533 17.067-8.533 21.333-21.333 21.333-38.4s-12.8-29.867-25.6-34.133c-247.467-110.933-238.933-320-213.333-426.667 93.867 93.867 226.133 149.333 366.933 145.067 21.333 0 42.667-21.333 42.667-42.667v-42.667c0-42.667 17.067-85.333 51.2-115.2 59.733-55.467 157.867-46.933 209.067 12.8 12.8 12.8 29.867 17.067 42.667 12.8 8.533-4.267 21.333-4.267 29.867-8.533-8.533 12.8-17.067 21.333-25.6 34.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Type.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Type.js
new file mode 100644
index 00000000..b5742dac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Type.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Type
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 128h-682.667c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h256v597.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333v-597.333h256v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Umbrella.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Umbrella.js
new file mode 100644
index 00000000..c020486e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Umbrella.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Umbrella
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M465.067 46.933c-247.467 21.333-439.467 217.6-465.067 460.8 0 12.8 4.267 25.6 12.8 34.133 4.267 8.533 17.067 12.8 29.867 12.8h426.667v256c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-256h426.667c12.8 0 25.6-4.267 29.867-12.8s12.8-21.333 12.8-34.133c-25.6-281.6-277.333-490.667-558.933-460.8zM512 469.333h-418.133c34.133-183.467 187.733-320 375.467-341.333 217.6-21.333 418.133 128 460.8 341.333h-418.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Underline.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Underline.js
new file mode 100644
index 00000000..7f9b2bd2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Underline.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Underline
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 725.333c166.4 0 298.667-132.267 298.667-298.667v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 119.467-93.867 213.333-213.333 213.333s-213.333-93.867-213.333-213.333v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 166.4 132.267 298.667 298.667 298.667z' />
+            <path d='M853.333 853.333h-682.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h682.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Unlock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Unlock.js
new file mode 100644
index 00000000..17ee9c10
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Unlock.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Unlock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 426.667h-469.333v-128c0-46.933 17.067-89.6 51.2-119.467 29.867-34.133 72.533-51.2 119.467-51.2 0 0 0 0 0 0 81.067 0 149.333 55.467 166.4 136.533 4.267 21.333 29.867 38.4 51.2 34.133s38.4-25.6 34.133-51.2c-25.6-119.467-132.267-204.8-251.733-204.8 0 0 0 0 0 0-68.267 0-132.267 25.6-179.2 76.8-51.2 46.933-76.8 110.933-76.8 179.2v128h-42.667c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-72.533-55.467-128-128-128zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v298.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Upload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Upload.js
new file mode 100644
index 00000000..3d4aee7d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Upload.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Upload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 597.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-170.667c0-25.6-17.067-42.667-42.667-42.667z' />
+            <path d='M328.533 371.2l140.8-140.8v409.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UploadCloud.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UploadCloud.js
new file mode 100644
index 00000000..962ef89f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UploadCloud.js
@@ -0,0 +1,13 @@
+// Icon: Feather.UploadCloud
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M994.133 473.6c-46.933-81.067-132.267-132.267-226.133-132.267h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 89.6-238.933 174.933s-68.267 192-42.667 290.133c17.067 59.733 42.667 110.933 85.333 157.867 17.067 17.067 42.667 21.333 59.733 4.267s21.333-42.667 4.267-59.733c-29.867-34.133-55.467-76.8-64-123.733-21.333-76.8-8.533-153.6 34.133-226.133 38.4-68.267 106.667-119.467 183.467-136.533 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 29.867 42.667 29.867h51.2c64 0 119.467 34.133 149.333 89.6 21.333 38.4 25.6 85.333 12.8 128s-42.667 81.067-81.067 102.4c-21.333 12.8-29.867 38.4-17.067 59.733 8.533 12.8 21.333 21.333 38.4 21.333 8.533 0 12.8 0 21.333-4.267 59.733-34.133 102.4-85.333 123.733-153.6 17.067-59.733 8.533-132.267-21.333-192z' />
+            <path d='M541.867 482.133c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l98.133-98.133v281.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-281.6l98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/User.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/User.js
new file mode 100644
index 00000000..f55ffafb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/User.js
@@ -0,0 +1,13 @@
+// Icon: Feather.User
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.667 597.333h-341.333c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h341.333c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M512 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM512 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserCheck.js
new file mode 100644
index 00000000..089dba4a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserCheck.js
@@ -0,0 +1,14 @@
+// Icon: Feather.UserCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+            <path d='M1011.2 354.133c-17.067-17.067-42.667-17.067-59.733 0l-140.8 140.8-55.467-55.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l85.333 85.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserMinus.js
new file mode 100644
index 00000000..42be03ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserMinus.js
@@ -0,0 +1,14 @@
+// Icon: Feather.UserMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+            <path d='M981.333 426.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserPlus.js
new file mode 100644
index 00000000..0ebf91ec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserPlus.js
@@ -0,0 +1,14 @@
+// Icon: Feather.UserPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+            <path d='M981.333 426.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserX.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserX.js
new file mode 100644
index 00000000..d4b68e23
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/UserX.js
@@ -0,0 +1,14 @@
+// Icon: Feather.UserX
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+            <path d='M934.4 448l76.8-76.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-76.8 76.8-76.8-76.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l76.8 76.8-76.8 76.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l76.8-76.8 76.8 76.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Users.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Users.js
new file mode 100644
index 00000000..e74cce19
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Users.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Users
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M554.667 597.333h-341.333c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h341.333c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z' />
+            <path d='M384 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM384 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z' />
+            <path d='M861.867 605.867c-21.333-4.267-46.933 8.533-51.2 29.867s8.533 46.933 29.867 51.2c55.467 12.8 93.867 64 93.867 123.733v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c4.267-98.133-59.733-183.467-157.867-204.8z' />
+            <path d='M691.2 93.867c-21.333-8.533-42.667 4.267-51.2 29.867-4.267 21.333 8.533 46.933 29.867 51.2 68.267 17.067 110.933 85.333 93.867 157.867-12.8 46.933-46.933 81.067-93.867 93.867-21.333 4.267-38.4 29.867-29.867 51.2 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 8.533 0 8.533 0 76.8-21.333 136.533-76.8 153.6-153.6 29.867-119.467-38.4-238.933-153.6-264.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Video.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Video.js
new file mode 100644
index 00000000..e4dd6bb4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Video.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Video
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.667 260.267c-12.8-8.533-29.867-4.267-42.667 4.267l-234.667 166.4v-132.267c0-72.533-55.467-128-128-128h-469.333c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-132.267l230.4 166.4c8.533 4.267 17.067 8.533 25.6 8.533s12.8 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-426.667c0-17.067-8.533-29.867-21.333-38.4zM640 725.333c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h469.333c25.6 0 42.667 17.067 42.667 42.667v426.667zM938.667 644.267l-183.467-132.267 183.467-132.267v264.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VideoOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VideoOff.js
new file mode 100644
index 00000000..f60df146
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VideoOff.js
@@ -0,0 +1,13 @@
+// Icon: Feather.VideoOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.667 260.267c-12.8-8.533-29.867-4.267-42.667 4.267l-230.4 162.133-4.267-4.267v-123.733c0-72.533-55.467-128-128-128h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h140.8c25.6 0 42.667 17.067 42.667 42.667v140.8c0 12.8 4.267 21.333 12.8 29.867l42.667 42.667c12.8 12.8 38.4 17.067 55.467 4.267l187.733-132.267v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-17.067-8.533-29.867-21.333-38.4z' />
+            <path d='M712.533 652.8c0 0 0 0 0 0l-469.333-469.333c0 0 0 0 0 0l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133c-64 8.533-110.933 64-110.933 128v426.667c0 72.533 55.467 128 128 128h469.333c51.2 0 98.133-34.133 119.467-76.8l234.667 234.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-298.667-298.667zM640 725.333c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h68.267l443.733 443.733v25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Voicemail.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Voicemail.js
new file mode 100644
index 00000000..1a44e344
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Voicemail.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Voicemail
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M789.333 256c-128 0-234.667 106.667-234.667 234.667 0 55.467 21.333 106.667 55.467 149.333h-196.267c34.133-42.667 55.467-93.867 55.467-149.333 0-128-106.667-234.667-234.667-234.667s-234.667 106.667-234.667 234.667c0 128 106.667 234.667 234.667 234.667h554.667c128 0 234.667-106.667 234.667-234.667s-106.667-234.667-234.667-234.667zM85.333 490.667c0-81.067 68.267-149.333 149.333-149.333s149.333 68.267 149.333 149.333-68.267 149.333-149.333 149.333-149.333-68.267-149.333-149.333zM789.333 640c-81.067 0-149.333-68.267-149.333-149.333s68.267-149.333 149.333-149.333 149.333 68.267 149.333 149.333-68.267 149.333-149.333 149.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume.js
new file mode 100644
index 00000000..df82de1b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Volume
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume1.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume1.js
new file mode 100644
index 00000000..8a65fb11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume1.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Volume1
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z' />
+            <path d='M691.2 332.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c68.267 68.267 68.267 174.933 0 243.2-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c102.4-102.4 102.4-264.533 0-362.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume2.js
new file mode 100644
index 00000000..de7f7ac9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Volume2.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Volume2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z' />
+            <path d='M631.467 332.8c-17.067 17.067-17.067 42.667 0 59.733 68.267 68.267 68.267 174.933 0 243.2-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c98.133-98.133 98.133-260.267 0-362.667-12.8-17.067-42.667-17.067-59.733 0z' />
+            <path d='M844.8 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c149.333 149.333 149.333 392.533 0 541.867-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c183.467-179.2 183.467-477.867 0-661.333z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VolumeX.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VolumeX.js
new file mode 100644
index 00000000..1e77ab76
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/VolumeX.js
@@ -0,0 +1,13 @@
+// Icon: Feather.VolumeX
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z' />
+            <path d='M913.067 512l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Watch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Watch.js
new file mode 100644
index 00000000..96d50e24
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Watch.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Watch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M853.333 512c0-98.133-42.667-183.467-106.667-247.467l-12.8-149.333c-8.533-64-59.733-115.2-128-115.2 0 0 0 0 0 0h-187.733c-64 0-119.467 51.2-128 115.2l-12.8 149.333c-64 59.733-106.667 149.333-106.667 247.467s42.667 187.733 106.667 247.467l12.8 149.333c8.533 64 64 115.2 128 115.2 0 0 0 0 0 0h183.467c0 0 0 0 0 0 68.267 0 119.467-51.2 128-115.2l12.8-145.067c68.267-64 110.933-153.6 110.933-251.733zM375.467 123.733c0-21.333 21.333-38.4 42.667-38.4h187.733c21.333 0 42.667 17.067 42.667 38.4l8.533 76.8c-46.933-17.067-93.867-29.867-145.067-29.867s-98.133 12.8-140.8 29.867l4.267-76.8zM256 512c0-140.8 115.2-256 256-256s256 115.2 256 256-115.2 256-256 256-256-115.2-256-256zM648.533 900.267c0 21.333-21.333 38.4-42.667 38.4 0 0 0 0 0 0h-187.733c0 0 0 0 0 0-21.333 0-38.4-17.067-42.667-38.4l-8.533-76.8c42.667 21.333 89.6 29.867 140.8 29.867s98.133-12.8 140.8-29.867l-0 76.8z' />
+            <path d='M546.133 605.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-51.2-51.2v-110.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 12.8 4.267 21.333 12.8 29.867l64 64z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wifi.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wifi.js
new file mode 100644
index 00000000..9a5404e9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wifi.js
@@ -0,0 +1,15 @@
+// Icon: Feather.Wifi
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M187.733 503.467c-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 25.6-8.533 157.867-132.267 388.267-132.267 546.133 0 17.067 17.067 46.933 12.8 59.733-4.267 17.067-17.067 12.8-46.933-4.267-59.733-192-162.133-469.333-162.133-657.067-4.267z' />
+            <path d='M989.867 349.867c-273.067-238.933-686.933-238.933-960 0-17.067 17.067-21.333 42.667-4.267 59.733 12.8 12.8 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 29.867-8.533 243.2-213.333 605.867-213.333 844.8 0 17.067 17.067 42.667 12.8 59.733-4.267 17.067-21.333 17.067-46.933-4.267-64z' />
+            <path d='M341.333 652.8c-21.333 12.8-25.6 38.4-8.533 59.733 12.8 17.067 38.4 25.6 59.733 8.533 72.533-51.2 174.933-51.2 247.467 0 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 12.8-21.333 8.533-46.933-8.533-59.733-110.933-72.533-247.467-72.533-349.867 0z' />
+            <path d='M482.133 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/WifiOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/WifiOff.js
new file mode 100644
index 00000000..14e97649
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/WifiOff.js
@@ -0,0 +1,15 @@
+// Icon: Feather.WifiOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1011.2 951.467l-721.067-721.067c0 0 0 0 0 0l-217.6-217.6c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l174.933 174.933c-55.467 29.867-106.667 64-153.6 106.667-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 17.067 12.8 29.867 12.8 8.533 0 21.333-4.267 29.867-12.8 46.933-42.667 102.4-76.8 162.133-102.4l98.133 98.133c-59.733 21.333-115.2 51.2-166.4 89.6-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 25.6-8.533 51.2-42.667 115.2-72.533 179.2-89.6l119.467 119.467c-68.267-4.267-140.8 12.8-196.267 55.467-21.333 12.8-25.6 38.4-8.533 59.733 12.8 17.067 38.4 25.6 59.733 8.533 72.533-51.2 174.933-51.2 247.467 0 8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 4.267 0 8.533 0l281.6 281.6c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c12.8-17.067 12.8-42.667-4.267-59.733z' />
+            <path d='M674.133 452.267c-8.533 21.333 0 46.933 21.333 55.467 29.867 17.067 59.733 34.133 89.6 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 17.067-17.067 12.8-46.933-4.267-59.733-34.133-25.6-68.267-51.2-106.667-68.267-21.333-8.533-46.933 0-59.733 21.333z' />
+            <path d='M460.8 256c170.667-12.8 345.6 42.667 473.6 157.867 8.533 8.533 17.067 8.533 29.867 8.533s25.6-4.267 34.133-12.8c17.067-17.067 12.8-42.667-4.267-59.733-145.067-128-341.333-196.267-537.6-179.2-25.6 0-42.667 21.333-38.4 46.933 0 25.6 17.067 42.667 42.667 38.4z' />
+            <path d='M482.133 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wind.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wind.js
new file mode 100644
index 00000000..9536d85d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Wind.js
@@ -0,0 +1,14 @@
+// Icon: Feather.Wind
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M597.333 640c0 0 0 0 0 0h-512c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c0 0 0 0 0 0 12.8 0 21.333 4.267 29.867 12.8s12.8 17.067 12.8 29.867c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-29.867 12.8c0 0 0 0 0 0-12.8 0-21.333-4.267-29.867-12.8-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c25.6 25.6 55.467 38.4 89.6 38.4 0 0 0 0 0 0 34.133 0 64-12.8 89.6-38.4s38.4-55.467 38.4-89.6c0-34.133-12.8-68.267-38.4-89.6-21.333-25.6-55.467-38.4-89.6-38.4z' />
+            <path d='M85.333 384h384c0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4 51.2-51.2 51.2-132.267 0-179.2-21.333-25.6-55.467-38.4-89.6-38.4s-68.267 12.8-89.6 38.4c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0c8.533-8.533 17.067-12.8 29.867-12.8 0 0 0 0 0 0 12.8 0 21.333 4.267 29.867 12.8 17.067 17.067 17.067 42.667 0 59.733-8.533 8.533-17.067 12.8-29.867 12.8 0 0 0 0 0 0h-384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M938.667 298.667c-59.733-59.733-153.6-59.733-209.067 0-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0c25.6-25.6 64-25.6 89.6 0s25.6 64 0 89.6c-12.8 12.8-29.867 17.067-46.933 17.067h-746.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h746.667c38.4 0 76.8-17.067 106.667-42.667 55.467-55.467 55.467-149.333 0-209.067z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/X.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/X.js
new file mode 100644
index 00000000..68cd11ce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/X.js
@@ -0,0 +1,12 @@
+// Icon: Feather.X
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M571.733 512l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-226.133 226.133-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133 226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XCircle.js
new file mode 100644
index 00000000..6968b876
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XCircle.js
@@ -0,0 +1,13 @@
+// Icon: Feather.XCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z' />
+            <path d='M669.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XSquare.js
new file mode 100644
index 00000000..b98525cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/XSquare.js
@@ -0,0 +1,13 @@
+// Icon: Feather.XSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z' />
+            <path d='M669.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Youtube.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Youtube.js
new file mode 100644
index 00000000..bb6a8a10
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Youtube.js
@@ -0,0 +1,13 @@
+// Icon: Feather.Youtube
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.667 264.533c0 0 0 0 0 0-12.8-59.733-59.733-102.4-115.2-119.467-72.533-17.067-345.6-17.067-375.467-17.067s-302.933 0-379.733 21.333c-55.467 17.067-98.133 59.733-110.933 119.467-12.8 76.8-21.333 153.6-21.333 230.4s4.267 157.867 21.333 238.933c17.067 55.467 59.733 98.133 110.933 110.933 76.8 21.333 345.6 21.333 379.733 21.333s302.933 0 379.733-21.333c55.467-17.067 98.133-59.733 115.2-119.467 12.8-76.8 21.333-153.6 21.333-230.4-4.267-76.8-8.533-153.6-25.6-234.667zM921.6 716.8c-8.533 25.6-25.6 46.933-51.2 55.467-51.2 12.8-238.933 17.067-354.133 17.067s-311.467-8.533-358.4-21.333c-25.6-8.533-46.933-25.6-51.2-46.933-17.067-72.533-21.333-145.067-21.333-221.867 0-72.533 4.267-145.067 17.067-213.333 8.533-25.6 25.6-46.933 51.2-55.467 51.2-12.8 243.2-17.067 358.4-17.067 81.067 0 298.667 4.267 354.133 17.067 25.6 8.533 46.933 25.6 51.2 55.467 17.067 68.267 21.333 140.8 21.333 217.6 0 72.533-4.267 145.067-17.067 213.333z' />
+            <path d='M682.667 465.067l-247.467-140.8c-12.8-8.533-29.867-8.533-42.667 0s-17.067 21.333-17.067 38.4v277.333c0 17.067 8.533 29.867 21.333 38.4 4.267 4.267 12.8 4.267 21.333 4.267s12.8 0 21.333-4.267l247.467-140.8c12.8-8.533 21.333-21.333 21.333-38.4-4.267-12.8-12.8-25.6-25.6-34.133zM460.8 567.467v-132.267l115.2 68.267-115.2 64z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Zap.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Zap.js
new file mode 100644
index 00000000..4646866e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/Zap.js
@@ -0,0 +1,12 @@
+// Icon: Feather.Zap
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M934.4 409.6c-8.533-17.067-21.333-25.6-38.4-25.6h-337.067l38.4-294.4c4.267-17.067-8.533-38.4-25.6-42.667-17.067-8.533-38.4-4.267-51.2 12.8l-426.667 512c-8.533 12.8-12.8 29.867-4.267 46.933 8.533 12.8 21.333 21.333 38.4 21.333h337.067l-38.4 294.4c-4.267 17.067 8.533 38.4 25.6 42.667 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 25.6-4.267 34.133-17.067l426.667-512c8.533-12.8 12.8-29.867 4.267-42.667zM529.067 797.867l25.6-196.267c0-12.8-4.267-25.6-8.533-34.133-8.533-8.533-21.333-12.8-34.133-12.8h-294.4l273.067-328.533-21.333 196.267c0 12.8 4.267 25.6 8.533 34.133 8.533 8.533 21.333 12.8 29.867 12.8h294.4l-273.067 328.533z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZapOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZapOff.js
new file mode 100644
index 00000000..d7fb247e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZapOff.js
@@ -0,0 +1,14 @@
+// Icon: Feather.ZapOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M482.133 238.933l8.533-12.8-8.533 59.733c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l29.867-204.8c4.267-17.067-8.533-38.4-25.6-42.667-17.067-8.533-38.4-4.267-51.2 12.8l-102.4 123.733c-17.067 17.067-12.8 42.667 4.267 59.733 21.333 12.8 46.933 12.8 59.733-4.267z' />
+            <path d='M669.867 469.333h136.533l-46.933 55.467c-17.067 17.067-12.8 46.933 4.267 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067l102.4-123.733c8.533-12.8 12.8-29.867 4.267-46.933-4.267-12.8-17.067-21.333-34.133-21.333h-226.133c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z' />
+            <path d='M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l273.067 273.067-187.733 226.133c-8.533 12.8-12.8 29.867-4.267 46.933 4.267 12.8 17.067 21.333 34.133 21.333h337.067l-38.4 294.4c-4.267 17.067 8.533 38.4 25.6 42.667 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 25.6-4.267 34.133-17.067l183.467-221.867 264.533 264.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-12.8 17.067-38.4 0-55.467zM217.6 554.667l123.733-149.333 149.333 149.333h-273.067zM529.067 797.867l21.333-187.733 72.533 72.533-93.867 115.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomIn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomIn.js
new file mode 100644
index 00000000..c242a254
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomIn.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ZoomIn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z' />
+            <path d='M597.333 426.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomOut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomOut.js
new file mode 100644
index 00000000..303405a3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Feather/svgs/ZoomOut.js
@@ -0,0 +1,13 @@
+// Icon: Feather.ZoomOut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z' />
+            <path d='M597.333 426.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/index.js
new file mode 100644
index 00000000..4ea4ff91
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/index.js
@@ -0,0 +1,3016 @@
+// THIS FILE IS GENERATED BY THE `$ arcli icons` command
+// DO NOT DIRECTLY EDIT !!!!!!!!!!!!!!!!
+
+import Home from './svgs/Home';
+import Home2 from './svgs/Home2';
+import Home3 from './svgs/Home3';
+import Home4 from './svgs/Home4';
+import Home5 from './svgs/Home5';
+import Home6 from './svgs/Home6';
+import Bathtub from './svgs/Bathtub';
+import Toothbrush from './svgs/Toothbrush';
+import Bed from './svgs/Bed';
+import Couch from './svgs/Couch';
+import Chair from './svgs/Chair';
+import City from './svgs/City';
+import Apartment from './svgs/Apartment';
+import Pencil from './svgs/Pencil';
+import Pencil2 from './svgs/Pencil2';
+import Pen from './svgs/Pen';
+import Pencil3 from './svgs/Pencil3';
+import Eraser from './svgs/Eraser';
+import Pencil4 from './svgs/Pencil4';
+import Pencil5 from './svgs/Pencil5';
+import Feather from './svgs/Feather';
+import Feather2 from './svgs/Feather2';
+import Feather3 from './svgs/Feather3';
+import Pen2 from './svgs/Pen2';
+import PenAdd from './svgs/PenAdd';
+import PenRemove from './svgs/PenRemove';
+import Vector from './svgs/Vector';
+import Pen3 from './svgs/Pen3';
+import Blog from './svgs/Blog';
+import Brush from './svgs/Brush';
+import Brush2 from './svgs/Brush2';
+import Spray from './svgs/Spray';
+import PaintRoller from './svgs/PaintRoller';
+import Stamp from './svgs/Stamp';
+import Tape from './svgs/Tape';
+import DeskTape from './svgs/DeskTape';
+import Texture from './svgs/Texture';
+import EyeDropper from './svgs/EyeDropper';
+import Palette from './svgs/Palette';
+import ColorSampler from './svgs/ColorSampler';
+import Bucket from './svgs/Bucket';
+import Gradient from './svgs/Gradient';
+import Gradient2 from './svgs/Gradient2';
+import MagicWand from './svgs/MagicWand';
+import Magnet from './svgs/Magnet';
+import PencilRuler from './svgs/PencilRuler';
+import PencilRuler2 from './svgs/PencilRuler2';
+import Compass from './svgs/Compass';
+import Aim from './svgs/Aim';
+import Gun from './svgs/Gun';
+import Bottle from './svgs/Bottle';
+import Drop from './svgs/Drop';
+import DropCrossed from './svgs/DropCrossed';
+import Drop2 from './svgs/Drop2';
+import Snow from './svgs/Snow';
+import Snow2 from './svgs/Snow2';
+import Fire from './svgs/Fire';
+import Lighter from './svgs/Lighter';
+import Knife from './svgs/Knife';
+import Dagger from './svgs/Dagger';
+import Tissue from './svgs/Tissue';
+import ToiletPaper from './svgs/ToiletPaper';
+import Poop from './svgs/Poop';
+import Umbrella from './svgs/Umbrella';
+import Umbrella2 from './svgs/Umbrella2';
+import Rain from './svgs/Rain';
+import Tornado from './svgs/Tornado';
+import Wind from './svgs/Wind';
+import Fan from './svgs/Fan';
+import Contrast from './svgs/Contrast';
+import SunSmall from './svgs/SunSmall';
+import Sun from './svgs/Sun';
+import Sun2 from './svgs/Sun2';
+import Moon from './svgs/Moon';
+import Cloud from './svgs/Cloud';
+import CloudUpload from './svgs/CloudUpload';
+import CloudDownload from './svgs/CloudDownload';
+import CloudRain from './svgs/CloudRain';
+import CloudHailstones from './svgs/CloudHailstones';
+import CloudSnow from './svgs/CloudSnow';
+import CloudWindy from './svgs/CloudWindy';
+import SunWind from './svgs/SunWind';
+import CloudFog from './svgs/CloudFog';
+import CloudSun from './svgs/CloudSun';
+import CloudLightning from './svgs/CloudLightning';
+import CloudSync from './svgs/CloudSync';
+import CloudLock from './svgs/CloudLock';
+import CloudGear from './svgs/CloudGear';
+import CloudAlert from './svgs/CloudAlert';
+import CloudCheck from './svgs/CloudCheck';
+import CloudCross from './svgs/CloudCross';
+import CloudCrossed from './svgs/CloudCrossed';
+import CloudDatabase from './svgs/CloudDatabase';
+import Database from './svgs/Database';
+import DatabaseAdd from './svgs/DatabaseAdd';
+import DatabaseRemove from './svgs/DatabaseRemove';
+import DatabaseLock from './svgs/DatabaseLock';
+import DatabaseRefresh from './svgs/DatabaseRefresh';
+import DatabaseCheck from './svgs/DatabaseCheck';
+import DatabaseHistory from './svgs/DatabaseHistory';
+import DatabaseUpload from './svgs/DatabaseUpload';
+import DatabaseDownload from './svgs/DatabaseDownload';
+import Server from './svgs/Server';
+import Shield from './svgs/Shield';
+import ShieldCheck from './svgs/ShieldCheck';
+import ShieldAlert from './svgs/ShieldAlert';
+import ShieldCross from './svgs/ShieldCross';
+import Lock from './svgs/Lock';
+import RotationLock from './svgs/RotationLock';
+import Unlock from './svgs/Unlock';
+import Key from './svgs/Key';
+import KeyHole from './svgs/KeyHole';
+import ToggleOff from './svgs/ToggleOff';
+import ToggleOn from './svgs/ToggleOn';
+import Cog from './svgs/Cog';
+import Cog2 from './svgs/Cog2';
+import Wrench from './svgs/Wrench';
+import Screwdriver from './svgs/Screwdriver';
+import HammerWrench from './svgs/HammerWrench';
+import Hammer from './svgs/Hammer';
+import Saw from './svgs/Saw';
+import Axe from './svgs/Axe';
+import Axe2 from './svgs/Axe2';
+import Shovel from './svgs/Shovel';
+import Pickaxe from './svgs/Pickaxe';
+import Factory from './svgs/Factory';
+import Factory2 from './svgs/Factory2';
+import Recycle from './svgs/Recycle';
+import Trash from './svgs/Trash';
+import Trash2 from './svgs/Trash2';
+import Trash3 from './svgs/Trash3';
+import Broom from './svgs/Broom';
+import Game from './svgs/Game';
+import Gamepad from './svgs/Gamepad';
+import Joystick from './svgs/Joystick';
+import Dice from './svgs/Dice';
+import Spades from './svgs/Spades';
+import Diamonds from './svgs/Diamonds';
+import Clubs from './svgs/Clubs';
+import Hearts from './svgs/Hearts';
+import Heart from './svgs/Heart';
+import Star from './svgs/Star';
+import StarHalf from './svgs/StarHalf';
+import StarEmpty from './svgs/StarEmpty';
+import Flag from './svgs/Flag';
+import Flag2 from './svgs/Flag2';
+import Flag3 from './svgs/Flag3';
+import MailboxFull from './svgs/MailboxFull';
+import MailboxEmpty from './svgs/MailboxEmpty';
+import AtSign from './svgs/AtSign';
+import Envelope from './svgs/Envelope';
+import EnvelopeOpen from './svgs/EnvelopeOpen';
+import Paperclip from './svgs/Paperclip';
+import PaperPlane from './svgs/PaperPlane';
+import Reply from './svgs/Reply';
+import ReplyAll from './svgs/ReplyAll';
+import Inbox from './svgs/Inbox';
+import Inbox2 from './svgs/Inbox2';
+import Outbox from './svgs/Outbox';
+import Box from './svgs/Box';
+import Archive from './svgs/Archive';
+import Archive2 from './svgs/Archive2';
+import Drawers from './svgs/Drawers';
+import Drawers2 from './svgs/Drawers2';
+import Drawers3 from './svgs/Drawers3';
+import Eye from './svgs/Eye';
+import EyeCrossed from './svgs/EyeCrossed';
+import EyePlus from './svgs/EyePlus';
+import EyeMinus from './svgs/EyeMinus';
+import Binoculars from './svgs/Binoculars';
+import Binoculars2 from './svgs/Binoculars2';
+import Hdd from './svgs/Hdd';
+import HddDown from './svgs/HddDown';
+import HddUp from './svgs/HddUp';
+import FloppyDisk from './svgs/FloppyDisk';
+import Disc from './svgs/Disc';
+import Tape2 from './svgs/Tape2';
+import Printer from './svgs/Printer';
+import Shredder from './svgs/Shredder';
+import FileEmpty from './svgs/FileEmpty';
+import FileAdd from './svgs/FileAdd';
+import FileCheck from './svgs/FileCheck';
+import FileLock from './svgs/FileLock';
+import Files from './svgs/Files';
+import Copy from './svgs/Copy';
+import Compare from './svgs/Compare';
+import Folder from './svgs/Folder';
+import FolderSearch from './svgs/FolderSearch';
+import FolderPlus from './svgs/FolderPlus';
+import FolderMinus from './svgs/FolderMinus';
+import FolderDownload from './svgs/FolderDownload';
+import FolderUpload from './svgs/FolderUpload';
+import FolderStar from './svgs/FolderStar';
+import FolderHeart from './svgs/FolderHeart';
+import FolderUser from './svgs/FolderUser';
+import FolderShared from './svgs/FolderShared';
+import FolderMusic from './svgs/FolderMusic';
+import FolderPicture from './svgs/FolderPicture';
+import FolderFilm from './svgs/FolderFilm';
+import Scissors from './svgs/Scissors';
+import Paste from './svgs/Paste';
+import ClipboardEmpty from './svgs/ClipboardEmpty';
+import ClipboardPencil from './svgs/ClipboardPencil';
+import ClipboardText from './svgs/ClipboardText';
+import ClipboardCheck from './svgs/ClipboardCheck';
+import ClipboardDown from './svgs/ClipboardDown';
+import ClipboardLeft from './svgs/ClipboardLeft';
+import ClipboardAlert from './svgs/ClipboardAlert';
+import ClipboardUser from './svgs/ClipboardUser';
+import Register from './svgs/Register';
+import Enter from './svgs/Enter';
+import Exit from './svgs/Exit';
+import Papers from './svgs/Papers';
+import News from './svgs/News';
+import Reading from './svgs/Reading';
+import Typewriter from './svgs/Typewriter';
+import Document from './svgs/Document';
+import Document2 from './svgs/Document2';
+import GraduationHat from './svgs/GraduationHat';
+import License from './svgs/License';
+import License2 from './svgs/License2';
+import MedalEmpty from './svgs/MedalEmpty';
+import MedalFirst from './svgs/MedalFirst';
+import MedalSecond from './svgs/MedalSecond';
+import MedalThird from './svgs/MedalThird';
+import Podium from './svgs/Podium';
+import Trophy from './svgs/Trophy';
+import Trophy2 from './svgs/Trophy2';
+import MusicNote from './svgs/MusicNote';
+import MusicNote2 from './svgs/MusicNote2';
+import MusicNote3 from './svgs/MusicNote3';
+import Playlist from './svgs/Playlist';
+import PlaylistAdd from './svgs/PlaylistAdd';
+import Guitar from './svgs/Guitar';
+import Trumpet from './svgs/Trumpet';
+import Album from './svgs/Album';
+import Shuffle from './svgs/Shuffle';
+import RepeatOne from './svgs/RepeatOne';
+import Repeat from './svgs/Repeat';
+import Headphones from './svgs/Headphones';
+import Headset from './svgs/Headset';
+import Loudspeaker from './svgs/Loudspeaker';
+import Equalizer from './svgs/Equalizer';
+import Theater from './svgs/Theater';
+import ThreeDGlasses from './svgs/ThreeDGlasses';
+import Ticket from './svgs/Ticket';
+import Presentation from './svgs/Presentation';
+import Play from './svgs/Play';
+import FilmPlay from './svgs/FilmPlay';
+import ClapboardPlay from './svgs/ClapboardPlay';
+import Media from './svgs/Media';
+import Film from './svgs/Film';
+import Film2 from './svgs/Film2';
+import Surveillance from './svgs/Surveillance';
+import Surveillance2 from './svgs/Surveillance2';
+import Camera from './svgs/Camera';
+import CameraCrossed from './svgs/CameraCrossed';
+import CameraPlay from './svgs/CameraPlay';
+import TimeLapse from './svgs/TimeLapse';
+import Record from './svgs/Record';
+import Camera2 from './svgs/Camera2';
+import CameraFlip from './svgs/CameraFlip';
+import Panorama from './svgs/Panorama';
+import TimeLapse2 from './svgs/TimeLapse2';
+import Shutter from './svgs/Shutter';
+import Shutter2 from './svgs/Shutter2';
+import FaceDetection from './svgs/FaceDetection';
+import Flare from './svgs/Flare';
+import Convex from './svgs/Convex';
+import Concave from './svgs/Concave';
+import Picture from './svgs/Picture';
+import Picture2 from './svgs/Picture2';
+import Picture3 from './svgs/Picture3';
+import Pictures from './svgs/Pictures';
+import Book from './svgs/Book';
+import AudioBook from './svgs/AudioBook';
+import Book2 from './svgs/Book2';
+import Bookmark from './svgs/Bookmark';
+import Bookmark2 from './svgs/Bookmark2';
+import Label from './svgs/Label';
+import Library from './svgs/Library';
+import Library2 from './svgs/Library2';
+import Contacts from './svgs/Contacts';
+import Profile from './svgs/Profile';
+import Portrait from './svgs/Portrait';
+import Portrait2 from './svgs/Portrait2';
+import User from './svgs/User';
+import UserPlus from './svgs/UserPlus';
+import UserMinus from './svgs/UserMinus';
+import UserLock from './svgs/UserLock';
+import Users from './svgs/Users';
+import Users2 from './svgs/Users2';
+import UsersPlus from './svgs/UsersPlus';
+import UsersMinus from './svgs/UsersMinus';
+import GroupWork from './svgs/GroupWork';
+import Woman from './svgs/Woman';
+import Man from './svgs/Man';
+import Baby from './svgs/Baby';
+import Baby2 from './svgs/Baby2';
+import Baby3 from './svgs/Baby3';
+import BabyBottle from './svgs/BabyBottle';
+import Walk from './svgs/Walk';
+import HandWaving from './svgs/HandWaving';
+import Jump from './svgs/Jump';
+import Run from './svgs/Run';
+import Woman2 from './svgs/Woman2';
+import Man2 from './svgs/Man2';
+import ManWoman from './svgs/ManWoman';
+import Height from './svgs/Height';
+import Weight from './svgs/Weight';
+import Scale from './svgs/Scale';
+import Button from './svgs/Button';
+import BowTie from './svgs/BowTie';
+import Tie from './svgs/Tie';
+import Socks from './svgs/Socks';
+import Shoe from './svgs/Shoe';
+import Shoes from './svgs/Shoes';
+import Hat from './svgs/Hat';
+import Pants from './svgs/Pants';
+import Shorts from './svgs/Shorts';
+import FlipFlops from './svgs/FlipFlops';
+import Shirt from './svgs/Shirt';
+import Hanger from './svgs/Hanger';
+import Laundry from './svgs/Laundry';
+import Store from './svgs/Store';
+import Haircut from './svgs/Haircut';
+import Store24 from './svgs/Store24';
+import Barcode from './svgs/Barcode';
+import Barcode2 from './svgs/Barcode2';
+import Barcode3 from './svgs/Barcode3';
+import Cashier from './svgs/Cashier';
+import Bag from './svgs/Bag';
+import Bag2 from './svgs/Bag2';
+import Cart from './svgs/Cart';
+import CartEmpty from './svgs/CartEmpty';
+import CartFull from './svgs/CartFull';
+import CartPlus from './svgs/CartPlus';
+import CartPlus2 from './svgs/CartPlus2';
+import CartAdd from './svgs/CartAdd';
+import CartRemove from './svgs/CartRemove';
+import CartExchange from './svgs/CartExchange';
+import Tag from './svgs/Tag';
+import Tags from './svgs/Tags';
+import Receipt from './svgs/Receipt';
+import Wallet from './svgs/Wallet';
+import CreditCard from './svgs/CreditCard';
+import CashDollar from './svgs/CashDollar';
+import CashEuro from './svgs/CashEuro';
+import CashPound from './svgs/CashPound';
+import CashYen from './svgs/CashYen';
+import BagDollar from './svgs/BagDollar';
+import BagEuro from './svgs/BagEuro';
+import BagPound from './svgs/BagPound';
+import BagYen from './svgs/BagYen';
+import CoinDollar from './svgs/CoinDollar';
+import CoinEuro from './svgs/CoinEuro';
+import CoinPound from './svgs/CoinPound';
+import CoinYen from './svgs/CoinYen';
+import Calculator from './svgs/Calculator';
+import Calculator2 from './svgs/Calculator2';
+import Abacus from './svgs/Abacus';
+import Vault from './svgs/Vault';
+import Telephone from './svgs/Telephone';
+import PhoneLock from './svgs/PhoneLock';
+import PhoneWave from './svgs/PhoneWave';
+import PhonePause from './svgs/PhonePause';
+import PhoneOutgoing from './svgs/PhoneOutgoing';
+import PhoneIncoming from './svgs/PhoneIncoming';
+import PhoneInOut from './svgs/PhoneInOut';
+import PhoneError from './svgs/PhoneError';
+import PhoneSip from './svgs/PhoneSip';
+import PhonePlus from './svgs/PhonePlus';
+import PhoneMinus from './svgs/PhoneMinus';
+import Voicemail from './svgs/Voicemail';
+import Dial from './svgs/Dial';
+import Telephone2 from './svgs/Telephone2';
+import Pushpin from './svgs/Pushpin';
+import Pushpin2 from './svgs/Pushpin2';
+import MapMarker from './svgs/MapMarker';
+import MapMarkerUser from './svgs/MapMarkerUser';
+import MapMarkerDown from './svgs/MapMarkerDown';
+import MapMarkerCheck from './svgs/MapMarkerCheck';
+import MapMarkerCrossed from './svgs/MapMarkerCrossed';
+import Radar from './svgs/Radar';
+import Compass2 from './svgs/Compass2';
+import Map from './svgs/Map';
+import Map2 from './svgs/Map2';
+import Location from './svgs/Location';
+import RoadSign from './svgs/RoadSign';
+import CalendarEmpty from './svgs/CalendarEmpty';
+import CalendarCheck from './svgs/CalendarCheck';
+import CalendarCross from './svgs/CalendarCross';
+import Calendar31 from './svgs/Calendar31';
+import CalendarFull from './svgs/CalendarFull';
+import CalendarInsert from './svgs/CalendarInsert';
+import CalendarText from './svgs/CalendarText';
+import CalendarUser from './svgs/CalendarUser';
+import Mouse from './svgs/Mouse';
+import MouseLeft from './svgs/MouseLeft';
+import MouseRight from './svgs/MouseRight';
+import MouseBoth from './svgs/MouseBoth';
+import Keyboard from './svgs/Keyboard';
+import KeyboardUp from './svgs/KeyboardUp';
+import KeyboardDown from './svgs/KeyboardDown';
+import Delete from './svgs/Delete';
+import SpellCheck from './svgs/SpellCheck';
+import Escape from './svgs/Escape';
+import Enter2 from './svgs/Enter2';
+import Screen from './svgs/Screen';
+import AspectRatio from './svgs/AspectRatio';
+import Signal from './svgs/Signal';
+import SignalLock from './svgs/SignalLock';
+import Signal80 from './svgs/Signal80';
+import Signal60 from './svgs/Signal60';
+import Signal40 from './svgs/Signal40';
+import Signal20 from './svgs/Signal20';
+import Signal0 from './svgs/Signal0';
+import SignalBlocked from './svgs/SignalBlocked';
+import Sim from './svgs/Sim';
+import FlashMemory from './svgs/FlashMemory';
+import UsbDrive from './svgs/UsbDrive';
+import Phone from './svgs/Phone';
+import Smartphone from './svgs/Smartphone';
+import SmartphoneNotification from './svgs/SmartphoneNotification';
+import SmartphoneVibration from './svgs/SmartphoneVibration';
+import SmartphoneEmbed from './svgs/SmartphoneEmbed';
+import SmartphoneWaves from './svgs/SmartphoneWaves';
+import Tablet from './svgs/Tablet';
+import Tablet2 from './svgs/Tablet2';
+import Laptop from './svgs/Laptop';
+import LaptopPhone from './svgs/LaptopPhone';
+import Desktop from './svgs/Desktop';
+import Launch from './svgs/Launch';
+import NewTab from './svgs/NewTab';
+import Window from './svgs/Window';
+import Cable from './svgs/Cable';
+import Cable2 from './svgs/Cable2';
+import Tv from './svgs/Tv';
+import Radio from './svgs/Radio';
+import RemoteControl from './svgs/RemoteControl';
+import PowerSwitch from './svgs/PowerSwitch';
+import Power from './svgs/Power';
+import PowerCrossed from './svgs/PowerCrossed';
+import FlashAuto from './svgs/FlashAuto';
+import Lamp from './svgs/Lamp';
+import Flashlight from './svgs/Flashlight';
+import Lampshade from './svgs/Lampshade';
+import Cord from './svgs/Cord';
+import Outlet from './svgs/Outlet';
+import BatteryPower from './svgs/BatteryPower';
+import BatteryEmpty from './svgs/BatteryEmpty';
+import BatteryAlert from './svgs/BatteryAlert';
+import BatteryError from './svgs/BatteryError';
+import BatteryLow1 from './svgs/BatteryLow1';
+import BatteryLow2 from './svgs/BatteryLow2';
+import BatteryLow3 from './svgs/BatteryLow3';
+import BatteryMid1 from './svgs/BatteryMid1';
+import BatteryMid2 from './svgs/BatteryMid2';
+import BatteryMid3 from './svgs/BatteryMid3';
+import BatteryFull from './svgs/BatteryFull';
+import BatteryCharging from './svgs/BatteryCharging';
+import BatteryCharging2 from './svgs/BatteryCharging2';
+import BatteryCharging3 from './svgs/BatteryCharging3';
+import BatteryCharging4 from './svgs/BatteryCharging4';
+import BatteryCharging5 from './svgs/BatteryCharging5';
+import BatteryCharging6 from './svgs/BatteryCharging6';
+import BatteryCharging7 from './svgs/BatteryCharging7';
+import Chip from './svgs/Chip';
+import ChipX64 from './svgs/ChipX64';
+import ChipX86 from './svgs/ChipX86';
+import Bubble from './svgs/Bubble';
+import Bubbles from './svgs/Bubbles';
+import BubbleDots from './svgs/BubbleDots';
+import BubbleAlert from './svgs/BubbleAlert';
+import BubbleQuestion from './svgs/BubbleQuestion';
+import BubbleText from './svgs/BubbleText';
+import BubblePencil from './svgs/BubblePencil';
+import BubblePicture from './svgs/BubblePicture';
+import BubbleVideo from './svgs/BubbleVideo';
+import BubbleUser from './svgs/BubbleUser';
+import BubbleQuote from './svgs/BubbleQuote';
+import BubbleHeart from './svgs/BubbleHeart';
+import BubbleEmoticon from './svgs/BubbleEmoticon';
+import BubbleAttachment from './svgs/BubbleAttachment';
+import PhoneBubble from './svgs/PhoneBubble';
+import QuoteOpen from './svgs/QuoteOpen';
+import QuoteClose from './svgs/QuoteClose';
+import Dna from './svgs/Dna';
+import HeartPulse from './svgs/HeartPulse';
+import Pulse from './svgs/Pulse';
+import Syringe from './svgs/Syringe';
+import Pills from './svgs/Pills';
+import FirstAid from './svgs/FirstAid';
+import Lifebuoy from './svgs/Lifebuoy';
+import Bandage from './svgs/Bandage';
+import Bandages from './svgs/Bandages';
+import Thermometer from './svgs/Thermometer';
+import Microscope from './svgs/Microscope';
+import Brain from './svgs/Brain';
+import Beaker from './svgs/Beaker';
+import Skull from './svgs/Skull';
+import Bone from './svgs/Bone';
+import Construction from './svgs/Construction';
+import ConstructionCone from './svgs/ConstructionCone';
+import PieChart from './svgs/PieChart';
+import PieChart2 from './svgs/PieChart2';
+import Graph from './svgs/Graph';
+import ChartGrowth from './svgs/ChartGrowth';
+import ChartBars from './svgs/ChartBars';
+import ChartSettings from './svgs/ChartSettings';
+import Cake from './svgs/Cake';
+import Gift from './svgs/Gift';
+import Balloon from './svgs/Balloon';
+import Rank from './svgs/Rank';
+import Rank2 from './svgs/Rank2';
+import Rank3 from './svgs/Rank3';
+import Crown from './svgs/Crown';
+import Lotus from './svgs/Lotus';
+import Diamond from './svgs/Diamond';
+import Diamond2 from './svgs/Diamond2';
+import Diamond3 from './svgs/Diamond3';
+import Diamond4 from './svgs/Diamond4';
+import Linearicons from './svgs/Linearicons';
+import Teacup from './svgs/Teacup';
+import Teapot from './svgs/Teapot';
+import Glass from './svgs/Glass';
+import Bottle2 from './svgs/Bottle2';
+import GlassCocktail from './svgs/GlassCocktail';
+import Glass2 from './svgs/Glass2';
+import Dinner from './svgs/Dinner';
+import Dinner2 from './svgs/Dinner2';
+import Chef from './svgs/Chef';
+import Scale2 from './svgs/Scale2';
+import Egg from './svgs/Egg';
+import Egg2 from './svgs/Egg2';
+import Eggs from './svgs/Eggs';
+import Platter from './svgs/Platter';
+import Steak from './svgs/Steak';
+import Hamburger from './svgs/Hamburger';
+import Hotdog from './svgs/Hotdog';
+import Pizza from './svgs/Pizza';
+import Sausage from './svgs/Sausage';
+import Chicken from './svgs/Chicken';
+import Fish from './svgs/Fish';
+import Carrot from './svgs/Carrot';
+import Cheese from './svgs/Cheese';
+import Bread from './svgs/Bread';
+import IceCream from './svgs/IceCream';
+import IceCream2 from './svgs/IceCream2';
+import Candy from './svgs/Candy';
+import Lollipop from './svgs/Lollipop';
+import CoffeeBean from './svgs/CoffeeBean';
+import CoffeeCup from './svgs/CoffeeCup';
+import Cherry from './svgs/Cherry';
+import Grapes from './svgs/Grapes';
+import Citrus from './svgs/Citrus';
+import Apple from './svgs/Apple';
+import Leaf from './svgs/Leaf';
+import Landscape from './svgs/Landscape';
+import PineTree from './svgs/PineTree';
+import Tree from './svgs/Tree';
+import Cactus from './svgs/Cactus';
+import Paw from './svgs/Paw';
+import Footprint from './svgs/Footprint';
+import SpeedSlow from './svgs/SpeedSlow';
+import SpeedMedium from './svgs/SpeedMedium';
+import SpeedFast from './svgs/SpeedFast';
+import Rocket from './svgs/Rocket';
+import Hammer2 from './svgs/Hammer2';
+import Balance from './svgs/Balance';
+import Briefcase from './svgs/Briefcase';
+import LuggageWeight from './svgs/LuggageWeight';
+import Dolly from './svgs/Dolly';
+import Plane from './svgs/Plane';
+import PlaneCrossed from './svgs/PlaneCrossed';
+import Helicopter from './svgs/Helicopter';
+import TrafficLights from './svgs/TrafficLights';
+import Siren from './svgs/Siren';
+import Road from './svgs/Road';
+import Engine from './svgs/Engine';
+import OilPressure from './svgs/OilPressure';
+import CoolantTemperature from './svgs/CoolantTemperature';
+import CarBattery from './svgs/CarBattery';
+import Gas from './svgs/Gas';
+import Gallon from './svgs/Gallon';
+import Transmission from './svgs/Transmission';
+import Car from './svgs/Car';
+import CarWash from './svgs/CarWash';
+import CarWash2 from './svgs/CarWash2';
+import Bus from './svgs/Bus';
+import Bus2 from './svgs/Bus2';
+import Car2 from './svgs/Car2';
+import Parking from './svgs/Parking';
+import CarLock from './svgs/CarLock';
+import Taxi from './svgs/Taxi';
+import CarSiren from './svgs/CarSiren';
+import CarWash3 from './svgs/CarWash3';
+import CarWash4 from './svgs/CarWash4';
+import Ambulance from './svgs/Ambulance';
+import Truck from './svgs/Truck';
+import Trailer from './svgs/Trailer';
+import ScaleTruck from './svgs/ScaleTruck';
+import Train from './svgs/Train';
+import Ship from './svgs/Ship';
+import Ship2 from './svgs/Ship2';
+import Anchor from './svgs/Anchor';
+import Boat from './svgs/Boat';
+import Bicycle from './svgs/Bicycle';
+import Bicycle2 from './svgs/Bicycle2';
+import Dumbbell from './svgs/Dumbbell';
+import BenchPress from './svgs/BenchPress';
+import Swim from './svgs/Swim';
+import Football from './svgs/Football';
+import BaseballBat from './svgs/BaseballBat';
+import Baseball from './svgs/Baseball';
+import Tennis from './svgs/Tennis';
+import Tennis2 from './svgs/Tennis2';
+import PingPong from './svgs/PingPong';
+import Hockey from './svgs/Hockey';
+import EightBall from './svgs/EightBall';
+import Bowling from './svgs/Bowling';
+import BowlingPins from './svgs/BowlingPins';
+import Golf from './svgs/Golf';
+import Golf2 from './svgs/Golf2';
+import Archery from './svgs/Archery';
+import Slingshot from './svgs/Slingshot';
+import Soccer from './svgs/Soccer';
+import Basketball from './svgs/Basketball';
+import Cube from './svgs/Cube';
+import ThreeDRotate from './svgs/ThreeDRotate';
+import Puzzle from './svgs/Puzzle';
+import Glasses from './svgs/Glasses';
+import Glasses2 from './svgs/Glasses2';
+import Accessibility from './svgs/Accessibility';
+import Wheelchair from './svgs/Wheelchair';
+import Wall from './svgs/Wall';
+import Fence from './svgs/Fence';
+import Wall2 from './svgs/Wall2';
+import Icons from './svgs/Icons';
+import ResizeHandle from './svgs/ResizeHandle';
+import Icons2 from './svgs/Icons2';
+import Select from './svgs/Select';
+import Select2 from './svgs/Select2';
+import SiteMap from './svgs/SiteMap';
+import Earth from './svgs/Earth';
+import EarthLock from './svgs/EarthLock';
+import Network from './svgs/Network';
+import NetworkLock from './svgs/NetworkLock';
+import Planet from './svgs/Planet';
+import Happy from './svgs/Happy';
+import Smile from './svgs/Smile';
+import Grin from './svgs/Grin';
+import Tongue from './svgs/Tongue';
+import Sad from './svgs/Sad';
+import Wink from './svgs/Wink';
+import Dream from './svgs/Dream';
+import Shocked from './svgs/Shocked';
+import Shocked2 from './svgs/Shocked2';
+import Tongue2 from './svgs/Tongue2';
+import Neutral from './svgs/Neutral';
+import HappyGrin from './svgs/HappyGrin';
+import Cool from './svgs/Cool';
+import Mad from './svgs/Mad';
+import GrinEvil from './svgs/GrinEvil';
+import Evil from './svgs/Evil';
+import Wow from './svgs/Wow';
+import Annoyed from './svgs/Annoyed';
+import Wondering from './svgs/Wondering';
+import Confused from './svgs/Confused';
+import Zipped from './svgs/Zipped';
+import Grumpy from './svgs/Grumpy';
+import Mustache from './svgs/Mustache';
+import TombstoneHipster from './svgs/TombstoneHipster';
+import Tombstone from './svgs/Tombstone';
+import Ghost from './svgs/Ghost';
+import GhostHipster from './svgs/GhostHipster';
+import Halloween from './svgs/Halloween';
+import Christmas from './svgs/Christmas';
+import EasterEgg from './svgs/EasterEgg';
+import Mustache2 from './svgs/Mustache2';
+import MustacheGlasses from './svgs/MustacheGlasses';
+import Pipe from './svgs/Pipe';
+import Alarm from './svgs/Alarm';
+import AlarmAdd from './svgs/AlarmAdd';
+import AlarmSnooze from './svgs/AlarmSnooze';
+import AlarmRinging from './svgs/AlarmRinging';
+import Bullhorn from './svgs/Bullhorn';
+import Hearing from './svgs/Hearing';
+import VolumeHigh from './svgs/VolumeHigh';
+import VolumeMedium from './svgs/VolumeMedium';
+import VolumeLow from './svgs/VolumeLow';
+import Volume from './svgs/Volume';
+import Mute from './svgs/Mute';
+import Lan from './svgs/Lan';
+import Lan2 from './svgs/Lan2';
+import Wifi from './svgs/Wifi';
+import WifiLock from './svgs/WifiLock';
+import WifiBlocked from './svgs/WifiBlocked';
+import WifiMid from './svgs/WifiMid';
+import WifiLow from './svgs/WifiLow';
+import WifiLow2 from './svgs/WifiLow2';
+import WifiAlert from './svgs/WifiAlert';
+import WifiAlertMid from './svgs/WifiAlertMid';
+import WifiAlertLow from './svgs/WifiAlertLow';
+import WifiAlertLow2 from './svgs/WifiAlertLow2';
+import Stream from './svgs/Stream';
+import StreamCheck from './svgs/StreamCheck';
+import StreamError from './svgs/StreamError';
+import StreamAlert from './svgs/StreamAlert';
+import Communication from './svgs/Communication';
+import CommunicationCrossed from './svgs/CommunicationCrossed';
+import Broadcast from './svgs/Broadcast';
+import Antenna from './svgs/Antenna';
+import Satellite from './svgs/Satellite';
+import Satellite2 from './svgs/Satellite2';
+import Mic from './svgs/Mic';
+import MicMute from './svgs/MicMute';
+import Mic2 from './svgs/Mic2';
+import Spotlights from './svgs/Spotlights';
+import Hourglass from './svgs/Hourglass';
+import Loading from './svgs/Loading';
+import Loading2 from './svgs/Loading2';
+import Loading3 from './svgs/Loading3';
+import Refresh from './svgs/Refresh';
+import Refresh2 from './svgs/Refresh2';
+import Undo from './svgs/Undo';
+import Redo from './svgs/Redo';
+import Jump2 from './svgs/Jump2';
+import Undo2 from './svgs/Undo2';
+import Redo2 from './svgs/Redo2';
+import Sync from './svgs/Sync';
+import RepeatOne2 from './svgs/RepeatOne2';
+import SyncCrossed from './svgs/SyncCrossed';
+import Sync2 from './svgs/Sync2';
+import RepeatOne3 from './svgs/RepeatOne3';
+import SyncCrossed2 from './svgs/SyncCrossed2';
+import Return from './svgs/Return';
+import Return2 from './svgs/Return2';
+import Refund from './svgs/Refund';
+import History from './svgs/History';
+import History2 from './svgs/History2';
+import SelfTimer from './svgs/SelfTimer';
+import Clock from './svgs/Clock';
+import Clock2 from './svgs/Clock2';
+import Clock3 from './svgs/Clock3';
+import Watch from './svgs/Watch';
+import Alarm2 from './svgs/Alarm2';
+import AlarmAdd2 from './svgs/AlarmAdd2';
+import AlarmRemove from './svgs/AlarmRemove';
+import AlarmCheck from './svgs/AlarmCheck';
+import AlarmError from './svgs/AlarmError';
+import Timer from './svgs/Timer';
+import TimerCrossed from './svgs/TimerCrossed';
+import Timer2 from './svgs/Timer2';
+import TimerCrossed2 from './svgs/TimerCrossed2';
+import Download from './svgs/Download';
+import Upload from './svgs/Upload';
+import Download2 from './svgs/Download2';
+import Upload2 from './svgs/Upload2';
+import EnterUp from './svgs/EnterUp';
+import EnterDown from './svgs/EnterDown';
+import EnterLeft from './svgs/EnterLeft';
+import EnterRight from './svgs/EnterRight';
+import ExitUp from './svgs/ExitUp';
+import ExitDown from './svgs/ExitDown';
+import ExitLeft from './svgs/ExitLeft';
+import ExitRight from './svgs/ExitRight';
+import EnterUp2 from './svgs/EnterUp2';
+import EnterDown2 from './svgs/EnterDown2';
+import EnterVertical from './svgs/EnterVertical';
+import EnterLeft2 from './svgs/EnterLeft2';
+import EnterRight2 from './svgs/EnterRight2';
+import EnterHorizontal from './svgs/EnterHorizontal';
+import ExitUp2 from './svgs/ExitUp2';
+import ExitDown2 from './svgs/ExitDown2';
+import ExitLeft2 from './svgs/ExitLeft2';
+import ExitRight2 from './svgs/ExitRight2';
+import Cli from './svgs/Cli';
+import Bug from './svgs/Bug';
+import Code from './svgs/Code';
+import FileCode from './svgs/FileCode';
+import FileImage from './svgs/FileImage';
+import FileZip from './svgs/FileZip';
+import FileAudio from './svgs/FileAudio';
+import FileVideo from './svgs/FileVideo';
+import FilePreview from './svgs/FilePreview';
+import FileCharts from './svgs/FileCharts';
+import FileStats from './svgs/FileStats';
+import FileSpreadsheet from './svgs/FileSpreadsheet';
+import Link from './svgs/Link';
+import Unlink from './svgs/Unlink';
+import Link2 from './svgs/Link2';
+import Unlink2 from './svgs/Unlink2';
+import ThumbsUp from './svgs/ThumbsUp';
+import ThumbsDown from './svgs/ThumbsDown';
+import ThumbsUp2 from './svgs/ThumbsUp2';
+import ThumbsDown2 from './svgs/ThumbsDown2';
+import ThumbsUp3 from './svgs/ThumbsUp3';
+import ThumbsDown3 from './svgs/ThumbsDown3';
+import Share from './svgs/Share';
+import Share2 from './svgs/Share2';
+import Share3 from './svgs/Share3';
+import Magnifier from './svgs/Magnifier';
+import FileSearch from './svgs/FileSearch';
+import FindReplace from './svgs/FindReplace';
+import ZoomIn from './svgs/ZoomIn';
+import ZoomOut from './svgs/ZoomOut';
+import Loupe from './svgs/Loupe';
+import LoupeZoomIn from './svgs/LoupeZoomIn';
+import LoupeZoomOut from './svgs/LoupeZoomOut';
+import Cross from './svgs/Cross';
+import Menu from './svgs/Menu';
+import List from './svgs/List';
+import List2 from './svgs/List2';
+import List3 from './svgs/List3';
+import Menu2 from './svgs/Menu2';
+import List4 from './svgs/List4';
+import Menu3 from './svgs/Menu3';
+import Exclamation from './svgs/Exclamation';
+import Question from './svgs/Question';
+import Check from './svgs/Check';
+import Cross2 from './svgs/Cross2';
+import Plus from './svgs/Plus';
+import Minus from './svgs/Minus';
+import Percent from './svgs/Percent';
+import ChevronUp from './svgs/ChevronUp';
+import ChevronDown from './svgs/ChevronDown';
+import ChevronLeft from './svgs/ChevronLeft';
+import ChevronRight from './svgs/ChevronRight';
+import ChevronsExpandVertical from './svgs/ChevronsExpandVertical';
+import ChevronsExpandHorizontal from './svgs/ChevronsExpandHorizontal';
+import ChevronsContractVertical from './svgs/ChevronsContractVertical';
+import ChevronsContractHorizontal from './svgs/ChevronsContractHorizontal';
+import ArrowUp from './svgs/ArrowUp';
+import ArrowDown from './svgs/ArrowDown';
+import ArrowLeft from './svgs/ArrowLeft';
+import ArrowRight from './svgs/ArrowRight';
+import ArrowUpRight from './svgs/ArrowUpRight';
+import ArrowsMerge from './svgs/ArrowsMerge';
+import ArrowsSplit from './svgs/ArrowsSplit';
+import ArrowDivert from './svgs/ArrowDivert';
+import ArrowReturn from './svgs/ArrowReturn';
+import Expand from './svgs/Expand';
+import Contract from './svgs/Contract';
+import Expand2 from './svgs/Expand2';
+import Contract2 from './svgs/Contract2';
+import Move from './svgs/Move';
+import Tab from './svgs/Tab';
+import ArrowWave from './svgs/ArrowWave';
+import Expand3 from './svgs/Expand3';
+import Expand4 from './svgs/Expand4';
+import Contract3 from './svgs/Contract3';
+import Notification from './svgs/Notification';
+import Warning from './svgs/Warning';
+import NotificationCircle from './svgs/NotificationCircle';
+import QuestionCircle from './svgs/QuestionCircle';
+import MenuCircle from './svgs/MenuCircle';
+import CheckmarkCircle from './svgs/CheckmarkCircle';
+import CrossCircle from './svgs/CrossCircle';
+import PlusCircle from './svgs/PlusCircle';
+import CircleMinus from './svgs/CircleMinus';
+import PercentCircle from './svgs/PercentCircle';
+import ArrowUpCircle from './svgs/ArrowUpCircle';
+import ArrowDownCircle from './svgs/ArrowDownCircle';
+import ArrowLeftCircle from './svgs/ArrowLeftCircle';
+import ArrowRightCircle from './svgs/ArrowRightCircle';
+import ChevronUpCircle from './svgs/ChevronUpCircle';
+import ChevronDownCircle from './svgs/ChevronDownCircle';
+import ChevronLeftCircle from './svgs/ChevronLeftCircle';
+import ChevronRightCircle from './svgs/ChevronRightCircle';
+import BackwardCircle from './svgs/BackwardCircle';
+import FirstCircle from './svgs/FirstCircle';
+import PreviousCircle from './svgs/PreviousCircle';
+import StopCircle from './svgs/StopCircle';
+import PlayCircle from './svgs/PlayCircle';
+import PauseCircle from './svgs/PauseCircle';
+import NextCircle from './svgs/NextCircle';
+import LastCircle from './svgs/LastCircle';
+import ForwardCircle from './svgs/ForwardCircle';
+import EjectCircle from './svgs/EjectCircle';
+import Crop from './svgs/Crop';
+import FrameExpand from './svgs/FrameExpand';
+import FrameContract from './svgs/FrameContract';
+import Focus from './svgs/Focus';
+import Transform from './svgs/Transform';
+import Grid from './svgs/Grid';
+import GridCrossed from './svgs/GridCrossed';
+import Layers from './svgs/Layers';
+import LayersCrossed from './svgs/LayersCrossed';
+import Toggle from './svgs/Toggle';
+import Rulers from './svgs/Rulers';
+import Ruler from './svgs/Ruler';
+import Funnel from './svgs/Funnel';
+import FlipHorizontal from './svgs/FlipHorizontal';
+import FlipVertical from './svgs/FlipVertical';
+import FlipHorizontal2 from './svgs/FlipHorizontal2';
+import FlipVertical2 from './svgs/FlipVertical2';
+import Angle from './svgs/Angle';
+import Angle2 from './svgs/Angle2';
+import Subtract from './svgs/Subtract';
+import Combine from './svgs/Combine';
+import Intersect from './svgs/Intersect';
+import Exclude from './svgs/Exclude';
+import AlignCenterVertical from './svgs/AlignCenterVertical';
+import AlignRight from './svgs/AlignRight';
+import AlignBottom from './svgs/AlignBottom';
+import AlignLeft from './svgs/AlignLeft';
+import AlignCenterHorizontal from './svgs/AlignCenterHorizontal';
+import AlignTop from './svgs/AlignTop';
+import Square from './svgs/Square';
+import PlusSquare from './svgs/PlusSquare';
+import MinusSquare from './svgs/MinusSquare';
+import PercentSquare from './svgs/PercentSquare';
+import ArrowUpSquare from './svgs/ArrowUpSquare';
+import ArrowDownSquare from './svgs/ArrowDownSquare';
+import ArrowLeftSquare from './svgs/ArrowLeftSquare';
+import ArrowRightSquare from './svgs/ArrowRightSquare';
+import ChevronUpSquare from './svgs/ChevronUpSquare';
+import ChevronDownSquare from './svgs/ChevronDownSquare';
+import ChevronLeftSquare from './svgs/ChevronLeftSquare';
+import ChevronRightSquare from './svgs/ChevronRightSquare';
+import CheckSquare from './svgs/CheckSquare';
+import CrossSquare from './svgs/CrossSquare';
+import MenuSquare from './svgs/MenuSquare';
+import Prohibited from './svgs/Prohibited';
+import Circle from './svgs/Circle';
+import RadioButton from './svgs/RadioButton';
+import Ligature from './svgs/Ligature';
+import TextFormat from './svgs/TextFormat';
+import TextFormatRemove from './svgs/TextFormatRemove';
+import TextSize from './svgs/TextSize';
+import Bold from './svgs/Bold';
+import Italic from './svgs/Italic';
+import Underline from './svgs/Underline';
+import Strikethrough from './svgs/Strikethrough';
+import Highlight from './svgs/Highlight';
+import TextAlignLeft from './svgs/TextAlignLeft';
+import TextAlignCenter from './svgs/TextAlignCenter';
+import TextAlignRight from './svgs/TextAlignRight';
+import TextAlignJustify from './svgs/TextAlignJustify';
+import LineSpacing from './svgs/LineSpacing';
+import IndentIncrease from './svgs/IndentIncrease';
+import IndentDecrease from './svgs/IndentDecrease';
+import TextWrap from './svgs/TextWrap';
+import Pilcrow from './svgs/Pilcrow';
+import DirectionLtr from './svgs/DirectionLtr';
+import DirectionRtl from './svgs/DirectionRtl';
+import PageBreak from './svgs/PageBreak';
+import PageBreak2 from './svgs/PageBreak2';
+import SortAlphaAsc from './svgs/SortAlphaAsc';
+import SortAlphaDesc from './svgs/SortAlphaDesc';
+import SortNumericAsc from './svgs/SortNumericAsc';
+import SortNumericDesc from './svgs/SortNumericDesc';
+import SortAmountAsc from './svgs/SortAmountAsc';
+import SortAmountDesc from './svgs/SortAmountDesc';
+import SortTimeAsc from './svgs/SortTimeAsc';
+import SortTimeDesc from './svgs/SortTimeDesc';
+import Sigma from './svgs/Sigma';
+import PencilLine from './svgs/PencilLine';
+import Hand from './svgs/Hand';
+import PointerUp from './svgs/PointerUp';
+import PointerRight from './svgs/PointerRight';
+import PointerDown from './svgs/PointerDown';
+import PointerLeft from './svgs/PointerLeft';
+import FingerTap from './svgs/FingerTap';
+import FingersTap from './svgs/FingersTap';
+import Reminder from './svgs/Reminder';
+import FingersCrossed from './svgs/FingersCrossed';
+import FingersVictory from './svgs/FingersVictory';
+import GestureZoom from './svgs/GestureZoom';
+import GesturePinch from './svgs/GesturePinch';
+import FingersScrollHorizontal from './svgs/FingersScrollHorizontal';
+import FingersScrollVertical from './svgs/FingersScrollVertical';
+import FingersScrollLeft from './svgs/FingersScrollLeft';
+import FingersScrollRight from './svgs/FingersScrollRight';
+import Hand2 from './svgs/Hand2';
+import PointerUp2 from './svgs/PointerUp2';
+import PointerRight2 from './svgs/PointerRight2';
+import PointerDown2 from './svgs/PointerDown2';
+import PointerLeft2 from './svgs/PointerLeft2';
+import FingerTap2 from './svgs/FingerTap2';
+import FingersTap2 from './svgs/FingersTap2';
+import Reminder2 from './svgs/Reminder2';
+import GestureZoom2 from './svgs/GestureZoom2';
+import GesturePinch2 from './svgs/GesturePinch2';
+import FingersScrollHorizontal2 from './svgs/FingersScrollHorizontal2';
+import FingersScrollVertical2 from './svgs/FingersScrollVertical2';
+import FingersScrollLeft2 from './svgs/FingersScrollLeft2';
+import FingersScrollRight2 from './svgs/FingersScrollRight2';
+import FingersScrollVertical3 from './svgs/FingersScrollVertical3';
+import BorderStyle from './svgs/BorderStyle';
+import BorderAll from './svgs/BorderAll';
+import BorderOuter from './svgs/BorderOuter';
+import BorderInner from './svgs/BorderInner';
+import BorderTop from './svgs/BorderTop';
+import BorderHorizontal from './svgs/BorderHorizontal';
+import BorderBottom from './svgs/BorderBottom';
+import BorderLeft from './svgs/BorderLeft';
+import BorderVertical from './svgs/BorderVertical';
+import BorderRight from './svgs/BorderRight';
+import BorderNone from './svgs/BorderNone';
+import Ellipsis from './svgs/Ellipsis';
+
+const icons = {
+    Home,
+    Home2,
+    Home3,
+    Home4,
+    Home5,
+    Home6,
+    Bathtub,
+    Toothbrush,
+    Bed,
+    Couch,
+    Chair,
+    City,
+    Apartment,
+    Pencil,
+    Pencil2,
+    Pen,
+    Pencil3,
+    Eraser,
+    Pencil4,
+    Pencil5,
+    Feather,
+    Feather2,
+    Feather3,
+    Pen2,
+    PenAdd,
+    PenRemove,
+    Vector,
+    Pen3,
+    Blog,
+    Brush,
+    Brush2,
+    Spray,
+    PaintRoller,
+    Stamp,
+    Tape,
+    DeskTape,
+    Texture,
+    EyeDropper,
+    Palette,
+    ColorSampler,
+    Bucket,
+    Gradient,
+    Gradient2,
+    MagicWand,
+    Magnet,
+    PencilRuler,
+    PencilRuler2,
+    Compass,
+    Aim,
+    Gun,
+    Bottle,
+    Drop,
+    DropCrossed,
+    Drop2,
+    Snow,
+    Snow2,
+    Fire,
+    Lighter,
+    Knife,
+    Dagger,
+    Tissue,
+    ToiletPaper,
+    Poop,
+    Umbrella,
+    Umbrella2,
+    Rain,
+    Tornado,
+    Wind,
+    Fan,
+    Contrast,
+    SunSmall,
+    Sun,
+    Sun2,
+    Moon,
+    Cloud,
+    CloudUpload,
+    CloudDownload,
+    CloudRain,
+    CloudHailstones,
+    CloudSnow,
+    CloudWindy,
+    SunWind,
+    CloudFog,
+    CloudSun,
+    CloudLightning,
+    CloudSync,
+    CloudLock,
+    CloudGear,
+    CloudAlert,
+    CloudCheck,
+    CloudCross,
+    CloudCrossed,
+    CloudDatabase,
+    Database,
+    DatabaseAdd,
+    DatabaseRemove,
+    DatabaseLock,
+    DatabaseRefresh,
+    DatabaseCheck,
+    DatabaseHistory,
+    DatabaseUpload,
+    DatabaseDownload,
+    Server,
+    Shield,
+    ShieldCheck,
+    ShieldAlert,
+    ShieldCross,
+    Lock,
+    RotationLock,
+    Unlock,
+    Key,
+    KeyHole,
+    ToggleOff,
+    ToggleOn,
+    Cog,
+    Cog2,
+    Wrench,
+    Screwdriver,
+    HammerWrench,
+    Hammer,
+    Saw,
+    Axe,
+    Axe2,
+    Shovel,
+    Pickaxe,
+    Factory,
+    Factory2,
+    Recycle,
+    Trash,
+    Trash2,
+    Trash3,
+    Broom,
+    Game,
+    Gamepad,
+    Joystick,
+    Dice,
+    Spades,
+    Diamonds,
+    Clubs,
+    Hearts,
+    Heart,
+    Star,
+    StarHalf,
+    StarEmpty,
+    Flag,
+    Flag2,
+    Flag3,
+    MailboxFull,
+    MailboxEmpty,
+    AtSign,
+    Envelope,
+    EnvelopeOpen,
+    Paperclip,
+    PaperPlane,
+    Reply,
+    ReplyAll,
+    Inbox,
+    Inbox2,
+    Outbox,
+    Box,
+    Archive,
+    Archive2,
+    Drawers,
+    Drawers2,
+    Drawers3,
+    Eye,
+    EyeCrossed,
+    EyePlus,
+    EyeMinus,
+    Binoculars,
+    Binoculars2,
+    Hdd,
+    HddDown,
+    HddUp,
+    FloppyDisk,
+    Disc,
+    Tape2,
+    Printer,
+    Shredder,
+    FileEmpty,
+    FileAdd,
+    FileCheck,
+    FileLock,
+    Files,
+    Copy,
+    Compare,
+    Folder,
+    FolderSearch,
+    FolderPlus,
+    FolderMinus,
+    FolderDownload,
+    FolderUpload,
+    FolderStar,
+    FolderHeart,
+    FolderUser,
+    FolderShared,
+    FolderMusic,
+    FolderPicture,
+    FolderFilm,
+    Scissors,
+    Paste,
+    ClipboardEmpty,
+    ClipboardPencil,
+    ClipboardText,
+    ClipboardCheck,
+    ClipboardDown,
+    ClipboardLeft,
+    ClipboardAlert,
+    ClipboardUser,
+    Register,
+    Enter,
+    Exit,
+    Papers,
+    News,
+    Reading,
+    Typewriter,
+    Document,
+    Document2,
+    GraduationHat,
+    License,
+    License2,
+    MedalEmpty,
+    MedalFirst,
+    MedalSecond,
+    MedalThird,
+    Podium,
+    Trophy,
+    Trophy2,
+    MusicNote,
+    MusicNote2,
+    MusicNote3,
+    Playlist,
+    PlaylistAdd,
+    Guitar,
+    Trumpet,
+    Album,
+    Shuffle,
+    RepeatOne,
+    Repeat,
+    Headphones,
+    Headset,
+    Loudspeaker,
+    Equalizer,
+    Theater,
+    ThreeDGlasses,
+    Ticket,
+    Presentation,
+    Play,
+    FilmPlay,
+    ClapboardPlay,
+    Media,
+    Film,
+    Film2,
+    Surveillance,
+    Surveillance2,
+    Camera,
+    CameraCrossed,
+    CameraPlay,
+    TimeLapse,
+    Record,
+    Camera2,
+    CameraFlip,
+    Panorama,
+    TimeLapse2,
+    Shutter,
+    Shutter2,
+    FaceDetection,
+    Flare,
+    Convex,
+    Concave,
+    Picture,
+    Picture2,
+    Picture3,
+    Pictures,
+    Book,
+    AudioBook,
+    Book2,
+    Bookmark,
+    Bookmark2,
+    Label,
+    Library,
+    Library2,
+    Contacts,
+    Profile,
+    Portrait,
+    Portrait2,
+    User,
+    UserPlus,
+    UserMinus,
+    UserLock,
+    Users,
+    Users2,
+    UsersPlus,
+    UsersMinus,
+    GroupWork,
+    Woman,
+    Man,
+    Baby,
+    Baby2,
+    Baby3,
+    BabyBottle,
+    Walk,
+    HandWaving,
+    Jump,
+    Run,
+    Woman2,
+    Man2,
+    ManWoman,
+    Height,
+    Weight,
+    Scale,
+    Button,
+    BowTie,
+    Tie,
+    Socks,
+    Shoe,
+    Shoes,
+    Hat,
+    Pants,
+    Shorts,
+    FlipFlops,
+    Shirt,
+    Hanger,
+    Laundry,
+    Store,
+    Haircut,
+    Store24,
+    Barcode,
+    Barcode2,
+    Barcode3,
+    Cashier,
+    Bag,
+    Bag2,
+    Cart,
+    CartEmpty,
+    CartFull,
+    CartPlus,
+    CartPlus2,
+    CartAdd,
+    CartRemove,
+    CartExchange,
+    Tag,
+    Tags,
+    Receipt,
+    Wallet,
+    CreditCard,
+    CashDollar,
+    CashEuro,
+    CashPound,
+    CashYen,
+    BagDollar,
+    BagEuro,
+    BagPound,
+    BagYen,
+    CoinDollar,
+    CoinEuro,
+    CoinPound,
+    CoinYen,
+    Calculator,
+    Calculator2,
+    Abacus,
+    Vault,
+    Telephone,
+    PhoneLock,
+    PhoneWave,
+    PhonePause,
+    PhoneOutgoing,
+    PhoneIncoming,
+    PhoneInOut,
+    PhoneError,
+    PhoneSip,
+    PhonePlus,
+    PhoneMinus,
+    Voicemail,
+    Dial,
+    Telephone2,
+    Pushpin,
+    Pushpin2,
+    MapMarker,
+    MapMarkerUser,
+    MapMarkerDown,
+    MapMarkerCheck,
+    MapMarkerCrossed,
+    Radar,
+    Compass2,
+    Map,
+    Map2,
+    Location,
+    RoadSign,
+    CalendarEmpty,
+    CalendarCheck,
+    CalendarCross,
+    Calendar31,
+    CalendarFull,
+    CalendarInsert,
+    CalendarText,
+    CalendarUser,
+    Mouse,
+    MouseLeft,
+    MouseRight,
+    MouseBoth,
+    Keyboard,
+    KeyboardUp,
+    KeyboardDown,
+    Delete,
+    SpellCheck,
+    Escape,
+    Enter2,
+    Screen,
+    AspectRatio,
+    Signal,
+    SignalLock,
+    Signal80,
+    Signal60,
+    Signal40,
+    Signal20,
+    Signal0,
+    SignalBlocked,
+    Sim,
+    FlashMemory,
+    UsbDrive,
+    Phone,
+    Smartphone,
+    SmartphoneNotification,
+    SmartphoneVibration,
+    SmartphoneEmbed,
+    SmartphoneWaves,
+    Tablet,
+    Tablet2,
+    Laptop,
+    LaptopPhone,
+    Desktop,
+    Launch,
+    NewTab,
+    Window,
+    Cable,
+    Cable2,
+    Tv,
+    Radio,
+    RemoteControl,
+    PowerSwitch,
+    Power,
+    PowerCrossed,
+    FlashAuto,
+    Lamp,
+    Flashlight,
+    Lampshade,
+    Cord,
+    Outlet,
+    BatteryPower,
+    BatteryEmpty,
+    BatteryAlert,
+    BatteryError,
+    BatteryLow1,
+    BatteryLow2,
+    BatteryLow3,
+    BatteryMid1,
+    BatteryMid2,
+    BatteryMid3,
+    BatteryFull,
+    BatteryCharging,
+    BatteryCharging2,
+    BatteryCharging3,
+    BatteryCharging4,
+    BatteryCharging5,
+    BatteryCharging6,
+    BatteryCharging7,
+    Chip,
+    ChipX64,
+    ChipX86,
+    Bubble,
+    Bubbles,
+    BubbleDots,
+    BubbleAlert,
+    BubbleQuestion,
+    BubbleText,
+    BubblePencil,
+    BubblePicture,
+    BubbleVideo,
+    BubbleUser,
+    BubbleQuote,
+    BubbleHeart,
+    BubbleEmoticon,
+    BubbleAttachment,
+    PhoneBubble,
+    QuoteOpen,
+    QuoteClose,
+    Dna,
+    HeartPulse,
+    Pulse,
+    Syringe,
+    Pills,
+    FirstAid,
+    Lifebuoy,
+    Bandage,
+    Bandages,
+    Thermometer,
+    Microscope,
+    Brain,
+    Beaker,
+    Skull,
+    Bone,
+    Construction,
+    ConstructionCone,
+    PieChart,
+    PieChart2,
+    Graph,
+    ChartGrowth,
+    ChartBars,
+    ChartSettings,
+    Cake,
+    Gift,
+    Balloon,
+    Rank,
+    Rank2,
+    Rank3,
+    Crown,
+    Lotus,
+    Diamond,
+    Diamond2,
+    Diamond3,
+    Diamond4,
+    Linearicons,
+    Teacup,
+    Teapot,
+    Glass,
+    Bottle2,
+    GlassCocktail,
+    Glass2,
+    Dinner,
+    Dinner2,
+    Chef,
+    Scale2,
+    Egg,
+    Egg2,
+    Eggs,
+    Platter,
+    Steak,
+    Hamburger,
+    Hotdog,
+    Pizza,
+    Sausage,
+    Chicken,
+    Fish,
+    Carrot,
+    Cheese,
+    Bread,
+    IceCream,
+    IceCream2,
+    Candy,
+    Lollipop,
+    CoffeeBean,
+    CoffeeCup,
+    Cherry,
+    Grapes,
+    Citrus,
+    Apple,
+    Leaf,
+    Landscape,
+    PineTree,
+    Tree,
+    Cactus,
+    Paw,
+    Footprint,
+    SpeedSlow,
+    SpeedMedium,
+    SpeedFast,
+    Rocket,
+    Hammer2,
+    Balance,
+    Briefcase,
+    LuggageWeight,
+    Dolly,
+    Plane,
+    PlaneCrossed,
+    Helicopter,
+    TrafficLights,
+    Siren,
+    Road,
+    Engine,
+    OilPressure,
+    CoolantTemperature,
+    CarBattery,
+    Gas,
+    Gallon,
+    Transmission,
+    Car,
+    CarWash,
+    CarWash2,
+    Bus,
+    Bus2,
+    Car2,
+    Parking,
+    CarLock,
+    Taxi,
+    CarSiren,
+    CarWash3,
+    CarWash4,
+    Ambulance,
+    Truck,
+    Trailer,
+    ScaleTruck,
+    Train,
+    Ship,
+    Ship2,
+    Anchor,
+    Boat,
+    Bicycle,
+    Bicycle2,
+    Dumbbell,
+    BenchPress,
+    Swim,
+    Football,
+    BaseballBat,
+    Baseball,
+    Tennis,
+    Tennis2,
+    PingPong,
+    Hockey,
+    EightBall,
+    Bowling,
+    BowlingPins,
+    Golf,
+    Golf2,
+    Archery,
+    Slingshot,
+    Soccer,
+    Basketball,
+    Cube,
+    ThreeDRotate,
+    Puzzle,
+    Glasses,
+    Glasses2,
+    Accessibility,
+    Wheelchair,
+    Wall,
+    Fence,
+    Wall2,
+    Icons,
+    ResizeHandle,
+    Icons2,
+    Select,
+    Select2,
+    SiteMap,
+    Earth,
+    EarthLock,
+    Network,
+    NetworkLock,
+    Planet,
+    Happy,
+    Smile,
+    Grin,
+    Tongue,
+    Sad,
+    Wink,
+    Dream,
+    Shocked,
+    Shocked2,
+    Tongue2,
+    Neutral,
+    HappyGrin,
+    Cool,
+    Mad,
+    GrinEvil,
+    Evil,
+    Wow,
+    Annoyed,
+    Wondering,
+    Confused,
+    Zipped,
+    Grumpy,
+    Mustache,
+    TombstoneHipster,
+    Tombstone,
+    Ghost,
+    GhostHipster,
+    Halloween,
+    Christmas,
+    EasterEgg,
+    Mustache2,
+    MustacheGlasses,
+    Pipe,
+    Alarm,
+    AlarmAdd,
+    AlarmSnooze,
+    AlarmRinging,
+    Bullhorn,
+    Hearing,
+    VolumeHigh,
+    VolumeMedium,
+    VolumeLow,
+    Volume,
+    Mute,
+    Lan,
+    Lan2,
+    Wifi,
+    WifiLock,
+    WifiBlocked,
+    WifiMid,
+    WifiLow,
+    WifiLow2,
+    WifiAlert,
+    WifiAlertMid,
+    WifiAlertLow,
+    WifiAlertLow2,
+    Stream,
+    StreamCheck,
+    StreamError,
+    StreamAlert,
+    Communication,
+    CommunicationCrossed,
+    Broadcast,
+    Antenna,
+    Satellite,
+    Satellite2,
+    Mic,
+    MicMute,
+    Mic2,
+    Spotlights,
+    Hourglass,
+    Loading,
+    Loading2,
+    Loading3,
+    Refresh,
+    Refresh2,
+    Undo,
+    Redo,
+    Jump2,
+    Undo2,
+    Redo2,
+    Sync,
+    RepeatOne2,
+    SyncCrossed,
+    Sync2,
+    RepeatOne3,
+    SyncCrossed2,
+    Return,
+    Return2,
+    Refund,
+    History,
+    History2,
+    SelfTimer,
+    Clock,
+    Clock2,
+    Clock3,
+    Watch,
+    Alarm2,
+    AlarmAdd2,
+    AlarmRemove,
+    AlarmCheck,
+    AlarmError,
+    Timer,
+    TimerCrossed,
+    Timer2,
+    TimerCrossed2,
+    Download,
+    Upload,
+    Download2,
+    Upload2,
+    EnterUp,
+    EnterDown,
+    EnterLeft,
+    EnterRight,
+    ExitUp,
+    ExitDown,
+    ExitLeft,
+    ExitRight,
+    EnterUp2,
+    EnterDown2,
+    EnterVertical,
+    EnterLeft2,
+    EnterRight2,
+    EnterHorizontal,
+    ExitUp2,
+    ExitDown2,
+    ExitLeft2,
+    ExitRight2,
+    Cli,
+    Bug,
+    Code,
+    FileCode,
+    FileImage,
+    FileZip,
+    FileAudio,
+    FileVideo,
+    FilePreview,
+    FileCharts,
+    FileStats,
+    FileSpreadsheet,
+    Link,
+    Unlink,
+    Link2,
+    Unlink2,
+    ThumbsUp,
+    ThumbsDown,
+    ThumbsUp2,
+    ThumbsDown2,
+    ThumbsUp3,
+    ThumbsDown3,
+    Share,
+    Share2,
+    Share3,
+    Magnifier,
+    FileSearch,
+    FindReplace,
+    ZoomIn,
+    ZoomOut,
+    Loupe,
+    LoupeZoomIn,
+    LoupeZoomOut,
+    Cross,
+    Menu,
+    List,
+    List2,
+    List3,
+    Menu2,
+    List4,
+    Menu3,
+    Exclamation,
+    Question,
+    Check,
+    Cross2,
+    Plus,
+    Minus,
+    Percent,
+    ChevronUp,
+    ChevronDown,
+    ChevronLeft,
+    ChevronRight,
+    ChevronsExpandVertical,
+    ChevronsExpandHorizontal,
+    ChevronsContractVertical,
+    ChevronsContractHorizontal,
+    ArrowUp,
+    ArrowDown,
+    ArrowLeft,
+    ArrowRight,
+    ArrowUpRight,
+    ArrowsMerge,
+    ArrowsSplit,
+    ArrowDivert,
+    ArrowReturn,
+    Expand,
+    Contract,
+    Expand2,
+    Contract2,
+    Move,
+    Tab,
+    ArrowWave,
+    Expand3,
+    Expand4,
+    Contract3,
+    Notification,
+    Warning,
+    NotificationCircle,
+    QuestionCircle,
+    MenuCircle,
+    CheckmarkCircle,
+    CrossCircle,
+    PlusCircle,
+    CircleMinus,
+    PercentCircle,
+    ArrowUpCircle,
+    ArrowDownCircle,
+    ArrowLeftCircle,
+    ArrowRightCircle,
+    ChevronUpCircle,
+    ChevronDownCircle,
+    ChevronLeftCircle,
+    ChevronRightCircle,
+    BackwardCircle,
+    FirstCircle,
+    PreviousCircle,
+    StopCircle,
+    PlayCircle,
+    PauseCircle,
+    NextCircle,
+    LastCircle,
+    ForwardCircle,
+    EjectCircle,
+    Crop,
+    FrameExpand,
+    FrameContract,
+    Focus,
+    Transform,
+    Grid,
+    GridCrossed,
+    Layers,
+    LayersCrossed,
+    Toggle,
+    Rulers,
+    Ruler,
+    Funnel,
+    FlipHorizontal,
+    FlipVertical,
+    FlipHorizontal2,
+    FlipVertical2,
+    Angle,
+    Angle2,
+    Subtract,
+    Combine,
+    Intersect,
+    Exclude,
+    AlignCenterVertical,
+    AlignRight,
+    AlignBottom,
+    AlignLeft,
+    AlignCenterHorizontal,
+    AlignTop,
+    Square,
+    PlusSquare,
+    MinusSquare,
+    PercentSquare,
+    ArrowUpSquare,
+    ArrowDownSquare,
+    ArrowLeftSquare,
+    ArrowRightSquare,
+    ChevronUpSquare,
+    ChevronDownSquare,
+    ChevronLeftSquare,
+    ChevronRightSquare,
+    CheckSquare,
+    CrossSquare,
+    MenuSquare,
+    Prohibited,
+    Circle,
+    RadioButton,
+    Ligature,
+    TextFormat,
+    TextFormatRemove,
+    TextSize,
+    Bold,
+    Italic,
+    Underline,
+    Strikethrough,
+    Highlight,
+    TextAlignLeft,
+    TextAlignCenter,
+    TextAlignRight,
+    TextAlignJustify,
+    LineSpacing,
+    IndentIncrease,
+    IndentDecrease,
+    TextWrap,
+    Pilcrow,
+    DirectionLtr,
+    DirectionRtl,
+    PageBreak,
+    PageBreak2,
+    SortAlphaAsc,
+    SortAlphaDesc,
+    SortNumericAsc,
+    SortNumericDesc,
+    SortAmountAsc,
+    SortAmountDesc,
+    SortTimeAsc,
+    SortTimeDesc,
+    Sigma,
+    PencilLine,
+    Hand,
+    PointerUp,
+    PointerRight,
+    PointerDown,
+    PointerLeft,
+    FingerTap,
+    FingersTap,
+    Reminder,
+    FingersCrossed,
+    FingersVictory,
+    GestureZoom,
+    GesturePinch,
+    FingersScrollHorizontal,
+    FingersScrollVertical,
+    FingersScrollLeft,
+    FingersScrollRight,
+    Hand2,
+    PointerUp2,
+    PointerRight2,
+    PointerDown2,
+    PointerLeft2,
+    FingerTap2,
+    FingersTap2,
+    Reminder2,
+    GestureZoom2,
+    GesturePinch2,
+    FingersScrollHorizontal2,
+    FingersScrollVertical2,
+    FingersScrollLeft2,
+    FingersScrollRight2,
+    FingersScrollVertical3,
+    BorderStyle,
+    BorderAll,
+    BorderOuter,
+    BorderInner,
+    BorderTop,
+    BorderHorizontal,
+    BorderBottom,
+    BorderLeft,
+    BorderVertical,
+    BorderRight,
+    BorderNone,
+    Ellipsis,
+};
+
+export {
+    icons as default,
+    Home,
+    Home2,
+    Home3,
+    Home4,
+    Home5,
+    Home6,
+    Bathtub,
+    Toothbrush,
+    Bed,
+    Couch,
+    Chair,
+    City,
+    Apartment,
+    Pencil,
+    Pencil2,
+    Pen,
+    Pencil3,
+    Eraser,
+    Pencil4,
+    Pencil5,
+    Feather,
+    Feather2,
+    Feather3,
+    Pen2,
+    PenAdd,
+    PenRemove,
+    Vector,
+    Pen3,
+    Blog,
+    Brush,
+    Brush2,
+    Spray,
+    PaintRoller,
+    Stamp,
+    Tape,
+    DeskTape,
+    Texture,
+    EyeDropper,
+    Palette,
+    ColorSampler,
+    Bucket,
+    Gradient,
+    Gradient2,
+    MagicWand,
+    Magnet,
+    PencilRuler,
+    PencilRuler2,
+    Compass,
+    Aim,
+    Gun,
+    Bottle,
+    Drop,
+    DropCrossed,
+    Drop2,
+    Snow,
+    Snow2,
+    Fire,
+    Lighter,
+    Knife,
+    Dagger,
+    Tissue,
+    ToiletPaper,
+    Poop,
+    Umbrella,
+    Umbrella2,
+    Rain,
+    Tornado,
+    Wind,
+    Fan,
+    Contrast,
+    SunSmall,
+    Sun,
+    Sun2,
+    Moon,
+    Cloud,
+    CloudUpload,
+    CloudDownload,
+    CloudRain,
+    CloudHailstones,
+    CloudSnow,
+    CloudWindy,
+    SunWind,
+    CloudFog,
+    CloudSun,
+    CloudLightning,
+    CloudSync,
+    CloudLock,
+    CloudGear,
+    CloudAlert,
+    CloudCheck,
+    CloudCross,
+    CloudCrossed,
+    CloudDatabase,
+    Database,
+    DatabaseAdd,
+    DatabaseRemove,
+    DatabaseLock,
+    DatabaseRefresh,
+    DatabaseCheck,
+    DatabaseHistory,
+    DatabaseUpload,
+    DatabaseDownload,
+    Server,
+    Shield,
+    ShieldCheck,
+    ShieldAlert,
+    ShieldCross,
+    Lock,
+    RotationLock,
+    Unlock,
+    Key,
+    KeyHole,
+    ToggleOff,
+    ToggleOn,
+    Cog,
+    Cog2,
+    Wrench,
+    Screwdriver,
+    HammerWrench,
+    Hammer,
+    Saw,
+    Axe,
+    Axe2,
+    Shovel,
+    Pickaxe,
+    Factory,
+    Factory2,
+    Recycle,
+    Trash,
+    Trash2,
+    Trash3,
+    Broom,
+    Game,
+    Gamepad,
+    Joystick,
+    Dice,
+    Spades,
+    Diamonds,
+    Clubs,
+    Hearts,
+    Heart,
+    Star,
+    StarHalf,
+    StarEmpty,
+    Flag,
+    Flag2,
+    Flag3,
+    MailboxFull,
+    MailboxEmpty,
+    AtSign,
+    Envelope,
+    EnvelopeOpen,
+    Paperclip,
+    PaperPlane,
+    Reply,
+    ReplyAll,
+    Inbox,
+    Inbox2,
+    Outbox,
+    Box,
+    Archive,
+    Archive2,
+    Drawers,
+    Drawers2,
+    Drawers3,
+    Eye,
+    EyeCrossed,
+    EyePlus,
+    EyeMinus,
+    Binoculars,
+    Binoculars2,
+    Hdd,
+    HddDown,
+    HddUp,
+    FloppyDisk,
+    Disc,
+    Tape2,
+    Printer,
+    Shredder,
+    FileEmpty,
+    FileAdd,
+    FileCheck,
+    FileLock,
+    Files,
+    Copy,
+    Compare,
+    Folder,
+    FolderSearch,
+    FolderPlus,
+    FolderMinus,
+    FolderDownload,
+    FolderUpload,
+    FolderStar,
+    FolderHeart,
+    FolderUser,
+    FolderShared,
+    FolderMusic,
+    FolderPicture,
+    FolderFilm,
+    Scissors,
+    Paste,
+    ClipboardEmpty,
+    ClipboardPencil,
+    ClipboardText,
+    ClipboardCheck,
+    ClipboardDown,
+    ClipboardLeft,
+    ClipboardAlert,
+    ClipboardUser,
+    Register,
+    Enter,
+    Exit,
+    Papers,
+    News,
+    Reading,
+    Typewriter,
+    Document,
+    Document2,
+    GraduationHat,
+    License,
+    License2,
+    MedalEmpty,
+    MedalFirst,
+    MedalSecond,
+    MedalThird,
+    Podium,
+    Trophy,
+    Trophy2,
+    MusicNote,
+    MusicNote2,
+    MusicNote3,
+    Playlist,
+    PlaylistAdd,
+    Guitar,
+    Trumpet,
+    Album,
+    Shuffle,
+    RepeatOne,
+    Repeat,
+    Headphones,
+    Headset,
+    Loudspeaker,
+    Equalizer,
+    Theater,
+    ThreeDGlasses,
+    Ticket,
+    Presentation,
+    Play,
+    FilmPlay,
+    ClapboardPlay,
+    Media,
+    Film,
+    Film2,
+    Surveillance,
+    Surveillance2,
+    Camera,
+    CameraCrossed,
+    CameraPlay,
+    TimeLapse,
+    Record,
+    Camera2,
+    CameraFlip,
+    Panorama,
+    TimeLapse2,
+    Shutter,
+    Shutter2,
+    FaceDetection,
+    Flare,
+    Convex,
+    Concave,
+    Picture,
+    Picture2,
+    Picture3,
+    Pictures,
+    Book,
+    AudioBook,
+    Book2,
+    Bookmark,
+    Bookmark2,
+    Label,
+    Library,
+    Library2,
+    Contacts,
+    Profile,
+    Portrait,
+    Portrait2,
+    User,
+    UserPlus,
+    UserMinus,
+    UserLock,
+    Users,
+    Users2,
+    UsersPlus,
+    UsersMinus,
+    GroupWork,
+    Woman,
+    Man,
+    Baby,
+    Baby2,
+    Baby3,
+    BabyBottle,
+    Walk,
+    HandWaving,
+    Jump,
+    Run,
+    Woman2,
+    Man2,
+    ManWoman,
+    Height,
+    Weight,
+    Scale,
+    Button,
+    BowTie,
+    Tie,
+    Socks,
+    Shoe,
+    Shoes,
+    Hat,
+    Pants,
+    Shorts,
+    FlipFlops,
+    Shirt,
+    Hanger,
+    Laundry,
+    Store,
+    Haircut,
+    Store24,
+    Barcode,
+    Barcode2,
+    Barcode3,
+    Cashier,
+    Bag,
+    Bag2,
+    Cart,
+    CartEmpty,
+    CartFull,
+    CartPlus,
+    CartPlus2,
+    CartAdd,
+    CartRemove,
+    CartExchange,
+    Tag,
+    Tags,
+    Receipt,
+    Wallet,
+    CreditCard,
+    CashDollar,
+    CashEuro,
+    CashPound,
+    CashYen,
+    BagDollar,
+    BagEuro,
+    BagPound,
+    BagYen,
+    CoinDollar,
+    CoinEuro,
+    CoinPound,
+    CoinYen,
+    Calculator,
+    Calculator2,
+    Abacus,
+    Vault,
+    Telephone,
+    PhoneLock,
+    PhoneWave,
+    PhonePause,
+    PhoneOutgoing,
+    PhoneIncoming,
+    PhoneInOut,
+    PhoneError,
+    PhoneSip,
+    PhonePlus,
+    PhoneMinus,
+    Voicemail,
+    Dial,
+    Telephone2,
+    Pushpin,
+    Pushpin2,
+    MapMarker,
+    MapMarkerUser,
+    MapMarkerDown,
+    MapMarkerCheck,
+    MapMarkerCrossed,
+    Radar,
+    Compass2,
+    Map,
+    Map2,
+    Location,
+    RoadSign,
+    CalendarEmpty,
+    CalendarCheck,
+    CalendarCross,
+    Calendar31,
+    CalendarFull,
+    CalendarInsert,
+    CalendarText,
+    CalendarUser,
+    Mouse,
+    MouseLeft,
+    MouseRight,
+    MouseBoth,
+    Keyboard,
+    KeyboardUp,
+    KeyboardDown,
+    Delete,
+    SpellCheck,
+    Escape,
+    Enter2,
+    Screen,
+    AspectRatio,
+    Signal,
+    SignalLock,
+    Signal80,
+    Signal60,
+    Signal40,
+    Signal20,
+    Signal0,
+    SignalBlocked,
+    Sim,
+    FlashMemory,
+    UsbDrive,
+    Phone,
+    Smartphone,
+    SmartphoneNotification,
+    SmartphoneVibration,
+    SmartphoneEmbed,
+    SmartphoneWaves,
+    Tablet,
+    Tablet2,
+    Laptop,
+    LaptopPhone,
+    Desktop,
+    Launch,
+    NewTab,
+    Window,
+    Cable,
+    Cable2,
+    Tv,
+    Radio,
+    RemoteControl,
+    PowerSwitch,
+    Power,
+    PowerCrossed,
+    FlashAuto,
+    Lamp,
+    Flashlight,
+    Lampshade,
+    Cord,
+    Outlet,
+    BatteryPower,
+    BatteryEmpty,
+    BatteryAlert,
+    BatteryError,
+    BatteryLow1,
+    BatteryLow2,
+    BatteryLow3,
+    BatteryMid1,
+    BatteryMid2,
+    BatteryMid3,
+    BatteryFull,
+    BatteryCharging,
+    BatteryCharging2,
+    BatteryCharging3,
+    BatteryCharging4,
+    BatteryCharging5,
+    BatteryCharging6,
+    BatteryCharging7,
+    Chip,
+    ChipX64,
+    ChipX86,
+    Bubble,
+    Bubbles,
+    BubbleDots,
+    BubbleAlert,
+    BubbleQuestion,
+    BubbleText,
+    BubblePencil,
+    BubblePicture,
+    BubbleVideo,
+    BubbleUser,
+    BubbleQuote,
+    BubbleHeart,
+    BubbleEmoticon,
+    BubbleAttachment,
+    PhoneBubble,
+    QuoteOpen,
+    QuoteClose,
+    Dna,
+    HeartPulse,
+    Pulse,
+    Syringe,
+    Pills,
+    FirstAid,
+    Lifebuoy,
+    Bandage,
+    Bandages,
+    Thermometer,
+    Microscope,
+    Brain,
+    Beaker,
+    Skull,
+    Bone,
+    Construction,
+    ConstructionCone,
+    PieChart,
+    PieChart2,
+    Graph,
+    ChartGrowth,
+    ChartBars,
+    ChartSettings,
+    Cake,
+    Gift,
+    Balloon,
+    Rank,
+    Rank2,
+    Rank3,
+    Crown,
+    Lotus,
+    Diamond,
+    Diamond2,
+    Diamond3,
+    Diamond4,
+    Linearicons,
+    Teacup,
+    Teapot,
+    Glass,
+    Bottle2,
+    GlassCocktail,
+    Glass2,
+    Dinner,
+    Dinner2,
+    Chef,
+    Scale2,
+    Egg,
+    Egg2,
+    Eggs,
+    Platter,
+    Steak,
+    Hamburger,
+    Hotdog,
+    Pizza,
+    Sausage,
+    Chicken,
+    Fish,
+    Carrot,
+    Cheese,
+    Bread,
+    IceCream,
+    IceCream2,
+    Candy,
+    Lollipop,
+    CoffeeBean,
+    CoffeeCup,
+    Cherry,
+    Grapes,
+    Citrus,
+    Apple,
+    Leaf,
+    Landscape,
+    PineTree,
+    Tree,
+    Cactus,
+    Paw,
+    Footprint,
+    SpeedSlow,
+    SpeedMedium,
+    SpeedFast,
+    Rocket,
+    Hammer2,
+    Balance,
+    Briefcase,
+    LuggageWeight,
+    Dolly,
+    Plane,
+    PlaneCrossed,
+    Helicopter,
+    TrafficLights,
+    Siren,
+    Road,
+    Engine,
+    OilPressure,
+    CoolantTemperature,
+    CarBattery,
+    Gas,
+    Gallon,
+    Transmission,
+    Car,
+    CarWash,
+    CarWash2,
+    Bus,
+    Bus2,
+    Car2,
+    Parking,
+    CarLock,
+    Taxi,
+    CarSiren,
+    CarWash3,
+    CarWash4,
+    Ambulance,
+    Truck,
+    Trailer,
+    ScaleTruck,
+    Train,
+    Ship,
+    Ship2,
+    Anchor,
+    Boat,
+    Bicycle,
+    Bicycle2,
+    Dumbbell,
+    BenchPress,
+    Swim,
+    Football,
+    BaseballBat,
+    Baseball,
+    Tennis,
+    Tennis2,
+    PingPong,
+    Hockey,
+    EightBall,
+    Bowling,
+    BowlingPins,
+    Golf,
+    Golf2,
+    Archery,
+    Slingshot,
+    Soccer,
+    Basketball,
+    Cube,
+    ThreeDRotate,
+    Puzzle,
+    Glasses,
+    Glasses2,
+    Accessibility,
+    Wheelchair,
+    Wall,
+    Fence,
+    Wall2,
+    Icons,
+    ResizeHandle,
+    Icons2,
+    Select,
+    Select2,
+    SiteMap,
+    Earth,
+    EarthLock,
+    Network,
+    NetworkLock,
+    Planet,
+    Happy,
+    Smile,
+    Grin,
+    Tongue,
+    Sad,
+    Wink,
+    Dream,
+    Shocked,
+    Shocked2,
+    Tongue2,
+    Neutral,
+    HappyGrin,
+    Cool,
+    Mad,
+    GrinEvil,
+    Evil,
+    Wow,
+    Annoyed,
+    Wondering,
+    Confused,
+    Zipped,
+    Grumpy,
+    Mustache,
+    TombstoneHipster,
+    Tombstone,
+    Ghost,
+    GhostHipster,
+    Halloween,
+    Christmas,
+    EasterEgg,
+    Mustache2,
+    MustacheGlasses,
+    Pipe,
+    Alarm,
+    AlarmAdd,
+    AlarmSnooze,
+    AlarmRinging,
+    Bullhorn,
+    Hearing,
+    VolumeHigh,
+    VolumeMedium,
+    VolumeLow,
+    Volume,
+    Mute,
+    Lan,
+    Lan2,
+    Wifi,
+    WifiLock,
+    WifiBlocked,
+    WifiMid,
+    WifiLow,
+    WifiLow2,
+    WifiAlert,
+    WifiAlertMid,
+    WifiAlertLow,
+    WifiAlertLow2,
+    Stream,
+    StreamCheck,
+    StreamError,
+    StreamAlert,
+    Communication,
+    CommunicationCrossed,
+    Broadcast,
+    Antenna,
+    Satellite,
+    Satellite2,
+    Mic,
+    MicMute,
+    Mic2,
+    Spotlights,
+    Hourglass,
+    Loading,
+    Loading2,
+    Loading3,
+    Refresh,
+    Refresh2,
+    Undo,
+    Redo,
+    Jump2,
+    Undo2,
+    Redo2,
+    Sync,
+    RepeatOne2,
+    SyncCrossed,
+    Sync2,
+    RepeatOne3,
+    SyncCrossed2,
+    Return,
+    Return2,
+    Refund,
+    History,
+    History2,
+    SelfTimer,
+    Clock,
+    Clock2,
+    Clock3,
+    Watch,
+    Alarm2,
+    AlarmAdd2,
+    AlarmRemove,
+    AlarmCheck,
+    AlarmError,
+    Timer,
+    TimerCrossed,
+    Timer2,
+    TimerCrossed2,
+    Download,
+    Upload,
+    Download2,
+    Upload2,
+    EnterUp,
+    EnterDown,
+    EnterLeft,
+    EnterRight,
+    ExitUp,
+    ExitDown,
+    ExitLeft,
+    ExitRight,
+    EnterUp2,
+    EnterDown2,
+    EnterVertical,
+    EnterLeft2,
+    EnterRight2,
+    EnterHorizontal,
+    ExitUp2,
+    ExitDown2,
+    ExitLeft2,
+    ExitRight2,
+    Cli,
+    Bug,
+    Code,
+    FileCode,
+    FileImage,
+    FileZip,
+    FileAudio,
+    FileVideo,
+    FilePreview,
+    FileCharts,
+    FileStats,
+    FileSpreadsheet,
+    Link,
+    Unlink,
+    Link2,
+    Unlink2,
+    ThumbsUp,
+    ThumbsDown,
+    ThumbsUp2,
+    ThumbsDown2,
+    ThumbsUp3,
+    ThumbsDown3,
+    Share,
+    Share2,
+    Share3,
+    Magnifier,
+    FileSearch,
+    FindReplace,
+    ZoomIn,
+    ZoomOut,
+    Loupe,
+    LoupeZoomIn,
+    LoupeZoomOut,
+    Cross,
+    Menu,
+    List,
+    List2,
+    List3,
+    Menu2,
+    List4,
+    Menu3,
+    Exclamation,
+    Question,
+    Check,
+    Cross2,
+    Plus,
+    Minus,
+    Percent,
+    ChevronUp,
+    ChevronDown,
+    ChevronLeft,
+    ChevronRight,
+    ChevronsExpandVertical,
+    ChevronsExpandHorizontal,
+    ChevronsContractVertical,
+    ChevronsContractHorizontal,
+    ArrowUp,
+    ArrowDown,
+    ArrowLeft,
+    ArrowRight,
+    ArrowUpRight,
+    ArrowsMerge,
+    ArrowsSplit,
+    ArrowDivert,
+    ArrowReturn,
+    Expand,
+    Contract,
+    Expand2,
+    Contract2,
+    Move,
+    Tab,
+    ArrowWave,
+    Expand3,
+    Expand4,
+    Contract3,
+    Notification,
+    Warning,
+    NotificationCircle,
+    QuestionCircle,
+    MenuCircle,
+    CheckmarkCircle,
+    CrossCircle,
+    PlusCircle,
+    CircleMinus,
+    PercentCircle,
+    ArrowUpCircle,
+    ArrowDownCircle,
+    ArrowLeftCircle,
+    ArrowRightCircle,
+    ChevronUpCircle,
+    ChevronDownCircle,
+    ChevronLeftCircle,
+    ChevronRightCircle,
+    BackwardCircle,
+    FirstCircle,
+    PreviousCircle,
+    StopCircle,
+    PlayCircle,
+    PauseCircle,
+    NextCircle,
+    LastCircle,
+    ForwardCircle,
+    EjectCircle,
+    Crop,
+    FrameExpand,
+    FrameContract,
+    Focus,
+    Transform,
+    Grid,
+    GridCrossed,
+    Layers,
+    LayersCrossed,
+    Toggle,
+    Rulers,
+    Ruler,
+    Funnel,
+    FlipHorizontal,
+    FlipVertical,
+    FlipHorizontal2,
+    FlipVertical2,
+    Angle,
+    Angle2,
+    Subtract,
+    Combine,
+    Intersect,
+    Exclude,
+    AlignCenterVertical,
+    AlignRight,
+    AlignBottom,
+    AlignLeft,
+    AlignCenterHorizontal,
+    AlignTop,
+    Square,
+    PlusSquare,
+    MinusSquare,
+    PercentSquare,
+    ArrowUpSquare,
+    ArrowDownSquare,
+    ArrowLeftSquare,
+    ArrowRightSquare,
+    ChevronUpSquare,
+    ChevronDownSquare,
+    ChevronLeftSquare,
+    ChevronRightSquare,
+    CheckSquare,
+    CrossSquare,
+    MenuSquare,
+    Prohibited,
+    Circle,
+    RadioButton,
+    Ligature,
+    TextFormat,
+    TextFormatRemove,
+    TextSize,
+    Bold,
+    Italic,
+    Underline,
+    Strikethrough,
+    Highlight,
+    TextAlignLeft,
+    TextAlignCenter,
+    TextAlignRight,
+    TextAlignJustify,
+    LineSpacing,
+    IndentIncrease,
+    IndentDecrease,
+    TextWrap,
+    Pilcrow,
+    DirectionLtr,
+    DirectionRtl,
+    PageBreak,
+    PageBreak2,
+    SortAlphaAsc,
+    SortAlphaDesc,
+    SortNumericAsc,
+    SortNumericDesc,
+    SortAmountAsc,
+    SortAmountDesc,
+    SortTimeAsc,
+    SortTimeDesc,
+    Sigma,
+    PencilLine,
+    Hand,
+    PointerUp,
+    PointerRight,
+    PointerDown,
+    PointerLeft,
+    FingerTap,
+    FingersTap,
+    Reminder,
+    FingersCrossed,
+    FingersVictory,
+    GestureZoom,
+    GesturePinch,
+    FingersScrollHorizontal,
+    FingersScrollVertical,
+    FingersScrollLeft,
+    FingersScrollRight,
+    Hand2,
+    PointerUp2,
+    PointerRight2,
+    PointerDown2,
+    PointerLeft2,
+    FingerTap2,
+    FingersTap2,
+    Reminder2,
+    GestureZoom2,
+    GesturePinch2,
+    FingersScrollHorizontal2,
+    FingersScrollVertical2,
+    FingersScrollLeft2,
+    FingersScrollRight2,
+    FingersScrollVertical3,
+    BorderStyle,
+    BorderAll,
+    BorderOuter,
+    BorderInner,
+    BorderTop,
+    BorderHorizontal,
+    BorderBottom,
+    BorderLeft,
+    BorderVertical,
+    BorderRight,
+    BorderNone,
+    Ellipsis,
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Abacus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Abacus.js
new file mode 100644
index 00000000..91704adf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Abacus.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Abacus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-819.2c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM921.6 179.2v179.2h-102.4v-106.803c29.797-10.568 51.2-39.024 51.2-72.397 0-8.974-1.562-17.587-4.403-25.6h30.003c14.115 0 25.6 11.485 25.6 25.6zM819.2 537.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM153.6 691.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM819.2 179.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM768 251.597v106.803h-153.6v-106.803c29.797-10.568 51.2-39.024 51.2-72.397 0-8.974-1.562-17.587-4.403-25.6h60.006c-2.842 8.013-4.403 16.626-4.403 25.6 0 33.373 21.403 61.829 51.2 72.397zM614.4 179.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM563.2 251.597v106.803h-153.6v-106.803c29.797-10.568 51.2-39.024 51.2-72.397 0-8.974-1.562-17.587-4.403-25.6h60.006c-2.842 8.013-4.403 16.626-4.403 25.6 0 33.373 21.403 61.829 51.2 72.397zM409.6 179.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM358.4 251.597v106.803h-153.6v-106.803c29.797-10.568 51.2-39.024 51.2-72.397 0-8.974-1.562-17.587-4.403-25.6h60.006c-2.842 8.013-4.403 16.626-4.403 25.6 0 33.373 21.403 61.829 51.2 72.397zM204.8 179.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM204.8 435.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM153.6 793.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM153.6 896c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM236.382 844.8c12.189-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.189-13.598 19.618-31.546 19.618-51.2 0-33.373-21.403-61.829-51.2-72.397v-111.206c29.797-10.568 51.2-39.024 51.2-72.397 0-8.974-1.562-17.587-4.403-25.6h106.803v106.803c-29.797 10.568-51.2 39.024-51.2 72.397 0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2 0 8.974 1.562 17.587 4.403 25.6h-60.006c2.842-8.013 4.403-16.626 4.403-25.6-0-19.654-7.43-37.602-19.618-51.2zM409.6 691.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM358.4 793.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM358.4 588.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM358.4 896c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM441.182 844.8c12.189-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.189-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.189-13.598 19.618-31.546 19.618-51.2 0-33.373-21.403-61.829-51.2-72.397v-106.803h153.6v106.803c-29.797 10.566-51.2 39.024-51.2 72.397 0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2 0 8.974 1.562 17.587 4.403 25.6h-60.006c2.842-8.013 4.403-16.626 4.403-25.6 0-19.654-7.43-37.602-19.618-51.2zM614.4 691.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM563.2 793.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM563.2 588.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM563.2 896c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM645.982 844.8c12.187-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.187-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.187-13.598 19.618-31.546 19.618-51.2 0-33.373-21.403-61.83-51.2-72.397v-106.803h106.803c-2.842 8.013-4.403 16.626-4.403 25.6 0 19.654 7.43 37.602 19.619 51.2-12.189 13.598-19.619 31.546-19.619 51.2 0 33.373 21.403 61.83 51.2 72.397v111.206c-29.797 10.566-51.2 39.024-51.2 72.397 0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2 0 8.974 1.562 17.587 4.403 25.6h-60.006c2.842-8.013 4.403-16.626 4.403-25.6 0-19.654-7.43-37.602-19.618-51.2zM768 896c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM768 793.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM819.2 435.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM76.8 153.6h30.003c-2.842 8.013-4.403 16.626-4.403 25.6 0 33.373 21.403 61.829 51.2 72.397v106.803h-102.4v-179.2c0-14.115 11.485-25.6 25.6-25.6zM51.2 896v-486.4h55.603c-2.842 8.013-4.403 16.626-4.403 25.6 0 33.373 21.403 61.829 51.2 72.397v111.206c-29.797 10.568-51.2 39.024-51.2 72.397 0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2 0 8.974 1.562 17.587 4.403 25.6h-30.003c-14.115 0-25.6-11.485-25.6-25.6zM896 921.6h-30.003c2.842-8.013 4.403-16.626 4.403-25.6 0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.546 19.618-51.2 0-33.373-21.403-61.83-51.2-72.397v-111.206c29.797-10.566 51.2-39.024 51.2-72.397 0-19.654-7.43-37.602-19.619-51.2 12.189-13.598 19.619-31.546 19.619-51.2 0-8.974-1.562-17.587-4.403-25.6h55.603v486.4c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Accessibility.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Accessibility.js
new file mode 100644
index 00000000..83410bf1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Accessibility.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Accessibility
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 409.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 204.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M716.035 428.992c-3.43-13.717-17.328-22.056-31.045-18.627l-198.59 49.648-198.592-49.648c-13.715-3.43-27.614 4.909-31.045 18.627-3.429 13.717 4.91 27.614 18.627 31.045l185.41 46.352v125.078l-148.48 197.973c-8.483 11.31-6.192 27.357 5.12 35.838 11.31 8.483 27.357 6.192 35.84-5.12l133.12-177.491 133.12 177.493c5.030 6.706 12.715 10.242 20.499 10.242 5.344 0 10.734-1.669 15.339-5.122 11.31-8.483 13.603-24.528 5.12-35.838l-148.478-197.974v-125.078l185.41-46.352c13.715-3.43 22.054-17.33 18.626-31.045z' />
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Aim.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Aim.js
new file mode 100644
index 00000000..4f18cf31
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Aim.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Aim
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 51.2c-14.138 0-25.6 11.462-25.6 25.6v204.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-204.8c0-14.138-11.462-25.6-25.6-25.6z' />
+            <path d='M486.4 768c-14.138 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6z' />
+            <path d='M256 537.6c0-14.139-11.462-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6z' />
+            <path d='M947.2 512h-204.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M829.95 460.811c-11.034 0-21.218-7.19-24.525-18.304-32.162-108.062-115.875-191.774-223.936-223.931-13.552-4.034-21.267-18.286-17.234-31.838 4.032-13.554 18.29-21.267 31.837-17.235 60.787 18.090 116.75 51.482 161.835 96.566s78.478 101.046 96.568 161.834c4.034 13.55-3.683 27.805-17.234 31.838-2.434 0.726-4.894 1.070-7.312 1.070z' />
+            <path d='M588.789 906.766c-11.034 0-21.218-7.189-24.525-18.302-4.034-13.552 3.683-27.806 17.234-31.838 108.056-32.162 191.766-115.87 223.925-223.925 4.034-13.554 18.291-21.267 31.837-17.234 13.552 4.034 21.267 18.288 17.234 31.837-18.090 60.784-51.482 116.744-96.565 161.829-45.085 45.083-101.042 78.475-161.827 96.566-2.434 0.722-4.893 1.067-7.312 1.067z' />
+            <path d='M384.013 906.766c-2.419 0-4.875-0.346-7.312-1.070-60.784-18.090-116.742-51.48-161.826-96.563s-78.477-101.038-96.566-161.822c-4.034-13.552 3.682-27.806 17.234-31.838 13.547-4.035 27.805 3.682 31.838 17.234 32.162 108.051 115.87 191.76 223.925 223.918 13.55 4.034 21.267 18.288 17.234 31.838-3.307 11.114-13.494 18.304-24.526 18.304z' />
+            <path d='M142.853 460.806c-2.418 0-4.875-0.346-7.312-1.070-13.55-4.034-21.267-18.288-17.234-31.838 18.091-60.784 51.482-116.742 96.566-161.827 45.083-45.083 101.042-78.475 161.826-96.566 13.554-4.030 27.805 3.683 31.838 17.234s-3.683 27.805-17.234 31.838c-108.056 32.158-191.765 115.869-223.923 223.925-3.31 11.115-13.496 18.306-24.528 18.306z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm.js
new file mode 100644
index 00000000..3e27c6ca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Alarm
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M860.171 773.15c-58.576-44-92.171-111.194-92.171-184.35v-153.6c0-128.661-86.733-237.442-204.798-270.954l-0.002-36.246c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8v36.245c-118.067 33.512-204.8 142.294-204.8 270.955v153.6c0 73.157-33.595 140.349-92.171 184.35-8.808 6.616-12.395 18.125-8.907 28.573 3.486 10.448 13.267 17.496 24.283 17.496h232.982c-1.709 8.384-2.587 16.955-2.587 25.581 0 70.579 57.421 128 128 128s128-57.421 128-128c0-8.626-0.878-17.197-2.584-25.581h232.981c11.016 0 20.795-7.046 24.283-17.496s-0.101-21.957-8.909-28.573zM460.8 128c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v26.774c-8.435-0.763-16.97-1.176-25.6-1.176s-17.166 0.413-25.6 1.176v-26.774zM563.2 844.8c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8c0-8.76 1.515-17.411 4.394-25.581h144.813c2.878 8.168 4.394 16.821 4.394 25.581zM191.571 768.019c13.075-15.826 24.437-33.051 33.744-51.27 20.362-39.858 30.685-82.906 30.685-127.949v-153.6c0-127.043 103.357-230.4 230.4-230.4s230.4 103.357 230.4 230.4v153.6c0 45.043 10.323 88.091 30.685 127.949 9.307 18.219 20.669 35.445 33.744 51.27h-589.658z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm2.js
new file mode 100644
index 00000000..b01aee4a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Alarm2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Alarm2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M774.614 371.2c-7.070-12.245-22.728-16.435-34.966-9.37l-251.92 145.445-196.342-137.482c-11.582-8.11-27.546-5.294-35.654 6.286s-5.294 27.544 6.286 35.654l209.702 146.834c0.051 0.034 0.106 0.066 0.158 0.099 0.429 0.298 0.866 0.571 1.31 0.84 0.118 0.075 0.237 0.15 0.357 0.219 0.446 0.259 0.901 0.499 1.363 0.734 0.11 0.056 0.219 0.118 0.33 0.168 0.518 0.253 1.046 0.488 1.581 0.701 0.315 0.126 0.634 0.234 0.95 0.352 0.234 0.085 0.467 0.168 0.702 0.245 0.346 0.11 0.691 0.213 1.038 0.307 0.219 0.062 0.438 0.122 0.659 0.176 0.347 0.090 0.696 0.166 1.045 0.238 0.237 0.046 0.477 0.093 0.715 0.136 0.331 0.058 0.661 0.114 0.992 0.16 0.299 0.042 0.6 0.074 0.901 0.101 0.274 0.029 0.546 0.059 0.819 0.080 0.594 0.038 1.189 0.066 1.786 0.066 0.971 0 1.944-0.062 2.917-0.174 0.024-0.003 0.050-0.005 0.074-0.006 0.946-0.11 1.888-0.285 2.826-0.501 0.070-0.016 0.141-0.034 0.21-0.046 0.883-0.216 1.758-0.482 2.626-0.794 0.128-0.043 0.253-0.094 0.379-0.142 0.813-0.307 1.619-0.653 2.41-1.051 0.162-0.080 0.317-0.168 0.477-0.253 0.286-0.152 0.576-0.296 0.859-0.459l266.043-153.6c12.242-7.062 16.437-22.718 9.368-34.963z' />
+            <path d='M837.302 877.898c-0.582-0.582-1.19-1.123-1.813-1.638 88.589-91.246 137.31-211.202 137.31-338.659 0-129.922-50.594-252.067-142.462-343.936s-214.016-142.464-343.938-142.464-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936c0 127.458 48.723 247.413 137.312 338.658-0.622 0.515-1.23 1.056-1.813 1.638l-102.4 102.4c-9.998 9.997-9.998 26.208 0 36.203 4.998 5.002 11.549 7.501 18.101 7.501s13.102-2.499 18.102-7.501l102.4-102.4c1.034-1.034 1.933-2.144 2.752-3.296 87.352 73.27 196.573 113.197 311.946 113.197s224.595-39.928 311.949-113.197c0.819 1.152 1.718 2.264 2.752 3.298l102.4 102.4c4.997 5 11.547 7.499 18.099 7.499s13.102-2.499 18.102-7.501c9.998-9.995 9.998-26.206 0-36.203l-102.4-102.398zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2z' />
+            <path d='M28.694 235.76c-11.909 0-22.573-8.352-25.054-20.472-2.414-11.805-3.64-23.946-3.64-36.088 0-98.811 80.389-179.2 179.2-179.2 21.2 0 41.963 3.672 61.71 10.915 13.274 4.867 20.088 19.576 15.219 32.85-4.867 13.274-19.574 20.090-32.85 15.219-14.082-5.165-28.914-7.784-44.080-7.784-70.579 0-128 57.421-128 128 0 8.701 0.875 17.39 2.6 25.824 2.834 13.851-6.098 27.378-19.949 30.213-1.73 0.354-3.458 0.523-5.157 0.523z' />
+            <path d='M944.107 235.76c-1.701 0-3.429-0.17-5.162-0.525-13.851-2.835-22.781-16.363-19.946-30.213 1.726-8.434 2.602-17.122 2.602-25.822 0-70.581-57.422-128.002-128.002-128.002-15.168 0-30.002 2.621-44.088 7.789-13.277 4.874-27.981-1.942-32.85-15.216-4.87-13.274 1.942-27.981 15.216-32.851 19.75-7.246 40.517-10.922 61.722-10.922 98.813 0 179.202 80.39 179.202 179.202 0 12.141-1.226 24.283-3.642 36.090-2.48 12.118-13.146 20.47-25.053 20.47z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd.js
new file mode 100644
index 00000000..7f9b07fa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd.js
@@ -0,0 +1,13 @@
+// Icon: Linear.AlarmAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M860.171 773.15c-58.576-44-92.171-111.194-92.171-184.35v-153.6c0-128.661-86.733-237.442-204.798-270.954l-0.002-36.246c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8v36.245c-118.067 33.512-204.8 142.294-204.8 270.955v153.6c0 73.157-33.595 140.349-92.171 184.35-8.808 6.616-12.395 18.125-8.907 28.573 3.486 10.448 13.267 17.496 24.283 17.496h232.982c-1.709 8.384-2.587 16.955-2.587 25.581 0 70.579 57.421 128 128 128s128-57.421 128-128c0-8.626-0.878-17.197-2.584-25.581h232.981c11.016 0 20.795-7.046 24.283-17.496s-0.101-21.957-8.909-28.573zM460.8 128c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v26.774c-8.435-0.763-16.97-1.176-25.6-1.176s-17.166 0.413-25.6 1.176v-26.774zM563.2 844.8c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8c0-8.76 1.515-17.411 4.394-25.581h144.813c2.878 8.168 4.394 16.821 4.394 25.581zM191.571 768.019c13.075-15.826 24.437-33.051 33.744-51.27 20.362-39.858 30.685-82.906 30.685-127.949v-153.6c0-127.043 103.357-230.4 230.4-230.4s230.4 103.357 230.4 230.4v153.6c0 45.043 10.323 88.091 30.685 127.949 9.307 18.219 20.669 35.445 33.744 51.27h-589.658z' />
+            <path d='M588.8 460.81h-76.8v-76.81c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.81h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.79c0 14.139 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.79h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd2.js
new file mode 100644
index 00000000..e86b21ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmAdd2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.AlarmAdd2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M944.25 235.053c-1.662 0-3.35-0.163-5.042-0.501-13.864-2.768-22.859-16.253-20.091-30.117 1.648-8.248 2.483-16.738 2.483-25.235 0-70.579-57.421-128-128-128-15.171 0-30.006 2.621-44.091 7.789-13.274 4.874-27.981-1.941-32.851-15.214-4.87-13.272 1.941-27.981 15.214-32.851 19.752-7.248 40.518-10.923 61.728-10.923 98.811 0 179.2 80.389 179.2 179.2 0 11.856-1.168 23.72-3.474 35.262-2.43 12.171-13.122 20.59-25.077 20.59z' />
+            <path d='M28.694 235.76c-11.909 0-22.573-8.352-25.054-20.472-2.414-11.805-3.64-23.946-3.64-36.088 0-98.811 80.389-179.2 179.2-179.2 21.2 0 41.963 3.672 61.71 10.915 13.274 4.867 20.088 19.576 15.219 32.85-4.867 13.274-19.574 20.090-32.85 15.219-14.082-5.165-28.914-7.784-44.080-7.784-70.579 0-128 57.421-128 128 0 8.701 0.875 17.39 2.6 25.824 2.834 13.851-6.098 27.378-19.949 30.213-1.73 0.354-3.458 0.523-5.157 0.523z' />
+            <path d='M835.573 876.17c88.536-91.234 137.227-211.152 137.227-338.57 0-129.922-50.594-252.067-142.464-343.936-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 127.418 48.691 247.334 137.226 338.568l-104.128 104.13c-9.997 9.997-9.997 26.206 0 36.203 5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l105.448-105.448c87.302 73.112 196.408 112.947 311.65 112.947s224.347-39.835 311.65-112.947l105.448 105.448c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-104.128-104.128zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2-435.2-195.23-435.2-435.2z' />
+            <path d='M691.2 512h-179.2v-179.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v179.2h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h179.2v179.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-179.2h179.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmCheck.js
new file mode 100644
index 00000000..b40e1987
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmCheck.js
@@ -0,0 +1,15 @@
+// Icon: Linear.AlarmCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M944.25 235.053c-1.662 0-3.35-0.163-5.042-0.501-13.864-2.768-22.859-16.253-20.091-30.117 1.648-8.248 2.483-16.738 2.483-25.235 0-70.579-57.421-128-128-128-15.171 0-30.006 2.621-44.091 7.789-13.274 4.874-27.981-1.941-32.851-15.214-4.87-13.272 1.941-27.981 15.214-32.851 19.752-7.248 40.518-10.923 61.728-10.923 98.811 0 179.2 80.389 179.2 179.2 0 11.856-1.168 23.72-3.474 35.262-2.43 12.171-13.122 20.59-25.077 20.59z' />
+            <path d='M28.694 235.76c-11.909 0-22.573-8.352-25.054-20.472-2.414-11.805-3.64-23.946-3.64-36.088 0-98.811 80.389-179.2 179.2-179.2 21.2 0 41.963 3.672 61.71 10.915 13.274 4.867 20.088 19.576 15.219 32.85-4.867 13.274-19.574 20.090-32.85 15.219-14.082-5.165-28.914-7.784-44.080-7.784-70.579 0-128 57.421-128 128 0 8.701 0.875 17.39 2.6 25.824 2.834 13.851-6.098 27.378-19.949 30.213-1.73 0.354-3.458 0.523-5.157 0.523z' />
+            <path d='M835.573 876.17c88.536-91.234 137.227-211.152 137.227-338.57 0-129.922-50.594-252.067-142.464-343.936-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 127.418 48.691 247.334 137.226 338.568l-104.128 104.13c-9.997 9.997-9.997 26.206 0 36.203 5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l105.448-105.448c87.302 73.112 196.408 112.947 311.65 112.947s224.347-39.835 311.65-112.947l105.448 105.448c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-104.128-104.128zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2-435.2-195.23-435.2-435.2z' />
+            <path d='M358.4 716.8c-6.552 0-13.102-2.499-18.101-7.499l-128-128c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l109.898 109.899 314.699-314.699c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-332.8 332.8c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmError.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmError.js
new file mode 100644
index 00000000..e164a7ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmError.js
@@ -0,0 +1,15 @@
+// Icon: Linear.AlarmError
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M944.25 235.053c-1.662 0-3.35-0.163-5.042-0.501-13.864-2.768-22.859-16.253-20.091-30.117 1.648-8.248 2.483-16.738 2.483-25.235 0-70.579-57.421-128-128-128-15.171 0-30.006 2.621-44.091 7.789-13.274 4.874-27.981-1.941-32.851-15.214-4.87-13.272 1.941-27.981 15.214-32.851 19.752-7.248 40.518-10.923 61.728-10.923 98.811 0 179.2 80.389 179.2 179.2 0 11.856-1.168 23.72-3.474 35.262-2.43 12.171-13.122 20.59-25.077 20.59z' />
+            <path d='M28.694 235.76c-11.909 0-22.573-8.352-25.054-20.472-2.414-11.805-3.64-23.946-3.64-36.088 0-98.811 80.389-179.2 179.2-179.2 21.2 0 41.963 3.672 61.71 10.915 13.274 4.867 20.088 19.576 15.219 32.85-4.867 13.274-19.574 20.090-32.85 15.219-14.082-5.165-28.914-7.784-44.080-7.784-70.579 0-128 57.421-128 128 0 8.701 0.875 17.39 2.6 25.824 2.834 13.851-6.098 27.378-19.949 30.213-1.73 0.354-3.458 0.523-5.157 0.523z' />
+            <path d='M835.573 876.17c88.536-91.234 137.227-211.152 137.227-338.57 0-129.922-50.594-252.067-142.464-343.936-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 127.418 48.691 247.334 137.226 338.568l-104.128 104.13c-9.997 9.997-9.997 26.206 0 36.203 5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l105.448-105.448c87.302 73.112 196.408 112.947 311.65 112.947s224.347-39.835 311.65-112.947l105.448 105.448c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-104.128-104.128zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2-435.2-195.23-435.2-435.2z' />
+            <path d='M522.603 563.2l161.099-161.098c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-161.099 161.099-161.098-161.099c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l161.099 161.098-161.099 161.099c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l161.098-161.098 161.099 161.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-161.098-161.098z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRemove.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRemove.js
new file mode 100644
index 00000000..0e01fd4a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRemove.js
@@ -0,0 +1,15 @@
+// Icon: Linear.AlarmRemove
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M944.25 235.053c-1.662 0-3.35-0.163-5.042-0.501-13.864-2.766-22.859-16.253-20.091-30.117 1.65-8.248 2.483-16.738 2.483-25.235 0-70.579-57.421-128-128-128-15.171 0-30.006 2.621-44.091 7.789-13.275 4.874-27.981-1.941-32.851-15.214-4.87-13.272 1.941-27.981 15.214-32.851 19.752-7.248 40.518-10.923 61.728-10.923 98.811 0 179.2 80.389 179.2 179.2 0 11.856-1.168 23.72-3.474 35.262-2.43 12.171-13.122 20.59-25.077 20.59z' />
+            <path d='M28.694 235.76c-11.909 0-22.573-8.352-25.054-20.472-2.414-11.805-3.64-23.946-3.64-36.088 0-98.811 80.389-179.2 179.2-179.2 21.2 0 41.963 3.672 61.71 10.915 13.274 4.867 20.088 19.576 15.219 32.85-4.867 13.274-19.574 20.090-32.85 15.219-14.082-5.165-28.914-7.784-44.080-7.784-70.579 0-128 57.421-128 128 0 8.701 0.875 17.39 2.6 25.824 2.834 13.851-6.098 27.378-19.949 30.213-1.73 0.354-3.458 0.523-5.157 0.523z' />
+            <path d='M835.573 876.17c88.536-91.234 137.227-211.152 137.227-338.57 0-129.922-50.594-252.067-142.464-343.936-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 127.418 48.693 247.334 137.227 338.568l-104.128 104.128c-9.998 9.997-9.998 26.208 0 36.203 4.998 5.002 11.549 7.501 18.101 7.501s13.102-2.499 18.102-7.501l105.446-105.448c87.304 73.114 196.408 112.949 311.651 112.949 115.242 0 224.347-39.834 311.65-112.947l105.446 105.446c5 5 11.552 7.501 18.102 7.501s13.102-2.499 18.099-7.501c10-9.995 10-26.206 0-36.203l-104.125-104.126zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.232 435.2-435.2 435.2z' />
+            <path d='M691.2 563.2h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRinging.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRinging.js
new file mode 100644
index 00000000..d05b8bc2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmRinging.js
@@ -0,0 +1,16 @@
+// Icon: Linear.AlarmRinging
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M860.171 773.15c-58.576-44-92.171-111.194-92.171-184.35v-153.6c0-128.661-86.733-237.442-204.798-270.954l-0.002-36.246c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8v36.245c-118.067 33.512-204.8 142.294-204.8 270.955v153.6c0 73.157-33.595 140.349-92.171 184.35-8.808 6.616-12.395 18.125-8.907 28.573 3.486 10.448 13.267 17.496 24.283 17.496h232.982c-1.709 8.384-2.587 16.955-2.587 25.581 0 70.579 57.421 128 128 128s128-57.421 128-128c0-8.626-0.878-17.197-2.584-25.581h232.981c11.016 0 20.795-7.046 24.283-17.496s-0.101-21.957-8.909-28.573zM460.8 128c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v26.774c-8.435-0.763-16.97-1.176-25.6-1.176s-17.166 0.413-25.6 1.176v-26.774zM563.2 844.8c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8c0-8.76 1.515-17.411 4.394-25.581h144.813c2.878 8.168 4.394 16.821 4.394 25.581zM191.571 768.019c13.075-15.826 24.437-33.051 33.744-51.27 20.362-39.858 30.685-82.906 30.685-127.949v-153.6c0-127.043 103.357-230.4 230.4-230.4s230.4 103.357 230.4 230.4v153.6c0 45.043 10.323 88.091 30.685 127.949 9.307 18.219 20.669 35.445 33.744 51.27h-589.658z' />
+            <path d='M883.088 358.408c-11.402 0-21.8-7.672-24.773-19.226-19.203-74.614-60.12-141.131-118.326-192.357-10.614-9.341-11.645-25.517-2.304-36.131 9.342-10.611 25.518-11.643 36.13-2.304 65.947 58.037 112.312 133.432 134.086 218.030 3.523 13.693-4.718 27.648-18.411 31.173-2.142 0.55-4.29 0.814-6.402 0.814z' />
+            <path d='M947.229 237.382c-9.496 0-18.618-5.304-23.045-14.419-13.566-27.923-29.922-54.701-48.618-79.59-8.493-11.304-6.211-27.354 5.094-35.843 11.307-8.493 27.355-6.21 35.843 5.094 20.661 27.506 38.739 57.102 53.733 87.968 6.178 12.717 0.877 28.034-11.84 34.213-3.603 1.749-7.416 2.578-11.168 2.578z' />
+            <path d='M89.712 358.408c-2.112 0-4.259-0.264-6.398-0.814-13.693-3.525-21.936-17.48-18.411-31.173 21.773-84.6 68.139-159.994 134.085-218.030 10.616-9.341 26.79-8.307 36.131 2.304 9.341 10.614 8.309 26.79-2.306 36.131-58.206 51.226-99.123 117.741-118.326 192.357-2.974 11.552-13.373 19.226-24.774 19.226z' />
+            <path d='M25.571 237.382c-3.754 0-7.565-0.829-11.166-2.579-12.717-6.178-18.019-21.496-11.84-34.213 14.994-30.866 33.072-60.462 53.733-87.968 8.491-11.302 24.539-13.584 35.843-5.094s13.586 24.539 5.094 35.843c-18.696 24.89-35.053 51.667-48.618 79.59-4.427 9.115-13.55 14.421-23.046 14.421z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmSnooze.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmSnooze.js
new file mode 100644
index 00000000..63fa60fc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlarmSnooze.js
@@ -0,0 +1,14 @@
+// Icon: Linear.AlarmSnooze
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 256h-153.6c-9.698 0-18.562-5.478-22.898-14.152-4.338-8.672-3.402-19.051 2.418-26.808l122.88-163.84h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c9.698 0 18.562 5.478 22.898 14.152 4.338 8.672 3.402 19.051-2.418 26.808l-122.88 163.84h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M128 256h-102.4c-9.442 0-18.115-5.197-22.571-13.52-4.454-8.325-3.966-18.424 1.27-26.28l75.867-113.8h-54.566c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c9.442 0 18.115 5.197 22.571 13.52 4.454 8.325 3.966 18.424-1.27 26.28l-75.867 113.8h54.566c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M860.171 773.15c-58.576-44-92.171-111.194-92.171-184.35v-153.6c0-128.661-86.733-237.442-204.798-270.954l-0.002-36.246c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8v36.245c-118.067 33.512-204.8 142.294-204.8 270.955v153.6c0 73.157-33.595 140.349-92.171 184.35-8.808 6.616-12.395 18.125-8.907 28.573 3.486 10.448 13.267 17.496 24.283 17.496h232.982c-1.709 8.384-2.587 16.955-2.587 25.581 0 70.579 57.421 128 128 128s128-57.421 128-128c0-8.626-0.878-17.197-2.584-25.581h232.981c11.016 0 20.795-7.046 24.283-17.496s-0.101-21.957-8.909-28.573zM460.8 128c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v26.774c-8.435-0.763-16.97-1.176-25.6-1.176s-17.166 0.413-25.6 1.176v-26.774zM563.2 844.8c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8c0-8.76 1.515-17.411 4.394-25.581h144.813c2.878 8.168 4.394 16.821 4.394 25.581zM191.571 768.019c13.075-15.826 24.437-33.051 33.744-51.27 20.362-39.858 30.685-82.906 30.685-127.949v-153.6c0-127.043 103.357-230.4 230.4-230.4s230.4 103.357 230.4 230.4v153.6c0 45.043 10.323 88.091 30.685 127.949 9.307 18.219 20.669 35.445 33.744 51.27h-589.658z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Album.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Album.js
new file mode 100644
index 00000000..463a791e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Album.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Album
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.453 76.8 76.8v665.6c0 42.349-34.451 76.8-76.8 76.8zM128 256c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-665.6c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+            <path d='M844.8 153.6h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 51.2h-614.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M707.43 466.602c-5.931-4.864-13.731-6.805-21.25-5.306l-256 51.2c-11.968 2.395-20.581 12.901-20.581 25.104v137.994c-14.982-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-183.813l204.8-40.962v106.766c-14.981-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-204.798c0-7.669-3.438-14.934-9.37-19.798zM358.4 768c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6zM614.4 716.8c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignBottom.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignBottom.js
new file mode 100644
index 00000000..e0a15971
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignBottom.js
@@ -0,0 +1,14 @@
+// Icon: Linear.AlignBottom
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 998.4c0 14.138 11.461 25.6 25.6 25.6h972.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-972.8c-14.139 0-25.6 11.462-25.6 25.6z' />
+            <path d='M640 358.4h204.8c42.347 0 76.8 34.453 76.8 76.8v409.6c0 42.347-34.453 76.8-76.8 76.8h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8zM870.4 435.2c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-409.6z' />
+            <path d='M179.2 51.2h204.8c42.349 0 76.8 34.451 76.8 76.8v716.8c0 42.347-34.451 76.8-76.8 76.8h-204.8c-42.349 0-76.8-34.453-76.8-76.8v-716.8c0-42.349 34.451-76.8 76.8-76.8zM409.6 128c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterHorizontal.js
new file mode 100644
index 00000000..c32b0594
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterHorizontal.js
@@ -0,0 +1,12 @@
+// Icon: Linear.AlignCenterHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 512h-76.8v-179.2c0-42.347-34.453-76.8-76.8-76.8h-204.8c-42.347 0-76.8 34.453-76.8 76.8v179.2h-102.4v-332.8c0-42.347-34.451-76.8-76.8-76.8h-204.8c-42.349 0-76.8 34.453-76.8 76.8v332.8h-76.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h76.8v332.8c0 42.349 34.451 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-332.8h102.4v179.2c0 42.347 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.453 76.8-76.8v-179.2h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6zM614.4 332.8c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v179.2h-256v-179.2zM153.6 179.2c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v332.8h-256v-332.8zM409.6 896c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-332.8h256v332.8zM870.4 742.4c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-179.2h256v179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterVertical.js
new file mode 100644
index 00000000..a80615df
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignCenterVertical.js
@@ -0,0 +1,12 @@
+// Icon: Linear.AlignCenterVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 563.2h-332.8v-102.4h179.2c42.347 0 76.8-34.453 76.8-76.8v-204.8c0-42.347-34.453-76.8-76.8-76.8h-179.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-179.2c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.347 34.453 76.8 76.8 76.8h179.2v102.4h-332.8c-42.347 0-76.8 34.451-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h332.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h332.8c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-42.349-34.451-76.8-76.8-76.8zM691.2 153.6c14.115 0 25.6 11.485 25.6 25.6v204.8c0 14.115-11.485 25.6-25.6 25.6h-179.2v-256h179.2zM281.6 409.6c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h179.2v256h-179.2zM128 870.4c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h332.8v256h-332.8zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-332.8v-256h332.8c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignLeft.js
new file mode 100644
index 00000000..efabdd12
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignLeft.js
@@ -0,0 +1,14 @@
+// Icon: Linear.AlignLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 1024c-14.138 0-25.6-11.461-25.6-25.6v-972.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v972.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 460.8h-409.6c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-42.347 34.453-76.8 76.8-76.8h409.6c42.347 0 76.8 34.453 76.8 76.8v204.8c0 42.347-34.453 76.8-76.8 76.8zM179.2 153.6c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h409.6c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-409.6z' />
+            <path d='M896 921.6h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.451 76.8 76.8v204.8c0 42.349-34.451 76.8-76.8 76.8zM179.2 614.4c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignRight.js
new file mode 100644
index 00000000..0618f285
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignRight.js
@@ -0,0 +1,14 @@
+// Icon: Linear.AlignRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 1024c14.138 0 25.6-11.461 25.6-25.6v-972.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v972.8c0 14.139 11.462 25.6 25.6 25.6z' />
+            <path d='M358.4 384v-204.8c0-42.347 34.453-76.8 76.8-76.8h409.6c42.347 0 76.8 34.453 76.8 76.8v204.8c0 42.347-34.453 76.8-76.8 76.8h-409.6c-42.347 0-76.8-34.453-76.8-76.8zM435.2 153.6c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h409.6c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-409.6z' />
+            <path d='M51.2 844.8v-204.8c0-42.349 34.451-76.8 76.8-76.8h716.8c42.347 0 76.8 34.451 76.8 76.8v204.8c0 42.349-34.453 76.8-76.8 76.8h-716.8c-42.349 0-76.8-34.451-76.8-76.8zM128 614.4c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignTop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignTop.js
new file mode 100644
index 00000000..514c2e10
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AlignTop.js
@@ -0,0 +1,14 @@
+// Icon: Linear.AlignTop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 25.6c0-14.138 11.461-25.6 25.6-25.6h972.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-972.8c-14.139 0-25.6-11.462-25.6-25.6z' />
+            <path d='M563.2 588.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h204.8c42.347 0 76.8 34.453 76.8 76.8v409.6c0 42.347-34.453 76.8-76.8 76.8h-204.8c-42.347 0-76.8-34.453-76.8-76.8zM870.4 179.2c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-409.6z' />
+            <path d='M102.4 896v-716.8c0-42.347 34.451-76.8 76.8-76.8h204.8c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8h-204.8c-42.349 0-76.8-34.451-76.8-76.8zM409.6 179.2c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ambulance.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ambulance.js
new file mode 100644
index 00000000..3ed50421
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ambulance.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Ambulance
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 614.4h-76.8v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+            <path d='M691.2 256c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 665.6h-33.869l-76.947-192.37c-11.115-27.786-38.613-50.878-68.384-59.739v-29.491c0-42.347-34.451-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v30.003c-9.536 3.382-18.211 8.592-25.6 15.214-13.598-12.187-31.546-19.618-51.2-19.618h-409.6c-42.347 0-76.8 34.453-76.8 76.8v358.4c0 42.347 34.453 76.8 76.8 76.8h76.8c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4h307.2c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4h25.6c42.349 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.451-76.8-76.8-76.8zM817.229 563.2l40.96 102.4h-115.789c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h74.829zM691.2 358.4c14.115 0 25.6 11.485 25.6 25.6v25.6h-51.2v-25.6c0-14.115 11.485-25.6 25.6-25.6zM307.2 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM395.824 870.4c-17.733-30.576-50.805-51.2-88.624-51.2s-70.89 20.624-88.624 51.2h-90.576c-14.115 0-25.6-11.485-25.6-25.6v-358.4c0-14.115 11.485-25.6 25.6-25.6h409.6c14.115 0 25.6 11.485 25.6 25.6v384h-167.376zM819.2 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM947.2 870.4h-39.376c-17.733-30.576-50.805-51.2-88.624-51.2s-70.891 20.624-88.624 51.2h-116.176v-384c0-14.115 11.485-25.6 25.6-25.6h102.4c17.725 0 39.862 14.989 46.446 31.446l7.902 19.754h-54.349c-42.349 0-76.8 34.451-76.8 76.8v51.2c0 42.349 34.451 76.8 76.8 76.8h204.8c14.115 0 25.6 11.485 25.6 25.6v25.6h-27.787c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h27.787v25.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M793.6 307.2c-6.552 0-13.102-2.499-18.101-7.498-9.998-9.998-9.998-26.206 0-36.205l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-51.2 51.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M588.8 307.2c-6.552 0-13.102-2.499-18.101-7.498l-51.2-51.2c-9.998-9.998-9.998-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203 0l51.2 51.2c9.998 9.998 9.998 26.206 0 36.205-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Anchor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Anchor.js
new file mode 100644
index 00000000..495e04d6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Anchor.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Anchor
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 307.2c-70.579 0-128-57.421-128-128s57.421-128 128-128c70.579 0 128 57.421 128 128s-57.421 128-128 128zM486.4 102.4c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M971.486 734.304l-51.2-153.602c-3.97-11.91-16.006-19.197-28.386-17.171-12.395 2.011-21.501 12.712-21.501 25.269v153.6c0 134.907-84.218 229.13-204.8 229.13-35.821 0-75.213-14.47-105.376-38.709-31.098-24.987-48.224-56.25-48.224-88.021v-486.4h76.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v486.4c0 31.771-17.126 63.034-48.224 88.021-30.165 24.238-69.557 38.709-105.376 38.709-120.582 0-204.8-94.222-204.8-229.13v-153.6c0-12.557-9.106-23.258-21.499-25.269-12.392-2.019-24.418 5.261-28.387 17.171l-51.2 153.602c-4.47 13.413 2.778 27.909 16.19 32.379 13.411 4.472 27.91-2.776 32.381-16.19l1.338-4.011c0.853 74.694 25.074 143.126 68.422 193.078 46.541 53.634 113.149 83.166 187.554 83.166 47.808 0 97.906-18.224 137.446-49.997 17-13.661 30.997-28.941 41.754-45.328 10.757 16.387 24.752 31.667 41.754 45.328 39.542 31.773 89.638 49.997 137.446 49.997 74.405 0 141.013-29.536 187.555-83.166 43.35-49.952 67.57-118.384 68.424-193.078l1.338 4.011c4.47 13.414 18.968 20.661 32.379 16.19 13.413-4.467 20.664-18.966 16.192-32.379z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle.js
new file mode 100644
index 00000000..558fdf03
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Angle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 921.6h-435.819c-6.437-135.669-63.848-263.467-160.738-358.4h84.557c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-153.6c-1.843 0-3.637 0.203-5.37 0.574l231.878-371.006c7.493-11.989 3.848-27.784-8.141-35.277-11.994-7.496-27.786-3.848-35.278 8.141l-512 819.2c-4.933 7.893-5.194 17.838-0.682 25.979 4.512 8.139 13.086 13.189 22.392 13.189h972.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM307.2 544.942v146.258c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-98.714c91.666 86.029 146.347 203.773 152.923 329.114h-439.534l235.411-376.658z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle2.js
new file mode 100644
index 00000000..64a262f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Angle2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Angle2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 921.6h-435.819c-6.437-135.669-63.848-263.467-160.738-358.4h84.557c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-153.6c-1.843 0-3.637 0.203-5.37 0.574l231.878-371.006c7.493-11.989 3.848-27.784-8.141-35.277-11.994-7.496-27.786-3.848-35.278 8.141l-512 819.2c-4.933 7.893-5.194 17.838-0.682 25.979 4.512 8.139 13.086 13.189 22.392 13.189h972.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM307.2 544.942v146.258c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-98.714c91.666 86.029 146.347 203.773 152.923 329.114h-439.534l235.411-376.658z' />
+            <path d='M793.6 614.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-41.827 0-79.029 20.168-102.4 51.29-23.371-31.122-60.573-51.29-102.4-51.29-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c41.827 0 79.029-20.168 102.4-51.29 23.371 31.122 60.573 51.29 102.4 51.29 14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M947.2 460.8c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM947.2 358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Annoyed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Annoyed.js
new file mode 100644
index 00000000..2876b550
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Annoyed.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Annoyed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M716.8 563.2h-460.8c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4h460.8c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4zM512 614.4h102.4v102.4h-102.4v-102.4zM460.8 716.8h-102.397l-0.003-102.4h102.4v102.4zM204.8 665.6c0-28.232 22.968-51.2 51.2-51.2h51.2l0.003 102.4h-51.203c-28.232 0-51.2-22.968-51.2-51.2zM716.8 716.8h-51.2v-102.4h51.2c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2z' />
+            <path d='M402.091 350.901c1.901-1.899 3.539-4.118 4.806-6.653 6.323-12.645 1.197-28.022-11.45-34.346l-102.4-51.2c-12.643-6.323-28.022-1.197-34.346 11.45-6.323 12.645-1.197 28.022 11.45 34.346l25.094 12.547c-23.398 13.176-39.246 38.243-39.246 66.955 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-11.845-2.699-23.070-7.509-33.099zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M677.554 317.045l25.096-12.547c12.645-6.323 17.771-21.701 11.448-34.346-6.32-12.645-21.698-17.768-34.346-11.45l-102.4 51.2c-12.645 6.323-17.771 21.701-11.448 34.346 1.267 2.534 2.906 4.754 4.806 6.653-4.81 10.029-7.51 21.254-7.51 33.099 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-28.712-15.848-53.779-39.246-66.955zM640 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Antenna.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Antenna.js
new file mode 100644
index 00000000..fa21c4e5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Antenna.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Antenna
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M631.216 503.216c-6.552 0-13.102-2.499-18.101-7.498-9.997-9.997-9.998-26.206 0-36.203 33.845-33.848 52.485-78.85 52.485-126.715 0-47.867-18.64-92.869-52.49-126.717-9.997-9.997-9.998-26.206-0.002-36.203 10-9.997 26.208-9.998 36.205 0 43.52 43.517 67.486 101.376 67.486 162.92 0 61.541-23.966 119.4-67.483 162.917-4.998 4.998-11.55 7.499-18.101 7.499z' />
+            <path d='M739.827 611.827c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203 62.856-62.858 97.474-146.43 97.474-235.325 0-88.898-34.619-172.472-97.48-235.331-9.998-9.998-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0 72.531 72.528 112.477 168.962 112.477 271.534 0 102.57-39.944 199-112.472 271.528-4.998 4.998-11.55 7.499-18.101 7.499z' />
+            <path d='M341.584 503.216c-6.552 0-13.102-2.499-18.102-7.499-43.515-43.517-67.482-101.376-67.482-162.917 0-61.544 23.966-119.403 67.486-162.922 9.998-9.997 26.206-9.997 36.203 0 9.997 9.998 9.997 26.206 0 36.203-33.85 33.85-52.49 78.851-52.49 126.718 0 47.866 18.64 92.867 52.486 126.714 9.997 9.998 9.997 26.206 0 36.203-4.998 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M232.973 611.827c-6.552 0-13.102-2.499-18.102-7.499-72.528-72.528-112.47-168.958-112.47-271.528 0-102.573 39.946-199.006 112.477-271.536 9.998-9.997 26.206-9.997 36.203 0 9.997 9.998 9.997 26.206 0 36.203-62.861 62.861-97.48 146.435-97.48 235.333 0 88.894 34.618 172.467 97.475 235.325 9.997 9.997 9.997 26.206 0 36.203-4.998 4.998-11.55 7.499-18.102 7.499z' />
+            <path d='M563.203 332.797c0-42.35-34.453-76.803-76.803-76.803-42.349 0-76.803 34.454-76.803 76.803 0 33.374 21.405 61.832 51.203 72.4v542.003c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-542.003c29.798-10.568 51.203-39.026 51.203-72.4zM486.4 358.4c-14.118 0-25.603-11.485-25.603-25.603s11.485-25.603 25.603-25.603 25.603 11.486 25.603 25.603-11.485 25.603-25.603 25.603z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apartment.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apartment.js
new file mode 100644
index 00000000..fb9ee1cf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apartment.js
@@ -0,0 +1,36 @@
+// Icon: Linear.Apartment
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M947.2 972.8h-25.6v-691.2c0-39.058-29.024-79.326-66.077-91.677l-241.123-80.374v-83.949c0-8.093-3.827-15.709-10.318-20.539-6.493-4.829-14.888-6.306-22.637-3.981l-462.96 138.886c-37.73 11.32-67.285 51.043-67.285 90.434v742.4h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h921.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM839.333 238.496c16.259 5.419 31.067 25.965 31.067 43.104v691.2h-256v-809.282l224.933 74.978zM102.4 230.4c0-16.827 14.678-36.557 30.797-41.392l430.003-129.002v912.794h-460.8v-742.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apple.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apple.js
new file mode 100644
index 00000000..41150604
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Apple.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Apple
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.229 272.274c-51.986-44.773-124.598-67.474-215.829-67.474-29.955 0-62.445 9.174-88.55 16.546-4.626 1.306-9.29 2.622-13.768 3.834 2.773-96.405 82.054-173.979 179.118-173.979 14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-125.312 0-227.57 100.56-230.334 225.219-4.523-1.222-9.24-2.554-13.915-3.874-26.106-7.371-58.595-16.546-88.55-16.546-91.23 0-163.845 22.701-215.829 67.474-60.629 52.219-91.371 132.875-91.371 239.726 0 109.736 31.968 234.902 85.514 334.821 61.23 114.256 139.96 177.179 221.686 177.179 26.47 0 47.779-6.88 68.387-13.534 19.218-6.205 37.371-12.066 59.613-12.066s40.394 5.861 59.611 12.066c20.608 6.654 41.917 13.534 68.389 13.534 81.725 0 160.454-62.923 221.686-177.179 53.546-99.918 85.514-225.085 85.514-334.821 0-106.851-30.742-187.507-91.371-239.726zM790.958 822.635c-51.142 95.432-115.496 150.165-176.558 150.165-18.411 0-34.282-5.123-52.658-11.058-21.11-6.816-45.040-14.542-75.342-14.542s-54.232 7.726-75.344 14.542c-18.376 5.934-34.246 11.058-52.656 11.058-61.062 0-125.416-54.733-176.558-150.165-49.742-92.822-79.442-208.947-79.442-310.635 0-91.275 24.758-158.878 73.586-200.933 42.426-36.539 103.798-55.067 182.414-55.067 22.866 0 50.37 7.766 74.637 14.619 20.866 5.891 38.886 10.981 53.363 10.981s32.498-5.090 53.363-10.981c24.267-6.853 51.771-14.619 74.637-14.619 78.616 0 139.989 18.528 182.414 55.067 48.827 42.054 73.586 109.658 73.586 200.933 0 101.688-29.699 217.813-79.442 310.635z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archery.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archery.js
new file mode 100644
index 00000000..e6a327ed
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archery.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Archery
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M802.341 856.238c9.608-8.234 18.954-16.861 27.995-25.902 91.87-91.869 142.464-214.014 142.464-343.936 0-75.93-17.016-148.669-50.576-216.198-6.293-12.661-21.651-17.826-34.318-11.533-12.661 6.293-17.824 21.658-11.531 34.318 30.010 60.387 45.226 125.461 45.226 193.413 0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2 195.23-435.2 435.2-435.2c67.954 0 133.024 15.216 193.406 45.224 12.666 6.293 28.027 1.126 34.318-11.533 6.293-12.661 1.13-28.026-11.531-34.318-67.526-33.557-140.264-50.573-216.194-50.573-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 129.922 50.595 252.067 142.464 343.936 9.042 9.042 18.387 17.669 27.995 25.901l-65.355 130.714c-6.323 12.645-1.197 28.024 11.45 34.346 3.675 1.837 7.581 2.709 11.429 2.709 9.39 0 18.432-5.187 22.917-14.158l60.92-121.842c80.246 55.115 175.126 84.795 274.581 84.795s194.334-29.68 274.582-84.794l60.92 121.842c4.485 8.971 13.525 14.158 22.917 14.158 3.846 0 7.754-0.872 11.429-2.709 12.645-6.322 17.771-21.699 11.448-34.346l-65.355-130.714z' />
+            <path d='M486.4 768c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6c39.149 0 77.051 7.89 112.656 23.448 12.957 5.661 18.869 20.754 13.208 33.709-5.662 12.957-20.757 18.872-33.707 13.206-29.102-12.715-60.107-19.163-92.157-19.163-127.043 0-230.4 103.357-230.4 230.4 0 127.042 103.357 230.4 230.4 230.4 127.042 0 230.4-103.358 230.4-230.4 0-40.515-10.654-80.349-30.814-115.194-7.080-12.238-2.899-27.899 9.341-34.978 12.232-7.082 27.898-2.899 34.978 9.339 24.662 42.627 37.696 91.326 37.696 140.832 0 155.275-126.325 281.6-281.6 281.6z' />
+            <path d='M844.8 204.8h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v90.523c-35.069 29.938-160.786 139.878-250.39 251.885-8.834 11.040-7.043 27.15 3.998 35.982 4.72 3.776 10.366 5.611 15.976 5.611 7.509 0 14.95-3.288 20.006-9.608 87.293-109.118 214.406-219.918 245.398-246.394h93.011c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M947.2 153.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v76.8h76.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 614.4c-70.579 0-128-57.421-128-128 0-58.438 39.485-109.414 96.018-123.966 13.696-3.523 27.65 4.72 31.173 18.411s-4.718 27.648-18.411 31.173c-33.901 8.726-57.579 39.314-57.579 74.382 0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 70.579-57.421 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive.js
new file mode 100644
index 00000000..128b01b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Archive
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 819.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M1001.331 582.832l-138.157-315.786c-15.27-34.906-57.075-62.246-95.174-62.246h-512c-38.099 0-79.906 27.342-95.176 62.246l-138.157 315.786c-12.71 29.056-22.667 76.658-22.667 108.368v204.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-31.714-9.958-79.314-22.669-108.368zM207.733 287.568c7.227-16.522 30.234-31.568 48.267-31.568h512c18.034 0 41.038 15.046 48.269 31.568l138.157 315.786c1.557 3.558 3.082 7.59 4.547 11.95-3.84-0.595-7.77-0.904-11.773-0.904h-870.4c-4.002 0-7.933 0.309-11.771 0.902 1.466-4.36 2.992-8.392 4.547-11.95l138.157-315.784zM972.8 896c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M844.8 563.2h-665.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h665.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 460.8h-563.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 358.4h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive2.js
new file mode 100644
index 00000000..9a7fa174
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Archive2.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Archive2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 819.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 563.2h-665.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h665.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M1001.331 582.832l-138.155-315.784c-8.162-18.653-24.31-35.779-43.968-47.338l0.008-194.11c0-6.79-2.698-13.301-7.499-18.102-4.8-4.8-11.312-7.499-18.101-7.499h-563.219c-6.79 0-13.301 2.698-18.102 7.499s-7.498 11.312-7.498 18.101l0.002 194.104c-19.661 11.56-35.814 28.686-43.974 47.341l-138.157 315.789c-12.71 29.056-22.667 76.658-22.667 108.368v204.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-31.714-9.958-79.314-22.669-108.368zM768.014 51.2l-0.013 358.4h-512.002l-0.003-358.4h512.018zM204.8 294.272v140.928c0 14.138 11.462 25.6 25.6 25.6h563.2c14.138 0 25.6-11.461 25.6-25.6l0.006-140.92 135.219 309.072c1.557 3.558 3.082 7.59 4.547 11.95-3.84-0.594-7.77-0.902-11.773-0.902h-870.4c-4.002 0-7.933 0.309-11.771 0.902 1.466-4.36 2.992-8.392 4.547-11.95l135.224-309.080zM972.8 896c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M691.2 358.4h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 153.6h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDivert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDivert.js
new file mode 100644
index 00000000..727f0f0f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDivert.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowDivert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 204.8h-307.2c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h245.397l-501.397 501.397-391.499-391.498c-9.997-9.997-26.206-9.997-36.203 0s-9.998 26.206 0 36.203l409.6 409.6c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l519.499-519.498v245.397c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-307.2c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDown.js
new file mode 100644
index 00000000..1cdc551d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDown.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M504.501 990.901l307.2-307.2c9.997-9.997 9.997-26.206 0-36.203-9.998-9.998-26.206-9.998-36.205 0l-263.496 263.498v-834.195c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v834.195l-263.499-263.496c-9.997-9.998-26.206-9.998-36.203 0-4.998 4.998-7.498 11.549-7.498 18.101s2.499 13.102 7.499 18.101l307.2 307.2c9.997 9.998 26.205 9.998 36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownCircle.js
new file mode 100644
index 00000000..6daad3fa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowDownCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 881.538c91.869-91.869 142.464-214.016 142.464-343.938s-50.595-252.067-142.464-343.936-214.014-142.464-343.936-142.464-252.069 50.595-343.938 142.464-142.462 214.014-142.462 343.936 50.594 252.069 142.462 343.938 214.016 142.462 343.938 142.462 252.067-50.594 343.936-142.462zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2z' />
+            <path d='M504.499 837.299l204.8-204.8c9.998-9.995 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-161.096 161.101v-526.997c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v526.997l-161.101-161.096c-9.995-9.998-26.206-9.998-36.203 0-4.997 4.997-7.496 11.547-7.496 18.099s2.499 13.102 7.501 18.099l204.8 204.8c9.997 10 26.202 10 36.198 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownSquare.js
new file mode 100644
index 00000000..a35762a5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowDownSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowDownSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v819.2c0 42.347 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.453 76.8-76.8v-819.2c0-42.349-34.451-76.8-76.8-76.8zM76.8 972.8c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v819.2c0 14.115-11.485 25.6-25.6 25.6h-819.2z' />
+            <path d='M658.101 632.501l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l109.899 109.899v-424.597c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v424.597l109.899-109.898c4.998-5 11.549-7.499 18.101-7.499s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.205 0 36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeft.js
new file mode 100644
index 00000000..379ecde7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeft.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M33.099 519.499l307.2-307.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-263.498 263.496h834.195c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-834.195l263.496 263.499c9.998 9.997 9.998 26.206 0 36.203-4.998 4.998-11.549 7.498-18.101 7.498s-13.102-2.499-18.101-7.499l-307.2-307.2c-9.998-9.997-9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftCircle.js
new file mode 100644
index 00000000..bc4b1778
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowLeftCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M142.462 193.664c91.869-91.869 214.016-142.464 343.938-142.464s252.067 50.595 343.936 142.464 142.464 214.014 142.464 343.936-50.595 252.069-142.464 343.938-214.014 142.462-343.936 142.462-252.069-50.594-343.938-142.462-142.462-214.016-142.462-343.938 50.594-252.067 142.462-343.936zM486.4 972.8c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2z' />
+            <path d='M186.701 519.501l204.8-204.8c9.995-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-161.101 161.096h526.997c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-526.997l161.096 161.101c9.998 9.995 9.998 26.206 0 36.203-4.997 4.997-11.547 7.496-18.099 7.496s-13.102-2.499-18.099-7.501l-204.8-204.8c-10-9.997-10-26.202 0-36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftSquare.js
new file mode 100644
index 00000000..b2905d00
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowLeftSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowLeftSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.8 128v819.2c0 42.347-34.451 76.8-76.8 76.8h-819.2c-42.347 0-76.8-34.453-76.8-76.8v-819.2c0-42.349 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.451 76.8 76.8zM51.2 947.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2c-14.115 0-25.6 11.485-25.6 25.6v819.2z' />
+            <path d='M391.499 365.899l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c9.997 9.998 26.206 9.998 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-109.899-109.899h424.597c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-424.597l109.898-109.899c5-4.998 7.499-11.549 7.499-18.101s-2.499-13.102-7.499-18.101c-9.997-9.998-26.205-9.998-36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowReturn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowReturn.js
new file mode 100644
index 00000000..7bd89ca2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowReturn.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowReturn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256c-14.139 0-25.6 11.462-25.6 25.6v204.8c0 14.115-11.485 25.6-25.6 25.6h-782.997l212.299-212.298c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-256 256c-9.997 9.997-9.997 26.206 0 36.203l256 256c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-212.299-212.298h782.997c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRight.js
new file mode 100644
index 00000000..50ac9451
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRight.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M990.901 519.499l-307.2-307.2c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l263.498 263.496h-834.195c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h834.195l-263.496 263.499c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l307.2-307.2c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightCircle.js
new file mode 100644
index 00000000..2f8b6696
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowRightCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M786.099 519.501l-204.8-204.8c-9.995-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l161.101 161.096h-526.997c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h526.997l-161.096 161.101c-9.998 9.995-9.998 26.206 0 36.203 4.997 4.997 11.547 7.496 18.099 7.496s13.102-2.499 18.099-7.501l204.8-204.8c10-9.997 10-26.202 0-36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightSquare.js
new file mode 100644
index 00000000..e9593318
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowRightSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowRightSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 128v819.2c0 42.347 34.451 76.8 76.8 76.8h819.2c42.347 0 76.8-34.453 76.8-76.8v-819.2c0-42.349-34.453-76.8-76.8-76.8h-819.2c-42.349 0-76.8 34.451-76.8 76.8zM921.6 947.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v819.2z' />
+            <path d='M581.301 365.899l153.6 153.6c9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203l109.899-109.899h-424.597c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h424.597l-109.898-109.899c-5-4.998-7.499-11.549-7.499-18.101s2.499-13.102 7.499-18.101c9.997-9.998 26.205-9.998 36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUp.js
new file mode 100644
index 00000000..3c40b120
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUp.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M468.299 33.099l-307.2 307.2c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.998 26.206 9.998 36.205 0l263.496-263.498v834.195c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-834.195l263.499 263.496c9.997 9.998 26.206 9.998 36.203 0 4.998-4.998 7.498-11.549 7.498-18.101s-2.499-13.102-7.499-18.101l-307.2-307.2c-9.997-9.998-26.205-9.998-36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpCircle.js
new file mode 100644
index 00000000..935336a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowUpCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M142.464 193.662c-91.869 91.869-142.464 214.016-142.464 343.938s50.595 252.067 142.464 343.936 214.014 142.464 343.936 142.464 252.069-50.595 343.938-142.464 142.462-214.014 142.462-343.936-50.594-252.069-142.462-343.938-214.016-142.462-343.938-142.462-252.067 50.594-343.936 142.462zM921.6 537.6c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2z' />
+            <path d='M468.301 237.901l-204.8 204.8c-9.998 9.995-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l161.096-161.101v526.997c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-526.997l161.101 161.096c9.995 9.998 26.206 9.998 36.203 0 4.997-4.997 7.496-11.547 7.496-18.099s-2.499-13.102-7.501-18.099l-204.8-204.8c-9.997-10-26.202-10-36.198 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpRight.js
new file mode 100644
index 00000000..192d07ee
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpRight.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowUpRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-409.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h347.797l-724.298 724.299c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l724.299-724.298v347.797c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-409.6c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpSquare.js
new file mode 100644
index 00000000..c982e5aa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowUpSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowUpSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M658.101 442.699l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.899-109.899v424.597c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-424.597l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowWave.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowWave.js
new file mode 100644
index 00000000..c0dbac64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowWave.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ArrowWave
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M965.302 698.698c-9.997-9.997-26.208-9.997-36.203 0l-109.899 109.899v-475.797c0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2v409.6c0 70.579-57.421 128-128 128s-128-57.421-128-128v-475.797l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.899-109.898v475.797c0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2v-409.6c0-70.579 57.421-128 128-128s128 57.421 128 128v475.797l-109.898-109.901c-9.997-9.997-26.208-9.997-36.203 0-9.998 9.997-9.998 26.208 0 36.203l153.6 153.6c4.998 5.002 11.549 7.501 18.101 7.501s13.102-2.499 18.102-7.501l153.6-153.6c9.998-9.995 9.998-26.205-0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsMerge.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsMerge.js
new file mode 100644
index 00000000..86096711
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsMerge.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowsMerge
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M811.701 954.699l-270.997-270.998c-15.022-15.022-28.704-48.054-28.704-69.301v-501.397l161.099 161.098c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-204.8-204.8c-9.997-9.998-26.206-9.998-36.203 0l-204.8 204.8c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l161.099-161.098v501.397c0 35.234 18.787 80.592 43.701 105.504l270.998 270.997c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M179.2 998.4c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l204.8-204.8c9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.997 26.206 0 36.203l-204.8 204.8c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsSplit.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsSplit.js
new file mode 100644
index 00000000..ac078ee2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ArrowsSplit.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ArrowsSplit
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 51.2h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h194.197l-417.098 417.099c-4.802 4.8-7.499 11.312-7.499 18.101v460.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-450.197l409.6-409.6v194.197c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M402.102 417.098l-314.698-314.698h194.195c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-256c-14.138 0-25.6 11.462-25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-194.195l314.698 314.698c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AspectRatio.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AspectRatio.js
new file mode 100644
index 00000000..66fbfdbc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AspectRatio.js
@@ -0,0 +1,16 @@
+// Icon: Linear.AspectRatio
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-819.2c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.349 34.453 76.8 76.8 76.8h384v102.4h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-179.2v-102.4h384c42.349 0 76.8-34.451 76.8-76.8v-512c0-42.347-34.451-76.8-76.8-76.8zM921.6 691.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v512z' />
+            <path d='M819.2 332.8c0-42.347-34.453-76.8-76.8-76.8h-153.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h153.6c42.347 0 76.8-34.453 76.8-76.8v-51.2c0-19.654-7.43-37.602-19.619-51.2 12.189-13.598 19.619-31.546 19.619-51.2v-51.2z' />
+            <path d='M384 256c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 42.347 34.453 76.8 76.8 76.8h102.4c8.974 0 17.587-1.563 25.6-4.403v132.403c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-307.2c0-14.138-11.462-25.6-25.6-25.6z' />
+            <path d='M486.4 409.6c-14.138 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 563.2c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AtSign.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AtSign.js
new file mode 100644
index 00000000..87ede177
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AtSign.js
@@ -0,0 +1,12 @@
+// Icon: Linear.AtSign
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962c-96.704 96.704-149.962 225.278-149.962 362.038s53.258 265.334 149.962 362.038c96.704 96.704 225.278 149.962 362.038 149.962 80.33 0 157.243-18.085 228.606-53.752 68.026-33.998 128.746-83.774 175.598-143.95 8.688-11.157 6.685-27.24-4.47-35.926-11.157-8.686-27.238-6.686-35.926 4.47-88.058 113.096-220.661 177.958-363.808 177.958-254.086 0-460.8-206.714-460.8-460.8s206.714-460.8 460.8-460.8 460.8 206.714 460.8 460.8c0 90.437-52.635 153.6-128 153.6-70.579 0-128-57.421-128-128v-204.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v43.898c-37.557-42.586-92.491-69.498-153.6-69.498-112.928 0-204.8 91.872-204.8 204.8 0 112.926 91.872 204.8 204.8 204.8 73.232 0 137.597-38.643 173.808-96.603 29.915 57.354 89.954 96.603 158.992 96.603 49.542 0 94.885-20.136 127.67-56.698 33.71-37.592 51.53-88.803 51.53-148.102 0-136.76-53.258-265.334-149.962-362.038zM512 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AudioBook.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AudioBook.js
new file mode 100644
index 00000000..89b799c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/AudioBook.js
@@ -0,0 +1,16 @@
+// Icon: Linear.AudioBook
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.206 844.8c-6.664 0-13.211-2.6-18.107-7.499-25.741-25.738-99.419-69.301-212.299-69.301s-186.558 43.563-212.299 69.301c-9.997 9.997-26.206 9.997-36.203 0-25.739-25.738-99.419-69.301-212.298-69.301s-186.558 43.563-212.299 69.301c-7.322 7.32-18.333 9.51-27.899 5.55-9.565-3.962-15.802-13.296-15.802-23.651v-563.2c0-6.79 2.698-13.301 7.499-18.101 38.886-38.888 127.301-84.299 248.501-84.299 105.080 0 185.52 34.136 230.4 68.56 44.882-34.424 125.318-68.56 230.4-68.56 121.2 0 209.614 45.411 248.501 84.299 4.802 4.8 7.499 11.312 7.499 18.101v563.2c0 10.355-6.237 19.69-15.803 23.651-3.166 1.312-6.494 1.949-9.79 1.949zM256 716.8c105.080 0 185.52 34.138 230.4 68.562 44.882-34.424 125.318-68.562 230.4-68.562 87.416 0 157.776 23.624 204.8 51.382v-500.91c-30.901-25.923-101.408-62.472-204.8-62.472-112.88 0-186.558 43.562-212.299 69.301-9.997 9.998-26.206 9.998-36.203 0-25.739-25.739-99.419-69.301-212.298-69.301-103.392 0-173.899 36.549-204.8 62.472v500.91c47.024-27.758 117.384-51.382 204.8-51.382z' />
+            <path d='M384.003 665.634c-5.709 0-11.368-1.907-15.998-5.611l-120.987-96.806h-16.618c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6h16.619l120.989-96.794c7.685-6.149 18.21-7.346 27.082-3.083 8.869 4.262 14.51 13.234 14.51 23.074v307.221c0 9.84-5.642 18.811-14.51 23.074-3.526 1.696-7.318 2.526-11.086 2.526zM256 512.018c5.814 0 11.454 1.979 15.994 5.611l86.406 69.138v-200.688l-86.408 69.128c-4.539 3.632-10.179 5.61-15.992 5.61v51.202z' />
+            <path d='M549.672 614.408c-6.080 0-12.179-2.152-17.066-6.526-10.534-9.43-11.429-25.614-1.998-36.149 21.018-23.477 32.592-53.782 32.592-85.333 0-31.549-11.573-61.853-32.589-85.331-9.432-10.533-8.536-26.718 1.998-36.149 10.538-9.429 26.72-8.533 36.149 2 29.432 32.88 45.642 75.312 45.642 119.48 0 44.17-16.211 86.603-45.645 119.483-5.056 5.648-12.054 8.525-19.083 8.525z' />
+            <path d='M639.982 665.619c-5.352 0-10.749-1.672-15.357-5.134-11.304-8.493-13.582-24.541-5.091-35.843 30.138-40.114 46.066-87.915 46.066-138.242 0-50.32-15.923-98.118-46.050-138.229-8.493-11.304-6.211-27.352 5.094-35.843 11.307-8.493 27.355-6.208 35.843 5.096 36.84 49.046 56.312 107.477 56.312 168.976 0 61.506-19.478 119.944-56.33 168.994-5.030 6.696-12.71 10.226-20.488 10.226z' />
+            <path d='M479.523 537.611c-4.352 0-8.763-1.11-12.8-3.448-12.235-7.083-16.414-22.744-9.331-34.981 2.262-3.907 3.41-8.208 3.41-12.781s-1.147-8.874-3.41-12.784c-7.082-12.237-2.902-27.898 9.334-34.979s27.899-2.901 34.979 9.334c6.736 11.638 10.296 24.928 10.296 38.429 0 13.504-3.562 26.794-10.298 38.432-4.747 8.197-13.344 12.778-22.181 12.778z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe.js
new file mode 100644
index 00000000..62a42bb2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Axe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1022.51 802.586c-0.578-13.6-6.986-26.525-17.581-35.459l-124.054-104.595c-10.291-8.677-27.178-23.846-36.88-33.126l-260.898-249.554 7.773-7.773c29.944-29.944 29.944-78.667 0-108.611l-137.536-137.536c-14.466-14.466-33.752-22.432-54.306-22.432s-39.84 7.966-54.304 22.432l-13.243 13.243-39.285-37.576c-20.178-19.302-52.656-18.942-72.4 0.802l-66.197 66.197c-19.744 19.744-20.104 52.222-0.805 72.4l27.166 28.4c-47.059 24.694-99.699 37.803-154.362 37.803-14.138 0-25.6 11.462-25.6 25.6 0 102.57 39.942 199.002 112.47 271.53s168.96 112.47 271.53 112.47c14.138 0 25.6-11.461 25.6-25.6 0-51.606 11.69-101.41 33.774-146.418l237.23 248.013c9.28 9.701 24.45 26.589 33.125 36.878l104.598 124.058c8.933 10.594 21.858 17.002 35.458 17.579 0.674 0.029 1.346 0.042 2.018 0.042 12.901 0 25.488-5.238 34.8-14.554l117.397-117.395c9.798-9.798 15.088-23.218 14.51-36.818zM189.795 205.605c-0.112-0.118-0.106-0.69 0.008-0.805l66.197-66.197c0.117-0.115 0.686-0.118 0.803-0.008l38.462 36.79-34.341 34.341c-11.579 11.579-23.867 22.192-36.757 31.816l-34.373-35.938zM359.294 664.693c-163.853-12.083-295.104-143.334-307.187-307.187 92.594-6.269 178.774-45.33 245.021-111.574l83.798-83.797c4.795-4.795 11.224-7.435 18.101-7.435 6.878 0 13.307 2.642 18.102 7.437l137.536 137.534c9.981 9.981 9.981 26.222 0 36.203l-83.798 83.798c-66.243 66.245-105.304 152.427-111.573 245.021zM856.006 918.99l-103.134-122.322c-9.395-11.142-25.218-28.757-35.267-39.264l-247.062-258.293c10.834-15.266 23.027-29.733 36.533-43.237l39.81-39.811 261.72 250.341c10.507 10.050 28.122 25.872 39.266 35.269l122.32 103.133-114.184 114.184z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe2.js
new file mode 100644
index 00000000..550f1761
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Axe2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Axe2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1022.51 853.786c-0.578-13.6-6.986-26.525-17.581-35.459l-124.054-104.595c-10.291-8.677-27.178-23.846-36.88-33.126l-247.862-237.086c44.173-21.704 93.818-33.918 146.267-33.918 14.139 0 25.6-11.462 25.6-25.6 0-102.57-39.942-199-112.47-271.53s-168.96-112.47-271.53-112.47c-14.138 0-25.6 11.462-25.6 25.6 0 55.619-13.734 108.083-37.96 154.211l-28.245-27.016c-20.176-19.299-52.654-18.941-72.398 0.803l-66.197 66.198c-19.744 19.742-20.104 52.221-0.803 72.398l27.016 28.245c-46.13 24.226-98.594 37.96-154.213 37.96-14.138 0-25.6 11.462-25.6 25.6 0 102.57 39.942 199.002 112.47 271.53s168.96 112.47 271.53 112.47c14.138 0 25.6-11.461 25.6-25.6 0-52.45 12.214-102.094 33.918-146.267l237.086 247.862c9.28 9.701 24.45 26.589 33.125 36.878l104.598 124.058c8.933 10.594 21.858 17.002 35.458 17.579 0.674 0.029 1.346 0.042 2.018 0.042 12.901 0 25.488-5.238 34.8-14.554l117.397-117.395c9.798-9.798 15.088-23.218 14.51-36.818zM189.795 256.805c-0.112-0.118-0.106-0.69 0.008-0.805l66.197-66.197c0.117-0.115 0.688-0.12 0.805-0.008l35.8 34.242c-19.405 26.042-42.523 49.162-68.566 68.566l-34.243-35.798zM359.294 715.893c-163.853-12.083-295.104-143.334-307.187-307.187 92.594-6.269 178.774-45.33 245.021-111.576s105.307-152.427 111.576-245.021c163.853 12.083 295.104 143.334 307.187 307.187-92.594 6.269-178.774 45.33-245.021 111.576-66.246 66.245-105.306 152.427-111.576 245.021zM856.006 970.19l-103.134-122.322c-9.395-11.142-25.218-28.757-35.267-39.264l-246.926-258.15c21.882-30.886 48.89-57.894 79.778-79.776l258.149 246.926c10.507 10.050 28.122 25.872 39.266 35.269l122.32 103.133-114.184 114.184z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby.js
new file mode 100644
index 00000000..5dad5975
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Baby
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM691.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M332.8 563.2c-42.347 0-76.8-34.24-76.8-76.326s34.453-76.326 76.8-76.326 76.8 34.24 76.8 76.326c0 42.086-34.453 76.326-76.8 76.326zM332.8 461.747c-14.115 0-25.6 11.272-25.6 25.126s11.485 25.126 25.6 25.126 25.6-11.272 25.6-25.126-11.485-25.126-25.6-25.126z' />
+            <path d='M512 819.2c-85.611 0-165.19-42.525-212.874-113.757-7.866-11.749-4.717-27.648 7.034-35.514 11.749-7.864 27.65-4.715 35.514 7.034 38.16 57.003 101.834 91.037 170.326 91.037 68.498 0 132.17-34.034 170.33-91.040 7.864-11.749 23.763-14.899 35.514-7.034 11.749 7.864 14.899 23.765 7.034 35.514-47.68 71.234-127.261 113.76-212.877 113.76z' />
+            <path d='M943.078 400.125c-34.227-90.402-96.715-168.344-177.526-221.722 1.61-12.837 2.776-29.65 2.445-50.803-0.84-53.818-9.101-78.749-10.038-81.416-7.086-20.114-21.859-35.29-40.53-41.635-18.667-6.342-39.63-3.317-57.504 8.312l-88.392 57.501c-16.792-12.042-37.341-19.162-59.533-19.162s-42.741 7.12-59.531 19.162l-88.392-57.501c-17.875-11.63-38.835-14.659-57.504-8.312-18.67 6.347-33.443 21.522-40.531 41.637-0.938 2.666-9.198 27.597-10.038 81.414-0.331 21.154 0.835 37.966 2.445 50.805-80.806 53.374-143.299 131.326-177.526 221.722-50.822 38.653-80.922 99.005-80.922 163.074 0 64.067 30.098 124.418 80.92 163.072 32.251 85.298 88.525 158.421 163.123 211.835 78.474 56.192 171.131 85.893 267.957 85.893s189.485-29.701 267.958-85.893c74.598-53.416 130.87-126.539 163.122-211.835 50.822-38.654 80.92-99.005 80.92-163.072 0-64.069-30.099-124.421-80.922-163.075zM687.842 55.778c4.698-3.054 9.354-4.034 13.107-2.754 3.717 1.264 6.784 4.808 8.651 9.989 0.445 1.432 6.518 21.738 7.202 65.387 0.667 42.674-5.563 62.896-6.082 64.496-2.173 5.637-6.066 9.757-10.976 11.616-4.978 1.882-10.707 1.331-16.131-1.554l-69.962-37.205c0.477-3.989 0.749-8.040 0.749-12.154 0-15.613-3.526-30.414-9.802-43.669l83.243-54.154zM512 102.4c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2zM307.197 128.4c0.682-43.656 6.758-63.962 7.202-65.387 1.867-5.181 4.934-8.725 8.65-9.987 3.758-1.278 8.413-0.301 13.109 2.754l83.245 54.154c-6.275 13.253-9.802 28.054-9.802 43.667 0 4.115 0.272 8.165 0.746 12.154l-69.96 37.203c-5.427 2.886-11.155 3.435-16.133 1.555-4.912-1.859-8.803-5.979-10.978-11.616-0.515-1.598-6.744-21.819-6.078-64.496zM907.069 689.178c-4.346 3.037-7.64 7.349-9.432 12.339-58.206 162.262-213.182 271.283-385.637 271.283s-327.43-109.021-385.637-271.283c-1.79-4.99-5.086-9.301-9.432-12.339-41.16-28.765-65.731-75.861-65.731-125.978 0-50.118 24.571-97.213 65.731-125.978 4.346-3.037 7.642-7.349 9.432-12.339 28.282-78.842 80.642-147.467 148.901-195.939 7.933 10.603 18.574 18.803 30.875 23.458 7.741 2.928 15.922 4.378 24.155 4.378 11.638 0 23.381-2.899 34.131-8.616l64.758-34.437c18.634 25.594 48.806 42.274 82.816 42.274 34.011 0 64.181-16.68 82.816-42.274l64.76 34.437c10.752 5.717 22.491 8.616 34.13 8.614 8.234 0 16.416-1.45 24.157-4.378 12.301-4.653 22.942-12.854 30.875-23.458 68.261 48.472 120.621 117.099 148.901 195.939 1.79 4.99 5.086 9.302 9.434 12.339 41.157 28.766 65.728 75.861 65.728 125.979 0 50.117-24.571 97.213-65.731 125.978z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby2.js
new file mode 100644
index 00000000..562704b3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Baby2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM691.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M332.8 563.2c-42.347 0-76.8-34.24-76.8-76.326s34.453-76.326 76.8-76.326 76.8 34.24 76.8 76.326c0 42.086-34.453 76.326-76.8 76.326zM332.8 461.747c-14.115 0-25.6 11.272-25.6 25.126s11.485 25.126 25.6 25.126 25.6-11.272 25.6-25.126-11.485-25.126-25.6-25.126z' />
+            <path d='M943.080 400.128c-32.251-85.298-88.523-158.419-163.122-211.835-78.474-56.192-171.133-85.893-267.958-85.893s-189.483 29.701-267.958 85.893c-74.598 53.416-130.87 126.539-163.122 211.835-50.818 38.656-80.92 99.008-80.92 163.072 0 64.066 30.098 124.414 80.92 163.072 32.251 85.298 88.525 158.421 163.123 211.835 78.474 56.192 171.131 85.893 267.957 85.893s189.485-29.701 267.958-85.893c74.598-53.416 130.87-126.539 163.123-211.835 50.821-38.658 80.918-99.006 80.918-163.072 0-64.064-30.101-124.416-80.92-163.072zM907.069 689.178c-4.346 3.037-7.64 7.349-9.432 12.339-58.206 162.262-213.182 271.283-385.637 271.283s-327.43-109.021-385.637-271.283c-1.79-4.99-5.086-9.301-9.432-12.339-41.158-28.766-65.731-75.862-65.731-125.978 0-50.118 24.571-97.213 65.731-125.979 4.346-3.037 7.642-7.349 9.432-12.338 52.603-146.638 184.238-249.784 336.381-268.29 58.43 12.786 100.456 64.739 100.456 125.006 0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-47.957-19.032-92.149-50.474-124.666 151.011 19.382 281.418 122.168 333.71 267.947 1.79 4.99 5.086 9.302 9.432 12.339 41.16 28.766 65.731 75.861 65.731 125.979 0 50.115-24.571 97.211-65.731 125.978z' />
+            <path d='M512 819.2c-85.611 0-165.19-42.525-212.874-113.757-7.866-11.749-4.717-27.648 7.034-35.514 11.749-7.864 27.65-4.715 35.514 7.034 38.16 57.003 101.834 91.037 170.326 91.037 68.498 0 132.17-34.034 170.33-91.040 7.864-11.749 23.763-14.899 35.514-7.034 11.749 7.864 14.899 23.765 7.034 35.514-47.68 71.234-127.261 113.76-212.877 113.76z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby3.js
new file mode 100644
index 00000000..99ef4e98
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baby3.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Baby3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 409.6c-42.347 0-76.8-34.453-76.8-76.8 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M588.8 409.6c-42.349 0-76.8-34.453-76.8-76.8 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 42.347-34.451 76.8-76.8 76.8z' />
+            <path d='M486.4 716.8c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 204.8c-127.043 0-230.4 103.357-230.4 230.4 0 127.042 103.357 230.4 230.4 230.4 127.042 0 230.4-103.358 230.4-230.4 0-127.043-103.358-230.4-230.4-230.4z' />
+            <path d='M486.4 614.4c-50.91 0-99.592-21.768-133.565-59.725-9.43-10.536-8.533-26.72 2.002-36.149 10.534-9.432 26.72-8.531 36.149 2.002 24.272 27.118 59.050 42.672 95.414 42.672 36.362 0 71.136-15.552 95.408-42.667 9.429-10.533 25.613-11.432 36.149-2.002 10.534 9.43 11.432 25.614 2.002 36.149-33.974 37.954-82.654 59.72-133.558 59.72z' />
+            <path d='M794.133 127.467c-82.198-82.198-191.488-127.467-307.733-127.467-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.486-127.467 307.733v563.2c0 8.144 3.875 15.802 10.435 20.626 4.45 3.272 9.774 4.974 15.166 4.974 2.558 0 5.133-0.382 7.634-1.166l785.965-245.613v221.179c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-255.405c0.010-0.39 0.010-0.782 0-1.176v-306.619c0-116.246-45.269-225.534-127.467-307.733zM102.4 776.016l318.861 87.92-318.861 99.643v-187.563zM870.4 723.579l-358.85 112.141-409.15-112.818v-287.702c0-211.738 172.262-384 384-384 211.739 0 384 172.262 384 384v288.379z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BabyBottle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BabyBottle.js
new file mode 100644
index 00000000..4cda7368
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BabyBottle.js
@@ -0,0 +1,15 @@
+// Icon: Linear.BabyBottle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 870.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 768h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M711.68 309.995c-12.971-60.606-49.95-113.406-102.323-146.467 3.325-11.525 5.043-23.517 5.043-35.528 0-70.579-57.421-128-128-128s-128 57.421-128 128c0 12.011 1.718 24.003 5.043 35.528-52.373 33.061-89.35 85.859-102.322 146.467-32.434 8.986-56.322 38.749-56.322 74.005v51.2c0 33.373 21.403 61.829 51.2 72.397v388.403c0 70.579 57.421 128 128 128h204.8c70.579 0 128-57.421 128-128v-388.403c29.795-10.568 51.2-39.022 51.2-72.397v-51.2c0-35.256-23.888-65.018-56.32-74.005zM406.776 197.829c6.141-3.053 10.802-8.44 12.936-14.958 2.134-6.517 1.565-13.619-1.582-19.712-5.661-10.96-8.53-22.79-8.53-35.158 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 12.368-2.87 24.197-8.53 35.158-3.147 6.094-3.715 13.195-1.581 19.712s6.794 11.906 12.934 14.958c44.95 22.339 78.099 62.168 92.146 109.371h-343.536c14.042-47.202 47.192-87.032 92.142-109.371zM588.8 972.8h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-384h358.4v384c0 42.347-34.453 76.8-76.8 76.8zM716.8 435.2c0 14.115-11.485 25.6-25.6 25.6h-409.6c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h409.6c14.115 0 25.6 11.485 25.6 25.6v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BackwardCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BackwardCircle.js
new file mode 100644
index 00000000..06d52235
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BackwardCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BackwardCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M435.205 768c-6.662 0-13.21-2.6-18.107-7.501l-204.8-204.8c-9.998-9.997-9.998-26.206 0-36.203l204.8-204.8c7.322-7.325 18.331-9.514 27.899-5.55 9.566 3.965 15.803 13.301 15.803 23.654v409.6c0 10.355-6.237 19.69-15.803 23.651-3.166 1.312-6.494 1.949-9.792 1.949zM266.603 537.6l142.997 142.997v-285.994l-142.997 142.997z' />
+            <path d='M691.206 768c-6.664 0-13.211-2.6-18.106-7.501l-204.8-204.8c-9.998-9.997-9.998-26.206 0-36.203l204.8-204.8c7.318-7.322 18.33-9.514 27.899-5.55 9.563 3.965 15.8 13.301 15.8 23.654v409.6c0 10.355-6.237 19.69-15.803 23.651-3.166 1.312-6.494 1.949-9.79 1.949zM522.603 537.6l142.997 142.997v-285.994l-142.997 142.997z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag.js
new file mode 100644
index 00000000..0f06dedd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Bag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.187 870.406c-11.141 0-21.39-7.328-24.602-18.573-3.885-13.594 3.987-27.765 17.582-31.648l358.4-102.4c13.597-3.88 27.763 3.987 31.648 17.582 3.883 13.594-3.989 27.765-17.582 31.648l-358.4 102.4c-2.35 0.67-4.718 0.99-7.046 0.99z' />
+            <path d='M921.51 842.674l-51.2-614.4h-0.013c-0.73-8.77-5.946-16.72-14.050-20.773l-102.4-51.2c-12.645-6.323-28.024-1.195-34.346 11.45-6.323 12.645-1.198 28.022 11.448 34.346l35.664 17.832-64.41 12.882c-1.506-10.621-3.154-21.408-4.955-32.221-22.808-136.85-57.269-200.589-108.45-200.589-20.445 0-39.606 8.611-55.414 24.902-35.984 37.088-58.317 115.963-68.274 241.133-0.386 4.84-0.741 9.645-1.072 14.408l-125.862 25.173-94.862-63.242 197.437-43.874c13.802-3.067 22.504-16.742 19.437-30.544s-16.739-22.501-30.544-19.437l-52.47 11.661c14.118-68.922 35.096-108.981 58.026-108.981 2.754 0 8.386 3.68 15.2 14.051 7.763 11.816 23.635 15.104 35.451 7.341 11.818-7.763 15.102-23.635 7.341-35.451-20.165-30.698-42.667-37.141-57.992-37.141-23.48 0-56.79 11.346-82.138 65.4-12.509 26.675-22.658 62.578-30.24 106.859l-149.176 33.15c-10.011 2.226-17.728 10.21-19.611 20.29-0.17 0.914-0.272 1.827-0.342 2.739l-0.018-0.002-51.2 665.6c-0.798 10.378 4.766 20.206 14.077 24.861l204.8 102.4c3.582 1.792 7.504 2.702 11.45 2.702 2.258 0 4.523-0.299 6.734-0.901l563.2-153.6c11.906-3.248 19.8-14.528 18.774-26.826zM570.133 60.555c8.136-8.386 14.55-9.355 18.667-9.355 4.168 0 15.43 8.334 28.218 39.875 11.323 27.928 21.304 67.48 29.669 117.56 1.912 11.454 3.648 22.933 5.222 34.235l-135.75 27.15c11.606-145.808 38.798-193.822 53.974-209.466zM201.371 275.949l105.829 70.552v610.477l-152.355-76.176 46.526-604.853zM358.4 964.883v-611.096l102.84-20.568c-2.154 57.683-0.925 100.35-0.853 102.755 0.419 13.869 11.794 24.827 25.574 24.827 0.261 0 0.525-0.003 0.787-0.011 14.133-0.427 25.242-12.23 24.814-26.362-0.019-0.61-1.41-48.95 1.357-111.544l145.229-29.045c5.528 51.675 7.451 90.797 7.48 91.382 0.674 14.122 12.638 25.022 26.79 24.35 14.12-0.674 25.024-12.666 24.35-26.787-0.12-2.531-2.166-44.261-8.184-99.032l113.088-22.618 47.046 564.571-510.32 139.176z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag2.js
new file mode 100644
index 00000000..9e5f46d6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bag2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Bag2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1023.84 995.25l-51.106-715.474c-0.957-13.397-12.102-23.776-25.534-23.776h-117.397l-197.302-197.301c-9.997-9.998-26.206-9.998-36.203 0l-25.6 25.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l7.499-7.499 142.997 142.997h-81.194l-222.902-222.901c-9.997-9.998-26.206-9.998-36.203 0l-222.901 222.901h-117.397c-13.43 0-24.578 10.379-25.534 23.776l-51.2 716.8c-0.506 7.088 1.957 14.067 6.8 19.269 4.842 5.2 11.629 8.155 18.734 8.155h972.8c0.010 0 0.022 0 0.032 0 14.139 0 25.6-11.461 25.6-25.6 0-1.067-0.066-2.117-0.192-3.15zM435.2 87.403l168.597 168.597h-337.194l168.597-168.597zM53.094 972.8l47.542-665.6h104.155c0.005 0 0.011 0 0.016 0h718.557l47.542 665.6h-917.813z' />
+            <path d='M512 716.8c-56.461 0-108.91-30.506-147.686-85.901-36.83-52.614-57.114-122.115-57.114-195.699 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 63.176 16.997 122.25 47.859 166.339 28.917 41.309 66.47 64.061 105.741 64.061s76.824-22.752 105.741-64.061c30.862-44.090 47.859-103.163 47.859-166.339 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 73.584-20.285 143.085-57.114 195.699-38.778 55.395-91.226 85.901-147.686 85.901z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagDollar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagDollar.js
new file mode 100644
index 00000000..bc367fe4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagDollar.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BagDollar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 665.6h-179.2v-51.2h179.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v25.6h-76.8c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h179.2v51.2h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6z' />
+            <path d='M805.552 518.974c-36.64-61.614-83.275-113.138-120.747-154.538-27.622-30.517-55.981-61.859-66.106-83.613 16.971-9.899 28.48-21.4 39.403-32.323 9.998-9.997 9.998-26.206 0-36.203-8.744-8.744-22.237-9.84-32.173-3.29 11.35-33.974 34.282-76.966 80.63-111.728 9.866-7.398 13.054-20.779 7.586-31.834-1.334-2.694-33.413-65.984-99.746-65.984-41.496 0-54.408 26.096-61.346 40.115-5.534 11.186-5.75 11.622-15.454 11.622-19.342 0-41.432-11.218-64.818-23.094-27.73-14.082-56.403-28.643-88-28.643l-1.048 0.005c-59.917 0.626-114.237 53.234-120.234 59.229-5.248 5.248-7.96 12.514-7.434 19.917 0.526 7.402 4.238 14.213 10.176 18.666 37.691 28.267 64.56 65.146 79.866 109.606 0.24 0.701 0.469 1.39 0.701 2.083-9.93-6.504-23.382-5.398-32.107 3.328-9.998 9.997-9.998 26.206 0 36.203 10.928 10.928 22.44 22.432 39.421 32.334-10.11 21.707-38.486 53.067-66.125 83.602-37.47 41.4-84.106 92.923-120.746 154.538-43.64 73.386-64.853 146.467-64.853 223.427 0 104.744 38.634 181.034 114.829 226.752 62.366 37.419 147.898 54.848 269.171 54.848s206.805-17.429 269.17-54.848c76.197-45.718 114.83-122.008 114.83-226.752 0-76.96-21.213-150.042-64.848-223.426zM321.435 76.845c17.558-12.674 41.443-25.957 62.832-26.179l0.514-0.002c19.342 0 41.432 11.218 64.818 23.094 27.731 14.080 56.403 28.642 88.002 28.642 41.496 0 54.408-26.096 61.346-40.115 5.534-11.186 5.75-11.622 15.454-11.622 18.794 0 33.126 11.187 42.262 21.339-70.595 62.925-87.648 140.698-91.758 175.954-18.402 5.037-43.139 8.045-78.504 8.045-35.368 0-60.109-3.008-78.51-8.046-4.013-34.411-20.317-109.107-86.454-171.109zM486.4 972.8c-233.27 0-332.8-68.904-332.8-230.4 0-153.182 99.618-263.242 172.355-343.603 35.328-39.030 63.469-70.141 76.062-99.675 21.722 5.030 49.053 8.078 84.382 8.078 35.336 0 62.672-3.050 84.397-8.083 12.6 29.56 40.734 60.662 76.048 99.678 72.738 80.363 172.355 190.422 172.355 343.605 0 161.496-99.53 230.4-332.8 230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagEuro.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagEuro.js
new file mode 100644
index 00000000..6f223b10
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagEuro.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BagEuro
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M805.552 518.974c-36.64-61.614-83.275-113.138-120.747-154.538-27.622-30.517-55.981-61.859-66.106-83.613 16.971-9.899 28.48-21.4 39.403-32.323 9.998-9.997 9.998-26.206 0-36.203-8.744-8.744-22.237-9.84-32.173-3.29 11.35-33.974 34.282-76.966 80.63-111.728 9.866-7.398 13.054-20.779 7.586-31.834-1.334-2.694-33.413-65.984-99.746-65.984-41.496 0-54.408 26.096-61.346 40.115-5.534 11.186-5.75 11.622-15.454 11.622-19.342 0-41.432-11.218-64.818-23.094-27.73-14.082-56.403-28.643-88-28.643l-1.048 0.005c-59.917 0.626-114.237 53.234-120.234 59.229-5.248 5.248-7.96 12.514-7.434 19.917 0.526 7.402 4.238 14.213 10.176 18.666 37.691 28.267 64.56 65.146 79.866 109.606 0.24 0.701 0.469 1.39 0.701 2.083-9.93-6.504-23.382-5.398-32.107 3.328-9.998 9.997-9.998 26.206 0 36.203 10.928 10.928 22.44 22.432 39.421 32.334-10.11 21.707-38.486 53.067-66.125 83.602-37.47 41.4-84.106 92.923-120.746 154.538-43.64 73.386-64.853 146.467-64.853 223.427 0 104.744 38.634 181.034 114.829 226.752 62.366 37.419 147.898 54.848 269.171 54.848s206.805-17.429 269.17-54.848c76.197-45.718 114.83-122.008 114.83-226.752 0-76.96-21.213-150.042-64.848-223.426zM321.435 76.845c17.558-12.674 41.443-25.957 62.832-26.179l0.514-0.002c19.342 0 41.432 11.218 64.818 23.094 27.731 14.080 56.403 28.642 88.002 28.642 41.496 0 54.408-26.096 61.346-40.115 5.534-11.186 5.75-11.622 15.454-11.622 18.794 0 33.126 11.187 42.262 21.339-70.595 62.925-87.648 140.698-91.758 175.954-18.402 5.037-43.139 8.045-78.504 8.045-35.368 0-60.109-3.008-78.51-8.046-4.013-34.411-20.317-109.107-86.454-171.109zM486.4 972.8c-233.27 0-332.8-68.904-332.8-230.4 0-153.182 99.618-263.242 172.355-343.603 35.328-39.030 63.469-70.141 76.062-99.675 21.722 5.030 49.053 8.078 84.382 8.078 35.336 0 62.672-3.050 84.397-8.083 12.6 29.56 40.734 60.662 76.048 99.678 72.738 80.363 172.355 190.422 172.355 343.605 0 161.496-99.53 230.4-332.8 230.4z' />
+            <path d='M601.621 771.442c-12.235-7.080-27.899-2.899-34.979 9.338-12.878 22.261-43.744 38.419-73.39 38.419-34.894 0-66.427-22.008-78.469-51.198h71.618c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-71.619c12.043-29.189 43.576-51.195 78.47-51.195 29.646 0 60.51 16.157 73.389 38.416 7.082 12.238 22.739 16.414 34.979 9.339 12.237-7.082 16.419-22.741 9.339-34.979-21.794-37.667-70.197-63.974-117.707-63.974-33.693 0-67.634 13.378-93.118 36.704-20.086 18.384-33.429 41.11-38.909 65.691h-28.424c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h28.426c5.48 24.578 18.821 47.304 38.907 65.691 25.485 23.328 59.426 36.707 93.118 36.707 47.51 0 95.914-26.309 117.709-63.978 7.078-12.24 2.898-27.901-9.339-34.981z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagPound.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagPound.js
new file mode 100644
index 00000000..ef412896
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagPound.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BagPound
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M805.552 518.974c-36.64-61.614-83.275-113.138-120.747-154.538-27.622-30.517-55.981-61.859-66.106-83.613 16.971-9.899 28.48-21.4 39.403-32.323 9.998-9.997 9.998-26.206 0-36.203-8.744-8.744-22.237-9.84-32.173-3.29 11.35-33.974 34.282-76.966 80.63-111.728 9.866-7.398 13.054-20.779 7.586-31.834-1.334-2.694-33.413-65.984-99.746-65.984-41.496 0-54.408 26.096-61.346 40.115-5.534 11.186-5.75 11.622-15.454 11.622-19.342 0-41.432-11.218-64.818-23.094-27.73-14.082-56.403-28.643-88-28.643l-1.048 0.005c-59.917 0.626-114.237 53.234-120.234 59.229-5.248 5.248-7.96 12.514-7.434 19.917 0.526 7.402 4.238 14.213 10.176 18.666 37.691 28.267 64.56 65.146 79.866 109.606 0.24 0.701 0.469 1.39 0.701 2.083-9.93-6.504-23.382-5.398-32.107 3.328-9.998 9.997-9.998 26.206 0 36.203 10.928 10.928 22.44 22.432 39.421 32.334-10.11 21.707-38.486 53.067-66.125 83.602-37.47 41.4-84.106 92.923-120.746 154.538-43.64 73.386-64.853 146.467-64.853 223.427 0 104.744 38.634 181.034 114.829 226.752 62.366 37.419 147.898 54.848 269.171 54.848s206.805-17.429 269.17-54.848c76.197-45.718 114.83-122.008 114.83-226.752 0-76.96-21.213-150.042-64.848-223.426zM321.435 76.845c17.558-12.674 41.443-25.957 62.832-26.179l0.514-0.002c19.342 0 41.432 11.218 64.818 23.094 27.731 14.080 56.403 28.642 88.002 28.642 41.496 0 54.408-26.096 61.346-40.115 5.534-11.186 5.75-11.622 15.454-11.622 18.794 0 33.126 11.187 42.262 21.339-70.595 62.925-87.648 140.698-91.758 175.954-18.402 5.037-43.139 8.045-78.504 8.045-35.368 0-60.109-3.008-78.51-8.046-4.013-34.411-20.317-109.107-86.454-171.109zM486.4 972.8c-233.27 0-332.8-68.904-332.8-230.4 0-153.182 99.618-263.242 172.355-343.603 35.328-39.030 63.469-70.141 76.062-99.675 21.722 5.030 49.053 8.078 84.382 8.078 35.336 0 62.672-3.050 84.397-8.083 12.6 29.56 40.734 60.662 76.048 99.678 72.738 80.363 172.355 190.422 172.355 343.605 0 161.496-99.53 230.4-332.8 230.4z' />
+            <path d='M588.8 819.2h-179.2v-102.4h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-25.6c0-40.909 39.090-76.795 83.651-76.795 29.646 0 60.51 16.157 73.389 38.416 7.082 12.238 22.739 16.414 34.979 9.339 12.237-7.082 16.419-22.741 9.339-34.979-21.794-37.667-70.197-63.974-117.707-63.974-33.693 0-67.634 13.378-93.118 36.704-26.912 24.634-41.733 57.054-41.733 91.29v25.6h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v128c0 14.139 11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagYen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagYen.js
new file mode 100644
index 00000000..38c970dd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BagYen.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BagYen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M805.552 518.974c-36.64-61.614-83.275-113.138-120.747-154.538-27.622-30.517-55.981-61.859-66.106-83.613 16.971-9.899 28.48-21.4 39.403-32.323 9.998-9.997 9.998-26.206 0-36.203-8.744-8.744-22.237-9.84-32.173-3.29 11.35-33.974 34.282-76.966 80.63-111.728 9.866-7.398 13.054-20.779 7.586-31.834-1.334-2.694-33.413-65.984-99.746-65.984-41.496 0-54.408 26.096-61.346 40.115-5.534 11.186-5.75 11.622-15.454 11.622-19.342 0-41.432-11.218-64.818-23.094-27.73-14.082-56.403-28.643-88-28.643l-1.048 0.005c-59.917 0.626-114.237 53.234-120.234 59.229-5.248 5.248-7.96 12.514-7.434 19.917 0.526 7.402 4.238 14.213 10.176 18.666 37.691 28.267 64.56 65.146 79.866 109.606 0.24 0.701 0.469 1.39 0.701 2.083-9.93-6.504-23.382-5.398-32.107 3.328-9.998 9.997-9.998 26.206 0 36.203 10.928 10.928 22.44 22.432 39.421 32.334-10.11 21.707-38.486 53.067-66.125 83.602-37.47 41.4-84.106 92.923-120.746 154.538-43.64 73.386-64.853 146.467-64.853 223.427 0 104.744 38.634 181.034 114.829 226.752 62.366 37.419 147.898 54.848 269.171 54.848s206.805-17.429 269.17-54.848c76.197-45.718 114.83-122.008 114.83-226.752 0-76.96-21.213-150.042-64.848-223.426zM321.435 76.845c17.558-12.674 41.443-25.957 62.832-26.179l0.514-0.002c19.342 0 41.432 11.218 64.818 23.094 27.731 14.080 56.403 28.642 88.002 28.642 41.496 0 54.408-26.096 61.346-40.115 5.534-11.186 5.75-11.622 15.454-11.622 18.794 0 33.126 11.187 42.262 21.339-70.595 62.925-87.648 140.698-91.758 175.954-18.402 5.037-43.139 8.045-78.504 8.045-35.368 0-60.109-3.008-78.51-8.046-4.013-34.411-20.317-109.107-86.454-171.109zM486.4 972.8c-233.27 0-332.8-68.904-332.8-230.4 0-153.182 99.618-263.242 172.355-343.603 35.328-39.030 63.469-70.141 76.062-99.675 21.722 5.030 49.053 8.078 84.382 8.078 35.336 0 62.672-3.050 84.397-8.083 12.6 29.56 40.734 60.662 76.048 99.678 72.738 80.363 172.355 190.422 172.355 343.605 0 161.496-99.53 230.4-332.8 230.4z' />
+            <path d='M588.8 716.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-54.566l75.866-113.8c7.843-11.765 4.664-27.658-7.101-35.501-11.763-7.846-27.658-4.666-35.501 7.101l-81.098 121.648-81.099-121.648c-7.843-11.765-23.738-14.944-35.501-7.101-11.765 7.842-14.942 23.736-7.101 35.501l75.867 113.8h-54.566c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balance.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balance.js
new file mode 100644
index 00000000..452ed1af
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balance.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Balance
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.035 684.99l-153.6-614.4c-2.907-11.634-13.346-19.398-24.818-19.398-0.184 0-0.37 0.002-0.557 0.006h-613.286c-1.491-0.034-2.995 0.066-4.506 0.302-1.714 0.266-3.376 0.701-4.97 1.293-4.387 1.621-8.11 4.36-10.92 7.802-1.563 1.91-2.861 4.062-3.83 6.403-0.549 1.323-0.99 2.696-1.312 4.102l-153.472 613.888c-1.032 4.13-0.971 8.384 0.034 12.41l-0.034 0.010c0.808 3.234 8.642 32.445 34.37 61.848 23.926 27.347 68.344 59.944 144.066 59.944s120.139-32.597 144.066-59.942c25.728-29.403 33.562-58.614 34.37-61.848l-0.034-0.010c1.006-4.026 1.067-8.28 0.034-12.41l-145.646-582.59h548.824l-145.648 582.59c-1.032 4.13-0.971 8.384 0.034 12.41l-0.034 0.010c0.81 3.234 8.642 32.445 34.37 61.848 23.926 27.346 68.344 59.942 144.066 59.942s120.139-32.597 144.066-59.942c25.728-29.403 33.562-58.614 34.37-61.848l-0.034-0.010c1.006-4.026 1.067-8.28 0.034-12.41zM179.2 768c-62.17 0-95.486-27.736-112.552-51.2h225.102c-17.064 23.464-50.381 51.2-112.55 51.2zM300.011 665.6h-241.622l120.811-483.248 120.811 483.248zM793.6 182.352l120.813 483.248h-241.626l120.813-483.248zM793.6 768c-62.17 0-95.486-27.736-112.552-51.2h225.102c-17.064 23.464-50.381 51.2-112.55 51.2z' />
+            <path d='M793.6 921.6h-279.555l49.080-638.037c0.261-3.402-0.16-6.822-1.238-10.059l-51.2-153.6c-3.485-10.453-13.267-17.504-24.286-17.504s-20.802 7.051-24.286 17.504l-51.2 153.6c-1.080 3.237-1.501 6.658-1.238 10.059l49.080 638.037h-279.555c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h614.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM486.4 208.954l25.278 75.837-25.278 328.627-25.278-328.627 25.278-75.837z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balloon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balloon.js
new file mode 100644
index 00000000..5deeafdc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Balloon.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Balloon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 972.8c-0.227-0.018-0.363 0-0.557 0-211.214 0-391.478-85.298-523.205-247.099l23.21-11.605c7.36-3.68 12.502-10.674 13.821-18.797 1.318-8.122-1.349-16.382-7.168-22.202l-58.499-58.499c2.893-2.51 5.765-5.082 8.594-7.774 28.494-27.13 52.504-62.248 71.362-104.379 36.75-82.109 48.968-179.448 33.52-267.058-13.106-74.33-46.030-135.11-95.211-175.776-45.925-37.973-104.97-58.045-170.752-58.045-19.666 0-39.938 1.816-60.256 5.4-77.982 13.749-140.715 49.861-181.414 104.429-43.653 58.53-58.696 135.010-43.502 221.171 14.317 81.194 54.083 163.814 109.102 226.68 59.834 68.365 130.576 106.014 199.198 106.014 7.517 0 15.043-0.488 22.488-1.394l19.957 84.422c1.8 7.613 6.981 13.986 14.067 17.299 3.438 1.608 7.144 2.411 10.846 2.411 3.925 0 7.848-0.902 11.448-2.702l32.347-16.173c72.84 92.155 159.872 162.259 258.974 208.526 94.312 44.027 198.963 66.349 311.067 66.349 0.192 0 0.387 0 0.579 0 14.139-0.010 25.592-11.48 25.582-25.618-0.008-14.134-11.467-25.582-25.598-25.582zM155.971 525.526c-49.038-56.030-84.469-129.602-97.208-201.85-12.682-71.917-0.882-134.738 34.123-181.67 32.754-43.915 84.366-73.174 149.262-84.618 17.39-3.067 34.672-4.621 51.365-4.621 115.518 0 194.082 69.803 215.542 191.512 13.512 76.635 2.362 165.328-29.832 237.251-33.198 74.173-82.661 120.52-139.278 130.502-7.637 1.347-15.478 2.030-23.306 2.030-53.642-0.003-110.702-31.445-160.669-88.538zM388.637 650.734c4.856-2.029 9.654-4.258 14.389-6.704l40.157 40.158-41.709 20.853-12.837-54.307z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandage.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandage.js
new file mode 100644
index 00000000..f704825c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandage.js
@@ -0,0 +1,25 @@
+// Icon: Linear.Bandage
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M901.301 122.698c-44.976-44.978-106.973-69.747-174.566-69.747-79.242 0-158.738 34.050-218.106 93.419l-413.461 413.459c-54.947 54.947-87.904 125.806-92.8 199.522-4.979 74.998 19.571 143.594 69.13 193.152 44.978 44.978 106.974 69.749 174.568 69.749 79.24 0 158.738-34.050 218.106-93.419l413.461-413.461c54.949-54.947 87.904-125.805 92.8-199.523 4.979-74.995-19.571-143.592-69.131-193.15zM486.4 241.003l296.597 296.597-296.597 296.597-296.597-296.597 296.597-296.597zM246.067 971.050c-53.918 0-103.058-19.445-138.365-54.752-81.771-81.771-71.154-225.443 23.67-320.267l22.227-22.227 296.597 296.597-22.229 22.229c-49.838 49.837-116.139 78.421-181.901 78.421zM841.429 479.168l-22.229 22.229-296.597-296.597 22.229-22.227c49.838-49.838 116.139-78.422 181.902-78.422 53.917 0 103.056 19.445 138.365 54.752 81.771 81.771 71.152 225.442-23.67 320.266z' />
+            <path d='M512 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandages.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandages.js
new file mode 100644
index 00000000..23e6f0c2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bandages.js
@@ -0,0 +1,25 @@
+// Icon: Linear.Bandages
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M877.632 559.829l-22.229-22.229 22.229-22.229c54.949-54.947 87.904-125.805 92.8-199.523 4.979-74.997-19.57-143.594-69.13-193.152-44.976-44.978-106.973-69.747-174.566-69.747-79.242 0-158.738 34.050-218.106 93.419l-22.23 22.229-22.229-22.229c-59.368-59.368-138.866-93.419-218.106-93.419-67.595 0-129.59 24.77-174.568 69.747-49.558 49.558-74.109 118.155-69.13 193.152 4.896 73.717 37.853 144.576 92.8 199.523l22.229 22.229-22.229 22.229c-54.947 54.947-87.904 125.806-92.8 199.522-4.979 74.998 19.571 143.594 69.13 193.152 44.978 44.978 106.974 69.749 174.568 69.749 79.24 0 158.738-34.050 218.106-93.419l22.229-22.229 22.229 22.229c59.363 59.365 138.859 93.413 218.104 93.419 0.008 0 0.010 0 0.018 0 67.581 0 129.574-24.771 174.552-69.749 49.56-49.558 74.109-118.154 69.13-193.152-4.896-73.717-37.853-144.576-92.8-199.522zM544.832 182.573c49.838-49.838 116.139-78.422 181.902-78.422 53.917 0 103.056 19.445 138.365 54.752 81.771 81.771 71.154 225.442-23.67 320.267l-22.229 22.227-296.597-296.597 22.229-22.227zM782.997 537.6l-296.597 296.597-296.597-296.597 296.597-296.597 296.597 296.597zM131.373 479.168c-94.824-94.824-105.442-238.496-23.67-320.267 35.307-35.307 84.445-54.752 138.365-54.752 65.763 0 132.064 28.584 181.902 78.422l22.227 22.229-296.597 296.597-22.227-22.229zM427.968 892.629c-49.838 49.837-116.139 78.422-181.902 78.422-53.918 0-103.058-19.445-138.365-54.752-81.771-81.771-71.154-225.443 23.67-320.267l22.229-22.229 296.597 296.597-22.229 22.229zM865.099 916.299c-35.309 35.307-84.437 54.752-138.349 54.752-0.003 0-0.011 0-0.014 0-65.768-0.005-132.070-28.589-181.904-78.422l-22.229-22.229 296.597-296.597 22.229 22.229c94.822 94.822 105.442 238.494 23.67 320.267z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode.js
new file mode 100644
index 00000000..7bfd46b9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode.js
@@ -0,0 +1,22 @@
+// Icon: Linear.Barcode
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 153.6h51.2v716.8h-51.2v-716.8z' />
+            <path d='M819.2 153.6h25.6v716.8h-25.6v-716.8z' />
+            <path d='M179.2 153.6h25.6v716.8h-25.6v-716.8z' />
+            <path d='M614.4 153.6h51.2v716.8h-51.2v-716.8z' />
+            <path d='M102.4 153.6h51.2v716.8h-51.2v-716.8z' />
+            <path d='M384 153.6h25.6v716.8h-25.6v-716.8z' />
+            <path d='M307.2 153.6h51.2v716.8h-51.2v-716.8z' />
+            <path d='M998.4 153.6h25.6v716.8h-25.6v-716.8z' />
+            <path d='M870.4 153.6h51.2v716.8h-51.2v-716.8z' />
+            <path d='M435.2 153.6h25.6v716.8h-25.6v-716.8z' />
+            <path d='M512 153.6h51.2v716.8h-51.2v-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode2.js
new file mode 100644
index 00000000..b209c835
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode2.js
@@ -0,0 +1,33 @@
+// Icon: Linear.Barcode2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M819.2 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M179.2 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M614.4 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M102.4 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M384 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M307.2 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M998.4 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M870.4 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M435.2 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M512 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M0 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M102.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M179.2 819.2h25.6v51.2h-25.6v-51.2z' />
+            <path d='M307.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M384 819.2h25.6v51.2h-25.6v-51.2z' />
+            <path d='M435.2 819.2h25.6v51.2h-25.6v-51.2z' />
+            <path d='M512 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M819.2 819.2h25.6v51.2h-25.6v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M998.4 819.2h25.6v51.2h-25.6v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode3.js
new file mode 100644
index 00000000..48729eb0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Barcode3.js
@@ -0,0 +1,30 @@
+// Icon: Linear.Barcode3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 153.6h51.2v614.4h-51.2v-614.4z' />
+            <path d='M819.2 153.6h25.6v563.2h-25.6v-563.2z' />
+            <path d='M179.2 153.6h25.6v563.2h-25.6v-563.2z' />
+            <path d='M614.4 153.6h51.2v563.2h-51.2v-563.2z' />
+            <path d='M102.4 153.6h51.2v563.2h-51.2v-563.2z' />
+            <path d='M384 153.6h25.6v563.2h-25.6v-563.2z' />
+            <path d='M307.2 153.6h51.2v563.2h-51.2v-563.2z' />
+            <path d='M998.4 153.6h25.6v614.4h-25.6v-614.4z' />
+            <path d='M870.4 153.6h51.2v563.2h-51.2v-563.2z' />
+            <path d='M435.2 153.6h25.6v563.2h-25.6v-563.2z' />
+            <path d='M512 153.6h51.2v563.2h-51.2v-563.2z' />
+            <path d='M179.2 742.4v25.6h51.2v25.6h-51.2v76.8h76.8v-25.6h-51.2v-25.6h51.2v-76.8z' />
+            <path d='M102.4 742.4h25.6v128h-25.6v-128z' />
+            <path d='M307.2 742.4v25.6h51.2v25.6h-51.2v76.8h76.8v-25.6h-51.2v-25.6h51.2v-76.8z' />
+            <path d='M486.4 742.4v51.2h-25.6v-51.2h-25.6v76.8h51.2v51.2h25.6v-128z' />
+            <path d='M563.2 742.4v25.6h51.2v25.6h-51.2v25.6h51.2v25.6h-51.2v25.6h76.8v-128z' />
+            <path d='M768 768v-25.6h-76.8v76.8h51.2v25.6h-51.2v25.6h76.8v-76.8h-51.2v-25.6z' />
+            <path d='M819.2 742.4h25.6v128h-25.6v-128z' />
+            <path d='M972.8 768v-25.6h-76.8v128h76.8v-76.8h-51.2v-25.6h51.2zM947.2 819.2v25.6h-25.6v-25.6h25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baseball.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baseball.js
new file mode 100644
index 00000000..aa368b62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Baseball.js
@@ -0,0 +1,24 @@
+// Icon: Linear.Baseball
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M768 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BaseballBat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BaseballBat.js
new file mode 100644
index 00000000..a3dc52d8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BaseballBat.js
@@ -0,0 +1,12 @@
+// Icon: Linear.BaseballBat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M857.744 995.606c-0.003 0-0.003 0-0.005 0-16.984-0.002-32.555-6.218-43.84-17.504-12.099-12.099-19.299-27.89-20.275-44.459-1.026-17.448 5.197-34.267 17.075-46.144 0.437-0.437 1.149-2.562 0.555-6.326-0.966-6.123-4.669-12.782-10.155-18.27l-128-128c-57.277-57.275-122.702-77.611-191.971-99.141-79.874-24.829-162.469-50.499-243.229-131.259l-184.19-184.189c-69.869-69.869-69.869-183.557 0-253.427l13.176-13.178c33.728-33.725 78.73-52.299 126.715-52.299s92.987 18.574 126.714 52.301l184.189 184.189c79.731 79.733 112.285 154.675 143.768 227.152 27.733 63.843 53.926 124.144 112.232 182.45l128 128c7.662 7.662 16.093 10.381 20.981 10.381 2.242 0 3.346-0.51 3.616-0.781 11.082-11.083 26.125-17.186 42.357-17.186 17.706 0 35.293 7.43 48.246 20.386 25.862 25.861 22.541 71.262-7.403 101.206l-81.194 81.194c-15.829 15.826-36.739 24.906-57.362 24.906zM193.6 52.61c-34.31 0-66.454 13.248-90.51 37.304l-13.176 13.176c-49.907 49.907-49.907 131.112 0 181.019l184.187 184.189c71.822 71.822 148.282 95.587 222.222 118.57 72.155 22.427 146.766 45.618 212.978 111.832l128 128c13.16 13.16 21.869 29.669 24.525 46.49 3.085 19.534-2.357 37.946-14.925 50.514-3.539 3.539-2.923 12.074 3.2 18.197 2.074 2.072 5.299 2.507 7.64 2.507 7.042 0 14.954-3.704 21.16-9.91l81.194-81.194c5.472-5.474 9.035-12.334 9.774-18.824 0.234-2.053 0.47-7.134-2.371-9.976-3.426-3.426-7.816-5.389-12.043-5.389-1.808 0-4.344 0.379-6.154 2.189-10.173 10.173-24.314 15.776-39.818 15.778-20.214 0-41.058-9.25-57.186-25.378l-128-128c-65.184-65.184-94.57-132.834-122.989-198.253-29.576-68.088-60.162-138.496-133.011-211.347l-184.189-184.189c-24.054-24.056-56.198-37.304-90.509-37.304z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Basketball.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Basketball.js
new file mode 100644
index 00000000..04d4d2ae
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Basketball.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Basketball
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 193.664c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936s-50.594-252.067-142.464-343.936zM920.827 512h-254.445c6.293-106.384 51.579-207.131 127.077-282.506 73.456 73.208 120.95 172.432 127.368 282.506zM658.163 739.504c23.949 52.419 56.504 99.456 96.926 140.222-67.757 53.328-151.685 86.97-243.090 92.301v-408.827h103.062c3.144 61.285 17.597 120.48 43.101 176.304zM314.638 335.696c-23.947-52.419-56.504-99.458-96.928-140.224 67.758-53.328 151.685-86.97 243.090-92.299v408.827h-103.062c-3.142-61.285-17.597-120.478-43.099-176.304zM615.062 512h-103.062v-408.827c91.405 5.33 175.331 38.971 243.090 92.301-40.424 40.766-72.979 87.802-96.926 140.221-25.504 55.826-39.957 115.021-43.101 176.306zM357.738 563.2h103.062v408.827c-91.405-5.33-175.331-38.97-243.088-92.299 40.422-40.766 72.981-87.805 96.928-140.226 25.501-55.824 39.955-115.018 43.098-176.302zM179.342 229.493c75.496 75.376 120.782 176.125 127.075 282.507h-254.445c6.418-110.075 53.912-209.299 127.37-282.507zM51.973 563.2h254.445c-6.293 106.382-51.581 207.131-127.075 282.507-73.458-73.208-120.952-172.432-127.37-282.507zM793.459 845.706c-75.498-75.376-120.784-176.125-127.077-282.506h254.443c-6.416 110.075-53.91 209.298-127.366 282.506z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bathtub.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bathtub.js
new file mode 100644
index 00000000..62568517
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bathtub.js
@@ -0,0 +1,22 @@
+// Icon: Linear.Bathtub
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 1024h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M1024 640c0-42.349-34.451-76.8-76.8-76.8h-793.6v-486.4c0-14.115 11.485-25.6 25.6-25.6h76.8c7.288 0 20.446 5.451 25.6 10.603l6.43 6.43c-47.582 65.048-42.016 157.106 16.707 215.832 4.8 4.802 11.312 7.499 18.102 7.499 6.789 0 13.301-2.698 18.102-7.499l199.12-199.122c9.998-9.997 9.998-26.206 0-36.203-31.429-31.43-73.216-48.739-117.662-48.739-35.794 0-69.856 11.232-98.178 32.016l-6.419-6.418c-14.834-14.834-40.826-25.6-61.803-25.6h-76.8c-42.347 0-76.8 34.453-76.8 76.8v486.4h-25.6c-42.347 0-76.8 34.451-76.8 76.8 0 33.373 21.403 61.829 51.2 72.397v132.403c0 70.579 57.421 128 128 128h665.6c70.579 0 128-57.421 128-128v-132.403c29.797-10.566 51.2-39.024 51.2-72.397zM483.749 68.848l-158.883 158.883c-27.978-44.488-22.621-104.093 16.075-142.789 21.76-21.758 50.69-33.741 81.459-33.741 22.050 0 43.152 6.154 61.349 17.646zM844.8 921.6h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-128h819.2v128c0 42.349-34.451 76.8-76.8 76.8zM947.2 665.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+            <path d='M512 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryAlert.js
new file mode 100644
index 00000000..71a78725
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryAlert.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BatteryAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.2 614.4c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 716.8c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096 0-6.752 2.736-13.344 7.504-18.098 4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.346 7.504 18.098 0 6.736-2.736 13.344-7.504 18.096-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging.js
new file mode 100644
index 00000000..14ca6680
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BatteryCharging
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging2.js
new file mode 100644
index 00000000..6125b1c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.BatteryCharging2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging3.js
new file mode 100644
index 00000000..ce03de82
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging3.js
@@ -0,0 +1,16 @@
+// Icon: Linear.BatteryCharging3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging4.js
new file mode 100644
index 00000000..638a13fd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging4.js
@@ -0,0 +1,17 @@
+// Icon: Linear.BatteryCharging4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging5.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging5.js
new file mode 100644
index 00000000..9e493b16
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging5.js
@@ -0,0 +1,18 @@
+// Icon: Linear.BatteryCharging5
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 460.8c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging6.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging6.js
new file mode 100644
index 00000000..7b27c157
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging6.js
@@ -0,0 +1,19 @@
+// Icon: Linear.BatteryCharging6
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 460.8c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging7.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging7.js
new file mode 100644
index 00000000..ab1352ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryCharging7.js
@@ -0,0 +1,20 @@
+// Icon: Linear.BatteryCharging7
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h256c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.347 0 76.8-34.453 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M435.192 819.206c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l88.358-220.893h-166.989c-8.494 0-16.435-4.214-21.198-11.248s-5.726-15.971-2.57-23.859l102.4-256c5.251-13.128 20.152-19.512 33.277-14.261 13.128 5.251 19.512 20.149 14.261 33.277l-88.358 220.891h166.989c8.496 0 16.435 4.214 21.198 11.248s5.725 15.971 2.57 23.859l-102.4 256c-4.002 10.010-13.618 16.099-23.776 16.099z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 460.8c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryEmpty.js
new file mode 100644
index 00000000..9b486fd3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryEmpty.js
@@ -0,0 +1,12 @@
+// Icon: Linear.BatteryEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryError.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryError.js
new file mode 100644
index 00000000..1c90446f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryError.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BatteryError
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M603 618.701l-121.65-81.101 121.65-81.101c11.765-7.842 14.944-23.736 7.101-35.501-7.84-11.765-23.736-14.941-35.501-7.101l-139.4 92.936-139.4-92.933c-11.765-7.843-27.658-4.666-35.501 7.101-7.842 11.765-4.664 27.658 7.101 35.501l121.65 81.098-121.65 81.101c-11.765 7.842-14.942 23.736-7.101 35.501 4.933 7.4 13.051 11.403 21.325 11.403 4.878 0 9.813-1.394 14.176-4.302l139.4-92.936 139.4 92.933c4.365 2.91 9.298 4.302 14.176 4.302 8.272 0 16.39-4.003 21.323-11.403 7.845-11.763 4.666-27.656-7.099-35.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryFull.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryFull.js
new file mode 100644
index 00000000..ee796d1d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryFull.js
@@ -0,0 +1,19 @@
+// Icon: Linear.BatteryFull
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow1.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow1.js
new file mode 100644
index 00000000..28acbf11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow1.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BatteryLow1
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow2.js
new file mode 100644
index 00000000..58c4cc12
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BatteryLow2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow3.js
new file mode 100644
index 00000000..8eade6c1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryLow3.js
@@ -0,0 +1,15 @@
+// Icon: Linear.BatteryLow3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid1.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid1.js
new file mode 100644
index 00000000..fcdc7103
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid1.js
@@ -0,0 +1,16 @@
+// Icon: Linear.BatteryMid1
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid2.js
new file mode 100644
index 00000000..86038453
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid2.js
@@ -0,0 +1,17 @@
+// Icon: Linear.BatteryMid2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid3.js
new file mode 100644
index 00000000..cc85644f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryMid3.js
@@ -0,0 +1,18 @@
+// Icon: Linear.BatteryMid3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M128 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 716.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 716.8c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryPower.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryPower.js
new file mode 100644
index 00000000..f3a116d9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BatteryPower.js
@@ -0,0 +1,12 @@
+// Icon: Linear.BatteryPower
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6h-25.6v-76.8c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-76.8h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-179.2h207.376c11.893 58.355 63.61 102.4 125.424 102.4h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-25.6c0-14.139-11.462-25.6-25.6-25.6h-102.4c-61.814 0-113.531 44.045-125.424 102.4h-207.376v-179.2c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v409.6zM460.8 614.4h-76.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h76.8v153.6zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Beaker.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Beaker.js
new file mode 100644
index 00000000..4191ee79
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Beaker.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Beaker
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M846.566 806.128l-232.166-428.616v-244.355c30.883-12.573 51.2-31.157 51.2-56.357 0-53.053-90.003-76.8-179.2-76.8-89.198 0-179.2 23.747-179.2 76.8 0 25.202 20.317 43.786 51.2 56.357v244.355l-232.166 428.616c-30.414 56.152-33.333 110.301-8.213 152.474 25.117 42.173 74.12 65.398 137.979 65.398h460.8c63.861 0 112.862-23.226 137.981-65.398 25.12-42.171 22.202-96.322-8.214-152.474zM486.4 51.2c70.757 0 113.656 16.138 125.677 25.6-12.021 9.462-54.92 25.6-125.677 25.6s-113.656-16.138-125.677-25.6c12.021-9.462 54.92-25.6 125.677-25.6zM486.4 153.6c26.307 0 52.683-2.067 76.8-6.341v236.637c-0.005 0.898 0.038 1.798 0.131 2.698 0.014 0.139 0.043 0.274 0.059 0.411 0.082 0.691 0.176 1.379 0.315 2.067 0.086 0.424 0.206 0.834 0.312 1.25 0.099 0.389 0.181 0.779 0.301 1.165 0.216 0.707 0.472 1.397 0.746 2.075 0.037 0.094 0.064 0.19 0.102 0.283 0.352 0.84 0.744 1.658 1.178 2.45l173.592 320.474c-37.15-0.667-62.552-16.429-95.907-45.011-21.416-18.352-49.275-41.152-80.912-60.699-1.774-54.918-46.973-99.058-102.317-99.058-38.822 0-72.667 21.715-90.029 53.638-22.026 2.786-43.595 7.952-64.363 15.357l100.054-184.715c0.43-0.786 0.819-1.597 1.166-2.429 0.056-0.134 0.094-0.27 0.149-0.405 0.254-0.642 0.499-1.288 0.701-1.954 0.126-0.413 0.216-0.829 0.32-1.245 0.099-0.39 0.213-0.774 0.293-1.173 0.144-0.709 0.245-1.422 0.326-2.136 0.013-0.115 0.038-0.227 0.050-0.342 0.093-0.902 0.136-1.805 0.131-2.706v-236.632c24.118 4.274 50.494 6.341 76.802 6.341zM460.8 563.2c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2-51.2-22.968-51.2-51.2 22.968-51.2 51.2-51.2zM810.792 932.402c-15.515 26.051-48.896 40.398-93.992 40.398h-460.8c-45.096 0-78.475-14.347-93.992-40.398s-12.234-62.235 9.245-101.89l92.256-170.318c28.677-19.968 60.995-33.758 95.021-40.656 2.686 54.086 47.53 97.262 102.27 97.262 38.544 0 72.168-21.414 89.637-52.962 22.994 15.536 43.683 32.579 60.275 46.797 41.328 35.414 77.774 57.365 131.688 57.365 8.176 0 16.323-0.573 24.382-1.67l34.766 64.182c21.478 39.654 24.76 75.838 9.243 101.89z' />
+            <path d='M332.8 768c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM332.8 870.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M486.4 768c-6.736 0-13.328 2.736-18.096 7.502-4.768 4.754-7.504 11.362-7.504 18.098s2.736 13.344 7.504 18.096c4.768 4.768 11.36 7.504 18.096 7.504s13.344-2.736 18.096-7.504c4.768-4.752 7.504-11.36 7.504-18.096s-2.736-13.344-7.504-18.098c-4.752-4.766-11.36-7.502-18.096-7.502z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bed.js
new file mode 100644
index 00000000..da354be7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bed.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Bed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 921.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M128 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M955.296 583.333l-121.219-363.656c-10.174-30.526-39.302-55.587-71.088-63.474-1.101-4.883-2.368-9.507-3.802-13.805-11.6-34.802-31.536-39.998-42.387-39.998h-204.8c-6.515 0-16.304 1.883-25.6 10.914-9.294-9.030-19.085-10.914-25.6-10.914h-204.8c-10.851 0-30.787 5.197-42.389 39.998-1.434 4.299-2.701 8.923-3.8 13.805-31.786 7.886-60.912 32.947-71.088 63.474l-121.219 363.656c-9.814 29.446-17.504 76.829-17.504 107.867v102.4c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-31.038-7.69-78.421-17.504-107.867zM520.040 153.6h188.718c3.563 8.045 8.040 26.301 8.040 51.2s-4.478 43.155-8.040 51.2h-188.718c-3.563-8.045-8.040-26.301-8.040-51.2s4.478-43.155 8.040-51.2zM264.040 153.6h188.718c3.563 8.045 8.040 26.301 8.040 51.2s-4.478 43.155-8.040 51.2h-188.718c-3.563-8.045-8.040-26.301-8.040-51.2s4.478-43.155 8.040-51.2zM187.296 235.867c2.766-8.301 9.483-16.21 17.669-21.976 0.706 19.843 3.712 38.506 8.646 53.309 11.602 34.803 31.538 40 42.389 40h204.8c6.515 0 16.306-1.883 25.6-10.914 9.296 9.030 19.085 10.914 25.6 10.914h204.8c10.851 0 30.787-5.197 42.387-39.998 4.934-14.803 7.941-33.467 8.648-53.309 8.184 5.766 14.901 13.675 17.669 21.976l40.845 122.531h-679.898l40.845-122.533zM129.386 409.6h714.030l63.307 189.923c1.618 4.85 3.181 10.422 4.651 16.426-4.968-1.014-10.11-1.549-15.374-1.549h-819.2c-5.264 0-10.406 0.534-15.376 1.549 1.47-6.003 3.035-11.574 4.653-16.426l63.309-189.923zM921.6 793.6c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BenchPress.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BenchPress.js
new file mode 100644
index 00000000..83485371
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BenchPress.js
@@ -0,0 +1,18 @@
+// Icon: Linear.BenchPress
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 512c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M998.4 512c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M512 307.2c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 153.6c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M896 256c-42.349 0-76.8 34.453-76.8 76.8v76.8h-55.603c-10.568-29.797-39.024-51.2-72.397-51.2s-61.829 21.403-72.397 51.2h-213.606c-10.568-29.797-39.024-51.2-72.397-51.2s-61.829 21.403-72.397 51.2h-55.603v-76.8c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8v-76.8h55.603c10.568 29.797 39.024 51.2 72.397 51.2s61.829-21.403 72.397-51.2h213.606c10.568 29.797 39.024 51.2 72.397 51.2s61.829-21.403 72.397-51.2h55.603v76.8c0 42.349 34.451 76.8 76.8 76.8s76.8-34.451 76.8-76.8v-204.8c0-42.347-34.451-76.8-76.8-76.8zM153.6 537.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8zM332.8 460.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6c14.114 0 25.595 11.48 25.6 25.592 0 0.003 0 0.005 0 0.008s0 0.005 0 0.008c-0.005 14.112-11.486 25.592-25.6 25.592zM691.2 460.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM921.6 537.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M691.2 1024h-358.4c-42.347 0-76.8-34.451-76.8-76.8v-358.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.4c0 14.115 11.485 25.6 25.6 25.6h358.4c14.115 0 25.6-11.485 25.6-25.6v-358.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M742.4 307.2c-14.139 0-25.6-11.462-25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-358.4c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-204.8c0-42.347 34.453-76.8 76.8-76.8h358.4c42.349 0 76.8 34.453 76.8 76.8v204.8c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M384.030 921.605c-1.398 0-2.814-0.115-4.238-0.354-13.946-2.325-23.366-15.514-21.043-29.461 0.533-3.197 13.309-79.189 35.875-156.56 34.232-117.366 71.53-172.030 117.376-172.030s83.144 54.664 117.376 172.032c22.566 77.37 35.342 153.363 35.875 156.56 2.325 13.946-7.096 27.134-21.040 29.459-13.947 2.326-27.136-7.094-29.462-21.038-0.126-0.757-12.882-76.544-34.634-151.019-12.488-42.754-25.371-76.507-38.294-100.33-14.789-27.261-25.974-34.464-29.821-34.464-3.858 0-15.069 7.23-29.891 34.592-12.938 23.888-25.835 57.725-38.333 100.576-21.723 74.478-34.4 149.888-34.525 150.64-2.086 12.522-12.933 21.397-25.221 21.397z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle.js
new file mode 100644
index 00000000..51fb5937
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bicycle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 665.6c-31.998 0-62.058 8.438-88.088 23.194l-80.074-103.728 31.334-73.066h34.427c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-51.027c-0.102 0-0.206 0-0.309 0h-51.064c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h12.262l-21.958 51.2h-277.744l-12.467-16.15 24.39-54.662c8.744-19.594 27.048-31.587 34.101-31.587h36.616c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-36.616c-30.344 0-65.104 26.622-80.858 61.925l-30.608 68.597c-0.029 0.064-0.058 0.128-0.086 0.194l-58.931 132.067c-15.549-4.416-31.954-6.782-48.901-6.782-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2c0-63.675-33.389-119.694-83.573-151.486l41.571-93.166 156.51 202.747c-7.906 12.061-12.523 26.451-12.523 41.906 0 42.349 34.544 76.8 77.006 76.8 33.462 0 61.995-21.403 72.59-51.2h57.451c12.461 86.726 87.243 153.6 177.365 153.6 98.811 0 179.2-80.389 179.2-179.2s-80.387-179.2-179.198-179.2zM307.2 844.8c0 70.579-57.421 128-128 128s-128-57.421-128-128 57.421-128 128-128c9.518 0 18.786 1.077 27.718 3.058l-51.096 114.51c-5.762 12.91 0.035 28.048 12.946 33.81 3.39 1.512 6.931 2.229 10.418 2.229 9.794 0 19.144-5.653 23.392-15.174l51.070-114.454c32.392 23.248 53.552 61.198 53.552 104.022zM589.482 788.296l64.058-149.366 62.677 81.192c-25.688 26.486-43.288 60.851-48.781 99.078h-57.451c-4.24-11.925-11.349-22.502-20.502-30.904zM747.958 761.242l44.741 57.958h-73.323c4.454-21.854 14.518-41.68 28.582-57.958zM608.347 614.4l-65.95 153.779c-1.656-0.106-3.32-0.179-5.003-0.179-8.312 0-16.315 1.338-23.822 3.778l-121.488-157.378h216.264zM537.394 870.4c-14.23 0-25.806-11.485-25.806-25.6s11.576-25.6 25.806-25.6 25.806 11.485 25.806 25.6-11.576 25.6-25.806 25.6zM844.8 972.8c-61.814 0-113.531-44.045-125.426-102.4h125.426c9.762 0 18.672-5.55 22.976-14.31s3.251-19.206-2.712-26.933l-76.616-99.25c17.016-8.379 36.139-13.107 56.352-13.107 70.579 0 128 57.421 128 128s-57.421 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle2.js
new file mode 100644
index 00000000..57c6c01c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bicycle2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Bicycle2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 460.902c-42.405 0-76.902-34.499-76.902-76.902s34.499-76.902 76.902-76.902 76.902 34.499 76.902 76.902-34.498 76.902-76.902 76.902zM281.6 358.298c-14.173 0-25.702 11.531-25.702 25.702s11.531 25.702 25.702 25.702 25.702-11.531 25.702-25.702-11.53-25.702-25.702-25.702z' />
+            <path d='M486.4 870.4c-14.138 0-25.6-11.461-25.6-25.6v-153.498c0-39.531 29.77-79.022 67.774-89.902l76.795-21.984-166.909-111.274-87.56 87.56c-4.8 4.802-11.312 7.499-18.101 7.499h-102.502c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h91.899l94.901-94.901c8.629-8.629 22.149-9.966 32.302-3.2l187.798 125.2c28.149 18.765 28.066 40.824 26.723 49.437s-7.974 29.653-40.498 38.966l-80.758 23.118c-16.048 4.595-30.666 23.986-30.666 40.68v153.498c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M768 1024c-112.926 0-204.8-91.874-204.8-204.8s91.874-204.8 204.8-204.8 204.8 91.874 204.8 204.8-91.874 204.8-204.8 204.8zM768 665.6c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6z' />
+            <path d='M204.749 1024c-112.899 0-204.749-91.85-204.749-204.749s91.85-204.749 204.749-204.749 204.749 91.85 204.749 204.749-91.851 204.749-204.749 204.749zM204.749 665.702c-84.667 0-153.549 68.882-153.549 153.549s68.882 153.549 153.549 153.549 153.549-68.882 153.549-153.549-68.882-153.549-153.549-153.549z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars.js
new file mode 100644
index 00000000..bcc4cad1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Binoculars
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.4 870.4c-32.349 0-63.378-9.91-87.374-27.909-25.819-19.363-40.626-46.515-40.626-74.491 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 24.168 32.845 51.2 76.8 51.2 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M1023.893 761.955c-2.269-102.637-61.44-245.126-111.272-347.554-53.754-110.491-120.568-221.755-152.117-253.302-24.099-24.098-65.446-26.699-82.104-26.699s-58.005 2.602-82.099 26.698c-11.982 11.982-25.275 36.747-33.010 129.576-0.683 8.174-1.309 16.76-1.886 25.744-14.739-5.952-31.606-9.218-49.405-9.218-17.784 0-34.659 3.306-49.402 9.274-0.574-9.005-1.203-17.61-1.886-25.8-7.736-92.83-21.029-117.595-33.010-129.576-24.098-24.096-65.443-26.698-82.102-26.698s-58.005 2.602-82.102 26.698c-31.547 31.547-98.365 142.811-152.118 253.302-49.829 102.429-109.003 244.915-111.27 347.555-0.067 2.008-0.109 4.021-0.109 6.045 0 112.926 103.357 204.8 230.4 204.8 126.718 0 229.861-91.406 230.387-203.936 0.096-2.050 0.613-13.307 1.317-31.366 4.886-9.709 23.288-20.698 49.896-20.698s45.010 10.989 49.898 20.698c0.701 17.99 1.216 29.234 1.315 31.347 0.512 112.536 103.661 203.955 230.387 203.955 127.043 0 230.4-91.874 230.4-204.8 0-2.024-0.042-4.037-0.107-6.045zM613.902 299.955c6.672-84.549 17.246-100.878 18.746-102.797 15.675-15.299 76.251-15.251 91.648 0.144 21.037 21.038 82.187 115.971 142.283 239.498 30.552 62.8 54.96 120.968 72.648 172.622-39.717-28.874-90.434-46.222-145.627-46.222-74.798 0-141.374 31.854-183.494 81.098-1.131-43.71-2.058-95.122-2.104-147.363-0.070-80.189 1.914-146.462 5.901-196.979zM157.421 436.8c60.093-123.525 121.243-218.459 142.282-239.498 15.395-15.395 75.973-15.443 91.65-0.144 1.498 1.918 12.066 18.238 18.738 102.73 3.989 50.49 5.976 116.731 5.907 196.88-0.045 52.288-0.973 103.765-2.107 147.526-42.115-49.24-108.691-81.094-183.49-81.094-55.194 0-105.91 17.349-145.63 46.222 17.691-51.656 42.099-109.824 72.651-172.622zM230.4 921.6c-98.811 0-179.2-68.904-179.2-153.6 0-1.342 0.038-2.733 0.066-4.106 2.547-82.805 81.925-149.494 179.134-149.494 98.811 0 179.2 68.904 179.2 153.6s-80.389 153.6-179.2 153.6zM512 665.6c-17.347 0-33.546 3.098-47.725 8.581 1.506-50.371 2.925-115.368 2.925-181.381 0-43.528-0.61-83.024-1.816-118.219 7.834-8.461 24.986-16.181 46.616-16.181 22.406 0 38.987 7.869 46.618 16.15-1.208 35.203-1.818 74.71-1.818 118.25 0 66.013 1.419 131.010 2.923 181.381-14.178-5.483-30.376-8.581-47.723-8.581zM793.6 921.6c-98.811 0-179.2-68.904-179.2-153.6s80.389-153.6 179.2-153.6c97.21 0 176.587 66.69 179.134 149.494 0.029 1.373 0.066 2.766 0.066 4.106 0 84.696-80.389 153.6-179.2 153.6z' />
+            <path d='M793.6 870.4c-32.349 0-63.378-9.91-87.374-27.909-25.818-19.363-40.626-46.515-40.626-74.491 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 24.168 32.843 51.2 76.8 51.2 14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars2.js
new file mode 100644
index 00000000..5b0e919d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Binoculars2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Binoculars2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1023.893 761.955c-2.269-102.637-61.44-245.126-111.272-347.554-53.754-110.491-120.568-221.755-152.117-253.302-24.099-24.098-65.446-26.699-82.104-26.699s-58.005 2.602-82.099 26.698c-11.982 11.982-25.275 36.747-33.010 129.576-0.683 8.174-1.309 16.76-1.886 25.744-14.739-5.952-31.606-9.218-49.405-9.218-17.784 0-34.659 3.306-49.402 9.274-0.574-9.005-1.203-17.61-1.886-25.8-7.736-92.83-21.029-117.595-33.010-129.576-24.098-24.096-65.443-26.698-82.102-26.698s-58.005 2.602-82.102 26.698c-31.547 31.547-98.365 142.811-152.118 253.302-49.829 102.429-109.003 244.915-111.27 347.555-0.067 2.008-0.109 4.021-0.109 6.045 0 112.926 103.357 204.8 230.4 204.8 126.718 0 229.861-91.406 230.387-203.936 0.096-2.050 0.613-13.307 1.317-31.366 4.886-9.709 23.288-20.698 49.896-20.698s45.010 10.989 49.898 20.698c0.701 17.99 1.216 29.234 1.315 31.347 0.512 112.536 103.661 203.955 230.387 203.955 127.043 0 230.4-91.874 230.4-204.8 0-2.024-0.042-4.037-0.107-6.045zM613.902 299.955c6.672-84.549 17.246-100.878 18.746-102.797 15.675-15.299 76.251-15.251 91.648 0.144 21.037 21.038 82.187 115.971 142.283 239.498 30.552 62.8 54.96 120.968 72.648 172.622-39.717-28.874-90.434-46.222-145.627-46.222-74.798 0-141.374 31.854-183.494 81.098-1.131-43.71-2.058-95.122-2.104-147.363-0.070-80.189 1.914-146.462 5.901-196.979zM157.421 436.8c60.093-123.525 121.243-218.459 142.282-239.498 15.395-15.395 75.973-15.443 91.65-0.144 1.498 1.918 12.066 18.238 18.738 102.73 3.989 50.49 5.976 116.731 5.907 196.88-0.045 52.288-0.973 103.765-2.107 147.526-42.115-49.24-108.691-81.094-183.49-81.094-55.194 0-105.91 17.349-145.63 46.222 17.691-51.656 42.099-109.824 72.651-172.622zM230.4 921.6c-98.811 0-179.2-68.904-179.2-153.6 0-1.342 0.038-2.733 0.066-4.106 2.547-82.805 81.925-149.494 179.134-149.494 98.811 0 179.2 68.904 179.2 153.6s-80.389 153.6-179.2 153.6zM512 665.6c-17.347 0-33.546 3.098-47.725 8.581 1.506-50.371 2.925-115.368 2.925-181.381 0-43.528-0.61-83.024-1.816-118.219 7.834-8.461 24.986-16.181 46.616-16.181 22.406 0 38.987 7.869 46.618 16.15-1.208 35.203-1.818 74.71-1.818 118.25 0 66.013 1.419 131.010 2.923 181.381-14.178-5.483-30.376-8.581-47.723-8.581zM793.6 921.6c-98.811 0-179.2-68.904-179.2-153.6s80.389-153.6 179.2-153.6c97.21 0 176.587 66.69 179.134 149.494 0.029 1.373 0.066 2.766 0.066 4.106 0 84.696-80.389 153.6-179.2 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Blog.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Blog.js
new file mode 100644
index 00000000..85dbaa21
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Blog.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Blog
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M530.101 621.899l-128-128c-6.658-6.659-16.434-9.125-25.458-6.419l-256 76.8c-8.648 2.594-15.29 9.552-17.48 18.31l-102.4 409.6c-2.181 8.725 0.376 17.954 6.734 24.31 4.861 4.862 11.397 7.499 18.102 7.499 2.067 0 4.152-0.25 6.208-0.765l409.6-102.4c8.76-2.19 15.717-8.832 18.312-17.48l76.8-256c2.707-9.019 0.242-18.797-6.419-25.456zM414.864 874.698l-305.808 76.451 139.453-139.454c10.026 4.806 21.25 7.506 33.091 7.506 42.347 0 76.8-34.451 76.8-76.8s-34.453-76.8-76.8-76.8-76.8 34.451-76.8 76.8c0 11.842 2.698 23.064 7.506 33.091l-139.454 139.454 76.453-305.81 227.406-68.222 106.376 106.374-68.222 227.41zM256 742.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6z' />
+            <path d='M691.2 614.4c-14.139 0-25.6-11.461-25.6-25.6 0-127.043-103.357-230.4-230.4-230.4-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c155.275 0 281.6 126.325 281.6 281.6 0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 614.4c-14.139 0-25.6-11.461-25.6-25.6 0-211.738-172.261-384-384-384-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c116.245 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 614.4c-14.139 0-25.6-11.461-25.6-25.6 0-296.434-241.166-537.6-537.6-537.6-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c79.477 0 156.589 15.571 229.195 46.282 70.117 29.658 133.083 72.107 187.15 126.174 54.066 54.067 96.517 117.032 126.173 187.149 30.71 72.606 46.282 149.718 46.282 229.195 0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Boat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Boat.js
new file mode 100644
index 00000000..a658371e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Boat.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Boat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1019.166 727.432c-4.81-6.675-12.538-10.632-20.766-10.632h-435.2v-51.2h332.8c10.544 0 20.003-6.469 23.84-16.29 3.834-9.822 1.253-20.994-6.499-28.142-0.566-0.522-57.458-53.306-128.973-147.632-65.819-86.808-157.888-227.627-222.715-405.504-4.254-11.67-16.272-18.6-28.504-16.443-12.232 2.16-21.149 12.79-21.149 25.211v640h-486.4c-8.229 0-15.957 3.957-20.768 10.632-4.811 6.678-6.12 15.258-3.518 23.064 36.84 110.522 76.462 187.416 160.037 229.202 74.902 37.451 176.853 44.302 350.65 44.302s275.747-6.851 350.648-44.302c83.573-41.786 123.197-118.68 160.035-229.202 2.606-7.806 1.296-16.389-3.517-23.064zM563.2 205.336c59.614 128.139 128.53 230.885 181.214 300.248 35.387 46.59 67.035 83.118 90.709 108.816h-271.923v-409.064zM839.752 933.902c-65.397 32.699-165.643 38.898-327.752 38.898s-262.354-6.198-327.752-38.898c-53.258-26.629-88.048-72.933-122.538-165.902h900.579c-34.49 92.97-69.28 139.274-122.538 165.902z' />
+            <path d='M435.2 665.6h-307.2c-10.936 0-20.666-6.947-24.214-17.293s-0.134-21.802 8.498-28.515c0.557-0.434 57.24-44.834 122.282-116.189 59.394-65.16 138.202-166.856 176.349-281.299 3.97-11.912 15.997-19.186 28.387-17.174 12.394 2.011 21.499 12.715 21.499 25.27v409.6c0 14.139-11.462 25.6-25.6 25.6zM196.677 614.4h212.923v-264.043c-42.174 76-94.87 141.382-137.894 188.504-27.738 30.379-53.773 55.878-75.029 75.539z' />
+            <path d='M230.4 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bold.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bold.js
new file mode 100644
index 00000000..9a84b96b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bold.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Bold
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 460.8h-128c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h128c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM409.6 409.6h102.4c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-102.4v102.4z' />
+            <path d='M563.2 768h-179.2c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h179.2c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM409.6 716.8h153.6c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-153.6v102.4z' />
+            <path d='M563.2 921.6h-281.6c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h230.4c141.16 0 256 114.842 256 256 0 42.208-10.328 83.355-30.035 120.251 51.886 48.382 81.235 115.346 81.235 186.949 0 141.16-114.84 256-256 256zM281.6 153.6c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h281.6c112.926 0 204.8-91.874 204.8-204.8 0-63.322-28.72-122.125-78.797-161.334-10.797-8.453-12.966-23.842-5.134-34.917 21.416-33.088 32.731-71.43 32.731-110.949 0-112.928-91.874-204.8-204.8-204.8h-230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bone.js
new file mode 100644
index 00000000..49dd46de
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bone.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024c-70.579 0-128-57.421-128-128v-76.8c0-21.246-13.682-54.278-28.704-69.301l-311.595-311.594c-15.022-15.024-48.054-28.706-69.301-28.706h-76.8c-70.579 0-128-57.421-128-128s57.421-128 128-128c14.115 0 25.6-11.485 25.6-25.6 0-70.579 57.421-128 128-128s128 57.421 128 128v76.8c0 21.246 13.682 54.278 28.706 69.301l311.594 311.595c15.024 15.024 48.054 28.704 69.301 28.704h76.8c70.579 0 128 57.421 128 128s-57.421 128-128 128c-14.115 0-25.6 11.485-25.6 25.6 0 70.579-57.421 128-128 128zM281.6 51.2c-42.347 0-76.8 34.453-76.8 76.8s-34.453 76.8-76.8 76.8-76.8 34.453-76.8 76.8 34.453 76.8 76.8 76.8h76.8c35.234 0 80.592 18.787 105.506 43.701l311.594 311.595c24.914 24.914 43.701 70.27 43.701 105.504v76.8c0 42.349 34.451 76.8 76.8 76.8s76.8-34.451 76.8-76.8 34.451-76.8 76.8-76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8h-76.8c-35.234 0-80.59-18.787-105.504-43.701l-311.595-311.594c-24.912-24.912-43.701-70.27-43.701-105.506v-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book.js
new file mode 100644
index 00000000..81f6f82c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Book
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M965.301 237.899c-38.886-38.888-127.301-84.299-248.501-84.299-105.082 0-185.518 34.136-230.4 68.56-44.88-34.424-125.32-68.56-230.4-68.56-121.2 0-209.614 45.411-248.501 84.299-4.802 4.8-7.499 11.31-7.499 18.101v563.2c0 10.355 6.237 19.69 15.803 23.651s20.576 1.77 27.899-5.55c25.739-25.738 99.419-69.301 212.298-69.301s186.558 43.563 212.299 69.301c9.997 9.997 26.206 9.997 36.203 0 25.739-25.738 99.418-69.301 212.298-69.301s186.558 43.563 212.299 69.301c4.898 4.899 11.443 7.499 18.107 7.499 3.298 0 6.624-0.637 9.79-1.949 9.566-3.962 15.803-13.296 15.803-23.651v-563.2c0-6.79-2.698-13.301-7.499-18.101zM51.2 768.182v-500.91c30.901-25.923 101.408-62.472 204.8-62.472 103.429 0 173.915 36.565 204.8 62.49v500.912c-47.026-27.766-117.371-51.402-204.8-51.402-87.416 0-157.776 23.624-204.8 51.382zM921.6 768.182c-47.024-27.758-117.384-51.382-204.8-51.382-87.429 0-157.774 23.635-204.8 51.402v-500.912c30.885-25.925 101.371-62.49 204.8-62.49 103.392 0 173.899 36.549 204.8 62.472v500.91z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book2.js
new file mode 100644
index 00000000..a9fedda5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Book2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Book2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 921.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 153.6c-14.139 0-25.6 11.462-25.6 25.6v768c0 14.115-11.485 25.6-25.6 25.6h-563.2c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h460.8c42.349 0 76.8-34.451 76.8-76.8v-614.4c0-42.347-34.451-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v768c0 70.579 57.421 128 128 128h563.2c42.349 0 76.8-34.451 76.8-76.8v-768c0-14.138-11.461-25.6-25.6-25.6zM179.2 102.4h512c14.115 0 25.6 11.485 25.6 25.6v614.4c0 14.115-11.485 25.6-25.6 25.6h-460.8c-28.794 0-55.392 9.563-76.8 25.67v-665.67c0-14.115 11.485-25.6 25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark.js
new file mode 100644
index 00000000..32fcade6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Bookmark
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 921.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 153.6c-14.139 0-25.6 11.462-25.6 25.6v768c0 14.115-11.485 25.6-25.6 25.6h-563.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8h460.8c42.349 0 76.8-34.451 76.8-76.8v-614.4c0-42.347-34.451-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v768c0 70.579 57.421 128 128 128h563.2c42.349 0 76.8-34.451 76.8-76.8v-768c0-14.138-11.461-25.6-25.6-25.6zM307.2 102.4h102.4v322.197l-33.099-33.098c-9.997-9.998-26.206-9.998-36.203 0l-33.098 33.098v-322.197zM153.6 128c0-14.115 11.485-25.6 25.6-25.6h76.8v384c0 10.354 6.237 19.69 15.803 23.651 9.565 3.96 20.576 1.771 27.899-5.55l58.698-58.698 58.699 58.698c4.898 4.899 11.445 7.499 18.107 7.499 3.298 0 6.624-0.637 9.792-1.949 9.565-3.962 15.802-13.298 15.802-23.651v-384h230.4c14.115 0 25.6 11.485 25.6 25.6v614.4c0 14.115-11.485 25.6-25.6 25.6h-460.8c-28.789 0-55.394 9.557-76.8 25.661v-665.661z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark2.js
new file mode 100644
index 00000000..37ad7dbe
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bookmark2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bookmark2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.605 1024.002c-7.331 0-14.482-3.155-19.442-8.941l-287.763-335.723-287.763 335.723c-6.971 8.131-18.269 11.067-28.318 7.349-10.048-3.715-16.718-13.298-16.718-24.010v-921.6c0-14.138 11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.462 25.6 25.6v921.6c0 10.712-6.67 20.294-16.718 24.010-2.899 1.074-5.904 1.592-8.877 1.592zM486.4 614.4c7.474 0 14.573 3.266 19.437 8.939l262.163 305.858v-826.797h-563.2v826.797l262.163-305.858c4.864-5.674 11.963-8.939 19.437-8.939z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderAll.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderAll.js
new file mode 100644
index 00000000..74d101c2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderAll.js
@@ -0,0 +1,12 @@
+// Icon: Linear.BorderAll
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 102.4h-716.8c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM844.8 153.6c14.115 0 25.6 11.485 25.6 25.6v332.8h-358.4v-358.4h332.8zM102.4 179.2c0-14.115 11.485-25.6 25.6-25.6h332.8v358.4h-358.4v-332.8zM128 921.6c-14.115 0-25.6-11.485-25.6-25.6v-332.8h358.4v358.4h-332.8zM870.4 896c0 14.115-11.485 25.6-25.6 25.6h-332.8v-358.4h358.4v332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderBottom.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderBottom.js
new file mode 100644
index 00000000..b5e20d46
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderBottom.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderBottom
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 972.8h-819.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderHorizontal.js
new file mode 100644
index 00000000..5dd478a7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderHorizontal.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 563.2h-819.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderInner.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderInner.js
new file mode 100644
index 00000000..4783b27e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderInner.js
@@ -0,0 +1,40 @@
+// Icon: Linear.BorderInner
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 512h-384v-384c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v384h-384c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h384v384c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-384h384c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderLeft.js
new file mode 100644
index 00000000..c63693d3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderLeft.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M76.8 972.8c-14.138 0-25.6-11.461-25.6-25.6v-819.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v819.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderNone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderNone.js
new file mode 100644
index 00000000..5ef212c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderNone.js
@@ -0,0 +1,56 @@
+// Icon: Linear.BorderNone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderOuter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderOuter.js
new file mode 100644
index 00000000..c332f7a5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderOuter.js
@@ -0,0 +1,25 @@
+// Icon: Linear.BorderOuter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M844.8 972.8h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8zM128 153.6c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderRight.js
new file mode 100644
index 00000000..6a2dd87e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderRight.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 972.8c-14.139 0-25.6-11.461-25.6-25.6v-819.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v819.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderStyle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderStyle.js
new file mode 100644
index 00000000..837727f7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderStyle.js
@@ -0,0 +1,29 @@
+// Icon: Linear.BorderStyle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M460.8 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M76.8 972.8c-14.138 0-25.6-11.461-25.6-25.6v-819.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v819.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M384 153.6h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M691.2 153.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 256c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 460.8c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 665.6c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderTop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderTop.js
new file mode 100644
index 00000000..f503e685
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderTop.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderTop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 153.6h-819.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderVertical.js
new file mode 100644
index 00000000..d89ed1d4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BorderVertical.js
@@ -0,0 +1,48 @@
+// Icon: Linear.BorderVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M51.2 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 614.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 409.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M870.4 204.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 102.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M153.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M256 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M358.4 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 921.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M486.4 972.8c-14.138 0-25.6-11.461-25.6-25.6v-819.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v819.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle.js
new file mode 100644
index 00000000..21bdc370
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bottle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 281.6c0-37-23.214-80.378-54-100.901l-54.387-36.258c3.733-4.45 5.987-10.179 5.987-16.442v-102.4c0-14.138-11.461-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 6.262 2.254 11.992 5.989 16.44l-54.387 36.258c-30.787 20.525-54.002 63.902-54.002 100.902v51.2c0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2s7.43 37.602 19.618 51.2c-12.187 13.598-19.618 31.546-19.618 51.2v102.4c0 42.349 34.453 76.8 76.8 76.8h307.2c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.187-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.618-51.2c12.187-13.598 19.618-31.546 19.618-51.2s-7.43-37.602-19.619-51.2c12.189-13.598 19.619-31.546 19.619-51.2s-7.43-37.602-19.619-51.2c12.189-13.598 19.619-31.546 19.619-51.2v-51.2zM409.6 51.2h153.6v51.2h-153.6v-51.2zM307.2 281.6c0-19.626 14.872-47.414 31.2-58.301l104.552-69.699h86.898l104.552 69.699c16.326 10.886 31.198 38.675 31.198 58.301v51.2c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6v-51.2zM665.6 435.2c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6zM665.6 537.6c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6zM665.6 640c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6zM665.6 742.4c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6zM665.6 947.2c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle2.js
new file mode 100644
index 00000000..95c1c259
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bottle2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bottle2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M563.2 412.171v-258.571c28.232 0 51.2-22.968 51.2-51.2v-51.2c0-28.232-22.968-51.2-51.2-51.2h-153.6c-28.232 0-51.2 22.968-51.2 51.2v51.2c0 28.232 22.968 51.2 51.2 51.2v258.571c-58.352 11.894-102.4 63.614-102.4 125.429v409.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-409.6c0-61.813-44.048-113.534-102.4-125.429zM409.6 51.2h153.6l0.005 51.2h-153.605v-51.2zM614.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-42.347 34.453-76.8 76.8-76.8 14.138 0 25.6-11.462 25.6-25.6v-281.6h51.2v281.6c0 14.138 11.462 25.6 25.6 25.6 42.349 0 76.8 34.453 76.8 76.8v409.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowTie.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowTie.js
new file mode 100644
index 00000000..d9f5bc53
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowTie.js
@@ -0,0 +1,12 @@
+// Icon: Linear.BowTie
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M943.386 350.512c-20.194-35.968-66.054-52.256-104.414-37.075l-231.915 91.786c-31.866-29.070-74.226-46.822-120.656-46.822s-88.79 17.752-120.656 46.822l-231.917-91.786c-38.357-15.182-84.221 1.106-104.414 37.075-3.011 5.363-29.413 56.173-29.413 187.088s26.402 181.725 29.413 187.088c15.082 26.862 44.475 42.747 74.371 42.746 10.134 0 20.333-1.827 30.043-5.67l231.915-91.784c31.867 29.069 74.227 46.821 120.658 46.821s88.79-17.752 120.658-46.822l231.914 91.784c9.712 3.843 19.904 5.67 30.042 5.67 29.894-0.002 59.293-15.885 74.373-42.746 3.011-5.362 29.414-56.171 29.414-187.086s-26.403-181.725-29.414-187.088zM114.987 714.157c-14.205 5.624-33.205-1.067-40.806-14.32-1.173-2.338-22.981-47.603-22.981-162.237 0-114.621 21.803-159.886 22.979-162.235 7.602-13.253 26.602-19.942 40.806-14.318l216.923 85.851c-11.568 19.627-19.501 41.637-22.872 65.104h-78.637c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h78.637c3.371 23.467 11.304 45.477 22.872 65.104l-216.922 85.851zM486.4 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM898.621 699.835c-7.603 13.253-26.602 19.938-40.808 14.32l-216.922-85.851c11.566-19.629 19.501-41.637 22.874-65.104h78.635c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-78.635c-3.371-23.467-11.304-45.477-22.874-65.104l216.922-85.851c14.205-5.621 33.205 1.064 40.808 14.318 1.17 2.338 22.979 47.602 22.979 162.237 0 114.634-21.81 159.899-22.979 162.235z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bowling.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bowling.js
new file mode 100644
index 00000000..d32c3371
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bowling.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Bowling
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-136.76 0-265.334-53.258-362.038-149.962s-149.962-225.278-149.962-362.038c0-136.76 53.258-265.334 149.962-362.038s225.278-149.962 362.038-149.962c136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962zM512 51.2c-254.086 0-460.8 206.714-460.8 460.8s206.714 460.8 460.8 460.8 460.8-206.714 460.8-460.8-206.714-460.8-460.8-460.8z' />
+            <path d='M588.8 307.2c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 204.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M512 614.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 460.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowlingPins.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowlingPins.js
new file mode 100644
index 00000000..548ec447
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BowlingPins.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BowlingPins
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M328.384 925.069c-12.226-7.106-27.894-2.957-34.998 9.269-9.912 17.053-18.819 30.248-24.664 38.462h-127.811c-22.346-31.555-89.71-136.61-89.71-256 0-77.138 35.432-133.11 69.696-187.242 25.074-39.613 48.973-77.39 56.131-119.958h55.459c3.624 23.184 12.069 48.723 25.885 78.488 5.954 12.826 21.174 18.397 33.998 12.442 12.824-5.952 18.395-21.174 12.442-33.998-15.835-34.117-23.211-60.341-23.211-82.531 0-24.693 5.027-57.134 10.349-91.48 12.57-81.12 25.566-165.002-13.976-211.144-17.16-20.024-41.779-30.176-73.173-30.176s-56.013 10.152-73.171 30.174c-39.544 46.142-26.546 130.024-13.976 211.144 5.32 34.347 10.347 66.789 10.347 91.482 0 38.606-23.339 75.478-50.366 118.174-36.389 57.488-77.634 122.646-77.634 214.626 0 160.731 103.6 292.080 108.010 297.592 4.858 6.074 12.214 9.608 19.99 9.608h153.6c7.778 0 15.133-3.536 19.99-9.608 0.67-0.837 16.627-20.891 36.061-54.326 7.106-12.224 2.955-27.893-9.267-34.997zM171.694 307.2h66.213c-2.682 17.949-5.006 35.171-6.331 51.2h-53.55c-1.325-16.029-3.65-33.251-6.331-51.2zM170.506 114.693c4.522-5.278 12.997-12.293 34.294-12.293s29.773 7.014 34.294 12.293c20.654 24.101 14.835 84.798 6.608 141.307h-81.805c-8.229-56.51-14.046-117.206 6.608-141.307z' />
+            <path d='M946.366 502.174c-27.026-42.696-50.366-79.568-50.366-118.174 0-24.693 5.027-57.134 10.349-91.48 12.57-81.12 25.566-165.002-13.976-211.144-17.16-20.024-41.779-30.176-73.173-30.176s-56.013 10.152-73.171 30.174c-39.544 46.142-26.547 130.024-13.976 211.144 5.32 34.347 10.347 66.789 10.347 91.482 0 22.189-7.374 48.413-23.211 82.533-5.954 12.824-0.381 28.046 12.442 33.998 12.829 5.952 28.046 0.379 33.998-12.443 13.816-29.765 22.261-55.302 25.885-78.486h55.459c7.158 42.566 31.056 80.346 56.131 119.958 34.264 54.13 69.696 110.102 69.696 187.24 0 119.408-67.384 224.475-89.709 256h-127.813c-5.846-8.219-14.754-21.413-24.664-38.464-7.106-12.222-22.77-16.373-34.998-9.267-12.224 7.104-16.371 22.774-9.267 34.998 19.434 33.434 35.39 53.486 36.061 54.323 4.858 6.074 12.213 9.61 19.99 9.61h153.6c7.776 0 15.133-3.534 19.99-9.608 4.41-5.512 108.010-136.861 108.010-297.592 0-91.979-41.245-157.138-77.634-214.626zM784.904 114.693c4.523-5.278 12.997-12.293 34.296-12.293s29.773 7.014 34.296 12.293c20.653 24.101 14.834 84.798 6.608 141.307h-81.806c-8.227-56.51-14.046-117.206 6.606-141.307zM786.094 307.2h66.213c-2.683 17.949-5.006 35.171-6.331 51.2h-53.55c-1.325-16.029-3.65-33.251-6.331-51.2z' />
+            <path d='M639.853 462.994c-27.394-48.758-51.053-90.866-51.053-130.194 0-24.693 5.027-57.134 10.349-91.48 12.57-81.12 25.566-165.002-13.976-211.144-17.16-20.024-41.779-30.176-73.173-30.176-31.395 0-56.013 10.152-73.171 30.174-39.544 46.142-26.546 130.024-13.976 211.144 5.32 34.347 10.347 66.789 10.347 91.482 0 39.328-23.659 81.435-51.053 130.194-36.067 64.192-76.947 136.949-76.947 228.206 0 159.517 102.342 314.866 106.699 321.4 4.749 7.122 12.741 11.4 21.301 11.4h153.6c8.56 0 16.554-4.278 21.299-11.4 4.358-6.534 106.701-161.883 106.701-321.4 0-91.258-40.88-164.014-76.947-228.206zM538.774 307.2h-53.55c-1.325-16.029-3.65-33.253-6.331-51.2h66.213c-2.682 17.947-5.006 35.171-6.331 51.2zM477.706 63.493c4.522-5.278 12.997-12.293 34.294-12.293 21.299 0 29.773 7.014 34.296 12.293 20.653 24.099 14.834 84.797 6.608 141.307h-81.806c-8.229-56.51-14.046-117.208 6.608-141.307zM574.606 972.8h-125.213c-22.565-37.432-90.994-160.91-90.994-281.6 0-77.859 35.781-141.542 70.384-203.128 24.795-44.131 48.429-86.214 55.483-129.672h55.466c7.054 43.458 30.688 85.541 55.485 129.672 34.602 61.586 70.382 125.269 70.382 203.128 0 120.69-68.429 244.168-90.994 281.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Box.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Box.js
new file mode 100644
index 00000000..b1a56ce9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Box.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Box
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M994.714 275.675l-127.603-218.749c-18.931-32.453-61.539-56.926-99.11-56.926h-512c-37.571 0-80.181 24.474-99.11 56.926l-127.603 218.749c-16.422 28.152-29.286 75.733-29.286 108.325v153.6c0 33.373 21.403 61.829 51.2 72.397v337.203c0 42.349 34.453 76.8 76.8 76.8h768c42.349 0 76.8-34.451 76.8-76.8v-337.203c29.797-10.566 51.2-39.024 51.2-72.397v-153.6c0-32.592-12.864-80.173-29.286-108.325zM201.114 82.725c9.624-16.499 35.786-31.525 54.886-31.525h512c19.101 0 45.261 15.026 54.886 31.525l127.603 218.749c1.086 1.862 2.162 3.88 3.216 6.022-2.147-0.182-4.314-0.296-6.506-0.296h-870.4c-2.194 0-4.358 0.114-6.504 0.296 1.054-2.141 2.13-4.16 3.216-6.022l127.602-218.749zM896 972.8h-768c-14.115 0-25.6-11.485-25.6-25.6v-332.8h819.2v332.8c0 14.115-11.485 25.6-25.6 25.6zM972.8 537.6c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+            <path d='M640 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h256c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM384 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h256c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brain.js
new file mode 100644
index 00000000..bb723143
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brain.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Brain
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 358.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c14.115 0 25.6-11.485 25.6-25.6 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M644.371 768.011c-10.546 0-20.421-6.565-24.136-17.074-3.87-10.952-5.835-22.438-5.835-34.138 0-56.464 45.936-102.4 102.4-102.4 11.699 0 23.186 1.965 34.138 5.835 13.331 4.712 20.315 19.339 15.603 32.669-4.714 13.33-19.346 20.317-32.669 15.603-5.458-1.93-11.202-2.907-17.072-2.907-28.232 0-51.2 22.968-51.2 51.2 0 5.87 0.978 11.614 2.907 17.072 4.712 13.33-2.272 27.957-15.603 32.669-2.819 0.997-5.701 1.47-8.533 1.47z' />
+            <path d='M972.8 537.6c0-125.902-39.125-245.808-113.144-347.061-19.077-56.602-62.358-103.118-119.782-125.437-27.84-39.357-73.706-65.102-125.474-65.102-53.368 0-100.459 27.365-128 68.795-27.539-41.43-74.632-68.795-128-68.795-51.768 0-97.634 25.746-125.474 65.101-57.426 22.318-100.706 68.835-119.782 125.437-74.021 101.254-113.144 221.16-113.144 347.062 0 33.55 2.88 67.15 8.496 99.981-5.616 25.512-8.496 52.053-8.496 79.219 0 81.11 26.021 157.584 73.269 215.333 48.47 59.24 113.366 91.867 182.731 91.867 13.475 0 26.973-1.264 40.21-3.762 11.816 2.462 24.054 3.762 36.59 3.762 65.11 0 122.218-34.909 153.6-86.99 31.382 52.082 88.49 86.99 153.6 86.99 12.536 0 24.773-1.299 36.59-3.762 13.237 2.498 26.734 3.762 40.21 3.762 69.366 0 134.261-32.627 182.731-91.867 47.248-57.749 73.269-134.222 73.269-215.333 0-27.166-2.88-53.707-8.496-79.219 5.616-32.829 8.496-66.429 8.496-99.981zM332.8 972.8c-70.579 0-128-57.421-128-128 0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 44.83 16.547 85.866 43.854 117.325-84.488-31.562-146.254-129.587-146.254-245.325 0-59.299 16.667-117.138 46.931-162.859 7.803-11.789 4.573-27.674-7.218-35.477-11.789-7.806-27.672-4.573-35.477 7.218-1.424 2.152-2.813 4.328-4.184 6.514 0.8-82.074 19.802-161.253 55.642-233.307 7.995 37.645 26.485 72.339 54.010 100.434 5.013 5.117 11.648 7.685 18.288 7.685 6.464 0 12.933-2.434 17.914-7.314 10.099-9.894 10.266-26.102 0.37-36.202-28.293-28.88-43.875-67.054-43.875-107.491 0-44.954 19.518-86.454 51.72-115.006-0.339 4.158-0.52 8.362-0.52 12.606 0 10.326 1.034 20.654 3.072 30.696 2.466 12.138 13.138 20.51 25.062 20.51 1.688 0 3.402-0.168 5.122-0.517 13.856-2.814 22.806-16.326 19.994-30.182-1.36-6.696-2.050-13.595-2.050-20.507 0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4v346.419c-27.195-24.373-63.094-39.219-102.4-39.219-10.405 0-20.811 1.050-30.928 3.12-13.851 2.835-22.782 16.363-19.947 30.213s16.358 22.784 30.213 19.947c6.747-1.379 13.698-2.080 20.662-2.080 56.464 0 102.4 45.936 102.4 102.4v230.4c0 70.579-57.421 128-128 128zM775.346 962.123c27.306-31.458 43.854-72.493 43.854-117.323 0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 70.579-57.421 128-128 128s-128-57.421-128-128v-230.4c0-56.464 45.936-102.4 102.4-102.4 6.965 0 13.915 0.701 20.662 2.082 13.846 2.834 27.378-6.098 30.213-19.947 2.835-13.851-6.096-27.378-19.947-30.213-10.117-2.070-20.523-3.12-30.928-3.12-39.306 0-75.205 14.846-102.4 39.219v-346.421c0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4c0 6.912-0.69 13.811-2.048 20.506-2.814 13.856 6.138 27.368 19.994 30.182 1.718 0.349 3.432 0.517 5.12 0.517 11.922 0 22.597-8.374 25.061-20.51 2.040-10.040 3.074-20.368 3.074-30.694 0-4.245-0.181-8.448-0.52-12.606 32.202 28.552 51.72 70.053 51.72 115.006 0 40.437-15.582 78.611-43.877 107.491-9.896 10.099-9.73 26.307 0.37 36.202 4.982 4.882 11.45 7.314 17.914 7.314 6.638 0 13.275-2.566 18.288-7.685 27.526-28.094 46.016-62.789 54.010-100.434 35.838 72.054 54.842 151.234 55.642 233.307-1.371-2.186-2.76-4.363-4.184-6.514-7.803-11.79-23.686-15.019-35.477-7.218-11.79 7.803-15.022 23.688-7.218 35.477 30.266 45.722 46.933 103.56 46.933 162.859 0 115.736-61.766 213.763-146.254 245.323z' />
+            <path d='M332.8 358.4c-42.347 0-76.8-34.453-76.8-76.8 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6 14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M328.429 768.011c-2.832 0-5.71-0.472-8.533-1.47-13.33-4.712-20.315-19.339-15.602-32.669 1.93-5.458 2.907-11.202 2.907-17.072 0-28.232-22.968-51.2-51.2-51.2-5.87 0-11.614 0.978-17.070 2.907-13.33 4.712-27.955-2.272-32.669-15.603-4.712-13.33 2.272-27.957 15.602-32.669 10.95-3.87 22.437-5.835 34.136-5.835 56.464 0 102.4 45.936 102.4 102.4 0 11.699-1.963 23.186-5.835 34.138-3.715 10.507-13.594 17.074-24.136 17.074z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bread.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bread.js
new file mode 100644
index 00000000..22512e1c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bread.js
@@ -0,0 +1,23 @@
+// Icon: Linear.Bread
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M358.4 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M562.722 333.365c0 13.827-11.355 25.035-25.362 25.035s-25.362-11.209-25.362-25.035c0-13.827 11.355-25.035 25.362-25.035s25.362 11.209 25.362 25.035z' />
+            <path d='M665.6 333.365c0 13.827-11.462 25.035-25.6 25.035s-25.6-11.209-25.6-25.035c0-13.827 11.462-25.035 25.6-25.035s25.6 11.209 25.6 25.035z' />
+            <path d='M204.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M153.6 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M950.941 160.725c-45.672-37.611-106.096-58.325-170.141-58.325-46.139 0-91.029 10.893-129.818 31.501-33.784 17.95-61.653 42.501-81.363 71.518-53.029 3.365-102.517 20.632-140.995 49.49-39.098 29.323-63.013 67.506-68.824 109.109-46.667 8.517-89.622 26.538-124.709 52.794-52.55 39.326-81.491 92.31-81.491 149.189 0 6.314 0.389 12.624 1.117 18.899-25.013 9.122-48.213 20.994-68.816 35.416-55.394 38.774-85.901 91.224-85.901 147.685 0 60.181 23.102 111.242 66.811 147.667 44.853 37.376 110.274 57.133 189.189 57.133 81.861 0 159.405-27.066 237.064-82.742 67.683-48.523 127.301-111.67 190.421-178.526 24.682-26.142 50.203-53.174 76.058-79.030 35.482-35.482 68.616-67.051 97.848-94.904 103.898-98.995 166.61-158.747 166.61-230.397 0-55.658-25.947-107.675-73.059-146.475zM822.072 500.53c-29.443 28.054-62.814 59.851-98.733 95.77-26.374 26.374-52.155 53.68-77.085 80.085-119.058 126.106-231.514 245.216-390.254 245.216-128.238 0-204.8-57.421-204.8-153.6 0-39.27 22.75-76.824 64.062-105.741 44.090-30.862 103.163-47.859 166.341-47.859 51.773 0 100.766 11.37 141.68 32.882 12.515 6.581 27.994 1.768 34.573-10.747 6.579-12.514 1.768-27.992-10.746-34.571-48.235-25.36-105.466-38.763-165.507-38.763-26.28 0-52.034 2.6-76.688 7.605-0.069-1.602-0.115-3.203-0.115-4.805 0-40.349 21.653-78.774 60.97-108.197 33.138-24.8 75.246-40.698 121.115-46.117 0.163-0.019 0.325-0.037 0.486-0.058 11.472-1.336 23.171-2.029 35.029-2.029 56.854 0 110.726 15.846 151.693 44.622 11.566 8.13 27.536 5.336 35.662-6.234s5.336-27.536-6.234-35.664c-49.506-34.774-113.829-53.925-181.122-53.925-3.067 0-6.123 0.054-9.174 0.133 6.686-23.28 22.485-44.938 46.12-62.664 34.278-25.71 80.253-39.869 129.454-39.869 52.262 0 101.906 16.48 136.198 45.214 10.84 9.078 26.986 7.654 36.064-3.181 9.082-10.837 7.656-26.984-3.179-36.064-32.994-27.645-76.566-46.306-123.75-53.656 36.045-34.085 89.552-54.714 146.667-54.714 105.869 0 192 68.904 192 153.6 0 49.714-59.963 106.846-150.728 193.33z' />
+            <path d='M409.6 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Briefcase.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Briefcase.js
new file mode 100644
index 00000000..8966b6e4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Briefcase.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Briefcase
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256h-230.4v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-42.347 0-76.8 34.453-76.8 76.8v76.8h-230.4c-42.347 0-76.8 34.453-76.8 76.8v563.2c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-563.2c0-42.347-34.451-76.8-76.8-76.8zM358.4 179.2c0-14.115 11.485-25.6 25.6-25.6h256c14.115 0 25.6 11.485 25.6 25.6v76.8h-307.2v-76.8zM76.8 307.2h870.4c14.115 0 25.6 11.485 25.6 25.6v384h-102.4v-25.6c0-14.139-11.461-25.6-25.6-25.6h-102.4c-14.139 0-25.6 11.461-25.6 25.6v25.6h-409.6v-25.6c0-14.139-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.461-25.6 25.6v25.6h-102.4v-384c0-14.115 11.485-25.6 25.6-25.6zM819.2 716.8v51.2h-51.2v-51.2h51.2zM256 716.8v51.2h-51.2v-51.2h51.2zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-128h102.4v25.6c0 14.139 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h409.6v25.6c0 14.139 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-25.6h102.4v128c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broadcast.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broadcast.js
new file mode 100644
index 00000000..d25d2ee6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broadcast.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Broadcast
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 614.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M631.216 708.016c-6.552 0-13.102-2.499-18.101-7.499-9.997-9.997-9.998-26.205 0-36.203 33.845-33.848 52.485-78.85 52.485-126.714 0-47.867-18.64-92.87-52.49-126.717-9.997-9.997-9.998-26.206-0.002-36.203 10-9.997 26.208-10 36.205 0 43.52 43.515 67.486 101.376 67.486 162.92 0 61.541-23.966 119.398-67.483 162.917-4.998 4.998-11.55 7.499-18.101 7.499z' />
+            <path d='M739.827 816.627c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203 62.856-62.858 97.474-146.43 97.474-235.325 0-88.898-34.619-172.474-97.48-235.331-9.997-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.998 36.203 0 72.531 72.526 112.477 168.962 112.477 271.534 0 102.568-39.944 199-112.472 271.528-4.998 4.998-11.55 7.499-18.101 7.499z' />
+            <path d='M341.584 708.016c-6.552 0-13.102-2.499-18.102-7.499-43.515-43.518-67.482-101.376-67.482-162.917 0-61.544 23.966-119.405 67.486-162.92 9.998-9.998 26.206-9.998 36.203 0s9.997 26.206 0 36.203c-33.85 33.846-52.49 78.85-52.49 126.717 0 47.864 18.64 92.866 52.486 126.714 9.997 9.998 9.997 26.206 0 36.203-4.998 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M232.973 816.627c-6.552 0-13.102-2.499-18.102-7.499-72.528-72.528-112.47-168.96-112.47-271.528 0-102.573 39.946-199.008 112.477-271.534 9.998-9.997 26.206-9.997 36.203 0 9.997 9.998 9.997 26.206 0 36.203-62.861 62.858-97.48 146.434-97.48 235.331 0 88.894 34.618 172.467 97.475 235.325 9.997 9.997 9.997 26.206 0 36.203-4.998 4.998-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broom.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broom.js
new file mode 100644
index 00000000..45a83c48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Broom.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Broom
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M999.496 28.891l-4.39-4.389c-14.466-14.466-33.75-22.432-54.306-22.432s-39.84 7.966-54.304 22.432l-272.096 272.094-7.499-7.499c-9.997-9.997-26.206-9.997-36.203 0l-58.723 58.723c-25.504-24.994-61.542-39.323-99.13-39.323-31.997 0-62.781 10.392-86.678 29.258-1.595 1.259-161.227 126.413-308.664 175.558-10.451 3.485-17.502 13.267-17.502 24.286 0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464 11.019 0 20.802-7.051 24.286-17.504 49.146-147.437 174.301-307.069 175.555-308.661 42.499-53.832 37.894-136.883-10.061-185.811l58.722-58.72c9.998-9.998 9.998-26.206 0-36.205l-7.499-7.499 272.096-272.094c29.942-29.944 29.942-78.667-0.003-108.614zM412.846 359.698c24.56 0 47.835 9.189 63.859 25.211l17.184 17.184c0.002 0.002 0.005 0.005 0.008 0.008l145.192 145.19c30.523 30.523 33.712 84.934 6.966 118.816-0.762 0.963-3.971 5.054-9.046 11.774l-290.744-291.002c6.634-5.011 10.67-8.181 11.627-8.934 14.904-11.768 34.419-18.248 54.954-18.248zM468.381 972.432c-38.157-1.562-75.054-8.075-110.085-18.886 49.522-95.723 145.23-192.069 146.205-193.043 9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.205 0c-4.298 4.296-105.744 106.349-158.243 211.152-41.312-18.381-79.237-43.029-112.595-72.706l153.442-153.442c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-153.442 153.442c-29.678-33.36-54.325-71.285-72.707-112.595 104.805-52.499 206.856-153.947 211.154-158.243 9.997-9.997 9.997-26.206 0-36.203-9.998-9.997-26.206-9.997-36.205 0-0.978 0.976-97.149 96.6-193.043 146.206-10.811-35.032-17.325-71.93-18.886-110.086 97.518-35.842 194.704-97.81 252.718-138.315l302.301 302.57c-40.507 58.029-102.395 155.128-138.205 252.557zM640 475.797l-91.795-91.797 40.595-40.597 91.795 91.797-40.595 40.597zM963.296 101.302l-272.096 272.094-40.597-40.597 272.096-272.094c4.795-4.795 11.224-7.435 18.101-7.435s13.306 2.64 18.104 7.438l4.39 4.389c9.982 9.982 9.982 26.224 0.002 36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush.js
new file mode 100644
index 00000000..2b7b61e1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Brush
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 1024c-12.272 0-22.818-8.707-25.138-20.76-2.32-12.050 4.237-24.051 15.63-28.61 42.032-16.813 61.862-73.43 82.858-133.37 14.174-40.467 28.832-82.312 51.974-114.899 28.371-39.947 66.342-60.203 112.861-60.203 15.395 0 32.091 2.224 49.624 6.606 31.077 7.768 57.846 27.318 75.378 55.046 17.141 27.109 24.323 60.373 20.226 93.666-12.054 97.906-119.106 202.523-383.413 202.523zM263.786 717.358c-62.666 0-85.822 53.205-116.514 140.829-13.834 39.493-27.938 79.765-49.76 111.595 75.813-6.654 138.595-24.221 183.982-51.766 44.635-27.088 71.875-63.594 76.701-102.794 5.432-44.12-18.627-83.142-57.203-92.786-13.477-3.37-25.995-5.078-37.206-5.078z' />
+            <path d='M488.677 664.414c-0.003 0-0.003 0-0.006 0-43.437-0.002-81.733-18.571-105.067-50.95-25.787-35.778-30.995-85.042-14.288-135.16 14.157-42.469 45.957-81.413 100.080-122.557 46.304-35.2 105.37-69.314 167.902-105.432 111.163-64.203 237.157-136.974 343.002-242.819 9.997-9.997 26.206-9.997 36.203 0 4.998 5.002 7.498 11.552 7.498 18.104s-2.499 13.102-7.499 18.102c-105.845 105.845-178.613 231.838-242.818 343-36.117 62.533-70.232 121.6-105.432 167.904-41.144 54.122-80.088 85.923-122.557 100.080-19.363 6.454-38.549 9.728-57.018 9.728zM832.086 191.914c-57.419 38.189-115.014 71.454-169.181 102.739-118.554 68.472-220.941 127.608-245.019 199.842-11.606 34.821-9.032 66.438 7.253 89.034 13.797 19.142 36.36 29.685 63.534 29.686 0 0 0.003 0 0.005 0 12.957 0 26.691-2.389 40.827-7.101 72.234-24.078 131.368-126.466 199.842-245.019 31.286-54.166 64.55-111.762 102.739-169.181z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush2.js
new file mode 100644
index 00000000..9e213283
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Brush2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Brush2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.768 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M954.699 483.294l-413.994-413.992c-14.466-14.467-33.752-22.434-54.306-22.434s-39.84 7.966-54.306 22.434l-260.394 260.392c-27.616 27.618-35.568 76.616-18.101 111.549l82.205 164.41c2.526 5.053 2.966 9.88 1.237 13.59-1.728 3.71-5.706 6.482-11.2 7.797-4.421 1.061-109.002 26.694-173.357 91.046-33.845 33.846-52.485 78.848-52.485 126.714s18.64 92.867 52.486 126.712c33.846 33.848 78.848 52.488 126.714 52.488 0.003 0-0.002 0 0 0 47.862 0 92.869-18.642 126.714-52.488 64.354-64.355 89.986-168.936 91.045-173.357 1.096-4.573 4.21-12.245 12.749-12.245 2.701 0 5.608 0.768 8.637 2.283l164.413 82.206c12.166 6.083 26.475 9.299 41.384 9.299 26.778 0 53.008-10.242 70.165-27.4l260.394-260.395c29.942-29.942 29.942-78.666 0-108.61zM658.101 816.096c-7.536 7.534-20.866 12.403-33.962 12.403-7.002 0-13.394-1.346-18.488-3.893l-164.408-82.206c-10.203-5.101-20.813-7.69-31.534-7.69-30.021 0-55.154 20.701-62.533 51.488-0.229 0.944-23.464 95.107-77.467 149.11-24.176 24.178-56.318 37.491-90.509 37.491s-66.334-13.314-90.51-37.491c-24.176-24.176-37.49-56.32-37.49-90.509s13.315-66.333 37.491-90.509c54.002-54 148.166-77.237 149.090-77.461 20.691-4.962 37.338-18.070 45.675-35.966 8.336-17.898 7.661-39.077-1.854-58.106l-82.205-164.411c-7.666-15.33-3.608-40.328 8.51-52.448l48.093-48.096 450.197 450.197-48.096 48.096zM918.496 555.701l-176.096 176.096-450.197-450.197 176.096-176.094c4.795-4.795 11.224-7.435 18.101-7.435s13.306 2.64 18.101 7.437l413.995 413.992c9.981 9.981 9.981 26.221 0 36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubble.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubble.js
new file mode 100644
index 00000000..59923d17
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubble.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bubble
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.57-51.942 122.485-127.414 135.218-162.755-94.088-72.048-147.648-171.746-147.648-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.013 27.576-5.984 22.325-26.363 83.597-80.878 142.734 66.659-23.341 138.424-63.832 191.434-100.286 6.296-4.328 14.197-5.621 21.544-3.52 48.558 13.888 99.691 20.928 151.981 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAlert.js
new file mode 100644
index 00000000..01df98f6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAlert.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BubbleAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.57-51.942 122.485-127.414 135.218-162.755-94.088-72.048-147.648-171.746-147.648-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.013 27.576-5.984 22.325-26.363 83.597-80.878 142.734 66.659-23.341 138.424-63.832 191.434-100.286 6.296-4.328 14.197-5.621 21.544-3.52 48.558 13.888 99.691 20.928 151.981 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M486.4 563.2c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAttachment.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAttachment.js
new file mode 100644
index 00000000..12681577
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleAttachment.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BubbleAttachment
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M588.8 665.6h-204.8c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2h256c70.579 0 128 57.421 128 128s-57.421 128-128 128h-204.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h204.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8h-256c-70.579 0-128 57.421-128 128s57.421 128 128 128h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleDots.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleDots.js
new file mode 100644
index 00000000..6fa89279
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleDots.js
@@ -0,0 +1,15 @@
+// Icon: Linear.BubbleDots
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.57-51.942 122.485-127.414 135.218-162.755-94.088-72.048-147.648-171.746-147.648-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.013 27.576-5.984 22.325-26.363 83.597-80.878 142.734 66.659-23.341 138.424-63.832 191.434-100.286 6.296-4.328 14.197-5.621 21.544-3.52 48.558 13.888 99.691 20.928 151.981 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M486.4 563.2c-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8 42.349 0 76.8 34.453 76.8 76.8 0 42.349-34.451 76.8-76.8 76.8zM486.4 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM691.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.6 563.2c-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.453 76.8-76.8 76.8zM281.6 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleEmoticon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleEmoticon.js
new file mode 100644
index 00000000..a84600f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleEmoticon.js
@@ -0,0 +1,16 @@
+// Icon: Linear.BubbleEmoticon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M486.4 716.8c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.043 0 230.4 103.357 230.4 230.4s-103.357 230.4-230.4 230.4zM486.4 307.2c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M435.2 409.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M537.6 409.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 614.4c-51.474 0-91.426-23.21-112.498-65.352-15.067-30.134-15.502-59.41-15.502-62.648 0-14.138 11.462-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6 0 3.238-0.434 32.514-15.502 62.648-21.070 42.142-61.024 65.352-112.498 65.352zM414.090 512c1.52 4.966 3.554 10.25 6.272 15.451 12.576 24.054 34.178 35.749 66.038 35.749s53.462-11.694 66.037-35.749c2.718-5.2 4.752-10.483 6.272-15.451h-144.619z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleHeart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleHeart.js
new file mode 100644
index 00000000..2bc3f80c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleHeart.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BubbleHeart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M486.4 665.6c-3.934 0-7.867-0.906-11.48-2.718-2.168-1.088-53.69-27.090-105.96-66.427-74.485-56.058-112.251-110.312-112.251-161.254 0-37.634 15.045-71.205 42.365-94.53 25.282-21.584 59.989-33.47 97.726-33.47 30.63 0 62.23 14.085 89.6 39.371 27.37-25.286 58.97-39.371 89.6-39.371 37.738 0 72.445 11.886 97.725 33.472 27.318 23.323 42.365 56.894 42.365 94.528 0 50.942-37.766 105.197-112.25 161.254-52.269 39.338-103.79 65.339-105.958 66.427-3.613 1.813-7.547 2.718-11.482 2.718zM396.8 358.4c-44.246 0-88.891 23.747-88.891 76.8 0 32.922 32.419 75.512 91.285 119.928 34.581 26.093 69.662 46.31 87.206 55.898 17.544-9.586 52.624-29.805 87.205-55.898 58.866-44.416 91.285-87.006 91.285-119.928 0-53.053-44.643-76.8-88.89-76.8-22.522 0-48.576 15.589-69.696 41.699-4.861 6.010-12.174 9.501-19.904 9.501s-15.043-3.491-19.904-9.501c-21.12-26.11-47.174-41.699-69.696-41.699z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePencil.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePencil.js
new file mode 100644
index 00000000..7382e28c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePencil.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BubblePencil
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M640 665.6h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 665.6c-6.706 0-13.243-2.637-18.102-7.499-6.358-6.358-8.914-15.586-6.733-24.31l25.6-102.4c1.126-4.501 3.453-8.613 6.733-11.893l230.4-230.4c9.997-9.997 26.206-9.997 36.203 0l76.8 76.8c9.998 9.998 9.998 26.206 0 36.205l-230.4 230.4c-3.282 3.282-7.392 5.61-11.894 6.734l-102.4 25.6c-2.053 0.514-4.138 0.763-6.206 0.763zM330.315 550.688l-13.533 54.128 54.128-13.531 207.285-207.285-40.595-40.597-207.285 207.285z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePicture.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePicture.js
new file mode 100644
index 00000000..9f89e39b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubblePicture.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BubblePicture
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M588.8 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM588.8 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 307.2h-512c-14.138 0-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6v-307.2c0-14.138-11.461-25.6-25.6-25.6zM256 597.779l64.805-81.006c3.659-4.574 8.213-7.136 12.821-7.213 4.624-0.069 9.245 2.328 13.058 6.774l84.056 98.066h-174.739v-16.621zM716.8 614.4h-218.626l-112.618-131.386c-13.714-16-33.003-24.998-52.798-24.646-19.842 0.336-38.77 9.966-51.934 26.421l-24.824 31.032v-157.421h460.8v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuestion.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuestion.js
new file mode 100644
index 00000000..f1dfb96f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuestion.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BubbleQuestion
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M486.4 614.4c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6 42.349 0 76.8-34.453 76.8-76.8s-34.451-76.8-76.8-76.8c-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-70.579 57.421-128 128-128s128 57.421 128 128c0 61.813-44.048 113.534-102.4 125.429v79.371c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 716.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096 0-6.752 2.736-13.344 7.504-18.098 4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuote.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuote.js
new file mode 100644
index 00000000..73397c34
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleQuote.js
@@ -0,0 +1,14 @@
+// Icon: Linear.BubbleQuote
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M332.8 409.6c-8.702 0-17.203 0.882-25.424 2.544 32.538-33.146 77.818-53.744 127.824-53.744 14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-127.043 0-230.4 103.357-230.4 230.4 0 70.579 57.421 128 128 128s128-57.421 128-128-57.421-128-128-128zM332.8 614.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M640 409.6c-8.702 0-17.205 0.882-25.426 2.544 32.539-33.146 77.819-53.744 127.826-53.744 14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-127.043 0-230.4 103.357-230.4 230.4 0 70.579 57.421 128 128 128s128-57.421 128-128-57.421-128-128-128zM640 614.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8c0 42.347-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleText.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleText.js
new file mode 100644
index 00000000..e30fa8c7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleText.js
@@ -0,0 +1,16 @@
+// Icon: Linear.BubbleText
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M691.2 358.4h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 460.8h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 563.2h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 665.6h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleUser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleUser.js
new file mode 100644
index 00000000..5038e4c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleUser.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BubbleUser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M665.57 638.203c-0.243-8.806-2.426-47.557-21.874-86.451-12.878-25.757-34.779-54.573-71.635-72.733 25.979-23.443 42.339-57.354 42.339-95.019 0-70.579-57.421-128-128-128s-128 57.421-128 128c0 37.666 16.36 71.576 42.338 95.019-36.856 18.16-58.758 46.976-71.635 72.733-21.653 43.307-21.902 86.434-21.902 88.248 0 14.139 11.462 25.6 25.6 25.6h307.2c0.011 0.002 0.024 0.002 0.032 0 14.139 0 25.6-11.461 25.6-25.6 0-0.605-0.021-1.203-0.062-1.797zM409.6 384c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8c-42.347 0-76.8-34.453-76.8-76.8zM361.536 614.4c2.398-11.944 6.624-26.685 14.072-41.157 20.92-40.637 58.194-61.243 110.792-61.243 52.597 0 89.872 20.606 110.79 61.243 7.448 14.472 11.675 29.213 14.072 41.157h-249.726z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleVideo.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleVideo.js
new file mode 100644
index 00000000..a9737be1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/BubbleVideo.js
@@ -0,0 +1,13 @@
+// Icon: Linear.BubbleVideo
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766s1.634-22.864 11.501-28.784c86.566-51.941 122.483-127.413 135.216-162.755-94.086-72.048-147.646-171.746-147.646-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365s250.046 39.195 341.552 110.366c45.118 35.093 80.624 76.104 105.526 121.899 26.091 47.979 39.322 99.030 39.322 151.734 0 52.702-13.23 103.755-39.322 151.736-24.902 45.794-60.408 86.806-105.526 121.899-91.506 71.17-212.803 110.365-341.552 110.365-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.605-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102zM486.4 153.6c-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.011 27.576-5.984 22.325-26.365 83.598-80.88 142.736 66.664-23.339 138.422-63.83 191.435-100.288 6.298-4.328 14.2-5.619 21.544-3.52 48.558 13.888 99.693 20.928 151.982 20.928 239.97 0 435.2-149.294 435.2-332.8s-195.23-332.8-435.2-332.8z' />
+            <path d='M728.786 341.818c-6.944 0-13.92 1.728-20.731 5.133l-93.654 46.829v-9.779c0-42.347-34.451-76.8-76.8-76.8h-204.8c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-9.778l93.654 46.827c6.811 3.406 13.784 5.133 20.73 5.133 0.002 0 0.002 0 0.003 0 11.6 0 22.030-4.787 29.368-13.48 6.44-7.629 9.845-17.554 9.845-28.702v-204.8c0-24.048-16.858-42.182-39.214-42.182zM563.2 588.8c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v204.8zM716.797 572.976l-93.651-46.826c-3.923-1.962-8.746-9.765-8.746-14.15v-51.2c0-4.387 4.822-12.19 8.746-14.15l93.654-46.826-0.003 173.152z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubbles.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubbles.js
new file mode 100644
index 00000000..6134780b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bubbles.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Bubbles
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.432 921.6c-0.010-0.002-0.024-0.002-0.032 0-68.667 0-139.989-43.834-166.232-61.722-28.819 6.986-58.955 10.522-89.768 10.522-73.584 0-143.085-20.285-195.699-57.114-55.394-38.778-85.901-91.226-85.901-147.686s30.507-108.909 85.901-147.686c52.614-36.83 122.115-57.114 195.699-57.114s143.085 20.283 195.699 57.114c55.395 38.778 85.901 91.226 85.901 147.686 0 49.368-23.614 96.099-66.843 132.963 4.197 11.805 17.358 37.205 58.616 78.605 5.078 4.678 8.259 11.384 8.259 18.834 0 14.138-11.462 25.598-25.6 25.598zM837.254 806.499c5.52 0 10.962 1.786 15.461 5.195 0.499 0.376 34.571 25.83 76.976 43.093-27.834-40.69-27.155-63.877-24.605-73.629 1.462-5.59 4.771-10.52 9.39-13.99 37.611-28.254 58.323-64.326 58.323-101.568 0-39.27-22.752-76.824-64.061-105.741-44.090-30.862-103.163-47.859-166.339-47.859s-122.25 16.997-166.339 47.859c-41.309 28.917-64.061 66.47-64.061 105.741s22.752 76.824 64.061 105.741c44.090 30.862 103.163 47.859 166.339 47.859 30.451 0 60.048-3.955 87.966-11.757 2.267-0.632 4.587-0.944 6.888-0.944z' />
+            <path d='M25.6 972.8c-11.507 0-21.6-7.677-24.67-18.766-3.072-11.090 1.634-22.864 11.501-28.784 86.57-51.942 122.485-127.414 135.218-162.755-94.088-72.048-147.648-171.746-147.648-276.094 0-52.704 13.23-103.755 39.323-151.736 24.902-45.794 60.406-86.806 105.526-121.899 91.504-71.17 212.802-110.365 341.55-110.365 116.659 0 229.429 32.992 317.536 92.898 88.816 60.387 146.979 143.942 163.776 235.272 2.557 13.906-6.642 27.251-20.547 29.808-13.902 2.55-27.251-6.64-29.81-20.547-14.301-77.757-64.805-149.565-142.21-202.194-79.702-54.192-182.248-84.037-288.746-84.037-239.97 0-435.2 149.294-435.2 332.8 0 92.946 51.432 182.379 141.107 245.368 8.797 6.178 12.795 17.194 10.013 27.576-5.984 22.325-26.363 83.597-80.878 142.734 66.659-23.341 138.424-63.832 191.434-100.286 6.296-4.328 14.197-5.621 21.544-3.52 48.558 13.888 99.691 20.928 151.981 20.928 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6c-52.907 0-104.8-6.627-154.437-19.707-21.974 14.637-63.040 40.603-112.086 65.005-76.163 37.89-141.528 57.102-194.277 57.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bucket.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bucket.js
new file mode 100644
index 00000000..7f63b62a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bucket.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bucket
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 332.8c0-0.314-0.008-0.637-0.013-0.958 0-0.003 0-0.008-0.002-0.011-0.278-15.691-7.49-38.533-39.421-60.104-20.294-13.707-48.59-25.803-84.106-35.95-26.992-7.712-57.362-14.080-90.104-19-25.664-48.25-125.83-216.776-272.755-216.776-57.386 0-87.424 27.826-102.517 51.168-24.613 38.066-31.275 96.933-20.064 175.667-12.363 2.742-24.218 5.725-35.48 8.942-35.515 10.147-63.813 22.243-84.104 35.95-31.934 21.573-39.144 44.416-39.422 60.106 0 0 0 0 0 0.002-0.005 0.323-0.013 0.648-0.013 0.965 0 4.587 0.592 9.83 2.23 15.498l96.31 577.859c3.494 20.971 18.87 44.752 36.56 56.544 6.339 4.227 67.194 41.299 248.899 41.299 181.704 0 242.56-37.072 248.899-41.299 17.69-11.792 33.064-35.57 36.562-56.544l96.309-577.859c1.638-5.667 2.23-10.91 2.23-15.498zM819.037 331.654l-0.694 4.163c-4.075 8.467-23.995 27.189-85.55 44.776-65.467 18.706-152.971 29.006-246.392 29.006-44.32 0-87.302-2.323-127.238-6.757-6.859-20.038-13.763-41.509-20.19-63.638-7.317-25.19-13.352-49.018-18.144-71.395 50.15-7.712 106.683-11.81 165.573-11.81 52.49 0 103.109 3.253 149.005 9.421 0.717 0.131 1.438 0.23 2.168 0.301 34.947 4.782 67.118 11.258 95.221 19.286 66.624 19.034 84.469 39.395 86.243 46.646zM614.4 640c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.582c0.118-7.766 9.55-36.685 17.126-59.92 2.747-8.426 5.618-17.227 8.474-26.227 2.856 9 5.726 17.802 8.474 26.227 7.576 23.235 17.008 52.154 17.126 59.902zM324.478 78.968c12.25-18.944 31.163-27.768 59.522-27.768 96 0 172.384 99.426 209.104 158.104-34.202-2.966-70.066-4.504-106.704-4.504-61.824 0-121.435 4.378-174.578 12.619-8.886-63.843-4.766-111.506 12.656-138.451zM240.005 285.006c9.68-2.766 19.853-5.342 30.445-7.734 5.094 23.915 11.542 49.322 19.354 76.213 4.101 14.118 8.368 27.93 12.686 41.27-22.43-3.978-43.4-8.71-62.485-14.163-61.552-17.587-81.474-36.309-85.549-44.776l-0.694-4.163c1.774-7.25 19.622-27.611 86.243-46.646zM721.358 917.739c-1.144 6.859-8.389 18.134-14.216 22.195-3.098 1.8-59.101 32.866-220.742 32.866-161.653 0-217.653-31.069-220.741-32.866-5.827-4.059-13.070-15.334-14.214-22.195l-84.984-509.896c16.69 8.075 36.573 15.434 59.48 21.979 28.443 8.126 60.627 14.768 95.398 19.787 20.562 56.627 38.219 96.059 39.317 98.494 4.267 9.485 13.595 15.101 23.36 15.101 3.512 0 7.080-0.726 10.491-2.261 12.893-5.802 18.642-20.958 12.84-33.85-0.221-0.491-12.768-28.51-28.898-70.91 34.574 3.040 70.864 4.616 107.95 4.616 25.331 0 50.288-0.741 74.584-2.174-5.141 31.394-18.296 71.744-29.336 105.598-12.91 39.595-19.648 60.947-19.648 75.776 0 42.349 34.451 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-14.829-6.738-36.181-19.648-75.776-11.582-35.517-25.488-78.179-30.030-110.152 48.472-5.232 93.029-13.418 130.938-24.248 22.906-6.544 42.79-13.904 59.482-21.979l-84.982 509.894z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bug.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bug.js
new file mode 100644
index 00000000..58d4ff41
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bug.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bug
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 614.4h-77.544c-3.19-56.282-16.878-110.243-39.965-158.814 53.056-15.624 91.909-64.739 91.909-122.786 0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 38.984-29.205 71.254-66.88 76.138-8.928-13.632-18.678-26.68-29.259-39.026-5.515-6.435-11.203-12.6-17.032-18.525 7.147-22.477 10.771-45.877 10.771-69.787 0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4c0 23.909 3.624 47.309 10.77 69.787-5.829 5.923-11.515 12.090-17.032 18.525-10.582 12.346-20.331 25.394-29.259 39.026-37.674-4.883-66.878-37.154-66.878-76.138 0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 58.046 38.853 107.162 91.907 122.784-23.086 48.573-36.773 102.534-39.965 158.816h-77.542c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h77.544c3.19 56.283 16.878 110.243 39.965 158.816-53.056 15.622-91.909 64.738-91.909 122.784 0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-38.984 29.205-71.254 66.88-76.138 8.928 13.632 18.677 26.68 29.259 39.026 62.965 73.458 147.013 113.912 236.661 113.912s173.698-40.454 236.661-113.912c10.581-12.346 20.331-25.394 29.258-39.026 37.677 4.883 66.882 37.152 66.882 76.138 0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-58.046-38.853-107.163-91.907-122.784 23.086-48.571 36.773-102.533 39.965-158.816h77.542c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM486.4 102.4c98.811 0 179.2 80.389 179.2 179.2 0 10.986-0.99 21.824-2.933 32.458-52.312-37.811-112.885-58.058-176.267-58.058s-123.955 20.246-176.267 58.058c-1.942-10.634-2.933-21.472-2.933-32.458 0-98.811 80.389-179.2 179.2-179.2zM204.8 640c0-173.306 112.678-316.072 256-331.41v662.821c-143.322-15.339-256-158.106-256-331.411zM512 971.411v-662.821c143.322 15.338 256 158.104 256 331.41s-112.678 316.072-256 331.411z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bullhorn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bullhorn.js
new file mode 100644
index 00000000..b29be0a7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bullhorn.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Bullhorn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M992.694 158.682c-29.611-88.835-68.928-107.482-96.694-107.482-0.584 0-1.176 0.011-1.771 0.029-28.322 0.598-78.627 15.33-153.997 37.41-157.898 46.258-396.514 116.162-637.832 116.162-58.378 0-102.4 77.038-102.4 179.2s44.022 179.2 102.4 179.2c18.891 0 37.765 0.429 56.584 1.24l85.306 339.347c9.73 38.699 48.608 69.013 88.51 69.013h67.2c22.17 0 40.986-9.23 51.622-25.322 10.635-16.091 11.75-37.019 3.061-57.416l-131.926-309.634c160.552 23.672 308.307 66.95 417.474 98.931 75.37 22.082 125.675 36.813 153.997 37.411 0.595 0.018 1.187 0.029 1.771 0.029 27.766 0 67.083-18.646 96.694-107.482 20.19-60.563 31.307-140.582 31.307-225.318 0-84.734-11.117-164.755-31.306-225.318zM819.2 384c0-26.266 1.122-51.965 3.285-76.616 26.291 2.642 47.915 36.642 47.915 76.616s-21.624 73.974-47.915 76.616c-2.163-24.651-3.285-50.35-3.285-76.616zM51.2 384c0-78.136 30.325-128 51.2-128 58.117 0 115.915-3.888 172.422-10.445-12.142 38.794-18.822 86.912-18.822 138.445 0 51.549 6.68 99.658 18.821 138.443-56.507-6.555-114.306-10.443-172.421-10.443-20.875 0-51.2-49.864-51.2-128zM407.579 910.131c2.099 4.928 1.93 8.208 1.328 9.117s-3.55 2.352-8.907 2.352h-67.2c-16.349 0-34.869-14.44-38.856-30.296l-81.33-323.53c17.157 1.379 34.235 3.046 51.213 4.966l143.752 337.39zM332.24 530.051c-15.587-35.173-25.040-89.509-25.040-146.051 0-57.422 9.238-110.73 25.011-146.046 163.054-24.2 312.094-67.861 422.414-100.179 21.243-6.224 41.526-12.165 59.938-17.344-5.285 11.019-10.402 23.686-15.256 38.253-20.19 60.562-31.307 140.582-31.307 225.317s11.117 164.755 31.306 225.318c4.854 14.566 9.971 27.234 15.256 38.253-18.411-5.181-38.694-11.122-59.938-17.346-110.314-32.317-259.341-75.974-422.384-100.174zM944.122 593.128c-19.107 57.325-39.832 72.472-48.122 72.472s-29.014-15.147-48.122-72.472c-8.024-24.069-14.48-51.678-19.222-81.701 24.888-2.87 48.298-16.95 65.33-39.658 17.808-23.744 27.614-54.914 27.614-87.77 0-32.854-9.806-64.026-27.614-87.768-17.034-22.709-40.442-36.789-65.33-39.659 4.742-30.024 11.198-57.632 19.222-81.699 19.109-57.326 39.832-72.474 48.122-72.474s29.013 15.147 48.122 72.472c18.494 55.482 28.678 129.75 28.678 209.128s-10.184 153.646-28.678 209.128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus.js
new file mode 100644
index 00000000..6d9837ea
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Bus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 665.6h-204.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.462 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM153.6 614.4h153.6v-102.4h-153.6v102.4z' />
+            <path d='M640 665.6h-204.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6zM460.8 614.4h153.6v-102.4h-153.6v102.4z' />
+            <path d='M1016.501 688.094l-36.718-257.030c-5.819-40.746-42.622-72.664-83.782-72.664h-768c-70.579 0-128 57.421-128 128v409.6c0 42.349 34.453 76.8 76.8 76.8h39.376c17.733 30.576 50.805 51.2 88.624 51.2s70.89-20.624 88.624-51.2h385.952c17.733 30.576 50.805 51.2 88.624 51.2s70.891-20.624 88.624-51.2h90.576c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-29.237-3.365-76.566-7.499-105.506zM954.254 614.4h-186.254v-102.4h171.627l14.627 102.4zM128 409.6h768c15.446 0 30.912 13.414 33.099 28.706l3.213 22.494h-189.912c-14.139 0-25.6 11.462-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6h219.168l4.248 29.734c0.898 6.277 1.76 13.6 2.555 21.466h-917.171v-230.4c0-42.347 34.453-76.8 76.8-76.8zM204.8 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM768 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM947.2 921.6h-76.8c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4h-358.4c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4h-25.6c-14.115 0-25.6-11.485-25.6-25.6v-128h920.922c0.434 9.408 0.678 18.202 0.678 25.6v25.6h-25.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h25.6v25.6c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus2.js
new file mode 100644
index 00000000..e780c95c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Bus2.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Bus2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 307.2h-563.2c-14.138 0-25.6 11.462-25.6 25.6v256c0 14.139 11.462 25.6 25.6 25.6h255.89c0.030 0 0.059 0.003 0.088 0.003 0.034 0 0.069-0.003 0.102-0.003h255.81c0.030 0 0.058 0.003 0.088 0.003 0.034 0 0.069-0.003 0.102-0.003h51.12c14.139 0 25.6-11.461 25.6-25.6v-256c0-14.138-11.461-25.6-25.6-25.6zM256 358.4h512v204.8h-17.85l-147.15-98.101c-11.763-7.84-27.658-4.664-35.501 7.101-7.843 11.763-4.664 27.658 7.101 35.501l83.25 55.499h-163.699l-147.15-98.101c-11.763-7.84-27.659-4.664-35.501 7.101-7.842 11.763-4.664 27.658 7.101 35.501l83.25 55.499h-145.85v-204.8z' />
+            <path d='M799.514 91.277c-69.808-26.594-166.541-40.077-287.514-40.077s-217.706 13.483-287.514 40.077c-100.906 38.44-122.086 96.874-122.086 139.123v563.2c0 61.814 44.045 113.531 102.4 125.426v53.774c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h307.2v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-53.774c58.355-11.894 102.4-63.611 102.4-125.426v-563.2c0-42.25-21.181-100.683-122.086-139.123zM307.2 972.8h-51.2v-51.2h51.2v51.2zM716.8 972.8v-51.2h51.2v51.2h-51.2zM870.4 793.6c0 42.349-34.451 76.8-76.8 76.8h-563.2c-42.347 0-76.8-34.451-76.8-76.8v-563.2c0-38.040 29.982-68.75 89.114-91.277 63.064-24.024 156.182-36.723 269.286-36.723s206.224 12.699 269.286 36.723c59.131 22.526 89.114 53.237 89.114 91.277v563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Button.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Button.js
new file mode 100644
index 00000000..e3f7bed8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Button.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Button
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 512c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM384 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M588.8 512c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M384 716.8c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM384 614.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M588.8 716.8c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 614.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8s149.294-332.8 332.8-332.8 332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8zM486.4 256c-155.275 0-281.6 126.325-281.6 281.6s126.325 281.6 281.6 281.6 281.6-126.325 281.6-281.6-126.325-281.6-281.6-281.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable.js
new file mode 100644
index 00000000..89aae424
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cable
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 256h-25.6v-179.2c0-14.138-11.461-25.6-25.6-25.6h-460.8c-14.138 0-25.6 11.462-25.6 25.6v179.2h-25.6c-42.347 0-76.8 34.453-76.8 76.8v153.6c0 33.496 15.742 80.723 35.84 107.518l92.16 122.882c13.637 18.184 25.6 54.072 25.6 76.8 0 33.371 21.403 61.829 51.2 72.397v132.403c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h204.8v128c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-132.403c29.795-10.568 51.2-39.026 51.2-72.397 0-22.73 11.963-58.618 25.6-76.8l92.16-122.88c20.096-26.795 35.84-74.024 35.84-107.52v-153.6c0-42.347-34.453-76.8-76.8-76.8zM307.2 102.4h409.6v153.6h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-204.8v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-153.6zM819.2 486.4c0 22.73-11.963 58.618-25.6 76.8l-92.16 122.88c-20.096 26.795-35.84 74.024-35.84 107.52 0 14.115-11.485 25.6-25.6 25.6h-256c-14.115 0-25.6-11.485-25.6-25.6 0-33.496-15.742-80.723-35.84-107.518l-92.16-122.882c-13.637-18.184-25.6-54.072-25.6-76.8v-153.6c0-14.115 11.485-25.6 25.6-25.6h563.2c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable2.js
new file mode 100644
index 00000000..57b0844a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cable2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Cable2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 716.8h-153.6c-14.115 0-25.6-11.485-25.6-25.6v-79.374c58.355-11.894 102.4-63.611 102.4-125.426v-358.4c0-14.138-11.462-25.6-25.6-25.6h-76.8v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6v358.4c0 61.814 44.045 113.531 102.4 125.426v79.374c0 42.349 34.453 76.8 76.8 76.8h153.6c14.115 0 25.6 11.485 25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-42.349-34.453-76.8-76.8-76.8zM204.8 153.6v51.2h-153.6v-51.2h153.6zM51.2 486.4v-230.4h153.6v230.4c0 42.349-34.453 76.8-76.8 76.8s-76.8-34.451-76.8-76.8z' />
+            <path d='M588.8 102.4h-76.8v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6v358.4c0 61.814 44.045 113.531 102.4 125.426v386.574c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-386.574c58.355-11.894 102.4-63.611 102.4-125.426v-358.4c0-14.138-11.461-25.6-25.6-25.6zM563.2 153.6v51.2h-153.6v-51.2h153.6zM563.2 486.4c0 42.349-34.451 76.8-76.8 76.8-42.347 0-76.8-34.451-76.8-76.8v-230.4h153.6v230.4z' />
+            <path d='M947.2 102.4h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.462-25.6 25.6v358.4c0 61.814 44.045 113.531 102.4 125.426v79.374c0 14.115-11.485 25.6-25.6 25.6h-153.6c-42.349 0-76.8 34.451-76.8 76.8v204.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h153.6c42.349 0 76.8-34.451 76.8-76.8v-79.374c58.355-11.894 102.4-63.611 102.4-125.426v-358.4c0-14.138-11.461-25.6-25.6-25.6zM921.6 153.6v51.2h-153.6v-51.2h153.6zM921.6 486.4c0 42.349-34.451 76.8-76.8 76.8s-76.8-34.451-76.8-76.8v-230.4h153.6v230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cactus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cactus.js
new file mode 100644
index 00000000..ba049654
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cactus.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Cactus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M460.8 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M921.6 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M896 153.6c-70.579 0-128 57.421-128 128v25.6h-25.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h25.6v25.6c0 14.115-11.485 25.6-25.6 25.6h-76.8v-204.8h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-27.435c-12.462-86.726-87.245-153.6-177.365-153.6-98.811 0-179.2 80.389-179.2 179.2v128h-25.6c-14.115 0-25.6-11.485-25.6-25.6v-76.8c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v51.2h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v102.4c0 56.464 45.936 102.4 102.4 102.4h153.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v65.374c-23.507 4.374-43.050 9.576-58.25 15.526-28.274 11.069-43.053 26.227-44.053 45.053-0.038 0.478-0.058 0.958-0.067 1.442-0.005 0.205-0.030 0.402-0.030 0.605 0 0.168 0.019 0.328 0.021 0.496 0.008 0.382 0.024 0.766 0.050 1.152 0.184 4.458 1.099 8.592 2.659 12.429l48.65 194.595c3.6 38.269 60.192 52.418 79.197 57.168 40.653 10.163 94.288 15.76 151.024 15.76s110.37-5.597 151.026-15.762c19.003-4.752 75.595-18.899 79.195-57.168l48.65-194.595c1.56-3.835 2.475-7.971 2.659-12.432 0.026-0.382 0.040-0.765 0.048-1.144 0.003-0.168 0.022-0.33 0.022-0.499 0-0.206-0.026-0.405-0.030-0.61-0.011-0.48-0.030-0.958-0.067-1.434-0.998-18.829-15.778-33.987-44.054-45.056-15.198-5.95-34.742-11.15-58.248-15.525v-65.376h230.4c70.579 0 128-57.421 128-128v-204.8c0-70.579-57.421-128-128-128zM307.2 731.936v20.918c-17.787-3.683-29.934-7.365-38.109-10.459 8.174-3.101 20.334-6.784 38.109-10.459zM611.618 961.613c-34.914 7.214-79.382 11.187-125.218 11.187s-90.304-3.973-125.218-11.187c-34.35-7.101-49.73-15.325-54.371-19.122l-36.451-145.803c9.904 2.76 20.114 5.040 30 7.019 49.955 9.992 116.026 15.493 186.040 15.493s136.085-5.501 186.038-15.494c9.888-1.978 20.098-4.259 30.002-7.019l-36.451 145.803c-4.642 3.798-20.022 12.022-54.371 19.123zM703.707 742.395c-8.173 3.096-20.32 6.776-38.107 10.459v-20.917c17.774 3.675 29.934 7.358 38.107 10.458zM972.8 486.4c0 42.349-34.451 76.8-76.8 76.8h-256c-14.139 0-25.6 11.461-25.6 25.6v172.155c-38.37 4.573-82.64 7.045-128 7.045s-89.63-2.472-128-7.043v-274.557c0-14.138-11.462-25.6-25.6-25.6h-179.2c-28.232 0-51.2-22.968-51.2-51.2v-204.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 42.347 34.453 76.8 76.8 76.8h51.2c14.138 0 25.6-11.462 25.6-25.6v-153.6c0-70.579 57.421-128 128-128s128 57.421 128 128v256c0 14.138 11.461 25.6 25.6 25.6h102.4c42.349 0 76.8-34.453 76.8-76.8v-102.4c0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cake.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cake.js
new file mode 100644
index 00000000..90bba159
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cake.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Cake
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M922.098 455.752c-32.435-64.874-74.096-117.451-114.298-144.253-7.437-4.958-16.926-5.677-25.027-1.898l-65.973 30.787v-84.389c0-9.698-5.478-18.562-14.152-22.898l-51.2-25.6c-7.206-3.603-15.691-3.603-22.898 0l-51.2 25.6c-8.674 4.336-14.152 13.2-14.152 22.898v156.070l-547.88 255.678c-2.565 1.125-4.901 2.654-6.936 4.506-0.958 0.87-1.846 1.811-2.658 2.81 0 0.002 0 0.002 0 0.002-0.006 0.008-0.013 0.016-0.019 0.024-3.614 4.462-5.749 10.144-5.704 16.272v307.038c0 7.035 2.896 13.763 8.006 18.597 4.765 4.509 11.066 7.003 17.592 7.003 0.472 0 0.947-0.013 1.421-0.038l921.6-51.2c13.565-0.755 24.179-11.974 24.179-25.562v-307.2c0-52.648-18.48-119.805-50.702-184.248zM614.4 271.822l25.6-12.8 25.6 12.8v235.574c-7.658 2.432-17.008 4.603-25.6 4.603-8.597 0-17.952-2.173-25.6-4.6v-235.578zM563.2 468.571v56.229c0 9.698 5.478 18.562 14.152 22.898 3.173 1.587 31.893 15.502 62.648 15.502s59.475-13.915 62.648-15.502c8.674-4.336 14.152-13.2 14.152-22.898v-127.909l73.822-34.45c29.437 24.059 60.73 66.306 85.682 116.208 23.496 46.992 39.136 96.438 43.818 137.216l-763.438 42.413 406.517-189.707zM921.6 667.062v153.52l-870.4 48.355v-153.52l870.4-48.355zM51.2 971.339v-51.122l870.4-48.355v51.12l-870.4 48.357z' />
+            <path d='M640 204.8c-39.477 0-76.8-37.323-76.8-76.8 0-23.094 11.966-42.456 27.115-66.966 8.214-13.291 17.523-28.355 26.787-46.882 4.336-8.674 13.2-14.152 22.898-14.152s18.562 5.478 22.898 14.152c9.264 18.526 18.573 33.59 26.787 46.882 15.149 24.51 27.115 43.872 27.115 66.966 0 39.477-37.323 76.8-76.8 76.8zM640 77.979c-2.136 3.506-4.189 6.829-6.131 9.971-10.878 17.6-19.469 31.501-19.469 40.050 0 11.485 14.115 25.6 25.6 25.6s25.6-14.115 25.6-25.6c0-8.549-8.59-22.45-19.469-40.050-1.942-3.142-3.995-6.466-6.131-9.971z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator.js
new file mode 100644
index 00000000..33f15891
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Calculator
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 512h-307.2c-42.347 0-76.8-34.453-76.8-76.8v-307.2c0-42.347 34.453-76.8 76.8-76.8h307.2c42.347 0 76.8 34.453 76.8 76.8v307.2c0 42.347-34.453 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h307.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-307.2z' />
+            <path d='M384 1024h-307.2c-42.347 0-76.8-34.451-76.8-76.8v-307.2c0-42.349 34.453-76.8 76.8-76.8h307.2c42.347 0 76.8 34.451 76.8 76.8v307.2c0 42.349-34.453 76.8-76.8 76.8zM76.8 614.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h307.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-307.2z' />
+            <path d='M332.8 307.2h-204.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 768h-76.8v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+            <path d='M896 1024h-307.2c-42.349 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.451-76.8 76.8-76.8h307.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM588.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h307.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-307.2z' />
+            <path d='M844.8 512h-204.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 614.4h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator2.js
new file mode 100644
index 00000000..2894bcb6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calculator2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Calculator2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM128 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+            <path d='M793.6 358.4h-614.4c-14.138 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.461 25.6-25.6 25.6zM204.8 307.2h563.2v-153.6h-563.2v153.6z' />
+            <path d='M793.6 409.6h-614.4c-14.138 0-25.6 11.462-25.6 25.6v460.8c0 14.139 11.462 25.6 25.6 25.6h614.4c14.139 0 25.6-11.461 25.6-25.6v-460.8c0-14.138-11.461-25.6-25.6-25.6zM768 563.2h-102.4v-102.4h102.4v102.4zM358.4 614.4h102.4v102.4h-102.4v-102.4zM307.2 716.8h-102.4v-102.4h102.4v102.4zM358.4 563.2v-102.4h102.4v102.4h-102.4zM460.8 768v102.4h-102.4v-102.4h102.4zM512 768h102.4v102.4h-102.4v-102.4zM614.4 716.8h-102.4v-102.4h102.4v102.4zM512 563.2v-102.4h102.4v102.4h-102.4zM307.2 460.8v102.4h-102.4v-102.4h102.4zM204.8 768h102.4v102.4h-102.4v-102.4zM665.6 870.4v-256h102.4v256h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calendar31.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calendar31.js
new file mode 100644
index 00000000..e35dea33
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Calendar31.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Calendar31
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M486.4 819.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h128v-102.4h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h76.8v-102.4h-128c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M691.2 819.2c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCheck.js
new file mode 100644
index 00000000..d9621856
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CalendarCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M435.2 793.6c-6.552 0-13.102-2.499-18.102-7.499l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203s26.206-9.997 36.205 0l84.298 84.298 237.899-237.898c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-256 256c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCross.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCross.js
new file mode 100644
index 00000000..c4bf2c17
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarCross.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CalendarCross
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M548.203 640l135.499-135.499c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-135.499 135.499-135.499-135.499c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l135.499 135.499-135.499 135.499c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l135.499-135.498 135.499 135.499c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-135.498-135.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarEmpty.js
new file mode 100644
index 00000000..5beebfab
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarEmpty.js
@@ -0,0 +1,12 @@
+// Icon: Linear.CalendarEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarFull.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarFull.js
new file mode 100644
index 00000000..01bbfdd1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarFull.js
@@ -0,0 +1,31 @@
+// Icon: Linear.CalendarFull
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M384 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 512h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 512h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 614.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 614.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarInsert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarInsert.js
new file mode 100644
index 00000000..ea2a626f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarInsert.js
@@ -0,0 +1,32 @@
+// Icon: Linear.CalendarInsert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-179.2c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h179.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-281.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h281.6v537.6c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h230.4c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-230.4v-128c0-14.115 11.485-25.6 25.6-25.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-128v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8z' />
+            <path d='M230.4 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 614.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 614.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 614.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M384 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 512h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 512h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M606.901 289.098c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.699v-219.797c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v219.797l-58.698-58.699c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498l102.4-102.4c9.997-9.998 9.997-26.206-0.002-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarText.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarText.js
new file mode 100644
index 00000000..c2f3493c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarText.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CalendarText
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM76.8 153.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h921.6v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M793.6 563.2h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 665.6h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 768h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarUser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarUser.js
new file mode 100644
index 00000000..e776d7d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CalendarUser.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CalendarUser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-128v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-512v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v716.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-42.347-34.451-76.8-76.8-76.8zM972.8 896c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-716.8c0-14.115 11.485-25.6 25.6-25.6h128v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h512v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h128c14.115 0 25.6 11.485 25.6 25.6v716.8z' />
+            <path d='M512 563.2c-84.696 0-153.6-68.902-153.6-153.6 0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6c0 84.698-68.904 153.6-153.6 153.6zM512 307.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4z' />
+            <path d='M691.2 819.2h-358.4c-21.75 0-40.766-9.075-52.171-24.899s-14.002-36.731-7.123-57.366c1.666-5.005 43.090-122.534 238.494-122.534s236.829 117.53 238.496 122.533c6.88 20.634 4.283 41.544-7.122 57.366-11.408 15.826-30.424 24.901-52.174 24.901zM322.008 753.333c-1.517 4.675-1.461 8.786 0.157 11.030 1.64 2.278 5.616 3.637 10.635 3.637h358.4c5.019 0 8.995-1.36 10.634-3.637 1.619-2.242 1.675-6.355 0.158-11.030-0.573-1.502-8.981-22.616-34.774-43.376-36.051-29.019-89.725-44.357-155.218-44.357-65.491 0-119.165 15.338-155.216 44.357-25.798 20.763-34.205 41.878-34.776 43.376z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera.js
new file mode 100644
index 00000000..e2808d95
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Camera
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M979.496 873.131c-0.003 0-0.005 0-0.008 0-12.378-0.002-24.846-4.957-37.059-14.725l-176.038-140.832c-28.272-22.613-49.59-66.97-49.59-103.174v-153.6c0-36.203 21.318-80.56 49.589-103.174l176.037-140.83c12.216-9.773 24.686-14.726 37.066-14.726 22.155-0.002 44.509 16.675 44.509 53.931v563.2c0 14.234-3.275 26.197-9.733 35.558-8.056 11.675-20.73 18.373-34.771 18.373zM972.8 258.064l-174.427 139.542c-15.896 12.717-30.373 42.837-30.373 63.194v153.6c0 20.358 14.477 50.478 30.371 63.194l174.429 139.542v-559.072z' />
+            <path d='M588.8 870.4h-512c-42.347 0-76.8-34.453-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8v512c0 42.347-34.453 76.8-76.8 76.8zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera2.js
new file mode 100644
index 00000000..9c25fcb9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Camera2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Camera2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 768c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.043 0 230.4 103.357 230.4 230.4s-103.357 230.4-230.4 230.4zM486.4 358.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 921.6h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h76.8c21.246 0 54.278-13.682 69.302-28.706l29.992-29.992c24.914-24.915 70.272-43.702 105.506-43.702h256c35.235 0 80.594 18.789 105.506 43.702l29.992 29.99c15.024 15.026 48.056 28.707 69.302 28.707h76.8c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM76.8 307.2c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-76.8c-35.235 0-80.594-18.789-105.506-43.702l-29.992-29.99c-15.024-15.026-48.056-28.707-69.302-28.707h-256c-21.246 0-54.278 13.682-69.302 28.706l-29.992 29.992c-24.914 24.915-70.272 43.702-105.506 43.702h-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraCrossed.js
new file mode 100644
index 00000000..73ef7e63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraCrossed.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CameraCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M979.496 873.131c-0.003 0-0.005 0-0.008 0-12.378-0.002-24.846-4.957-37.059-14.725l-176.038-140.832c-28.272-22.613-49.59-66.97-49.59-103.174v-153.6c0-36.203 21.318-80.56 49.589-103.174l176.037-140.83c12.216-9.773 24.686-14.726 37.066-14.726 22.155-0.002 44.509 16.675 44.509 53.931v563.2c0 14.234-3.275 26.197-9.733 35.558-8.056 11.675-20.73 18.373-34.771 18.373zM972.8 258.064l-174.427 139.542c-15.896 12.717-30.373 42.837-30.373 63.194v153.6c0 20.358 14.477 50.478 30.371 63.194l174.429 139.542v-559.072z' />
+            <path d='M757.163 107.086c-11.55-8.152-27.525-5.4-35.677 6.15l-79.675 112.872c-13.795-13.184-32.467-21.309-53.011-21.309h-512c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h110.218l-79.933 113.237c-8.154 11.55-5.4 27.523 6.15 35.677 4.486 3.166 9.638 4.688 14.741 4.688 8.035 0 15.949-3.773 20.936-10.838l100.776-142.763h339.112c42.347 0 76.8-34.453 76.8-76.8v-512c0-0.133-0.010-0.262-0.010-0.395l97.723-138.442c8.154-11.55 5.4-27.525-6.15-35.677zM76.8 819.2c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h512c9.686 0 18.131 5.408 22.478 13.363l-388.118 549.837h-146.36zM614.4 793.6c0 14.115-11.485 25.6-25.6 25.6h-302.971l328.571-465.475v439.875z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraFlip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraFlip.js
new file mode 100644
index 00000000..d2836a99
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraFlip.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CameraFlip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 540.184v-258.584c0-42.347-34.453-76.8-76.8-76.8h-40.595l-43.702-43.702c-4.8-4.8-11.312-7.498-18.101-7.498h-256.002c-6.79 0-13.301 2.698-18.102 7.498l-43.701 43.702h-40.597c-42.347 0-76.8 34.453-76.8 76.8v258.587c-97.946 20.398-204.803 58.086-204.803 125.413 0 98.81 233.867 143.632 434.134 151.992 0.365 0.014 0.726 0.022 1.086 0.022 13.646 0 24.984-10.77 25.56-24.533 0.589-14.125-10.384-26.054-24.51-26.645-110.957-4.632-212.328-19.482-285.443-41.816-78.805-24.070-99.627-49.131-99.627-59.021 0-7.341 10.933-21.365 41.747-36.734 27.514-13.723 65.834-26.128 111.95-36.325 1.958 40.616 35.613 73.059 76.706 73.059h460.8c41.094 0 74.749-32.445 76.704-73.062 46.115 10.198 84.434 22.603 111.949 36.326 30.814 15.37 41.747 29.395 41.747 36.736 0 10.968-24.107 38.374-115.344 63.586-84.139 23.248-197.856 36.973-320.206 38.643-12.483 0.17-23.024 9.32-24.944 21.656-1.922 12.336 5.334 24.259 17.174 28.219l153.6 51.373c2.694 0.901 5.432 1.328 8.123 1.328 10.707 0 20.693-6.771 24.275-17.486 4.485-13.41-2.75-27.914-16.158-32.398l-25.349-8.478c74.014-6.758 141.533-18.147 197.12-33.507 101.464-28.034 152.909-66.032 152.909-112.934 0-67.326-106.856-105.018-204.8-125.416zM742.4 614.4h-460.8c-14.115 0-25.6-11.485-25.6-25.6v-27.080c0-0.040 0-0.082 0-0.122v-279.998c0-14.115 11.485-25.6 25.6-25.6h51.2c6.79 0 13.301-2.698 18.102-7.498l43.701-43.702h234.792l43.702 43.702c4.8 4.8 11.312 7.498 18.101 7.498h51.2c14.115 0 25.6 11.485 25.6 25.6v280.059c0 0.008 0 0.018 0 0.026v27.115c0.002 14.115-11.483 25.6-25.598 25.6z' />
+            <path d='M512 563.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 307.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraPlay.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraPlay.js
new file mode 100644
index 00000000..eb662a11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CameraPlay.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CameraPlay
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M979.494 873.131c-0.002 0-0.003 0-0.006 0-12.378-0.002-24.848-4.955-37.061-14.723l-176.037-140.834c-28.272-22.613-49.59-66.97-49.59-103.174v-153.6c0-36.206 21.32-80.562 49.592-103.176l176.034-140.83c12.216-9.773 24.686-14.726 37.066-14.726 22.155 0 44.509 16.677 44.509 53.933v563.2c0 14.234-3.275 26.197-9.733 35.558-8.056 11.675-20.73 18.373-34.773 18.373zM972.8 258.064l-174.426 139.542c-15.898 12.715-30.374 42.835-30.374 63.194v153.6c0 20.358 14.477 50.478 30.371 63.194l174.429 139.544v-559.074z' />
+            <path d='M588.8 870.4h-512c-42.347 0-76.8-34.453-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8v512c0 42.347-34.453 76.8-76.8 76.8zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-512z' />
+            <path d='M230.4 716.8c-4.347 0-8.696-1.106-12.613-3.323-8.026-4.544-12.987-13.053-12.987-22.277v-307.2c0-9.222 4.962-17.733 12.987-22.277 8.027-4.542 17.877-4.419 25.784 0.326l256 153.6c7.71 4.627 12.429 12.96 12.429 21.952s-4.718 17.325-12.429 21.952l-256 153.6c-4.050 2.427-8.61 3.646-13.171 3.646zM256 429.214v216.771l180.642-108.386-180.642-108.386z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Candy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Candy.js
new file mode 100644
index 00000000..6f14b5ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Candy.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Candy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.499 318.6l-25.6-38.4c-12.542-18.816-28.333-55.488-34.485-80.090l-0.763-3.048c-9.053-36.21-44.507-71.666-80.715-80.717l-3.056-0.765c-24.592-6.147-61.264-21.938-80.082-34.483l-38.4-25.6c-7.853-5.235-17.955-5.725-26.28-1.27-8.322 4.456-13.518 13.131-13.518 22.573v180.474c-51.76-33.203-113.272-52.474-179.2-52.474-183.506 0-332.8 149.294-332.8 332.8 0 65.928 19.27 127.44 52.474 179.2h-180.474c-9.442 0-18.117 5.197-22.571 13.52-4.454 8.325-3.966 18.426 1.27 26.28l25.6 38.4c12.544 18.818 28.336 55.49 34.483 80.082l0.765 3.054c9.051 36.21 44.506 71.664 80.707 80.714l3.067 0.768c24.592 6.149 61.264 21.939 80.080 34.482l38.4 25.6c4.283 2.856 9.235 4.301 14.202 4.301 4.141 0 8.293-1.003 12.078-3.030 8.322-4.454 13.518-13.13 13.518-22.57v-180.475c51.76 33.205 113.272 52.475 179.2 52.475 183.506 0 332.8-149.294 332.8-332.8 0-65.928-19.27-127.44-52.475-179.2h180.475c9.44 0 18.115-5.197 22.57-13.52 4.458-8.325 3.968-18.426-1.27-26.28zM460.8 818.024c-36.582-3.312-71.174-13.63-102.4-29.632v-501.584c31.226-16.002 65.818-26.32 102.4-29.634v560.85zM512 257.176c36.582 3.312 71.174 13.632 102.4 29.634v501.584c-31.226 16.002-65.818 26.318-102.4 29.632v-560.85zM307.2 320.536v434.128c-62.506-51.693-102.4-129.806-102.4-217.064s39.894-165.371 102.4-217.064zM256 950.576c-23.842-15.518-64.987-33.211-94.653-40.627l-3.067-0.768c-18.197-4.549-38.914-25.264-43.462-43.462l-0.765-3.054c-7.418-29.675-25.11-70.822-40.63-94.664h173.061c3.109 3.235 6.282 6.408 9.517 9.517v173.059zM665.6 754.664v-434.128c62.504 51.693 102.4 129.806 102.4 217.064s-39.896 165.371-102.4 217.064zM726.317 307.2c-3.109-3.235-6.282-6.408-9.517-9.517v-173.061c23.842 15.52 64.989 33.213 94.662 40.632l3.056 0.765c18.198 4.549 38.914 25.266 43.466 43.47l0.763 3.048c7.419 29.675 25.11 70.821 40.63 94.662h-173.061z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car.js
new file mode 100644
index 00000000..245ac9de
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Car
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024.032 794.109c0-0.579-0.019-1.154-0.056-1.722-0.326-13.227-4.816-93.83-65.326-124.085-8.755-4.376-26.88-13.438-198.787-26.826-6.259-14.325-16.766-37.403-29.51-61.597-39.877-75.696-65.026-93.038-80.474-99.499-54.118-22.632-217.184-27.742-323.285-1.218-66.392 16.598-125.877 55.715-172.024 113.122-26.256 32.662-41.306 62.624-47.334 75.933-15.182 11.966-28.906 25.914-41.133 41.83-43.864 57.091-66.102 136.88-66.102 237.152 0 6.789 2.698 13.301 7.499 18.102s11.314 7.498 18.102 7.498l53.014-0.003c12.738-0.002 23.536-9.366 25.341-21.974 1.446-10.106 3.914-19.862 7.234-29.206 21.136 59.59 78.066 102.387 144.81 102.387s123.672-42.797 144.81-102.387c3.32 9.344 5.787 19.101 7.234 29.206 1.803 12.61 12.603 21.974 25.342 21.974l310.83 0.003c12.738 0 23.539-9.366 25.342-21.974 0.874-6.106 2.146-12.077 3.717-17.917 15.918 52.643 64.858 91.091 122.627 91.091 70.634 0 128.098-57.464 128.098-128.098 0-28.392-9.285-54.824-25.117-76.218 13.928-0.242 25.149-11.587 25.149-25.576zM339.008 528.835c98.011-24.506 250.766-18.091 291.115-1.218 1.941 0.811 19.96 9.83 54.75 75.79 6.222 11.797 11.925 23.427 16.808 33.794-30.974-2.155-65.784-4.408-104.949-6.758-158.4-9.502-312.53-15.96-314.067-16.024-0.355-0.011-0.71-0.019-1.066-0.019-31.814 0-61.141 3.683-87.925 10.984 29.829-37.389 76.906-79.442 145.333-96.549zM256 972.803c-56.464 0-102.4-45.936-102.4-102.4 0-4.187 0.285-8.365 0.786-12.499 27.326-24.133 63.102-38.704 101.614-38.704 38.514 0 74.288 14.571 101.614 38.701 0.501 4.138 0.786 8.314 0.786 12.501 0 56.466-45.936 102.402-102.4 102.402zM723.266 921.6l-268.933-0.003c-9.222-35.754-28.077-68.47-54.542-94.581-0.269-0.275-0.544-0.544-0.824-0.806-2.675-2.611-5.402-5.178-8.23-7.65-37.296-32.603-85.146-50.56-134.736-50.56s-97.44 17.957-134.736 50.56c-2.205 1.928-4.354 3.909-6.467 5.922-1.472 1.157-2.818 2.472-4.013 3.931-25.725 25.875-44.061 58.072-53.12 93.186h-5.915c5.352-122.213 51.846-255.736 229.323-255.998 10.104 0.426 157.84 6.696 310.195 15.811 290.866 17.4 337.301 29.462 344.485 32.686 20.37 10.186 29.557 34.678 33.691 53.902l-47.843 0.002c-5.12 0-10.221 0.202-15.294 0.581-0.307 0.021-0.614 0.042-0.918 0.074-33.333 2.642-65.418 13.387-93.501 31.21-0.29 0.174-0.571 0.363-0.856 0.55-8.446 5.419-16.531 11.47-24.166 18.146-31.254 27.322-53.354 63.32-63.598 103.038zM895.902 972.8c-42.402 0-76.899-34.496-76.899-76.898 0-20.106 7.605-38.894 21.467-53.28 19.88-12.44 42.675-20.482 66.902-22.755 37.462 5.582 65.427 37.843 65.427 76.035 0 42.402-34.496 76.898-76.898 76.898z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car2.js
new file mode 100644
index 00000000..b126a2e8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Car2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Car2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M868.256 609.642c-6.646-40.557-28.301-164.576-51.76-211.491-15.627-31.256-55.694-55.139-119.088-70.987-51.496-12.874-117.342-19.963-185.408-19.963s-133.912 7.090-185.408 19.965c-63.394 15.848-103.461 39.733-119.090 70.987-23.458 46.915-45.112 170.933-51.758 211.491-35.778 24.512-53.344 59.99-53.344 107.157v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.158zM253.298 421.048c15.186-30.37 111.014-62.648 258.702-62.648s243.517 32.278 258.702 62.648c14.718 29.437 31.026 107.306 41.139 162.966-4.998-1.472-10.166-2.845-15.512-4.118-13.656-3.251-28.434-5.862-44.2-7.971l-148.421-106.334c-11.494-8.237-27.485-5.59-35.72 5.901-8.234 11.493-5.592 27.485 5.901 35.72l80.166 57.435c-43.517-1.443-91.251-1.446-142.056-1.446-5.998 0-11.942 0-17.854 0.003l-147.146-98.102c-11.765-7.843-27.658-4.664-35.501 7.099s-4.666 27.658 7.099 35.501l84.178 56.122c-68.654 1.237-128.362 4.946-175.107 16.075-5.347 1.274-10.517 2.648-15.517 4.12 10.115-55.654 26.418-133.515 41.146-162.97zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-47.331 24.896-72.565 85.93-87.098 64.275-15.302 160.757-15.302 272.47-15.302s208.194 0 272.47 15.302c61.034 14.533 85.93 39.766 85.93 87.098v128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarBattery.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarBattery.js
new file mode 100644
index 00000000..3eecb870
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarBattery.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CarBattery
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 256h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6h-153.6c-14.139 0-25.6 11.462-25.6 25.6v76.8h-409.6v-76.8c0-14.138-11.462-25.6-25.6-25.6h-153.6c-14.138 0-25.6 11.462-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6v563.2c0 14.139 11.462 25.6 25.6 25.6h972.8c14.139 0 25.6-11.461 25.6-25.6v-563.2c0-14.138-11.461-25.6-25.6-25.6zM768 204.8h102.4v51.2h-102.4v-51.2zM153.6 204.8h102.4v51.2h-102.4v-51.2zM972.8 819.2h-921.6v-512h921.6v512z' />
+            <path d='M844.8 512h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M384 563.2h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarLock.js
new file mode 100644
index 00000000..3aea07d4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarLock.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CarLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M868.256 609.642c-6.646-40.557-28.301-164.576-51.76-211.491-15.627-31.256-55.694-55.139-119.088-70.987-51.496-12.874-117.342-19.963-185.408-19.963-26.75 0-53.307 1.086-78.933 3.23-14.090 1.178-24.555 13.555-23.378 27.645s13.557 24.563 27.645 23.378c24.211-2.026 49.333-3.053 74.666-3.053 147.688 0 243.517 32.278 258.702 62.648 14.717 29.434 31.024 107.304 41.141 162.968-4.998-1.474-10.166-2.846-15.514-4.12-70.123-16.696-169.389-16.696-284.33-16.696-26.954 0-52.411 0-77.006 0.198-14.138 0.115-25.507 11.669-25.392 25.808 0.114 14.067 11.552 25.394 25.595 25.392 0.070 0 0.142 0 0.211-0.002 24.389-0.197 49.746-0.197 76.592-0.197 111.714 0 208.194 0 272.47 15.302 18.771 4.47 34.112 9.957 46.373 16.782 0.784 0.51 1.594 0.982 2.43 1.405 25.87 15.307 37.126 37.118 37.126 68.91v128c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-7.418 0.627-14.373 1.862-20.674 2.722-13.875-6.32-27.326-20.195-30.048-13.874-2.72-27.328 6.318-30.048 20.195-1.87 9.539-2.819 19.81-2.819 30.526v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.158zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2z' />
+            <path d='M307.2 311.603v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM179.2 204.8c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM307.2 537.6c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarSiren.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarSiren.js
new file mode 100644
index 00000000..2dec012d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarSiren.js
@@ -0,0 +1,18 @@
+// Icon: Linear.CarSiren
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M868.256 609.642c-6.646-40.557-28.301-164.576-51.76-211.491-15.627-31.256-55.694-55.139-119.088-70.987-24.789-6.197-52.923-11.038-83.010-14.41v-56.754c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4l-0.002 56.755c-30.085 3.371-58.219 8.213-83.006 14.41-63.394 15.848-103.461 39.733-119.090 70.987-23.458 46.915-45.112 170.933-51.758 211.491-35.776 24.512-53.342 59.99-53.342 107.157v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.158zM460.8 256c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v52.554c-16.792-0.893-33.923-1.354-51.2-1.354s-34.408 0.462-51.202 1.354l0.002-52.554zM253.298 421.048c15.186-30.37 111.014-62.648 258.702-62.648s243.517 32.278 258.702 62.648c14.717 29.434 31.024 107.302 41.141 162.968-4.998-1.474-10.166-2.846-15.514-4.12-13.656-3.251-28.434-5.862-44.2-7.971l-148.421-106.334c-11.494-8.237-27.485-5.59-35.72 5.901-8.234 11.493-5.592 27.485 5.901 35.72l80.165 57.435c-43.515-1.443-91.25-1.446-142.054-1.446-5.998 0-11.942 0-17.854 0.003l-147.146-98.102c-11.765-7.843-27.658-4.664-35.501 7.099s-4.666 27.658 7.099 35.501l84.178 56.122c-68.654 1.237-128.362 4.946-175.107 16.075-5.347 1.274-10.517 2.648-15.517 4.12 10.115-55.654 26.418-133.515 41.146-162.97zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-47.331 24.896-72.565 85.93-87.098 64.275-15.302 160.757-15.302 272.47-15.302s208.194 0 272.47 15.302c61.034 14.533 85.93 39.766 85.93 87.098v128z' />
+            <path d='M640 102.4c-6.552 0-13.102-2.499-18.101-7.498-9.998-9.998-9.998-26.206 0-36.205l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-51.2 51.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M383.998 102.4c-6.552 0-13.102-2.499-18.102-7.499l-51.198-51.2c-9.997-9.998-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.203 0l51.198 51.2c9.997 9.998 9.997 26.206 0 36.203-4.998 5-11.55 7.499-18.101 7.499z' />
+            <path d='M742.4 256h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 256h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash.js
new file mode 100644
index 00000000..04bd2688
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CarWash
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024.032 794.109c0-0.579-0.019-1.154-0.056-1.722-0.326-13.227-4.816-93.83-65.326-124.085-8.755-4.376-26.878-13.438-198.787-26.826-6.259-14.325-16.766-37.403-29.51-61.597-39.877-75.696-65.026-93.038-80.474-99.499-54.118-22.632-217.184-27.742-323.285-1.218-66.392 16.598-125.877 55.715-172.024 113.122-26.256 32.662-41.306 62.624-47.334 75.933-15.182 11.966-28.906 25.914-41.133 41.83-43.864 57.091-66.102 136.88-66.102 237.152 0 6.789 2.698 13.301 7.499 18.102 4.802 4.8 11.314 7.498 18.102 7.498l53.014-0.003c12.738-0.002 23.536-9.366 25.341-21.974 1.446-10.106 3.914-19.862 7.234-29.206 21.136 59.589 78.066 102.387 144.81 102.387s123.672-42.797 144.81-102.387c3.32 9.344 5.787 19.101 7.234 29.206 1.803 12.61 12.603 21.974 25.342 21.974l310.83 0.003c12.738 0 23.539-9.366 25.342-21.974 0.874-6.106 2.144-12.075 3.717-17.915 15.917 52.645 64.859 91.094 122.632 91.094 70.63-0.006 128.093-57.47 128.093-128.102 0-28.394-9.285-54.824-25.115-76.218 13.928-0.243 25.147-11.589 25.147-25.576zM339.008 528.835c98.011-24.506 250.766-18.091 291.115-1.218 1.941 0.811 19.96 9.83 54.75 75.79 6.222 11.797 11.925 23.427 16.808 33.794-30.974-2.155-65.784-4.408-104.949-6.758-158.4-9.502-312.53-15.96-314.067-16.024-0.355-0.011-0.71-0.019-1.066-0.019-31.814 0-61.141 3.683-87.925 10.984 29.829-37.389 76.906-79.442 145.333-96.549zM256 972.803c-56.464 0-102.4-45.936-102.4-102.4 0-4.186 0.285-8.363 0.786-12.501 27.326-24.131 63.102-38.702 101.614-38.702 38.514 0 74.288 14.571 101.614 38.702 0.501 4.138 0.786 8.314 0.786 12.499-0 56.466-45.936 102.402-102.4 102.402zM723.266 921.6l-268.933-0.003c-9.219-35.744-28.066-68.451-54.52-94.558-0.286-0.294-0.578-0.578-0.875-0.858-2.667-2.6-5.384-5.158-8.202-7.622-37.296-32.602-85.146-50.558-134.736-50.558-49.589 0-97.438 17.957-134.736 50.56-2.203 1.926-4.35 3.906-6.462 5.918-1.478 1.158-2.829 2.478-4.027 3.944-25.72 25.874-44.053 58.067-53.11 93.176h-5.915c5.352-122.213 51.846-255.736 229.323-255.998 10.104 0.426 157.84 6.696 310.195 15.811 290.866 17.4 337.301 29.462 344.485 32.686 20.37 10.186 29.557 34.678 33.691 53.902l-47.843 0.002c-5.122 0-10.224 0.203-15.298 0.581-0.302 0.021-0.603 0.042-0.902 0.072-33.338 2.64-65.427 13.386-93.512 31.211-0.29 0.174-0.571 0.363-0.856 0.55-8.445 5.419-16.531 11.47-24.166 18.146-31.256 27.322-53.355 63.32-63.6 103.038zM895.904 972.803c-42.403 0-76.899-34.496-76.899-76.898 0-20.109 7.605-38.898 21.467-53.283 19.88-12.44 42.675-20.482 66.904-22.755 37.459 5.579 65.424 37.84 65.424 76.034-0 42.402-34.496 76.901-76.896 76.902z' />
+            <path d='M793.6 358.4c-70.579 0-128-57.421-128-128 0-52.587 28.978-93.085 57.002-132.248 19.091-26.68 37.123-51.88 46.712-80.646 3.485-10.454 13.267-17.506 24.286-17.506s20.802 7.051 24.286 17.504c9.589 28.766 27.622 53.966 46.712 80.646 28.024 39.165 57.002 79.662 57.002 132.25 0 70.579-57.421 128-128 128zM793.6 84.662c-9.187 15.093-19.358 29.306-29.36 43.283-25.456 35.576-47.44 66.299-47.44 102.454 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-36.155-21.984-66.878-47.44-102.454-10.002-13.979-20.173-28.19-29.36-43.283z' />
+            <path d='M486.4 358.4c-70.579 0-128-57.421-128-128 0-52.587 28.978-93.085 57.002-132.248 19.091-26.68 37.123-51.88 46.712-80.646 3.485-10.454 13.267-17.506 24.286-17.506s20.802 7.051 24.286 17.504c9.589 28.766 27.622 53.966 46.712 80.646 28.024 39.165 57.002 79.662 57.002 132.25 0 70.579-57.421 128-128 128zM486.4 84.662c-9.187 15.093-19.357 29.306-29.36 43.283-25.456 35.576-47.44 66.299-47.44 102.454 0 42.347 34.453 76.8 76.8 76.8 42.349 0 76.8-34.453 76.8-76.8 0-36.155-21.984-66.878-47.44-102.454-10.003-13.979-20.173-28.19-29.36-43.283z' />
+            <path d='M179.2 358.4c-70.579 0-128-57.421-128-128 0-52.587 28.978-93.085 57.002-132.248 19.091-26.68 37.123-51.882 46.712-80.648 3.485-10.453 13.267-17.504 24.286-17.504s20.802 7.051 24.286 17.504c9.589 28.766 27.621 53.966 46.712 80.646 28.024 39.165 57.002 79.662 57.002 132.25 0 70.579-57.421 128-128 128zM179.2 84.662c-9.187 15.093-19.357 29.306-29.36 43.283-25.456 35.576-47.44 66.299-47.44 102.454 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-36.155-21.984-66.878-47.44-102.454-10.003-13.979-20.173-28.19-29.36-43.283z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash2.js
new file mode 100644
index 00000000..97997186
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash2.js
@@ -0,0 +1,20 @@
+// Icon: Linear.CarWash2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024.032 794.109c0-0.579-0.019-1.154-0.056-1.722-0.326-13.227-4.816-93.83-65.326-124.085-8.755-4.376-26.878-13.438-198.787-26.826-6.259-14.325-16.766-37.403-29.51-61.597-39.877-75.696-65.026-93.038-80.474-99.499-54.118-22.632-217.184-27.742-323.285-1.218-66.392 16.598-125.877 55.715-172.024 113.122-26.256 32.662-41.306 62.624-47.334 75.933-15.182 11.966-28.906 25.914-41.133 41.83-43.864 57.091-66.102 136.88-66.102 237.152 0 6.789 2.698 13.301 7.499 18.102 4.802 4.8 11.314 7.498 18.102 7.498l53.014-0.003c12.738-0.002 23.536-9.366 25.341-21.974 1.446-10.106 3.914-19.862 7.234-29.206 21.136 59.589 78.066 102.387 144.81 102.387s123.672-42.797 144.81-102.387c3.32 9.344 5.787 19.101 7.234 29.206 1.803 12.61 12.603 21.974 25.342 21.974l310.83 0.003c12.738 0 23.539-9.366 25.342-21.974 0.874-6.106 2.144-12.075 3.717-17.915 15.917 52.645 64.859 91.096 122.632 91.096 70.632-0.006 128.094-57.472 128.094-128.101 0-28.394-9.285-54.826-25.114-76.218 13.925-0.246 25.144-11.592 25.144-25.579zM339.008 528.835c98.011-24.506 250.766-18.091 291.115-1.218 1.941 0.811 19.96 9.83 54.75 75.79 6.222 11.797 11.925 23.427 16.808 33.794-30.974-2.155-65.784-4.408-104.949-6.758-158.4-9.502-312.53-15.96-314.067-16.024-0.355-0.011-0.71-0.019-1.066-0.019-31.814 0-61.141 3.683-87.925 10.984 29.829-37.389 76.906-79.442 145.333-96.549zM256 972.803c-56.464 0-102.4-45.936-102.4-102.4 0-4.186 0.285-8.363 0.786-12.501 27.326-24.131 63.102-38.702 101.614-38.702 38.514 0 74.288 14.571 101.614 38.702 0.501 4.138 0.786 8.314 0.786 12.499-0 56.466-45.936 102.402-102.4 102.402zM723.266 921.6l-268.933-0.003c-10.245-39.717-32.342-75.715-63.598-103.037-37.294-32.603-85.144-50.56-134.734-50.56-49.589 0-97.438 17.957-134.736 50.56-31.254 27.322-53.354 63.322-63.6 103.038h-5.915c5.352-122.213 51.846-255.736 229.323-255.998 10.104 0.426 157.84 6.696 310.195 15.811 290.866 17.4 337.301 29.462 344.485 32.686 20.37 10.186 29.557 34.678 33.691 53.902l-47.843 0.002c-49.589 0-97.44 17.957-134.736 50.56-31.254 27.322-53.354 63.32-63.598 103.038zM895.904 972.805c-42.403 0-76.899-34.496-76.899-76.898 0-20.109 7.605-38.899 21.467-53.285 19.88-12.44 42.675-20.482 66.906-22.755 37.459 5.579 65.422 37.84 65.422 76.035 0 42.4-34.496 76.899-76.896 76.902z' />
+            <path d='M793.179 307.651c-42.472 0-77.027-34.554-77.027-77.026s34.555-77.026 77.027-77.026 77.026 34.554 77.026 77.026-34.554 77.026-77.026 77.026zM793.179 204.8c-14.24 0-25.827 11.586-25.827 25.826s11.586 25.826 25.827 25.826 25.826-11.586 25.826-25.826-11.584-25.826-25.826-25.826z' />
+            <path d='M947.102 307.2c-6.736 0-13.344-2.736-18.11-7.504-4.754-4.752-7.49-11.36-7.49-18.096s2.736-13.344 7.49-18.096c4.766-4.768 11.374-7.504 18.11-7.504s13.328 2.736 18.098 7.504c4.766 4.752 7.502 11.36 7.502 18.096s-2.736 13.328-7.502 18.096c-4.768 4.768-11.362 7.504-18.098 7.504z' />
+            <path d='M332.8 307.2c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M307.2 153.6c-84.696 0-153.6 68.904-153.6 153.6 0 19.306 3.522 37.982 10.182 55.33-93.339 19.050-163.782 101.787-163.782 200.67 0 30.706 6.637 60.243 19.726 87.795 4.382 9.224 13.565 14.621 23.141 14.621 3.682 0 7.421-0.798 10.968-2.483 12.77-6.067 18.205-21.339 12.136-34.109-9.802-20.632-14.771-42.779-14.771-65.824 0-80.742 62.624-147.134 141.853-153.155 6.584 7.264 13.915 13.979 21.966 20.027 4.61 3.462 10.005 5.133 15.357 5.133 7.774 0 15.458-3.531 20.488-10.226 8.493-11.304 6.213-27.352-5.091-35.845-26.040-19.558-40.973-49.422-40.973-81.934 0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4c0 22.368-7.077 43.611-20.466 61.434-8.493 11.304-6.213 27.352 5.093 35.843 11.302 8.493 27.352 6.213 35.843-5.093 20.104-26.758 30.73-58.637 30.73-92.184 0-84.696-68.904-153.6-153.6-153.6z' />
+            <path d='M76.8 307.648c-6.736 0-13.328-2.736-18.096-7.488-4.768-4.768-7.504-11.376-7.504-18.112s2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.112c-4.752 4.752-11.36 7.488-18.096 7.488z' />
+            <path d='M128 204.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM128 102.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M844.608 512c-6.736 0-13.344-2.736-18.112-7.504-4.752-4.752-7.488-11.36-7.488-18.096s2.736-13.344 7.488-18.096c4.768-4.768 11.376-7.504 18.112-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M793.179 357.979c-15.896 0-31.574 2.11-46.674 6.168-23.434-35.213-63.054-56.947-106.506-56.947-45.299 0-87.661 24.314-110.552 63.453-7.138 12.205-3.030 27.885 9.174 35.022 12.202 7.134 27.883 3.030 35.022-9.174 13.746-23.501 39.171-38.101 66.355-38.101 22.846 0 43.923 10.018 58.254 26.709-8.437 5.256-16.477 11.226-24.016 17.893-10.592 9.366-11.586 25.544-2.221 36.136 9.368 10.592 25.547 11.587 36.136 2.219 23.464-20.749 53.659-32.176 85.026-32.176 70.811-0.002 128.421 57.608 128.421 128.419 0 14.659-2.443 29.024-7.262 42.696-4.701 13.334 2.299 27.955 15.634 32.654 2.816 0.992 5.688 1.464 8.51 1.462 10.554 0 20.435-6.576 24.144-17.096 6.75-19.154 10.174-39.246 10.174-59.717 0-99.043-80.578-179.621-179.621-179.621z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash3.js
new file mode 100644
index 00000000..607145e5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash3.js
@@ -0,0 +1,17 @@
+// Icon: Linear.CarWash3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M256 256c-56.464 0-102.4-45.936-102.4-102.4 0-40.57 23.152-67.227 45.542-93.006 12.443-14.326 25.31-29.141 33.96-46.442 4.336-8.674 13.2-14.152 22.898-14.152s18.562 5.478 22.898 14.152c8.65 17.301 21.517 32.115 33.96 46.442 22.39 25.779 45.542 52.437 45.542 93.006 0 56.464-45.936 102.4-102.4 102.4zM256 72.458c-6.094 7.768-12.314 14.931-18.202 21.709-20.459 23.557-32.998 39.030-32.998 59.434 0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2c0-20.403-12.539-35.877-32.998-59.434-5.888-6.778-12.107-13.939-18.202-21.709z' />
+            <path d='M512 256c-56.464 0-102.4-45.936-102.4-102.4 0-40.57 23.152-67.227 45.542-93.006 12.443-14.326 25.31-29.141 33.96-46.442 4.336-8.674 13.2-14.152 22.898-14.152s18.562 5.478 22.898 14.152c8.651 17.301 21.517 32.115 33.962 46.442 22.387 25.779 45.541 52.437 45.541 93.006 0 56.464-45.936 102.4-102.4 102.4zM512 72.458c-6.094 7.768-12.314 14.931-18.202 21.709-20.459 23.557-32.998 39.030-32.998 59.434 0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2c0-20.403-12.539-35.877-32.998-59.434-5.888-6.778-12.107-13.939-18.202-21.709z' />
+            <path d='M768 256c-56.464 0-102.4-45.936-102.4-102.4 0-40.57 23.154-67.227 45.542-93.006 12.443-14.326 25.309-29.141 33.962-46.442 4.334-8.674 13.198-14.152 22.896-14.152s18.562 5.478 22.898 14.152c8.651 17.301 21.517 32.115 33.962 46.442 22.387 25.779 45.541 52.437 45.541 93.006 0 56.464-45.936 102.4-102.4 102.4zM768 72.458c-6.094 7.768-12.314 14.931-18.202 21.709-20.459 23.557-32.998 39.030-32.998 59.434 0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2c0-20.403-12.539-35.877-32.998-59.434-5.888-6.778-12.107-13.939-18.202-21.709z' />
+            <path d='M868.256 609.642c-6.646-40.557-28.301-164.576-51.76-211.491-15.627-31.256-55.694-55.139-119.088-70.987-51.496-12.874-117.342-19.963-185.408-19.963s-133.912 7.090-185.408 19.965c-63.394 15.848-103.461 39.733-119.090 70.987-23.458 46.915-45.112 170.933-51.758 211.491-35.778 24.512-53.344 59.99-53.344 107.157v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.158zM253.298 421.048c15.186-30.37 111.014-62.648 258.702-62.648s243.517 32.278 258.702 62.648c14.717 29.435 31.024 107.306 41.139 162.966-4.998-1.472-10.166-2.845-15.512-4.118-13.656-3.251-28.434-5.862-44.2-7.971l-148.421-106.334c-11.494-8.237-27.485-5.59-35.72 5.901-8.234 11.493-5.592 27.485 5.901 35.72l80.165 57.434c-43.517-1.442-91.25-1.445-142.054-1.445-5.998 0-11.942 0-17.854 0.003l-147.146-98.102c-11.765-7.843-27.658-4.664-35.501 7.099s-4.666 27.658 7.099 35.501l84.178 56.122c-68.654 1.237-128.362 4.946-175.107 16.075-5.347 1.274-10.517 2.648-15.517 4.12 10.115-55.654 26.418-133.514 41.146-162.97zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-47.331 24.896-72.565 85.93-87.098 64.275-15.302 160.757-15.302 272.47-15.302s208.194 0 272.47 15.302c61.034 14.533 85.93 39.766 85.93 87.098v128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash4.js
new file mode 100644
index 00000000..e733a653
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CarWash4.js
@@ -0,0 +1,24 @@
+// Icon: Linear.CarWash4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.379 154.051c-42.472 0-77.029-34.554-77.029-77.026s34.557-77.026 77.029-77.026 77.026 34.554 77.026 77.026-34.554 77.026-77.026 77.026zM844.379 51.2c-14.24 0-25.829 11.586-25.829 25.826s11.586 25.826 25.829 25.826c14.24 0 25.826-11.586 25.826-25.826s-11.584-25.826-25.826-25.826z' />
+            <path d='M691.102 102.4c-6.738 0-13.346-2.736-18.11-7.504-4.754-4.768-7.49-11.36-7.49-18.096s2.736-13.344 7.49-18.096c4.766-4.768 11.373-7.504 18.11-7.504 6.736 0 13.326 2.736 18.098 7.504 4.766 4.752 7.502 11.36 7.502 18.096s-2.738 13.328-7.502 18.096c-4.768 4.768-11.362 7.504-18.098 7.504z' />
+            <path d='M76.8 256.448c-6.736 0-13.344-2.736-18.096-7.488-4.768-4.768-7.504-11.36-7.504-18.112 0-6.736 2.736-13.344 7.504-18.098 4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.752 7.504 11.36 7.504 18.098 0 6.752-2.736 13.344-7.504 18.112-4.752 4.752-11.36 7.488-18.096 7.488z' />
+            <path d='M128 153.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM128 51.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M25.6 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M998.4 819.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M977.333 504.077c29.526-32.574 46.667-75.458 46.667-120.499 0-98.811-80.389-179.2-179.2-179.2-16.186 0-32.114 2.174-47.451 6.374-23.357-35.32-63.042-57.152-106.472-57.152-45.802 0-88.341 24.747-111.019 64.584-6.994 12.288-2.702 27.918 9.584 34.912 12.288 6.997 27.917 2.704 34.91-9.582 13.595-23.88 39.085-38.714 66.525-38.714 22.963 0 44.17 10.189 58.456 27.125-1.464 0.923-2.926 1.851-4.366 2.819-11.738 7.886-14.856 23.792-6.97 35.526 7.888 11.734 23.792 14.854 35.526 6.97 21.091-14.173 45.739-21.664 71.28-21.664 70.579 0 128 57.421 128 128 0 45.557-24.53 88.048-64.018 110.891-12.238 7.080-16.422 22.741-9.341 34.976 4.746 8.203 13.344 12.787 22.181 12.787 4.352 0 8.762-1.11 12.795-3.445 1.022-0.59 2.021-1.211 3.027-1.821 22.374 19.312 35.352 47.264 35.352 77.435 0 32.514-14.933 62.378-40.971 81.936-11.302 8.491-13.584 24.539-5.094 35.843 5.030 6.698 12.71 10.227 20.49 10.227 5.352 0 10.749-1.672 15.357-5.133 39.032-29.318 61.419-74.106 61.419-122.874 0-42.323-17.026-81.718-46.667-110.323z' />
+            <path d='M457.68 225.072c-14.546-71.080-77.83-122.672-150.48-122.672-84.696 0-153.6 68.904-153.6 153.6 0 2.152 0.056 4.294 0.142 6.432-89.213 22.891-153.742 104.090-153.742 198.368 0 44.421 14.662 87.651 41.006 122.866-25.197 18.944-41.006 49.043-41.006 81.934 0 43.325 27.432 82.131 68.262 96.565 2.822 0.998 5.701 1.472 8.533 1.472 10.546 0 20.421-6.566 24.136-17.075 4.712-13.33-2.274-27.957-15.603-32.669-20.413-7.216-34.128-26.624-34.128-48.293 0-23.053 15.509-43.371 37.714-49.411 13.643-3.71 21.694-17.779 17.984-31.424-1.29-4.741-3.851-8.784-7.19-11.918l0.014-0.016c-31.29-29.362-48.522-69.149-48.522-112.030 0-69.974 47.37-130.346 113.17-148.232 0.648 1.634 1.315 3.264 2.022 4.88 4.203 9.619 13.605 15.357 23.472 15.357 3.422 0 6.899-0.69 10.235-2.147 12.957-5.661 18.87-20.752 13.21-33.707-5.645-12.923-8.509-26.701-8.509-40.95 0-56.464 45.936-102.4 102.4-102.4 48.437 0 90.629 34.374 100.318 81.736 2.835 13.853 16.365 22.787 30.213 19.949 13.851-2.835 22.782-16.362 19.949-30.213z' />
+            <path d='M868.256 609.64c-6.646-40.557-28.301-164.574-51.762-211.491-15.627-31.256-55.694-55.139-119.088-70.987-51.494-12.872-117.341-19.962-185.406-19.962s-133.912 7.090-185.408 19.965c-63.394 15.848-103.461 39.733-119.090 70.987-23.458 46.915-45.112 170.933-51.758 211.493-35.778 24.51-53.344 59.989-53.344 107.155v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.16zM253.298 421.048c15.186-30.37 111.014-62.648 258.702-62.648s243.517 32.278 258.702 62.648c14.715 29.434 31.024 107.301 41.141 162.966-4.998-1.474-10.166-2.846-15.514-4.118-13.656-3.253-28.434-5.862-44.2-7.971l-148.421-106.334c-11.496-8.237-27.486-5.59-35.72 5.901-8.234 11.493-5.592 27.485 5.901 35.72l80.166 57.434c-43.518-1.442-91.251-1.445-142.056-1.445-5.998 0-11.942 0-17.854 0.003l-147.146-98.102c-11.765-7.843-27.658-4.664-35.501 7.099s-4.666 27.658 7.099 35.501l84.179 56.122c-68.654 1.237-128.363 4.947-175.107 16.075-5.347 1.275-10.517 2.648-15.517 4.122 10.114-55.656 26.416-133.517 41.144-162.971zM256 972.8h-51.2v-51.2h51.2v51.2zM819.2 972.8h-51.2v-51.2h51.2v51.2zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-47.331 24.896-72.565 85.93-87.098 64.275-15.302 160.757-15.302 272.47-15.302s208.194 0 272.47 15.302c61.034 14.533 85.93 39.766 85.93 87.098v128z' />
+            <path d='M895.808 358.4c-6.736 0-13.344-2.736-18.112-7.504-4.752-4.752-7.488-11.36-7.488-18.096s2.736-13.344 7.488-18.096c4.768-4.768 11.362-7.504 18.112-7.504 6.736 0 13.328 2.736 18.096 7.504 4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 255.584c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096 0-6.752 2.736-13.344 7.504-18.112 4.752-4.768 11.36-7.488 18.096-7.488s13.344 2.72 18.096 7.488c4.768 4.768 7.504 11.376 7.504 18.112s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Carrot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Carrot.js
new file mode 100644
index 00000000..6cfe2728
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Carrot.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Carrot
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1020.074 984.718c-9.504-16.782-122.349-214.97-259.931-410.643-84.414-120.054-161.629-215.886-229.499-284.834-89.845-91.274-162.934-135.642-223.443-135.642-17.936 0-35.168 2.688-51.2 7.848v-135.848c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v98.586l-53.81-109.848c-6.221-12.698-21.558-17.949-34.251-11.728-12.698 6.219-17.947 21.555-11.728 34.251l65.44 133.59-133.589-65.442c-12.698-6.216-28.032-0.97-34.253 11.728-6.219 12.698-0.968 28.032 11.728 34.253l109.845 53.81h-98.582c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h135.939c-5.203 16.082-7.939 33.322-7.939 51.2 0 60.509 44.368 133.598 135.642 223.443 68.947 67.87 164.779 145.085 284.834 229.499 203.499 143.085 409.715 259.413 411.774 260.57 3.931 2.211 8.251 3.288 12.542 3.288 0.128 0 0.258 0 0.387-0.002 13.978-0.187 25.251-11.576 25.251-25.598 0.002-5.032-1.45-9.723-3.957-13.682zM603.525 718.258c-51.422-36.157-96.36-69.554-135.606-100.371l36.584-36.584c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.205 0l-40.538 40.538c-189.926-156.168-222.96-239.459-222.96-278.437 0-60.291 42.109-102.4 102.4-102.4 23.904 0 64.486 12.43 128.33 65.867l-69.63 69.632c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l71.542-71.542c62.19 59.594 142.282 153.054 244.405 298.269 14.138 20.102 28.006 40.232 41.531 60.187l-35.283 35.283c-9.998 9.997-9.998 26.206 0 36.203 5.002 5 11.552 7.499 18.104 7.499s13.102-2.499 18.101-7.499l28.12-28.12c56.339 85.122 104.866 164.12 138.424 220.266-78.424-46.872-201.445-122.954-323.52-208.789z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cart.js
new file mode 100644
index 00000000..bafc6b04
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cart.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Cart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM409.6 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M898.021 228.688c-12.859-15.181-32.258-23.888-53.221-23.888h-626.846l-5.085-30.506c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-12.63-75.784 510.206-44.366c39.69-3.451 75.907-36.938 82.458-76.234l34.366-206.194c3.448-20.677-1.952-41.243-14.813-56.424zM862.331 276.694l-34.366 206.194c-2.699 16.186-20.043 32.221-36.39 33.645l-514.214 44.714-50.874-305.246h618.314c5.968 0 10.995 2.054 14.155 5.782 3.157 3.73 4.357 9.024 3.376 14.912z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartAdd.js
new file mode 100644
index 00000000..6ae57c3d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartAdd.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CartAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M901.021 205.298c-13.874-2.774-27.35 6.219-30.123 20.083l-41.16 205.795c-3.283 16.413-21.459 32.662-38.136 34.093l-522.77 44.806-55.963-335.781c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-21.158-126.95 518.698-44.459c39.342-3.371 76.227-36.344 83.97-75.066l41.16-205.795c2.773-13.862-6.218-27.349-20.082-30.122z' />
+            <path d='M409.6 1024c-56.466 0-102.402-45.936-102.402-102.4s45.938-102.4 102.402-102.4 102.402 45.936 102.402 102.4-45.936 102.4-102.402 102.4zM409.6 870.4c-28.234 0-51.202 22.968-51.202 51.2s22.97 51.2 51.202 51.2 51.202-22.968 51.202-51.2-22.968-51.2-51.202-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M709.301 186.699c-9.997-9.998-26.206-9.998-36.203 0l-109.898 109.898v-270.997c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v270.997l-109.899-109.898c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartEmpty.js
new file mode 100644
index 00000000..92b1cbe0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartEmpty.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CartEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM409.6 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M901.021 205.298c-13.874-2.774-27.35 6.219-30.123 20.083l-41.16 205.795c-3.282 16.413-21.459 32.662-38.136 34.091l-522.77 44.808-55.963-335.781c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-21.158-126.95 518.698-44.459c39.344-3.371 76.227-36.346 83.97-75.066l41.16-205.795c2.773-13.862-6.218-27.349-20.082-30.122z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartExchange.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartExchange.js
new file mode 100644
index 00000000..2ff0c4ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartExchange.js
@@ -0,0 +1,16 @@
+// Icon: Linear.CartExchange
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M901.021 205.298c-13.874-2.774-27.35 6.219-30.123 20.083l-41.16 205.795c-3.283 16.413-21.459 32.662-38.136 34.093l-522.77 44.806-55.963-335.781c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-21.158-126.95 518.698-44.459c39.342-3.371 76.227-36.344 83.97-75.066l41.16-205.795c2.773-13.862-6.218-27.349-20.082-30.122z' />
+            <path d='M409.6 1024c-56.466 0-102.402-45.936-102.402-102.4s45.938-102.4 102.402-102.4 102.402 45.936 102.402 102.4-45.936 102.4-102.402 102.4zM409.6 870.4c-28.234 0-51.202 22.968-51.202 51.2s22.97 51.2 51.202 51.2 51.202-22.968 51.202-51.2-22.968-51.2-51.202-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M555.701 237.898c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.699v-219.797c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v219.797l-58.698-58.699c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498l102.4-102.4c9.997-9.998 9.997-26.206-0.002-36.205z' />
+            <path d='M811.701 135.498l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0l-102.4 102.4c-9.998 9.998-9.998 26.206 0 36.205 9.997 9.997 26.206 9.997 36.203 0l58.699-58.699v219.797c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-219.797l58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.498c9.998-9.998 9.998-26.206 0-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartFull.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartFull.js
new file mode 100644
index 00000000..292267d7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartFull.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CartFull
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM409.6 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M898.021 228.688c-12.859-15.181-32.258-23.888-53.221-23.888h-14.997l-146.101-146.102c-9.997-9.997-26.206-9.997-36.203 0l-51.2 51.2c-9.998 9.998-9.998 26.206 0 36.205 9.997 9.997 26.206 9.997 36.203 0l33.098-33.099 91.797 91.797h-132.394l-171.701-171.702c-9.998-9.997-26.206-9.997-36.205 0l-171.702 171.702h-27.442l-5.085-30.506c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-12.63-75.784 510.206-44.366c39.69-3.451 75.907-36.938 82.458-76.234l34.366-206.194c3.448-20.677-1.952-41.243-14.813-56.424zM435.2 87.403l117.397 117.397h-234.792l117.395-117.397zM862.331 276.694l-34.366 206.194c-2.699 16.186-20.043 32.221-36.39 33.645l-514.214 44.714-50.874-305.246h618.314c5.968 0 10.995 2.054 14.155 5.782 3.157 3.73 4.357 9.024 3.376 14.912z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus.js
new file mode 100644
index 00000000..4aba7011
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CartPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M901.021 205.298c-13.874-2.774-27.35 6.219-30.123 20.083l-41.16 205.795c-3.283 16.413-21.459 32.662-38.136 34.093l-522.77 44.806-55.963-335.781c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-21.158-126.95 518.698-44.459c39.342-3.371 76.227-36.344 83.97-75.066l41.16-205.795c2.773-13.862-6.218-27.349-20.082-30.122z' />
+            <path d='M409.6 1024c-56.466 0-102.402-45.936-102.402-102.4s45.938-102.4 102.402-102.4 102.402 45.936 102.402 102.4-45.936 102.4-102.402 102.4zM409.6 870.4c-28.234 0-51.202 22.968-51.202 51.2s22.97 51.2 51.202 51.2 51.202-22.968 51.202-51.2-22.968-51.2-51.202-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M691.2 204.8h-128v-128c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-128c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h128v128c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-128h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus2.js
new file mode 100644
index 00000000..ec51b913
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartPlus2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CartPlus2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M898.021 228.688c-12.859-15.181-32.258-23.888-53.221-23.888h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c5.968 0 10.995 2.054 14.155 5.782 3.158 3.73 4.358 9.024 3.376 14.912l-34.366 206.194c-2.699 16.186-20.043 32.221-36.39 33.645l-514.214 44.714-50.874-305.246h208.714c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-217.246l-5.085-30.506c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-12.63-75.784 510.206-44.366c39.69-3.451 75.907-36.938 82.458-76.234l34.366-206.194c3.448-20.677-1.952-41.242-14.813-56.424z' />
+            <path d='M409.6 1024c-56.466 0-102.402-45.936-102.402-102.4s45.938-102.4 102.402-102.4 102.402 45.936 102.402 102.4-45.936 102.4-102.402 102.4zM409.6 870.4c-28.234 0-51.202 22.968-51.202 51.2s22.97 51.2 51.202 51.2 51.202-22.968 51.202-51.2-22.968-51.2-51.202-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M640 307.2h-76.798v-76.8c0-14.138-11.461-25.6-25.6-25.6-14.138 0-25.6 11.462-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.138 11.461 25.6 25.6 25.6 14.138 0 25.6-11.462 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.602-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartRemove.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartRemove.js
new file mode 100644
index 00000000..6a90d38f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CartRemove.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CartRemove
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M901.021 205.298c-13.874-2.774-27.35 6.219-30.123 20.083l-41.16 205.795c-3.283 16.413-21.459 32.662-38.136 34.093l-522.77 44.806-55.963-335.781c-6.72-40.315-43.998-71.894-84.869-71.894h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c15.722 0 31.781 13.603 34.366 29.112l85.566 513.395c6.718 40.314 43.997 71.893 84.867 71.893h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-512c-15.722 0-31.781-13.603-34.366-29.11l-21.158-126.95 518.698-44.459c39.342-3.371 76.227-36.344 83.97-75.066l41.16-205.795c2.773-13.862-6.218-27.349-20.082-30.122z' />
+            <path d='M409.6 1024c-56.466 0-102.402-45.936-102.402-102.4s45.938-102.4 102.402-102.4 102.402 45.936 102.402 102.4-45.936 102.4-102.402 102.4zM409.6 870.4c-28.234 0-51.202 22.968-51.202 51.2s22.97 51.2 51.202 51.2 51.202-22.968 51.202-51.2-22.968-51.2-51.202-51.2z' />
+            <path d='M768 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M709.301 186.699l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.899-109.899v270.997c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-270.997l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashDollar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashDollar.js
new file mode 100644
index 00000000..dbee2e8c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashDollar.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CashDollar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-921.6c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.462 25.6 25.6v512c0 14.139-11.461 25.6-25.6 25.6zM51.2 870.4h870.4v-460.8h-870.4v460.8z' />
+            <path d='M588.8 614.4h-179.2v-51.2h179.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v25.6h-76.8c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h179.2v51.2h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6z' />
+            <path d='M896 307.2h-819.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 204.8h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashEuro.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashEuro.js
new file mode 100644
index 00000000..41fdedcc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashEuro.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CashEuro
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-921.6c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.462 25.6 25.6v512c0 14.139-11.461 25.6-25.6 25.6zM51.2 870.4h870.4v-460.8h-870.4v460.8z' />
+            <path d='M896 307.2h-819.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 204.8h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M601.619 720.24c-12.234-7.075-27.898-2.899-34.978 9.341-12.878 22.259-43.744 38.418-73.39 38.418-34.894 0-66.427-22.008-78.469-51.198h71.618c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-71.619c12.043-29.189 43.576-51.195 78.47-51.195 29.646 0 60.512 16.157 73.389 38.416 7.080 12.237 22.742 16.416 34.979 9.339 12.237-7.082 16.419-22.741 9.339-34.979-21.792-37.667-70.195-63.974-117.707-63.974-33.693 0-67.634 13.379-93.118 36.706-20.086 18.386-33.429 41.11-38.909 65.69h-28.424c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h28.426c5.48 24.578 18.821 47.304 38.907 65.691 25.485 23.328 59.426 36.707 93.118 36.707 47.512 0 95.915-26.309 117.709-63.979 7.078-12.24 2.898-27.901-9.341-34.981z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashPound.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashPound.js
new file mode 100644
index 00000000..acb3fd1e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashPound.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CashPound
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-921.6c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.462 25.6 25.6v512c0 14.139-11.461 25.6-25.6 25.6zM51.2 870.4h870.4v-460.8h-870.4v460.8z' />
+            <path d='M896 307.2h-819.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 204.8h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 768h-179.2v-102.4h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-25.6c0-40.909 39.090-76.795 83.651-76.795 29.646 0 60.512 16.157 73.389 38.416 7.080 12.237 22.742 16.416 34.979 9.339 12.237-7.082 16.419-22.741 9.339-34.979-21.792-37.667-70.195-63.974-117.707-63.974-33.693 0-67.634 13.379-93.118 36.706-26.912 24.632-41.733 57.053-41.733 91.288v25.6h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v128c0 14.139 11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashYen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashYen.js
new file mode 100644
index 00000000..d3d982e3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CashYen.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CashYen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-921.6c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.462 25.6 25.6v512c0 14.139-11.461 25.6-25.6 25.6zM51.2 870.4h870.4v-460.8h-870.4v460.8z' />
+            <path d='M896 307.2h-819.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 204.8h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 665.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-54.566l75.866-113.8c7.843-11.763 4.664-27.658-7.101-35.501-11.763-7.84-27.658-4.664-35.501 7.101l-81.098 121.648-81.099-121.648c-7.843-11.766-23.738-14.946-35.501-7.101-11.765 7.843-14.942 23.738-7.101 35.501l75.867 113.8h-54.566c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cashier.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cashier.js
new file mode 100644
index 00000000..d0cbceb2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cashier.js
@@ -0,0 +1,29 @@
+// Icon: Linear.Cashier
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M742.4 409.6h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M384 204.8h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 307.2h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M955.296 736.933l-84.896-254.686v-149.446c0-42.347-34.453-76.8-76.8-76.8h-25.6v-51.2h128c14.139 0 25.6-11.462 25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6h-307.2c-14.139 0-25.6 11.462-25.6 25.6v153.6c0 14.138 11.461 25.6 25.6 25.6h128v51.2h-204.8v-179.2c0-14.138-11.462-25.6-25.6-25.6h-256c-14.138 0-25.6 11.462-25.6 25.6v179.2h-25.6c-42.347 0-76.8 34.453-76.8 76.8v149.446l-84.896 254.686c-9.814 29.446-17.504 76.829-17.504 107.867v102.4c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-31.038-7.69-78.421-17.504-107.867zM614.4 51.2h256v102.4h-256v-102.4zM256 102.4h204.8v256h-204.8v-256zM179.2 307.2h25.6v76.8c0 14.138 11.462 25.6 25.6 25.6h256c14.138 0 25.6-11.462 25.6-25.6v-76.8h281.6c14.115 0 25.6 11.485 25.6 25.6v128h-665.6v-128c0-14.115 11.485-25.6 25.6-25.6zM146.451 512h679.898l80.374 241.123c1.618 4.85 3.181 10.422 4.651 16.426-4.968-1.014-10.11-1.549-15.374-1.549h-819.2c-5.264 0-10.406 0.534-15.376 1.549 1.47-6.003 3.035-11.574 4.653-16.426l80.374-241.123zM896 972.8h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chair.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chair.js
new file mode 100644
index 00000000..221e97ff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chair.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Chair
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 691.2v-25.6c0-21.896-16.45-58.027-32.701-82.402l-45.6-68.397c-12.373-18.562-21.066-54.291-18.602-76.461l34.237-308.141c3.822-34.406-6.286-67-28.462-91.778-22.174-24.778-53.453-38.422-88.072-38.422h-307.2c-34.618 0-65.898 13.645-88.074 38.422s-32.285 57.371-28.462 91.778l34.237 308.139c2.464 22.171-6.23 57.901-18.603 76.462l-45.598 68.397c-16.25 24.374-32.699 60.507-32.699 82.402v25.6c0 28.186 15.274 52.859 37.97 66.221-16.992 36.754-37.97 108.872-37.97 240.979 0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-146.891 27.139-209.968 38.898-230.4h63.502v128c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h256v128c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h63.506c11.76 20.426 38.907 83.501 38.894 230.397-0.002 14.139 11.459 25.602 25.597 25.603 0.002 0 0.002 0 0.003 0 14.136 0 25.598-11.461 25.6-25.597 0.013-132.109-20.968-204.23-37.966-240.986 22.694-13.362 37.966-38.034 37.966-66.218zM742.4 716.8h-512c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6zM274.499 543.202c18.826-28.238 30.637-76.784 26.89-110.515l-34.237-308.141c-2.194-19.738 3.392-38.197 15.725-51.978 12.334-13.779 30.064-21.368 49.923-21.368h307.2c19.859 0 37.589 7.589 49.922 21.368 12.334 13.781 17.92 32.24 15.726 51.978l-34.237 308.139c-3.749 33.731 8.061 82.275 26.89 110.517l45.6 68.397c0.638 0.96 1.264 1.923 1.88 2.888-1.122-0.048-2.246-0.086-3.379-0.086h-512.002c-1.133 0-2.258 0.037-3.378 0.086 0.616-0.965 1.24-1.928 1.88-2.888l45.597-68.397z' />
+            <path d='M614.4 512h-256c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h256c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 256h-25.6c-56.464 0-102.4-45.936-102.4-102.4v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6c0 56.464-45.936 102.4-102.4 102.4h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6c56.464 0 102.4 45.936 102.4 102.4v25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-56.464 45.936-102.4 102.4-102.4h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM486.4 324.795c-11.374-17.11-26.083-31.819-43.195-43.195 17.11-11.374 31.819-26.083 43.195-43.195 11.374 17.11 26.083 31.819 43.195 43.195-17.112 11.374-31.821 26.083-43.195 43.195z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartBars.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartBars.js
new file mode 100644
index 00000000..0ec90ab8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartBars.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ChartBars
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M332.8 870.4h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-460.8c0-14.138 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v460.8c0 14.139-11.462 25.6-25.6 25.6zM256 819.2h51.2v-409.6h-51.2v409.6z' />
+            <path d='M537.6 870.4h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-614.4c0-14.138 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v614.4c0 14.139-11.461 25.6-25.6 25.6zM460.8 819.2h51.2v-563.2h-51.2v563.2z' />
+            <path d='M742.4 870.4h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v256c0 14.139-11.461 25.6-25.6 25.6zM665.6 819.2h51.2v-204.8h-51.2v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartGrowth.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartGrowth.js
new file mode 100644
index 00000000..07bdd08d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartGrowth.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ChartGrowth
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 1024h-153.6c-14.138 0-25.6-11.461-25.6-25.6v-358.4c0-14.139 11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6v358.4c0 14.139-11.462 25.6-25.6 25.6zM51.2 972.8h102.4v-307.2h-102.4v307.2z' />
+            <path d='M435.2 1024h-153.6c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6v512c0 14.139-11.462 25.6-25.6 25.6zM307.2 972.8h102.4v-460.8h-102.4v460.8z' />
+            <path d='M691.2 1024h-153.6c-14.139 0-25.6-11.461-25.6-25.6v-460.8c0-14.139 11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6v460.8c0 14.139-11.461 25.6-25.6 25.6zM563.2 972.8h102.4v-409.6h-102.4v409.6z' />
+            <path d='M947.2 1024h-153.6c-14.139 0-25.6-11.461-25.6-25.6v-665.6c0-14.138 11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6v665.6c0 14.139-11.461 25.6-25.6 25.6zM819.2 972.8h102.4v-614.4h-102.4v614.4z' />
+            <path d='M914.101 58.699c-6.856-6.858-17.002-9.253-26.197-6.184l-153.6 51.2c-13.413 4.47-20.662 18.968-16.19 32.381 4.47 13.413 18.973 20.662 32.381 16.19l50.723-16.907-219.917 219.915c-10.922 10.922-31.341 12.374-43.701 3.106l-122.88-92.16c-31.966-23.974-81.232-22.934-112.158 2.368l-241.973 197.979c-10.942 8.954-12.555 25.082-3.602 36.024 5.061 6.186 12.414 9.39 19.829 9.39 5.701 0 11.438-1.896 16.197-5.787l241.973-197.978c12.614-10.322 35.978-10.813 49.016-1.035l122.88 92.16c32.933 24.699 81.522 21.242 110.624-7.861l219.917-219.917-16.907 50.723c-4.472 13.413 2.778 27.91 16.19 32.381 2.686 0.896 5.416 1.322 8.099 1.322 10.718 0 20.707-6.784 24.283-17.512l51.2-153.6c3.066-9.202 0.67-19.342-6.187-26.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartSettings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartSettings.js
new file mode 100644
index 00000000..78140410
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChartSettings.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ChartSettings
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 768h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-460.8c0-14.138 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v460.8c0 14.139-11.462 25.6-25.6 25.6zM51.2 716.8h51.2v-409.6h-51.2v409.6z' />
+            <path d='M435.2 563.2c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.138 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-179.2h-51.2v384c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 768h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 716.8h51.2v-204.8h-51.2v204.8z' />
+            <path d='M691.2 768c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 665.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M615.253 961.346c-2.546 0-5.101-0.379-7.582-1.15-39.691-12.312-76.896-33.822-107.592-62.205-5.48-5.067-8.477-12.274-8.203-19.733s3.787-14.427 9.624-19.080c19.598-15.629 24.904-43.821 12.341-65.576-9.118-15.798-26.134-25.611-44.406-25.611-6.394 0-12.65 1.186-18.594 3.523-6.954 2.738-14.755 2.299-21.357-1.202-6.603-3.498-11.347-9.706-12.989-16.995-4.576-20.307-6.894-41.208-6.894-62.117s2.318-41.81 6.893-62.117c1.642-7.29 6.386-13.498 12.989-16.995 6.603-3.501 14.403-3.938 21.358-1.203 5.944 2.339 12.198 3.525 18.594 3.525 18.272 0 35.288-9.813 44.406-25.61 12.563-21.758 7.256-49.95-12.342-65.578-5.834-4.653-9.35-11.622-9.622-19.080-0.274-7.459 2.723-14.666 8.203-19.733 30.696-28.381 67.901-49.891 107.592-62.205 7.131-2.211 14.877-1.2 21.198 2.771 6.325 3.971 10.6 10.507 11.704 17.893 3.712 24.818 25.477 43.531 50.627 43.531s46.915-18.714 50.627-43.531c1.104-7.386 5.379-13.922 11.704-17.893 6.323-3.971 14.069-4.981 21.2-2.771 39.691 12.314 76.896 33.824 107.589 62.203 5.48 5.067 8.475 12.274 8.203 19.731s-3.786 14.427-9.621 19.080c-19.598 15.63-24.904 43.822-12.342 65.576 9.122 15.8 26.136 25.613 44.41 25.613 6.394-0.002 12.65-1.186 18.592-3.523 6.955-2.736 14.754-2.296 21.357 1.203s11.347 9.706 12.989 16.995c4.574 20.307 6.893 41.208 6.893 62.117s-2.318 41.808-6.893 62.114c-1.642 7.29-6.387 13.499-12.989 16.995-6.606 3.501-14.406 3.938-21.358 1.203-5.942-2.338-12.197-3.523-18.59-3.523-18.272 0-35.288 9.813-44.405 25.608-12.566 21.76-7.261 49.952 12.339 65.579 5.834 4.653 9.349 11.622 9.622 19.080 0.274 7.459-2.723 14.664-8.203 19.731-30.694 28.382-67.899 49.894-107.592 62.206-7.131 2.214-14.877 1.2-21.198-2.77-6.325-3.971-10.6-10.507-11.704-17.893-3.712-24.819-25.477-43.533-50.626-43.531-25.155 0-46.918 18.714-50.63 43.533-1.104 7.386-5.379 13.92-11.704 17.893-4.122 2.589-8.848 3.92-13.616 3.92zM554.35 876.533c13.912 10.272 28.97 18.989 44.75 25.901 5.994-12.315 14.451-23.419 24.962-32.552 18.611-16.174 42.453-25.082 67.133-25.082 24.686-0.002 48.53 8.904 67.142 25.080 10.51 9.134 18.97 20.237 24.965 32.555 15.781-6.914 30.838-15.632 44.75-25.902-7.662-11.354-13.040-24.234-15.688-37.901-4.685-24.19-0.472-49.275 11.861-70.634 18.232-31.584 52.237-51.208 88.746-51.208 2.408 0 4.803 0.085 7.189 0.25 0.958-8.566 1.44-17.202 1.44-25.838 0-8.638-0.483-17.275-1.44-25.843-2.384 0.166-4.781 0.251-7.187 0.251-36.507 0.002-70.515-19.622-88.752-51.213-12.33-21.352-16.542-46.434-11.858-70.626 2.646-13.67 8.024-26.55 15.686-37.902-13.909-10.272-28.968-18.987-44.749-25.901-5.994 12.317-14.453 23.421-24.965 32.555-18.613 16.17-42.454 25.077-67.136 25.077s-48.523-8.907-67.136-25.080c-10.51-9.134-18.97-20.237-24.965-32.555-15.779 6.914-30.838 15.63-44.75 25.901 7.662 11.354 13.040 24.234 15.688 37.902 4.685 24.189 0.474 49.272-11.858 70.63-18.235 31.586-52.242 51.21-88.747 51.21-2.408 0-4.806-0.085-7.192-0.251-0.958 8.568-1.44 17.203-1.44 25.842s0.483 17.274 1.44 25.842c2.386-0.166 4.784-0.251 7.192-0.251 36.506 0 70.512 19.624 88.747 51.211 12.331 21.355 16.544 46.438 11.859 70.63-2.646 13.669-8.026 26.549-15.688 37.902z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Check.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Check.js
new file mode 100644
index 00000000..b381ce9a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Check.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Check
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 896c-6.552 0-13.102-2.499-18.102-7.499l-256-256c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l237.898 237.898 698.699-698.698c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-716.8 716.8c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckSquare.js
new file mode 100644
index 00000000..b8aa45f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CheckSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M384 742.4c-6.552 0-13.102-2.499-18.102-7.499l-153.6-153.6c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l135.498 135.498 340.299-340.298c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-358.4 358.4c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckmarkCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckmarkCircle.js
new file mode 100644
index 00000000..33143343
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CheckmarkCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CheckmarkCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M384 742.4c-6.552 0-13.102-2.499-18.102-7.499l-153.6-153.6c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l135.498 135.498 340.299-340.298c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-358.4 358.4c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cheese.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cheese.js
new file mode 100644
index 00000000..61fb120b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cheese.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Cheese
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 102.4c-3.704 0-7.365 0.803-10.728 2.357l-102.678 47.39c-10.302 4.755-16.238 15.826-14.594 27.054 0 0.886-2.754 6.763-15.84 13.307-15.626 7.811-37.845 12.291-60.96 12.291-4.621 0-9.259-0.178-13.786-0.528-4.363-0.338-8.731 0.45-12.701 2.28l-445.034 205.424c-8.778 4.058-14.88 12.918-14.88 23.224v153.6c0 14.139 11.462 25.6 25.6 25.6 42.347 0 76.8 34.451 76.8 76.8 0 20.514-7.989 39.8-22.494 54.306-14.506 14.504-33.792 22.493-54.306 22.493 0 0 0 0 0 0-6.789 0-13.301 2.698-18.101 7.499-4.802 4.8-7.499 11.312-7.499 18.101v102.402c0 14.139 11.462 25.6 25.6 25.6h972.8c14.139 0 25.6-11.461 25.6-25.6v-460.8c0-183.506-149.294-332.8-332.8-332.8zM475.51 255.744c3.618 0.17 7.259 0.256 10.89 0.256 31.25 0 61.030-6.286 83.856-17.699 23.085-11.542 37.758-27.528 42.483-45.894l83.968-38.755c144.155 2.779 262.104 114.424 274.918 255.949h-207.083c-7.168-26.12-25.342-49.717-52.93-68.107-33.171-22.115-76.786-34.293-122.813-34.293s-89.642 12.178-122.811 34.293c-27.589 18.39-45.762 41.987-52.931 68.107h-270.901l333.354-153.856zM716.8 435.2c0 70.579-57.421 128-128 128s-128-57.421-128-128c0-41.63 58.618-76.8 128-76.8s128 35.17 128 76.8zM972.8 870.4h-921.6v-53.746c24.429-4.933 46.885-16.92 64.909-34.946 24.178-24.174 37.491-56.318 37.491-90.509 0-61.813-44.048-113.534-102.4-125.429v-104.971h360.237c12.461 86.726 87.243 153.6 177.363 153.6s164.902-66.874 177.365-153.6h206.635v409.6z' />
+            <path d='M793.6 768c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM793.6 665.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M358.4 819.2c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM358.4 665.6c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chef.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chef.js
new file mode 100644
index 00000000..b0828abd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chef.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Chef
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 332.8c0-127.043-103.357-230.4-230.4-230.4-23.755 0-46.971 3.568-69.286 10.611-47.342-70.203-126.795-113.011-212.314-113.011s-164.971 42.808-212.315 113.011c-22.314-7.043-45.53-10.611-69.285-10.611-127.043 0-230.4 103.357-230.4 230.4 0 118.39 89.762 216.194 204.8 228.97v436.63c0 14.139 11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6v-436.63c115.038-12.776 204.8-110.579 204.8-228.97zM335.792 537.726c24.694-12.725 47.11-30.054 65.781-50.734 34.323 16.413 72.083 25.008 110.427 25.008 38.346 0 76.104-8.595 110.429-25.008 18.67 20.682 41.088 38.010 65.781 50.734 24.778 12.766 51.966 20.904 79.79 24.022v257.451h-512v-257.451c27.824-3.117 55.013-11.254 79.792-24.022zM256 972.8v-102.4h512v102.4h-512zM793.6 512c-57.378 0-109.902-26.491-144.109-72.682-7.802-10.533-22.296-13.47-33.584-6.813-31.366 18.51-67.296 28.294-103.907 28.294-36.61 0-72.541-9.784-103.906-28.294-11.291-6.662-25.784-3.72-33.584 6.813-34.206 46.19-86.733 72.682-144.11 72.682-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2c15.195 0 30.099 1.867 44.554 5.568-8.939 21.819-14.768 44.728-17.39 68.413-1.555 14.053 8.576 26.706 22.629 28.261 14.046 1.566 26.706-8.574 28.261-22.629 2.99-27.010 11.2-52.755 24.403-76.515 0.002-0.003 0.003-0.006 0.005-0.010 36.158-65.067 104.802-105.488 179.139-105.488s142.978 40.419 179.138 105.486c0.002 0.002 0.002 0.003 0.003 0.005 13.206 23.763 21.419 49.509 24.408 76.523 1.557 14.053 14.216 24.182 28.262 22.629 14.051-1.555 24.182-14.208 22.629-28.261-2.624-23.686-8.453-46.594-17.392-68.413 14.453-3.702 29.357-5.57 44.552-5.57 98.811 0 179.2 80.389 179.2 179.2s-80.389 179.2-179.2 179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cherry.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cherry.js
new file mode 100644
index 00000000..a85aa859
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cherry.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Cherry
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384.027 409.605c-1.666 0-3.354-0.163-5.048-0.501-68.574-13.715-137.938-56.133-190.302-116.378-55.637-64.011-86.277-140.694-86.277-215.926 0-9.442 5.197-18.115 13.52-22.571 8.323-4.453 18.426-3.966 26.28 1.27 70.352 46.901 151.138 46.902 229.264 46.902 82.33 0 167.462 0.002 234.051 57.408 10.707 9.232 11.906 25.397 2.674 36.104-9.234 10.707-25.397 11.904-36.104 2.674-52.181-44.986-120.97-44.986-200.621-44.987-67.522 0-142.477 0.002-213.434-31.267 23.053 118.768 132.043 216.773 230.99 236.563 13.864 2.773 22.856 16.259 20.083 30.123-2.435 12.171-13.125 20.586-25.077 20.586z' />
+            <path d='M486.405 307.2c-6.552 0-13.102-2.499-18.101-7.498-42.963-42.958-134.618-43.701-135.538-43.702-14.125-0.038-25.566-11.509-25.549-25.634 0.019-14.126 11.458-25.566 25.582-25.566 4.614 0 113.67 0.667 171.706 58.698 9.998 9.998 10 26.206 0.002 36.203-4.998 5-11.55 7.499-18.102 7.499z' />
+            <path d='M179.2 819.2c-14.138 0-25.6-11.461-25.6-25.6 0-70.579 57.421-128 128-128 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6c-42.347 0-76.8 34.451-76.8 76.8 0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M689.477 312.763c29.082-44.819 59.728-78.834 78.205-97.678l7.818 7.818c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.206 0-36.203l-51.2-51.2c-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203l2.226 2.226c-29.282 18.022-77.979 49.96-134.45 94.837-80.254 63.779-191.101 166.33-271.822 297.694-12.573-2.131-25.482-3.258-38.651-3.258-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4 230.4-103.357 230.4-230.4c0-95.24-58.086-177.166-140.693-212.218 75.915-119.037 177.49-212.73 251.757-271.846 5.277-4.2 10.485-8.283 15.622-12.254-24.883 40.328-44.062 81.499-57.090 122.581-15.438 48.693-22.194 97.344-20.235 145.003-30.899 3.698-60.827 13.581-87.782 29.174-12.238 7.080-16.421 22.739-9.341 34.978 7.078 12.238 22.738 16.419 34.978 9.341 27.094-15.674 58.074-23.958 89.584-23.958 98.811 0 179.2 80.389 179.2 179.2s-80.389 179.2-179.2 179.2c-31.514 0-62.494-8.286-89.589-23.963-12.24-7.083-27.899-2.899-34.979 9.338s-2.899 27.899 9.338 34.978c34.878 20.182 74.725 30.848 115.23 30.848 127.043 0 230.4-103.357 230.4-230.4 0-119.018-90.709-217.242-206.626-229.179-4.613-102.165 38.459-192.41 76.902-251.658zM844.8 87.403l14.997 14.997-66.197 66.197-14.997-14.997 66.197-66.197zM460.8 793.6c0 98.811-80.389 179.2-179.2 179.2s-179.2-80.389-179.2-179.2 80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2z' />
+            <path d='M537.624 730.504c-8.838 0-17.437-4.582-22.182-12.786-7.080-12.237-2.898-27.899 9.341-34.978 19.384-11.214 41.52-17.141 64.018-17.141 14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6c-13.506 0-26.778 3.547-38.381 10.259-4.037 2.334-8.446 3.445-12.795 3.445z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDown.js
new file mode 100644
index 00000000..7029ac62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDown.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ChevronDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 307.2c0-6.552 2.499-13.102 7.499-18.101 9.997-9.998 26.206-9.998 36.203 0l442.698 442.698 442.699-442.698c9.997-9.998 26.206-9.998 36.203 0s9.998 26.206 0 36.203l-460.8 460.8c-9.997 9.998-26.206 9.998-36.203 0l-460.8-460.8c-5-5-7.499-11.55-7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownCircle.js
new file mode 100644
index 00000000..1fc24a4a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronDownCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 881.538c91.869-91.869 142.464-214.016 142.464-343.938s-50.595-252.067-142.464-343.936-214.014-142.464-343.936-142.464-252.069 50.595-343.938 142.464-142.462 214.014-142.462 343.936 50.594 252.069 142.462 343.938 214.016 142.462 343.938 142.462 252.067-50.594 343.936-142.462zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2z' />
+            <path d='M204.8 460.8c0-6.552 2.499-13.102 7.499-18.102 9.997-9.997 26.206-9.997 36.203 0l237.898 237.898 237.898-237.898c9.998-9.997 26.206-9.997 36.205 0 9.997 9.998 9.997 26.206 0 36.205l-256 256c-9.997 9.998-26.206 9.998-36.203 0l-256-256c-5-5-7.499-11.55-7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownSquare.js
new file mode 100644
index 00000000..761c1026
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronDownSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronDownSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v819.2c0 42.347 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.453 76.8-76.8v-819.2c0-42.349-34.451-76.8-76.8-76.8zM76.8 972.8c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v819.2c0 14.115-11.485 25.6-25.6 25.6h-819.2z' />
+            <path d='M742.4 384c-6.552 0-13.102 2.499-18.101 7.499l-237.899 237.898-237.898-237.898c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l256 256c9.998 9.997 26.206 9.997 36.205 0l256-256c9.998-9.997 9.998-26.206 0-36.203-5-5-11.55-7.499-18.102-7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeft.js
new file mode 100644
index 00000000..e28ebedf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeft.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ChevronLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 1024c6.552 0 13.102-2.499 18.101-7.499 9.998-9.997 9.998-26.206 0-36.203l-442.698-442.698 442.698-442.699c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.998-36.203 0l-460.8 460.8c-9.998 9.997-9.998 26.206 0 36.203l460.8 460.8c5 5 11.55 7.499 18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftCircle.js
new file mode 100644
index 00000000..0f954a3f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronLeftCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M142.462 193.664c91.869-91.869 214.016-142.464 343.938-142.464s252.067 50.595 343.936 142.464 142.464 214.014 142.464 343.936-50.595 252.069-142.464 343.938-214.014 142.462-343.936 142.462-252.069-50.594-343.938-142.462-142.462-214.016-142.462-343.938 50.594-252.067 142.462-343.936zM486.4 972.8c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2z' />
+            <path d='M563.2 819.2c6.552 0 13.102-2.499 18.102-7.499 9.997-9.997 9.997-26.206 0-36.203l-237.898-237.898 237.898-237.898c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-256 256c-9.998 9.997-9.998 26.206 0 36.203l256 256c5 5 11.55 7.499 18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftSquare.js
new file mode 100644
index 00000000..226109cd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronLeftSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronLeftSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.8 947.2v-819.2c0-42.347-34.451-76.8-76.8-76.8h-819.2c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8zM51.2 128c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v819.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-819.2z' />
+            <path d='M640 793.6c0-6.552-2.499-13.102-7.499-18.101l-237.898-237.899 237.898-237.898c9.997-9.998 9.997-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-256 256c-9.997 9.998-9.997 26.206 0 36.205l256 256c9.997 9.998 26.206 9.998 36.203 0 5-5 7.499-11.55 7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRight.js
new file mode 100644
index 00000000..91274860
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRight.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ChevronRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 1024c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l442.698-442.698-442.698-442.699c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l460.8 460.8c9.998 9.997 9.998 26.206 0 36.203l-460.8 460.8c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightCircle.js
new file mode 100644
index 00000000..ae56b08d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronRightCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M409.6 819.2c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l237.898-237.898-237.898-237.898c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l256 256c9.998 9.997 9.998 26.206 0 36.203l-256 256c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightSquare.js
new file mode 100644
index 00000000..6b4931ae
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronRightSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronRightSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 947.2v-819.2c0-42.347 34.451-76.8 76.8-76.8h819.2c42.347 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.453 76.8-76.8 76.8h-819.2c-42.349 0-76.8-34.451-76.8-76.8zM921.6 128c0-14.115-11.485-25.6-25.6-25.6h-819.2c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2z' />
+            <path d='M332.8 793.6c0-6.552 2.499-13.102 7.499-18.101l237.898-237.899-237.898-237.898c-9.997-9.998-9.997-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203 0l256 256c9.997 9.998 9.997 26.206 0 36.205l-256 256c-9.997 9.998-26.206 9.998-36.203 0-5-5-7.499-11.55-7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUp.js
new file mode 100644
index 00000000..69950fac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUp.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ChevronUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 768c0 6.552 2.499 13.102 7.499 18.101 9.997 9.998 26.206 9.998 36.203 0l442.698-442.698 442.699 442.698c9.997 9.998 26.206 9.998 36.203 0s9.998-26.206 0-36.203l-460.8-460.8c-9.997-9.998-26.206-9.998-36.203 0l-460.8 460.8c-5 5-7.499 11.55-7.499 18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpCircle.js
new file mode 100644
index 00000000..d8e0e3cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronUpCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M142.464 193.662c-91.869 91.869-142.464 214.016-142.464 343.938s50.595 252.067 142.464 343.936 214.014 142.464 343.936 142.464 252.069-50.595 343.938-142.464 142.462-214.014 142.462-343.936-50.594-252.069-142.462-343.938-214.016-142.462-343.938-142.462-252.067 50.594-343.936 142.462zM921.6 537.6c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2z' />
+            <path d='M768 614.4c0 6.552-2.499 13.102-7.499 18.102-9.997 9.997-26.206 9.997-36.203 0l-237.898-237.898-237.898 237.898c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.998-9.997-26.206 0-36.205l256-256c9.997-9.998 26.206-9.998 36.203 0l256 256c5 5 7.499 11.55 7.499 18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpSquare.js
new file mode 100644
index 00000000..9639e517
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronUpSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronUpSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M742.4 691.2c-6.552 0-13.102-2.499-18.101-7.499l-237.899-237.898-237.898 237.898c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203l256-256c9.998-9.997 26.206-9.997 36.205 0l256 256c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractHorizontal.js
new file mode 100644
index 00000000..c20ce3b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractHorizontal.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronsContractHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 486.4c0-6.552 2.499-13.102 7.498-18.102l307.2-307.2c9.998-9.997 26.206-9.997 36.205-0 9.997 9.998 9.997 26.206 0 36.205l-289.099 289.098 289.099 289.099c9.997 9.997 9.997 26.206 0 36.203-9.998 9.998-26.206 9.998-36.205 0l-307.2-307.2c-4.998-5-7.498-11.55-7.498-18.102z' />
+            <path d='M25.6 793.6c0-6.552 2.499-13.102 7.499-18.101l289.096-289.099-289.096-289.098c-9.997-9.998-9.997-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203-0l307.2 307.2c9.997 9.998 9.997 26.206 0 36.205l-307.2 307.2c-9.997 9.998-26.206 9.998-36.203 0-5-5-7.499-11.55-7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractVertical.js
new file mode 100644
index 00000000..e49d84bb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsContractVertical.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronsContractVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 384c-6.552 0-13.102-2.499-18.102-7.498l-307.2-307.2c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l289.098 289.099 289.099-289.099c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-307.2 307.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M793.6 998.4c-6.552 0-13.102-2.499-18.101-7.499l-289.099-289.096-289.098 289.096c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203l307.2-307.2c9.998-9.997 26.206-9.997 36.205 0l307.2 307.2c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandHorizontal.js
new file mode 100644
index 00000000..7a4ef617
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandHorizontal.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronsExpandHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 793.6c0-6.552 2.499-13.102 7.498-18.101l289.099-289.099-289.099-289.098c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l307.2 307.2c9.997 9.998 9.997 26.206 0 36.205l-307.2 307.2c-9.998 9.998-26.206 9.998-36.205 0-4.998-5-7.498-11.55-7.498-18.102z' />
+            <path d='M25.6 486.4c0-6.552 2.499-13.102 7.499-18.102l307.2-307.2c9.997-9.997 26.206-9.997 36.203 0s9.997 26.206 0 36.205l-289.098 289.098 289.098 289.099c9.997 9.997 9.997 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0l-307.2-307.2c-5-5-7.499-11.55-7.499-18.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandVertical.js
new file mode 100644
index 00000000..cb8ef7d5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChevronsExpandVertical.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ChevronsExpandVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 384c-6.552 0-13.102-2.499-18.101-7.498l-289.099-289.099-289.098 289.099c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.998-9.997-26.206 0-36.205l307.2-307.2c9.998-9.997 26.206-9.997 36.205 0l307.2 307.2c9.998 9.998 9.998 26.206 0 36.205-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M486.4 998.4c-6.552 0-13.102-2.499-18.102-7.499l-307.2-307.2c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l289.098 289.098 289.099-289.098c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-307.2 307.2c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chicken.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chicken.js
new file mode 100644
index 00000000..fab48bc7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chicken.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Chicken
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 768h-25.6c-21.246 0-54.278-13.682-69.301-28.704l-91.013-91.013c1.15-11.131 0.475-22.646-2.008-34.688-7.176-34.789-28.402-71.821-57.779-123.074-19.15-33.411-40.856-71.28-64.202-117.97-7.309-14.621-15.166-32.507-24.267-53.218-27.054-61.581-60.725-138.221-111.488-202.034-61.918-77.835-135.917-117.301-219.942-117.301-155.275 0-281.6 126.325-281.6 281.6 0 84.026 39.466 158.024 117.299 219.941 63.814 50.763 140.454 84.434 202.034 111.488 20.71 9.101 38.598 16.958 53.218 24.267 46.694 23.349 84.565 45.054 117.978 64.206 63.418 36.35 105.314 60.365 147.304 60.365 3.547 0 7.038-0.189 10.494-0.538l90.968 90.968c15.024 15.024 28.704 48.054 28.704 69.301v25.6c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-14.115 11.485-25.6 25.6-25.6 42.347 0 76.8-34.453 76.8-76.8 0.002-42.347-34.451-76.798-76.798-76.798zM515.99 657.083c-32.322-18.526-72.546-41.581-120.542-65.579-15.758-7.88-35.072-16.366-55.522-25.349-114.974-50.514-288.726-126.848-288.726-284.555 0-127.043 103.357-230.4 230.4-230.4 157.707 0 234.042 173.752 284.555 288.728 8.982 20.448 17.469 39.763 25.349 55.522 23.995 47.992 47.050 88.214 65.574 120.534 58.579 102.202 70.81 127.925 28.821 169.915-21.954 21.954-37.219 24.768-48.066 24.768-28.358-0-67.571-22.477-121.843-53.584zM947.2 870.4c-42.347 0-76.8 34.451-76.8 76.8 0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-25.6c0-35.234-18.787-80.59-43.701-105.504l-75.264-75.264c7.314-5.234 14.578-11.44 21.867-18.73 7.243-7.243 13.469-14.523 18.706-21.891l75.288 75.288c24.914 24.914 70.27 43.701 105.504 43.701h25.6c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chip.js
new file mode 100644
index 00000000..612c5a3e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Chip.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Chip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-76.8c0-6.79-2.698-13.301-7.499-18.101l-102.4-102.4c-4.8-4.802-11.312-7.499-18.101-7.499h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-6.79 0-13.301 2.698-18.101 7.499l-102.4 102.4c-4.802 4.8-7.499 11.312-7.499 18.101v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 6.789 2.698 13.301 7.499 18.101l102.4 102.4c4.8 4.802 11.312 7.499 18.101 7.499h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c6.789 0 13.301-2.698 18.101-7.499l102.4-102.4c4.802-4.8 7.499-11.312 7.499-18.101v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8zM819.2 782.997l-87.403 87.403h-490.794l-87.403-87.403v-490.794l87.403-87.403h490.794l87.403 87.403v490.794z' />
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX64.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX64.js
new file mode 100644
index 00000000..dd05907f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX64.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ChipX64
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-76.8c0-6.79-2.698-13.301-7.499-18.101l-102.4-102.4c-4.8-4.802-11.312-7.499-18.101-7.499h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-6.79 0-13.301 2.698-18.101 7.499l-102.4 102.4c-4.802 4.8-7.499 11.312-7.499 18.101v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 6.789 2.698 13.301 7.499 18.101l102.4 102.4c4.8 4.802 11.312 7.499 18.101 7.499h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c6.789 0 13.301-2.698 18.101-7.499l102.4-102.4c4.802-4.8 7.499-11.312 7.499-18.101v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8zM819.2 782.997l-87.403 87.403h-490.794l-87.403-87.403v-490.794l87.403-87.403h490.794l87.403 87.403v490.794z' />
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M317.803 486.4l33.099-33.099c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-33.099 33.099-33.099-33.099c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l33.099 33.099-33.099 33.099c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l33.099-33.098 33.099 33.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-33.098-33.098z' />
+            <path d='M537.6 563.2h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM460.8 512h51.2v-51.2h-51.2v51.2z' />
+            <path d='M742.4 307.2c-14.139 0-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX86.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX86.js
new file mode 100644
index 00000000..6f3fa591
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ChipX86.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ChipX86
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-76.8c0-6.79-2.698-13.301-7.499-18.101l-102.4-102.4c-4.8-4.802-11.312-7.499-18.101-7.499h-76.8v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-6.79 0-13.301 2.698-18.101 7.499l-102.4 102.4c-4.802 4.8-7.499 11.312-7.499 18.101v76.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 6.789 2.698 13.301 7.499 18.101l102.4 102.4c4.8 4.802 11.312 7.499 18.101 7.499h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c6.789 0 13.301-2.698 18.101-7.499l102.4-102.4c4.802-4.8 7.499-11.312 7.499-18.101v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h76.8zM819.2 782.997l-87.403 87.403h-490.794l-87.403-87.403v-490.794l87.403-87.403h490.794l87.403 87.403v490.794z' />
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M317.803 486.4l33.099-33.099c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-33.099 33.099-33.099-33.099c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l33.099 33.099-33.099 33.099c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l33.099-33.098 33.099 33.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-33.098-33.098z' />
+            <path d='M537.6 307.2h-102.4c-14.138 0-25.6 11.462-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6zM512 358.4v51.2h-51.2v-51.2h51.2zM460.8 512v-51.2h51.2v51.2h-51.2z' />
+            <path d='M742.4 563.2h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM665.6 512h51.2v-51.2h-51.2v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Christmas.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Christmas.js
new file mode 100644
index 00000000..753fee63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Christmas.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Christmas
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M487.138 1023.797c-0.25 0-0.498 0-0.747 0-164.267-0.061-373.715-22.267-423.686-55.227-6.008-3.963-10.070-10.272-11.192-17.381-1.122-7.107 0.802-14.362 5.298-19.981l102.4-128c8.832-11.040 24.941-12.832 35.982-3.998 11.040 8.834 12.83 24.942 3.998 35.982l-80.866 101.083c61.779 17.125 207.059 36.262 368.085 36.322 0.243 0 0.488 0 0.731 0 86.458 0 177.341-5.562 255.997-15.664 50.714-6.515 86.518-13.698 109.458-20.030l-169.458-190.64c-6.035-6.79-8.021-16.274-5.214-24.914 2.806-8.642 9.982-15.149 18.858-17.099 27.934-6.134 46.418-12.694 58.547-18.365l-164.642-192.082c-5.686-6.634-7.595-15.71-5.066-24.074s9.152-14.859 17.562-17.227c19.36-5.454 35.966-12.194 49.211-19.907l-30.494-30.494c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l51.2 51.2c9.998 9.998 9.998 26.206 0 36.203-13.933 13.933-32.47 25.856-55.355 35.634l159.091 185.605c8.704 10.158 8.123 25.304-1.336 34.763-13.366 13.368-34.058 24.589-62.736 33.95l166.168 186.939c4.92 5.536 7.202 12.931 6.256 20.278-0.947 7.346-5.029 13.922-11.19 18.030-28.55 19.034-103.059 31.832-160.538 39.216-80.752 10.373-173.954 16.080-262.525 16.080z' />
+            <path d='M281.595 588.8c-6.298 0-12.605-2.307-17.55-6.966-10.291-9.696-10.773-25.898-1.078-36.187l54.139-57.466c-22.082-9.634-40.034-21.302-53.61-34.878-9.997-9.997-9.997-26.206 0-36.203l51.2-51.2c9.998-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-30.493 30.494c13.243 7.715 29.85 14.454 49.21 19.907 8.616 2.427 15.338 9.179 17.728 17.805s0.101 17.874-6.037 24.39l-81.077 86.056c-5.034 5.344-11.829 8.045-18.635 8.045z' />
+            <path d='M588.795 358.4c-3.899 0-7.818-0.89-11.443-2.702l-90.952-45.475-90.952 45.475c-8.939 4.469-19.669 3.328-27.467-2.93-7.798-6.256-11.242-16.478-8.818-26.178l22.645-90.579-69.488-92.651c-5.818-7.758-6.754-18.136-2.418-26.808 4.336-8.674 13.2-14.152 22.898-14.152h86.578l44.125-88.248c4.336-8.674 13.2-14.152 22.898-14.152s18.562 5.478 22.898 14.152l44.125 88.248h86.578c9.698 0 18.562 5.478 22.898 14.152 4.338 8.672 3.402 19.051-2.418 26.808l-69.49 92.653 22.645 90.579c2.426 9.699-1.019 19.922-8.818 26.178-4.635 3.718-10.307 5.63-16.022 5.63zM486.4 256c3.923 0 7.845 0.901 11.448 2.702l52.618 26.309-12.101-48.402c-1.869-7.478-0.269-15.402 4.357-21.568l46.078-61.442h-51.2c-9.698 0-18.562-5.478-22.898-14.152l-28.302-56.605-28.302 56.605c-4.336 8.674-13.2 14.152-22.898 14.152h-51.2l46.080 61.44c4.626 6.166 6.226 14.091 4.357 21.568l-12.101 48.402 52.616-26.309c3.603-1.8 7.525-2.701 11.448-2.701z' />
+            <path d='M588.8 921.6c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 819.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M358.4 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M230.4 768c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM230.4 665.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M435.2 768c-14.138 0-25.6-11.461-25.6-25.6 0-14.115-11.485-25.6-25.6-25.6-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c14.115 0 25.6-11.485 25.6-25.6 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6 0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Circle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Circle.js
new file mode 100644
index 00000000..6e768e2d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Circle.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Circle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-136.76 0-265.334-53.258-362.038-149.962s-149.962-225.278-149.962-362.038c0-136.76 53.258-265.334 149.962-362.038s225.278-149.962 362.038-149.962c136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962zM512 51.2c-254.086 0-460.8 206.714-460.8 460.8s206.714 460.8 460.8 460.8c254.086 0 460.8-206.714 460.8-460.8s-206.714-460.8-460.8-460.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CircleMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CircleMinus.js
new file mode 100644
index 00000000..ca62fbc2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CircleMinus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CircleMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M793.6 563.2h-614.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Citrus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Citrus.js
new file mode 100644
index 00000000..c050c1be
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Citrus.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Citrus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M981.821 231.264c-28.981-71.467-71.552-135.581-126.528-190.558-4.8-4.8-11.312-7.498-18.101-7.498s-13.301 2.698-18.101 7.499l-778.386 778.384c-4.8 4.8-7.498 11.312-7.498 18.101s2.698 13.301 7.499 18.101c54.976 54.976 119.088 97.547 190.557 126.528 69.018 27.989 141.938 42.179 216.736 42.179s147.718-14.19 216.736-42.178c71.469-28.981 135.581-71.552 190.557-126.528s97.547-119.090 126.528-190.558c27.989-69.018 42.179-141.938 42.179-216.736s-14.19-147.72-42.179-216.736zM349.832 582.371c18.242 13.344 38.608 22.499 59.768 27.485v207.168c-73.917-7.629-145.968-37.322-205.341-89.082l145.573-145.571zM545.507 386.696c27.97 44.482 22.645 104.058-16.038 142.754-0.003 0.003-0.008 0.006-0.011 0.010s-0.006 0.008-0.010 0.011c-38.694 38.685-98.27 44.008-142.752 16.038l158.811-158.813zM460.8 613.826c30.184-2.309 59.853-12.79 85.366-31.454l145.573 145.573c-66.221 57.739-148.176 88.016-230.941 90.837v-204.955zM727.955 691.752l-145.584-145.584c18.664-25.514 29.146-55.184 31.454-85.366h205.133c-2.89 85.814-34.781 166.565-91.003 230.95zM609.856 409.6c-4.984-21.16-14.141-41.526-27.485-59.768l145.584-145.584c50.597 57.942 81.496 129.138 89.278 205.354h-207.378zM819.090 819.091c-99.123 99.12-230.912 153.709-371.090 153.709-131.614 0-255.829-48.117-352.557-136.038l72.536-72.536c77.304 68.637 175.771 106.173 280.021 106.173 112.827 0 218.899-43.936 298.682-123.717 79.781-79.781 123.718-185.853 123.718-298.682 0-4.274-0.085-8.533-0.21-12.787 0-0.005 0-0.008 0-0.013 0-0.027-0.005-0.054-0.005-0.082-2.96-99.464-40.158-193.029-105.962-267.141l72.534-72.534c87.923 96.728 136.042 220.942 136.042 352.557 0 140.179-54.589 271.968-153.71 371.091z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/City.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/City.js
new file mode 100644
index 00000000..446191d7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/City.js
@@ -0,0 +1,35 @@
+// Icon: Linear.City
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M460.8 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 512h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M460.8 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M563.2 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M768 819.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 358.4h-25.6v-128c0-6.79-2.698-13.301-7.499-18.101l-94.901-94.902v-91.797c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v91.797l-94.901 94.901c-4.802 4.8-7.499 11.312-7.499 18.101v25.6h-102.4v-127.998c0-14.138-11.462-25.6-25.6-25.6h-409.6c-14.138 0-25.6 11.462-25.6 25.6v870.4c0 14.139 11.462 25.6 25.6 25.6h819.2c14.139 0 25.6-11.461 25.6-25.6v-614.4c0-14.138-11.461-25.6-25.6-25.6zM665.6 241.003l76.8-76.8 76.8 76.8v117.397h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6h-76.8v-14.997zM716.8 307.2v51.2h-204.8v-51.2h204.8zM358.4 384v588.8h-256v-819.2h358.4v204.8h-76.8c-14.138 0-25.6 11.462-25.6 25.6zM870.4 972.8h-460.8v-563.2h460.8v563.2z' />
+            <path d='M358.4 204.8h51.2v102.4h-51.2v-102.4z' />
+            <path d='M256 204.8h51.2v102.4h-51.2v-102.4z' />
+            <path d='M153.6 204.8h51.2v102.4h-51.2v-102.4z' />
+            <path d='M153.6 358.4h51.2v102.4h-51.2v-102.4z' />
+            <path d='M256 358.4h51.2v102.4h-51.2v-102.4z' />
+            <path d='M153.6 512h51.2v102.4h-51.2v-102.4z' />
+            <path d='M256 512h51.2v102.4h-51.2v-102.4z' />
+            <path d='M153.6 665.6h51.2v102.4h-51.2v-102.4z' />
+            <path d='M256 665.6h51.2v102.4h-51.2v-102.4z' />
+            <path d='M153.6 819.2h51.2v102.4h-51.2v-102.4z' />
+            <path d='M256 819.2h51.2v102.4h-51.2v-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClapboardPlay.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClapboardPlay.js
new file mode 100644
index 00000000..884db0e9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClapboardPlay.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ClapboardPlay
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-51.285c-0.029 0-0.058 0-0.086 0h-204.714c-0.030 0-0.058 0-0.088 0h-204.714c-0.029 0-0.058 0-0.086 0h-204.714c-0.029 0-0.058 0-0.086 0h-153.427c-42.347 0-76.8 34.453-76.8 76.8v665.6c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM921.6 179.2v76.8h-131.366l68.267-102.4h37.499c14.115 0 25.6 11.485 25.6 25.6zM585.434 256l68.267-102.4h143.267l-68.267 102.4h-143.267zM380.634 256l68.267-102.4h143.267l-68.267 102.4h-143.267zM175.834 256l68.267-102.4h143.266l-68.267 102.4h-143.266zM76.8 153.6h105.766l-68.267 102.4h-63.099v-76.8c0-14.115 11.485-25.6 25.6-25.6zM896 870.4h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-537.6h76.71c0.022 0 0.043 0.002 0.066 0.002 0.026 0 0.051-0.002 0.077-0.002h204.658c0.022 0 0.043 0.002 0.066 0.002 0.026 0 0.051-0.002 0.077-0.002h204.658c0.022 0 0.043 0.002 0.066 0.002 0.027 0 0.051-0.002 0.078-0.002h204.656c0.022 0 0.043 0.002 0.066 0.002 0.027 0 0.051-0.002 0.078-0.002h179.146v537.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M384 768c-4.347 0-8.696-1.106-12.613-3.323-8.026-4.544-12.987-13.053-12.987-22.277v-307.2c0-9.224 4.962-17.733 12.987-22.277 8.027-4.544 17.877-4.422 25.784 0.325l256 153.6c7.709 4.627 12.429 12.96 12.429 21.952s-4.718 17.325-12.429 21.952l-256 153.6c-4.050 2.429-8.61 3.648-13.171 3.648zM409.6 480.414v216.771l180.642-108.386-180.642-108.386z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cli.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cli.js
new file mode 100644
index 00000000..11123a63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cli.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Cli
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v665.6c0 42.349-34.451 76.8-76.8 76.8zM76.8 153.6c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-665.6c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M179.224 512.003c-8.272 0-16.39-4.003-21.325-11.403-7.842-11.765-4.664-27.658 7.101-35.501l121.65-81.099-121.65-81.099c-11.765-7.843-14.942-23.738-7.101-35.501 7.843-11.765 23.736-14.942 35.501-7.101l153.6 102.4c7.122 4.749 11.4 12.741 11.4 21.301s-4.278 16.552-11.4 21.301l-153.6 102.4c-4.365 2.909-9.298 4.302-14.176 4.302z' />
+            <path d='M588.8 512h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardAlert.js
new file mode 100644
index 00000000..10d27dce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardAlert.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ClipboardAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 665.6c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 819.2c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardCheck.js
new file mode 100644
index 00000000..c28d9d83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardCheck.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ClipboardCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M409.6 716.8c-6.552 0-13.102-2.499-18.101-7.499l-76.8-76.8c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l58.698 58.699 212.299-212.299c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-230.4 230.4c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardDown.js
new file mode 100644
index 00000000..e5bb8272
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardDown.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ClipboardDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M606.901 647.499c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.696v-270.995c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v270.995l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205-0.002-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardEmpty.js
new file mode 100644
index 00000000..686bb0f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardEmpty.js
@@ -0,0 +1,14 @@
+// Icon: Linear.ClipboardEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardLeft.js
new file mode 100644
index 00000000..6c4daca9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardLeft.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ClipboardLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 563.2h-270.997l58.699-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-58.699-58.698h270.997c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardPencil.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardPencil.js
new file mode 100644
index 00000000..5b25d925
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardPencil.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ClipboardPencil
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M256 870.4c-6.722 0-13.254-2.65-18.101-7.499-6.053-6.051-8.68-14.728-7.002-23.122l25.6-128c0.992-4.957 3.427-9.507 7.002-13.082l332.8-332.8c9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203l-332.8 332.8c-3.573 3.573-8.125 6.010-13.082 7.002l-128 25.6c-1.67 0.334-3.352 0.498-5.021 0.498zM305.182 729.421l-16.549 82.746 82.746-16.549 309.218-309.218-66.197-66.197-309.218 309.218z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardText.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardText.js
new file mode 100644
index 00000000..a0d91e49
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardText.js
@@ -0,0 +1,19 @@
+// Icon: Linear.ClipboardText
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 409.6h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 563.2h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 665.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 768h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 870.4h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardUser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardUser.js
new file mode 100644
index 00000000..453ef971
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ClipboardUser.js
@@ -0,0 +1,16 @@
+// Icon: Linear.ClipboardUser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.232 256c-0.008 0-0.021 0.002-0.032 0h-409.6c-14.138 0-25.6-11.462-25.6-25.6 0-51.474 23.208-91.426 65.352-112.498 14.091-7.045 27.994-10.891 39.134-12.99 10.899-59.6 63.213-104.912 125.914-104.912s115.016 45.312 125.914 104.912c11.141 2.099 25.043 5.944 39.134 12.99 41.76 20.88 64.928 60.298 65.346 111.096 0.026 0.464 0.037 0.933 0.037 1.402 0.002 14.138-11.461 25.6-25.598 25.6zM310.283 204.8h352.234c-4.912-18.243-15.723-31.581-32.666-40.438-19.898-10.402-40.982-10.76-41.194-10.763-14.138 0.002-25.458-11.461-25.458-25.598 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6-0.069 0.002-21.154 0.36-41.051 10.762-16.944 8.858-27.754 22.195-32.666 40.438z' />
+            <path d='M486.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 870.4h-307.2c-21.75 0-40.766-9.075-52.171-24.899s-14.002-36.733-7.123-57.366c1.104-3.315 11.714-33.253 43.464-63.078 28.872-27.125 81.706-59.456 169.43-59.456 87.723 0 140.558 32.331 169.432 59.454 31.75 29.826 42.36 59.763 43.464 63.078 6.878 20.634 4.282 41.544-7.123 57.366-11.406 15.826-30.422 24.901-52.173 24.901zM486.4 716.8c-133.603 0-164.032 86.648-164.323 87.523-1.587 4.762-1.554 8.963 0.088 11.238 1.64 2.278 5.616 3.638 10.635 3.638h307.2c5.019 0 8.995-1.36 10.635-3.637 1.627-2.254 1.674-6.398 0.131-11.102-1.638-4.57-33.35-87.661-164.366-87.661z' />
+            <path d='M486.4 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock.js
new file mode 100644
index 00000000..fe98b38c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Clock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M835.574 876.171c88.534-91.234 137.226-211.154 137.226-338.571 0-121.352-44.152-235.912-124.834-325.36l35.234-35.237 33.101 33.099c4.997 4.998 11.547 7.498 18.099 7.498s13.102-2.499 18.099-7.499c10-9.997 10-26.206 0-36.203l-102.4-102.4c-9.995-9.998-26.208-9.998-36.205 0-9.998 9.997-9.998 26.206 0 36.203l33.102 33.099-35.237 35.235c-89.45-80.683-204.008-124.835-325.36-124.835s-235.91 44.152-325.36 124.835l-35.237-35.235 33.098-33.098c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l33.099-33.098 35.237 35.237c-80.685 89.45-124.837 204.008-124.837 325.36 0 127.418 48.691 247.336 137.226 338.57l-104.128 104.125c-9.998 9.997-9.998 26.21 0 36.205 5 5.002 11.55 7.501 18.102 7.501s13.102-2.499 18.101-7.501l105.448-105.446c87.304 73.114 196.41 112.947 311.651 112.947s224.349-39.834 311.651-112.946l105.443 105.445c5 5 11.554 7.501 18.102 7.501s13.102-2.499 18.099-7.501c10-9.995 10-26.208 0-36.205l-104.122-104.123zM51.2 537.6c0-239.97 195.23-435.2 435.2-435.2s435.2 195.23 435.2 435.2c0 239.97-195.23 435.2-435.2 435.2s-435.2-195.23-435.2-435.2z' />
+            <path d='M774.611 371.2c-7.069-12.245-22.728-16.435-34.966-9.37l-251.917 145.445-196.344-137.482c-11.582-8.11-27.547-5.294-35.654 6.286-8.11 11.582-5.294 27.546 6.286 35.654l209.702 146.834c0.042 0.030 0.085 0.053 0.126 0.082 0.448 0.309 0.906 0.603 1.37 0.883 0.106 0.064 0.21 0.13 0.315 0.192 0.458 0.264 0.923 0.512 1.394 0.75 0.102 0.051 0.203 0.11 0.307 0.163 0.518 0.25 1.046 0.485 1.579 0.699 0.328 0.133 0.659 0.246 0.99 0.366 0.219 0.075 0.435 0.16 0.656 0.232 0.36 0.117 0.722 0.222 1.085 0.322 0.2 0.056 0.4 0.109 0.6 0.163 0.366 0.091 0.733 0.174 1.101 0.251 0.213 0.042 0.426 0.083 0.64 0.12 0.355 0.064 0.71 0.125 1.067 0.171 0.258 0.035 0.515 0.059 0.774 0.090 0.315 0.034 0.629 0.070 0.944 0.091 0.466 0.034 0.933 0.045 1.4 0.053 0.104 0 0.208 0.011 0.314 0.011 0.005 0 0.011-0.002 0.016-0.002 0.010 0 0.021 0.002 0.030 0.002 0.957 0 1.917-0.062 2.875-0.171 0.045-0.003 0.091-0.006 0.134-0.013 0.93-0.109 1.854-0.28 2.776-0.496 0.086-0.021 0.173-0.035 0.259-0.059 0.867-0.213 1.728-0.472 2.579-0.779 0.146-0.050 0.29-0.104 0.434-0.163 0.795-0.302 1.581-0.637 2.358-1.029 0.184-0.094 0.365-0.197 0.549-0.294 0.269-0.144 0.542-0.278 0.81-0.434l266.043-153.6c12.24-7.069 16.435-22.725 9.366-34.97z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock2.js
new file mode 100644
index 00000000..2c8bb3c0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Clock2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M774.614 371.2c-7.070-12.245-22.728-16.435-34.97-9.37l-251.92 145.445-196.342-137.482c-11.582-8.11-27.546-5.294-35.654 6.286s-5.294 27.544 6.286 35.654l209.702 146.835c0.056 0.038 0.112 0.070 0.168 0.107 0.419 0.288 0.845 0.563 1.278 0.824 0.13 0.078 0.258 0.162 0.389 0.235 0.426 0.246 0.858 0.477 1.296 0.699 0.133 0.067 0.264 0.142 0.397 0.206 0.51 0.248 1.030 0.477 1.557 0.69 0.342 0.139 0.688 0.258 1.034 0.379 0.205 0.074 0.408 0.15 0.614 0.218 0.366 0.12 0.733 0.226 1.102 0.328 0.194 0.053 0.387 0.107 0.582 0.157 0.37 0.094 0.739 0.178 1.11 0.254 0.21 0.043 0.421 0.082 0.632 0.12 0.357 0.064 0.714 0.125 1.070 0.173 0.256 0.035 0.514 0.059 0.77 0.086 0.317 0.034 0.632 0.072 0.947 0.093 0.466 0.034 0.933 0.045 1.4 0.053 0.104 0 0.208 0.011 0.314 0.011 0.005 0 0.011-0.002 0.016-0.002 0.010 0 0.021 0.002 0.030 0.002 0.958 0 1.918-0.064 2.878-0.171 0.043-0.005 0.088-0.008 0.131-0.013 0.93-0.11 1.858-0.28 2.779-0.496 0.085-0.021 0.17-0.037 0.254-0.058 0.87-0.213 1.734-0.475 2.59-0.782 0.139-0.050 0.275-0.102 0.414-0.155 0.805-0.306 1.602-0.648 2.386-1.040 0.166-0.085 0.33-0.178 0.494-0.266 0.283-0.149 0.568-0.291 0.848-0.451l266.043-153.6c12.245-7.070 16.44-22.726 9.371-34.971z' />
+            <path d='M835.574 876.171c88.534-91.234 137.226-211.154 137.226-338.571 0-121.352-44.152-235.912-124.835-325.36l35.235-35.237 33.099 33.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-102.4-102.4c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l33.099 33.099-35.237 35.235c-89.45-80.683-204.008-124.835-325.36-124.835s-235.91 44.152-325.36 124.835l-35.237-35.235 33.098-33.098c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l33.099-33.098 35.237 35.237c-80.685 89.45-124.837 204.008-124.837 325.36 0 127.418 48.691 247.336 137.226 338.57l-104.128 104.128c-9.998 9.997-9.998 26.206 0 36.203 5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l105.448-105.448c87.304 73.112 196.41 112.947 311.651 112.947s224.349-39.835 311.651-112.946l105.446 105.446c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-104.126-104.126zM512 972.027v-24.827c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v24.827c-219.624-12.805-396.022-189.202-408.827-408.827h24.827c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.827c12.805-219.624 189.203-396.022 408.827-408.827v24.827c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-24.827c219.626 12.805 396.022 189.203 408.827 408.827h-24.827c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.827c-12.805 219.626-189.202 396.022-408.827 408.827z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock3.js
new file mode 100644
index 00000000..967ab032
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clock3.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Clock3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464c-91.869 91.869-142.464 214.014-142.464 343.936s50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2z' />
+            <path d='M774.614 371.2c-7.070-12.245-22.728-16.435-34.97-9.37l-251.92 145.445-196.342-137.482c-11.582-8.11-27.546-5.294-35.654 6.286s-5.294 27.544 6.286 35.654l209.702 146.835c0.051 0.035 0.106 0.066 0.158 0.101 0.429 0.296 0.866 0.574 1.31 0.843 0.118 0.072 0.237 0.147 0.357 0.216 0.446 0.259 0.901 0.502 1.363 0.734 0.11 0.056 0.219 0.118 0.33 0.171 0.518 0.251 1.046 0.485 1.581 0.701 0.315 0.126 0.634 0.234 0.95 0.35 0.234 0.085 0.467 0.17 0.702 0.246 0.346 0.112 0.691 0.213 1.038 0.309 0.219 0.062 0.438 0.122 0.659 0.178 0.347 0.088 0.696 0.166 1.045 0.238 0.237 0.048 0.477 0.093 0.715 0.136 0.331 0.058 0.661 0.115 0.992 0.16 0.299 0.042 0.6 0.072 0.901 0.101 0.274 0.029 0.546 0.061 0.819 0.080 0.594 0.040 1.189 0.066 1.786 0.066 0.971 0 1.944-0.062 2.917-0.174 0.024-0.003 0.050-0.005 0.074-0.006 0.946-0.112 1.888-0.285 2.824-0.502 0.069-0.018 0.139-0.032 0.208-0.048 0.883-0.214 1.758-0.48 2.626-0.794 0.128-0.045 0.253-0.094 0.379-0.142 0.813-0.307 1.619-0.653 2.41-1.051 0.162-0.080 0.317-0.17 0.477-0.254 0.286-0.15 0.576-0.294 0.859-0.458l266.043-153.6c12.248-7.069 16.443-22.725 9.374-34.97z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cloud.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cloud.js
new file mode 100644
index 00000000..2107bdd3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cloud.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cloud
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.52 819.2h-512.32c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.048-19.469 16.643-28.403 28.87-39.112 75.093-62.462 123.653-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.126-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48zM307.2 256c-141.158 0-256 114.84-256 256s114.842 256 256 256h512.32c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.707-19.867 54.138-0.67 10.85-8.117 20.096-18.574 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.632-7.997-11.73-15.701-18.126-22.902-48.587-54.696-118.374-86.066-191.47-86.066z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudAlert.js
new file mode 100644
index 00000000..110f7641
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudAlert.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CloudAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 819.2h-179.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h179.2c84.696 0 153.6-68.904 153.6-153.6s-68.904-153.6-153.6-153.6c-17.576 0-34.797 2.936-51.181 8.726-11.101 3.922-23.451-0.234-29.922-10.075-6.469-9.84-5.389-22.827 2.616-31.464 17.595-18.986 27.286-43.699 27.286-69.587 0-56.464-45.936-102.4-102.4-102.4-53.997 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.474 2.96-21.664-1.027-27.912-9.93-47.957-68.326-126.347-109.12-209.696-109.12-141.158 0-256 114.84-256 256s114.842 256 256 256h128c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-128c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.483 0 160.917 33.286 218.149 90.933 24.093-53.746 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.024 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.874 204.8 204.8s-91.874 204.8-204.8 204.8z' />
+            <path d='M537.6 665.6c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 819.2c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCheck.js
new file mode 100644
index 00000000..76e114d3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 819.2h-486.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h486.4c84.696 0 153.6-68.904 153.6-153.6s-68.904-153.6-153.6-153.6c-17.576 0-34.797 2.936-51.181 8.726-11.101 3.922-23.451-0.234-29.922-10.075-6.469-9.84-5.389-22.827 2.616-31.464 17.595-18.986 27.286-43.699 27.286-69.587 0-56.464-45.936-102.4-102.4-102.4-53.997 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.474 2.96-21.664-1.027-27.912-9.93-47.957-68.326-126.347-109.12-209.696-109.12-141.158 0-256 114.84-256 256 0 7.77 0.352 15.611 1.045 23.301 1.269 14.082-9.117 26.525-23.198 27.795-14.080 1.278-26.525-9.117-27.795-23.198-0.83-9.211-1.251-18.598-1.251-27.898 0-169.39 137.81-307.2 307.2-307.2 82.483 0 160.917 33.286 218.149 90.933 24.093-53.746 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.024 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.874 204.8 204.8s-91.874 204.8-204.8 204.8z' />
+            <path d='M179.2 793.6c-6.552 0-13.102-2.499-18.102-7.499l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203s26.206-9.997 36.205 0l84.298 84.298 237.898-237.898c9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.997 26.206 0 36.203l-256 256c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCross.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCross.js
new file mode 100644
index 00000000..0a89bf70
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCross.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudCross
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 819.2h-230.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h230.4c84.696 0 153.6-68.904 153.6-153.6s-68.904-153.6-153.6-153.6c-17.576 0-34.797 2.936-51.181 8.726-11.101 3.922-23.451-0.234-29.922-10.075-6.469-9.84-5.389-22.827 2.616-31.464 17.595-18.986 27.286-43.699 27.286-69.587 0-56.464-45.936-102.4-102.4-102.4-53.997 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.474 2.96-21.664-1.027-27.912-9.93-47.957-68.326-126.347-109.12-209.696-109.12-141.158 0-256 114.84-256 256 0 53.070 16.086 103.97 46.522 147.197 8.139 11.56 5.366 27.53-6.194 35.67-11.558 8.136-27.531 5.366-35.67-6.195-36.542-51.901-55.858-112.992-55.858-176.672 0-169.39 137.81-307.2 307.2-307.2 82.483 0 160.917 33.286 218.149 90.933 24.093-53.746 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.024 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.874 204.8 204.8s-91.874 204.8-204.8 204.8z' />
+            <path d='M369.003 665.6l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.203 0l-109.899 109.899-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.899-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l109.899-109.898 109.899 109.899c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCrossed.js
new file mode 100644
index 00000000..87d502a6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.CloudCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 409.6c-2.947 0-5.886 0.062-8.818 0.186 5.794-16.33 8.818-33.675 8.818-51.386 0-12.152-1.426-23.976-4.104-35.322l96.264-72.198c11.31-8.483 13.603-24.53 5.12-35.84-8.482-11.309-24.526-13.605-35.838-5.12l-86.333 64.749c-27.437-42.030-74.878-69.869-128.709-69.869-62.091 0-116.158 37.189-140.251 90.933-57.232-57.646-135.666-90.933-218.149-90.933-169.39 0-307.2 137.81-307.2 307.2 0 106.498 54.482 200.499 137.027 255.63l-75.587 56.69c-11.31 8.483-13.603 24.53-5.12 35.838 5.029 6.706 12.715 10.242 20.499 10.242 5.344 0 10.736-1.669 15.341-5.122l94.379-70.784c37.062 15.891 77.85 24.706 120.661 24.706h512c112.926 0 204.8-91.874 204.8-204.8 0-112.928-91.874-204.8-204.8-204.8zM51.2 512c0-141.158 114.842-256 256-256 83.349 0 161.739 40.794 209.696 109.122 6.248 8.901 17.438 12.886 27.912 9.93 10.469-2.957 17.926-12.206 18.594-23.064 3.31-53.826 48.202-95.987 102.198-95.987 37.109 0 69.669 19.845 87.632 49.477l-572.242 429.181c-77.443-44.070-129.79-127.36-129.79-222.658zM819.2 768h-512c-24.878 0-48.933-3.581-71.693-10.232l532.493-399.368c0 25.888-9.691 50.6-27.288 69.587-8.005 8.637-9.085 21.622-2.616 31.464 6.47 9.843 18.822 14 29.922 10.074 16.386-5.789 33.606-8.725 51.182-8.725 84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDatabase.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDatabase.js
new file mode 100644
index 00000000..ec157de6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDatabase.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudDatabase
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 819.2h-76.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h76.8c84.696 0 153.6-68.904 153.6-153.6s-68.904-153.6-153.6-153.6c-17.574 0-34.795 2.936-51.181 8.726-11.101 3.923-23.45-0.234-29.922-10.075-6.469-9.84-5.387-22.827 2.618-31.462 17.594-18.989 27.285-43.701 27.285-69.589 0-56.464-45.936-102.4-102.4-102.4-53.995 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.472 2.962-21.662-1.029-27.912-9.93-47.955-68.326-126.347-109.12-209.696-109.12-141.158 0-256 114.84-256 256 0 133.384 100.030 242.99 232.677 254.954 14.082 1.27 24.467 13.715 23.198 27.797-1.27 14.080-13.699 24.464-27.797 23.197-76.058-6.861-146.504-41.725-198.36-98.171-52.181-56.806-80.918-130.594-80.918-207.776 0-169.39 137.81-307.2 307.2-307.2 82.485 0 160.917 33.286 218.149 90.933 24.093-53.746 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.709-3.026 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.874 204.8 204.8s-91.874 204.8-204.8 204.8z' />
+            <path d='M612.018 477.627c-27.128-10.851-62.65-16.827-100.018-16.827s-72.89 5.976-100.018 16.827c-46.621 18.65-53.582 45.579-53.582 59.973v204.8c0 14.394 6.962 41.323 53.582 59.973 27.128 10.851 62.65 16.827 100.018 16.827s72.89-5.976 100.018-16.827c46.621-18.65 53.582-45.579 53.582-59.973v-204.8c0-14.394-6.962-41.323-53.582-59.973zM614.4 639.032c-4.448 7.925-39.867 26.568-102.4 26.568-62.528 0-97.949-18.642-102.4-26.566v-42.451c0.792 0.331 1.566 0.666 2.382 0.992 27.128 10.85 62.65 16.826 100.018 16.826s72.89-5.976 100.018-16.827c0.818-0.326 1.59-0.661 2.382-0.992v42.451zM512 512c60.088 0 95.165 17.222 101.762 25.6-6.595 8.378-41.674 25.6-101.762 25.6s-95.165-17.222-101.76-25.6c6.595-8.378 41.672-25.6 101.76-25.6zM512 768c-62.422 0-97.851-18.586-102.4-26.534v-42.485c0.792 0.331 1.566 0.666 2.382 0.992 27.128 10.851 62.65 16.827 100.018 16.827s72.89-5.976 100.018-16.827c0.818-0.326 1.59-0.661 2.382-0.992v42.485c-4.55 7.949-39.978 26.534-102.4 26.534z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDownload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDownload.js
new file mode 100644
index 00000000..2e36274d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudDownload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudDownload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M658.099 698.701c-9.995-9.997-26.206-9.997-36.203 0l-58.696 58.694v-219.795c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v219.795l-58.698-58.699c-9.998-9.995-26.206-9.995-36.205 0-9.997 9.997-9.997 26.208 0 36.205l102.4 102.4c5 4.998 11.552 7.499 18.102 7.499s13.102-2.499 18.099-7.501l102.4-102.4c10-9.995 10-26.203 0-36.198z' />
+            <path d='M819.52 819.2h-128.32c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h128.32c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.706-19.867 54.138-0.67 10.85-8.117 20.093-18.574 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.632-7.998-11.73-15.702-18.126-22.904-48.587-54.694-118.374-86.064-191.47-86.064-141.158 0-256 114.84-256 256s114.842 256 256 256h76.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-76.8c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.048-19.469 16.643-28.403 28.87-39.112 75.093-62.462 123.653-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.126-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudFog.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudFog.js
new file mode 100644
index 00000000..a6a758de
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudFog.js
@@ -0,0 +1,12 @@
+// Icon: Linear.CloudFog
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.52 359.040c-3.149 0-6.293 0.069-9.416 0.211 5.978-16.528 9.096-34.094 9.096-52.051 0-84.696-68.904-153.6-153.6-153.6-48.56 0-94.782 23.35-123.654 62.462-6.595 8.934-12.158 18.456-16.64 28.403-57.517-57.949-136.072-90.866-218.106-90.866-169.39 0-307.2 137.81-307.2 307.2v204.8c0 169.39 137.81 307.2 307.2 307.2h512.32c112.75 0 204.48-91.73 204.48-204.48v-204.8c0-112.75-91.73-204.48-204.48-204.48zM307.2 204.8c73.096 0 142.883 31.37 191.472 86.066 6.397 7.202 12.493 14.904 18.126 22.902 6.258 8.885 17.443 12.858 27.906 9.891 10.454-2.958 17.901-12.205 18.571-23.054 1.198-19.43 8.069-38.152 19.867-54.138 19.546-26.48 49.6-41.667 82.458-41.667 56.464 0 102.4 45.936 102.4 102.4 0 26.282-10.067 51.354-28.347 70.589-8.19 8.621-9.366 21.746-2.842 31.685s19.035 14.077 30.202 9.989c16.714-6.122 34.379-9.222 52.507-9.222 84.518 0 153.28 68.762 153.28 153.28s-68.762 153.28-153.28 153.28h-512.32c-141.158 0-256-114.84-256-256s114.842-256 256-256zM968.027 703.931c-16.952 66.192-77.106 115.269-148.507 115.269h-512.32c-109.816 0-203.694-69.51-239.973-166.84 56.341 70.435 142.971 115.64 239.973 115.64h512.32c58.43 0 111.208-24.64 148.507-64.069zM819.52 921.6h-512.32c-109.816 0-203.694-69.51-239.973-166.84 56.341 70.435 142.971 115.64 239.973 115.64h512.32c58.43 0 111.208-24.64 148.506-64.069-16.95 66.192-77.104 115.269-148.506 115.269z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudGear.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudGear.js
new file mode 100644
index 00000000..70336955
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudGear.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CloudGear
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896.022 801.962c-9.574 0-18.758-5.397-23.141-14.621-6.067-12.77-0.634-28.042 12.138-34.109 53.325-25.334 87.781-79.83 87.781-138.832 0-84.696-68.904-153.6-153.6-153.6-17.565 0-34.782 2.936-51.178 8.726-11.096 3.923-23.448-0.237-29.917-10.078-6.469-9.84-5.389-22.824 2.616-31.462 17.589-18.982 27.278-43.694 27.278-69.586 0-56.464-45.936-102.4-102.4-102.4-53.992 0-98.885 42.162-102.202 95.984-0.669 10.858-8.126 20.106-18.594 23.062-10.47 2.954-21.664-1.029-27.91-9.93-47.96-68.325-126.349-109.117-209.694-109.117-141.158 0-256 114.842-256 256 0 96.658 53.509 184.058 139.645 228.096 12.589 6.435 17.576 21.858 11.141 34.446s-21.856 17.579-34.446 11.141c-49.619-25.368-91.475-63.79-121.045-111.117-30.418-48.685-46.494-104.899-46.494-162.566 0-169.39 137.81-307.2 307.2-307.2 82.48 0 160.915 33.288 218.149 90.933 24.093-53.749 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.712-3.024 35.056-8.816 51.386 2.931-0.123 5.87-0.186 8.816-0.186 112.926 0 204.8 91.872 204.8 204.8 0 39.485-11.267 77.824-32.581 110.874-20.741 32.157-49.934 57.816-84.429 74.205-3.547 1.685-7.288 2.483-10.968 2.483z' />
+            <path d='M537.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM537.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M461.653 1012.546c-2.544 0-5.101-0.379-7.584-1.15-39.69-12.312-76.894-33.822-107.592-62.205-5.48-5.067-8.475-12.274-8.203-19.733 0.272-7.458 3.787-14.427 9.622-19.080 19.6-15.629 24.904-43.821 12.342-65.576-9.12-15.798-26.134-25.611-44.406-25.611-6.395 0-12.65 1.186-18.594 3.523-6.954 2.738-14.755 2.299-21.357-1.202-6.603-3.498-11.347-9.706-12.989-16.995-4.574-20.307-6.893-41.208-6.893-62.117s2.318-41.81 6.893-62.117c1.642-7.29 6.386-13.498 12.989-16.995 6.602-3.499 14.405-3.938 21.357-1.203 5.944 2.339 12.2 3.525 18.594 3.525 18.272 0 35.288-9.813 44.406-25.61 12.563-21.758 7.256-49.95-12.342-65.578-5.835-4.653-9.349-11.622-9.622-19.080-0.272-7.459 2.723-14.666 8.203-19.733 30.696-28.381 67.901-49.891 107.592-62.205 7.133-2.213 14.875-1.2 21.2 2.771s10.6 10.507 11.704 17.893c3.712 24.818 25.477 43.531 50.627 43.531s46.915-18.714 50.627-43.531c1.104-7.386 5.379-13.922 11.704-17.893 6.323-3.971 14.069-4.981 21.2-2.771 39.691 12.314 76.896 33.824 107.589 62.203 5.48 5.067 8.475 12.274 8.203 19.731s-3.786 14.427-9.621 19.080c-19.598 15.63-24.904 43.822-12.342 65.576 9.122 15.8 26.136 25.613 44.41 25.613 6.394-0.002 12.65-1.186 18.592-3.523 6.954-2.736 14.755-2.296 21.357 1.203 6.603 3.499 11.347 9.706 12.989 16.995 4.574 20.307 6.893 41.208 6.893 62.117s-2.318 41.808-6.893 62.114c-1.642 7.29-6.387 13.499-12.989 16.995-6.606 3.501-14.406 3.938-21.358 1.203-5.942-2.338-12.197-3.523-18.59-3.523-18.272 0-35.288 9.813-44.405 25.608-12.566 21.76-7.261 49.952 12.339 65.579 5.834 4.653 9.349 11.622 9.622 19.080 0.274 7.459-2.723 14.664-8.203 19.731-30.694 28.382-67.899 49.894-107.592 62.206-7.133 2.214-14.878 1.2-21.198-2.77-6.325-3.971-10.6-10.507-11.704-17.893-3.712-24.819-25.477-43.533-50.626-43.531-25.155 0-46.918 18.714-50.63 43.533-1.104 7.386-5.379 13.92-11.704 17.893-4.122 2.589-8.848 3.92-13.616 3.92zM400.75 927.733c13.91 10.272 28.97 18.989 44.749 25.901 5.994-12.315 14.453-23.419 24.963-32.552 18.611-16.174 42.453-25.082 67.133-25.082 24.686-0.002 48.53 8.904 67.142 25.080 10.51 9.134 18.97 20.237 24.965 32.555 15.781-6.914 30.838-15.632 44.75-25.902-7.662-11.354-13.040-24.234-15.688-37.901-4.685-24.19-0.472-49.275 11.861-70.634 18.232-31.584 52.237-51.208 88.746-51.208 2.408 0 4.803 0.085 7.189 0.25 0.958-8.566 1.44-17.202 1.44-25.838 0-8.638-0.483-17.275-1.44-25.843-2.384 0.166-4.781 0.251-7.187 0.251-36.507 0.002-70.515-19.622-88.752-51.213-12.33-21.352-16.542-46.434-11.858-70.626 2.646-13.67 8.024-26.55 15.686-37.902-13.909-10.272-28.968-18.987-44.749-25.901-5.994 12.317-14.453 23.421-24.965 32.555-18.613 16.17-42.454 25.077-67.136 25.077s-48.523-8.907-67.136-25.080c-10.51-9.134-18.97-20.237-24.965-32.555-15.779 6.914-30.837 15.63-44.749 25.901 7.662 11.354 13.042 24.234 15.688 37.902 4.685 24.189 0.472 49.272-11.858 70.63-18.235 31.586-52.242 51.21-88.747 51.21-2.408 0-4.805-0.085-7.19-0.251-0.96 8.57-1.443 17.205-1.443 25.843s0.483 17.274 1.442 25.842c2.386-0.166 4.784-0.251 7.192-0.251 36.506 0 70.512 19.624 88.747 51.211 12.331 21.355 16.542 46.438 11.858 70.63-2.646 13.667-8.026 26.547-15.688 37.901z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudHailstones.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudHailstones.js
new file mode 100644
index 00000000..cc5737bc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudHailstones.js
@@ -0,0 +1,17 @@
+// Icon: Linear.CloudHailstones
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.52 768h-512.32c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.046-19.469 16.642-28.403 28.872-39.112 75.094-62.462 123.654-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.125-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48zM307.2 204.8c-141.158 0-256 114.84-256 256s114.842 256 256 256h512.32c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.707-19.867 54.138-0.67 10.85-8.117 20.096-18.573 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.634-7.998-11.73-15.701-18.126-22.902-48.589-54.696-118.376-86.066-191.472-86.066z' />
+            <path d='M153.6 870.4c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2c0-28.277 22.923-51.2 51.2-51.2s51.2 22.923 51.2 51.2z' />
+            <path d='M563.2 870.4c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2c0-28.277 22.923-51.2 51.2-51.2s51.2 22.923 51.2 51.2z' />
+            <path d='M972.8 870.4c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2c0-28.277 22.923-51.2 51.2-51.2s51.2 22.923 51.2 51.2z' />
+            <path d='M358.4 972.8c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2c0-28.277 22.923-51.2 51.2-51.2s51.2 22.923 51.2 51.2z' />
+            <path d='M768 972.8c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2c0-28.277 22.923-51.2 51.2-51.2s51.2 22.923 51.2 51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLightning.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLightning.js
new file mode 100644
index 00000000..4e171785
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLightning.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudLightning
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.52 819.2h-179.52c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h179.52c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.707-19.867 54.138-0.67 10.85-8.117 20.093-18.573 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.634-7.998-11.73-15.702-18.126-22.902-48.589-54.696-118.376-86.066-191.472-86.066-141.158 0-256 114.84-256 256s114.842 256 256 256h128c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-128c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.046-19.469 16.642-28.403 28.872-39.112 75.094-62.462 123.654-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.125-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48z' />
+            <path d='M537.579 819.206c-3.846 0-7.754-0.872-11.429-2.709-12.645-6.322-17.771-21.699-11.448-34.346l58.275-116.552h-112.178c-8.872 0-17.112-4.594-21.776-12.141-4.666-7.549-5.088-16.971-1.122-24.907l76.8-153.6c6.322-12.643 21.699-17.771 34.346-11.448 12.645 6.322 17.771 21.699 11.448 34.346l-58.274 116.55h112.178c8.872 0 17.112 4.594 21.776 12.141 4.664 7.549 5.090 16.971 1.12 24.907l-76.8 153.6c-4.483 8.971-13.526 14.157-22.917 14.158z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLock.js
new file mode 100644
index 00000000..9369205e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 819.2h-25.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h25.6c84.696 0 153.6-68.904 153.6-153.6 0-84.698-68.904-153.6-153.6-153.6-17.566 0-34.782 2.936-51.178 8.726-11.096 3.917-23.446-0.235-29.915-10.080-6.469-9.84-5.389-22.826 2.616-31.461 17.587-18.982 27.277-43.694 27.277-69.586 0-56.464-45.936-102.4-102.4-102.4-53.992 0-98.885 42.162-102.202 95.984-0.669 10.858-8.126 20.106-18.594 23.062-10.47 2.952-21.664-1.027-27.91-9.93-47.96-68.325-126.349-109.117-209.694-109.117-141.158 0-256 114.842-256 256 0 133.392 100.038 243 232.698 254.957 14.082 1.269 24.467 13.714 23.2 27.795-1.269 14.080-13.722 24.467-27.795 23.198-76.064-6.856-146.515-41.718-198.376-98.168-52.187-56.806-80.926-130.597-80.926-207.782 0-169.39 137.81-307.2 307.2-307.2 82.48 0 160.915 33.288 218.149 90.933 24.093-53.749 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.712-3.024 35.056-8.816 51.386 2.931-0.123 5.87-0.186 8.816-0.186 112.926 0 204.8 91.874 204.8 204.8s-91.874 204.8-204.8 204.8z' />
+            <path d='M665.6 618.803v-30.003c0-70.578-57.421-128-128-128s-128 57.422-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.83-51.2-72.397zM537.6 512c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM665.6 844.8c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudRain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudRain.js
new file mode 100644
index 00000000..416b684b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudRain.js
@@ -0,0 +1,21 @@
+// Icon: Linear.CloudRain
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.52 768h-512.32c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.046-19.469 16.642-28.403 28.872-39.112 75.094-62.462 123.654-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.125-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48zM307.2 204.8c-141.158 0-256 114.84-256 256s114.842 256 256 256h512.32c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.707-19.867 54.138-0.67 10.85-8.117 20.096-18.573 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.634-7.998-11.73-15.701-18.126-22.902-48.589-54.696-118.376-86.066-191.472-86.066z' />
+            <path d='M128 921.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 921.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 921.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 921.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 921.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 1024c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 1024c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 1024c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSnow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSnow.js
new file mode 100644
index 00000000..9f1bb123
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSnow.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CloudSnow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 665.6h-512c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.483 0 160.917 33.286 218.149 90.933 24.093-53.744 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.024 35.056-8.818 51.386 2.931-0.125 5.87-0.186 8.818-0.186 112.926 0 204.8 91.872 204.8 204.8 0 112.926-91.874 204.8-204.8 204.8zM307.2 102.4c-141.158 0-256 114.842-256 256s114.842 256 256 256h512c84.696 0 153.6-68.904 153.6-153.6s-68.904-153.6-153.6-153.6c-17.576 0-34.797 2.936-51.181 8.726-11.101 3.926-23.451-0.234-29.922-10.074-6.469-9.842-5.389-22.827 2.616-31.464 17.595-18.987 27.286-43.701 27.286-69.589 0-56.464-45.936-102.4-102.4-102.4-53.997 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.474 2.958-21.664-1.027-27.912-9.93-47.957-68.326-126.347-109.12-209.696-109.12z' />
+            <path d='M344.248 924.302l-56.606-28.302 56.606-28.302c12.646-6.322 17.771-21.699 11.45-34.346-6.323-12.646-21.702-17.771-34.346-11.448l-65.352 32.674v-60.978c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v60.978l-65.352-32.675c-12.645-6.322-28.024-1.198-34.346 11.448-6.323 12.645-1.197 28.024 11.45 34.346l56.606 28.304-56.606 28.302c-12.646 6.322-17.771 21.699-11.45 34.346 4.486 8.971 13.526 14.158 22.917 14.158 3.846 0 7.755-0.872 11.429-2.709l65.352-32.675v60.978c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-60.978l65.352 32.675c3.675 1.837 7.581 2.709 11.429 2.709 9.39 0 18.432-5.187 22.917-14.158 6.323-12.645 1.197-28.022-11.45-34.346z' />
+            <path d='M958.648 924.302l-56.606-28.302 56.606-28.302c12.645-6.322 17.771-21.699 11.448-34.346-6.32-12.645-21.698-17.77-34.346-11.448l-65.35 32.674v-60.978c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v60.978l-65.352-32.675c-12.645-6.323-28.024-1.195-34.346 11.448-6.323 12.645-1.197 28.024 11.448 34.346l56.608 28.304-56.606 28.302c-12.645 6.322-17.771 21.699-11.448 34.346 4.485 8.971 13.525 14.158 22.917 14.158 3.846 0 7.754-0.872 11.429-2.709l65.35-32.675v60.978c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-60.978l65.352 32.675c3.675 1.837 7.581 2.709 11.429 2.709 9.39 0 18.434-5.187 22.917-14.158 6.323-12.645 1.197-28.022-11.45-34.346z' />
+            <path d='M651.448 924.302l-56.606-28.302 56.606-28.302c12.645-6.322 17.771-21.699 11.448-34.346-6.32-12.645-21.698-17.77-34.346-11.448l-65.35 32.674v-60.978c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v60.978l-65.352-32.675c-12.646-6.322-28.024-1.198-34.346 11.448-6.323 12.645-1.197 28.024 11.45 34.346l56.606 28.304-56.606 28.302c-12.646 6.322-17.771 21.699-11.45 34.346 4.486 8.971 13.526 14.158 22.917 14.158 3.846 0 7.755-0.872 11.429-2.709l65.352-32.675v60.978c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-60.978l65.352 32.675c3.675 1.837 7.581 2.709 11.429 2.709 9.39 0 18.434-5.187 22.917-14.158 6.323-12.645 1.197-28.022-11.45-34.346z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSun.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSun.js
new file mode 100644
index 00000000..f05b8e14
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSun.js
@@ -0,0 +1,17 @@
+// Icon: Linear.CloudSun
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 614.4c-2.947 0-5.886 0.062-8.818 0.186 5.792-16.33 8.818-33.677 8.818-51.386 0-66.986-43.106-124.083-103.032-145.037-8.747-119.118-108.454-213.363-229.768-213.363-119.8 0-218.522 91.914-229.39 208.923-145.598 24.030-257.010 150.776-257.010 303.077 0 169.39 137.81 307.2 307.2 307.2h512c112.926 0 204.8-91.874 204.8-204.8s-91.874-204.8-204.8-204.8zM486.4 256c90.131 0 164.922 66.891 177.368 153.634-61.318 0.725-114.565 37.683-138.421 90.899-56.806-57.219-134.502-90.421-216.315-90.909 12.451-86.739 87.24-153.624 177.368-153.624zM819.2 972.8h-512c-141.158 0-256-114.84-256-256s114.842-256 256-256c83.349 0 161.741 40.794 209.696 109.12 6.251 8.906 17.443 12.89 27.912 9.93 10.469-2.957 17.926-12.206 18.594-23.064 3.31-53.824 48.202-95.986 102.198-95.986 56.464 0 102.4 45.936 102.4 102.4 0 25.886-9.691 50.6-27.288 69.587-8.005 8.638-9.085 21.624-2.616 31.464 6.47 9.842 18.824 13.995 29.922 10.075 16.387-5.79 33.608-8.726 51.182-8.726 84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6z' />
+            <path d='M486.4 153.6c-14.138 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M691.2 204.8c-6.552 0-13.102-2.499-18.101-7.498-9.998-9.998-9.998-26.206 0-36.205l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-51.2 51.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M844.8 358.4h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M179.2 358.4h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 204.8c-6.552 0-13.102-2.499-18.102-7.498l-51.2-51.2c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l51.2 51.2c9.997 9.998 9.997 26.206 0 36.205-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSync.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSync.js
new file mode 100644
index 00000000..e8ae8b89
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudSync.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CloudSync
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M229.405 808.318c-2.338 0-4.714-0.322-7.072-0.998-62.826-18.026-119.4-56.691-159.302-108.875-41.235-53.926-63.030-118.398-63.030-186.445 0-169.39 137.81-307.2 307.2-307.2 82.485 0 160.917 33.286 218.149 90.933 24.093-53.746 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.026 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.872 204.8 204.8 0 39.485-11.267 77.824-32.582 110.874-20.739 32.157-49.934 57.816-84.43 74.203-12.766 6.067-28.038 0.634-34.107-12.139-6.067-12.77-0.634-28.040 12.139-34.107 53.325-25.333 87.781-79.827 87.781-138.83 0-84.696-68.904-153.6-153.6-153.6-17.574 0-34.795 2.936-51.181 8.726-11.101 3.923-23.451-0.232-29.922-10.075-6.469-9.84-5.389-22.826 2.616-31.464 17.595-18.987 27.286-43.701 27.286-69.587 0-56.464-45.936-102.4-102.4-102.4-53.995 0-98.888 42.162-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.064-10.474 2.957-21.664-1.026-27.912-9.93-47.955-68.326-126.347-109.12-209.696-109.12-141.158 0-256 114.842-256 256 0 113.61 76.178 214.813 185.251 246.104 13.59 3.901 21.446 18.078 17.547 31.667-3.221 11.232-13.464 18.547-24.594 18.547z' />
+            <path d='M811.701 775.499c-9.997-9.997-26.206-9.997-36.203 0l-7.498 7.498v-14.997c0-112.926-91.874-204.8-204.8-204.8-30.702 0-60.238 6.635-87.787 19.722-12.771 6.066-18.205 21.338-12.139 34.107s21.334 18.208 34.107 12.139c20.63-9.8 42.776-14.768 65.819-14.768 84.696 0 153.6 68.904 153.6 153.6v14.997l-7.499-7.499c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l51.2 51.2c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l51.2-51.2c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M663.13 918.968c-6.067-12.77-21.339-18.203-34.107-12.139-20.632 9.803-42.778 14.771-65.822 14.771-84.696 0-153.6-68.904-153.6-153.6v-14.997l7.499 7.499c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-51.2-51.2c-9.997-9.997-26.206-9.997-36.203 0l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l7.499-7.499v14.998c0 112.926 91.872 204.8 204.8 204.8 30.704 0 60.242-6.635 87.79-19.723 12.773-6.067 18.206-21.338 12.139-34.109z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudUpload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudUpload.js
new file mode 100644
index 00000000..5ec2ea28
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudUpload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CloudUpload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M658.099 596.301l-102.4-102.4c-9.995-9.997-26.206-9.997-36.203 0l-102.4 102.4c-9.997 9.995-9.997 26.206 0 36.203s26.206 9.997 36.205 0l58.699-58.699v219.795c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-219.795l58.701 58.699c4.997 4.997 11.547 7.496 18.099 7.496s13.102-2.499 18.099-7.501c10-9.995 10-26.203 0-36.198z' />
+            <path d='M819.52 819.2h-179.52c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h179.52c84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28c-18.128 0-35.794 3.101-52.507 9.222-11.166 4.088-23.677-0.050-30.202-9.989s-5.349-23.064 2.842-31.685c18.28-19.235 28.347-44.307 28.347-70.589 0-56.464-45.936-102.4-102.4-102.4-32.858 0-62.912 15.187-82.456 41.667-11.798 15.986-18.669 34.707-19.867 54.138-0.67 10.85-8.117 20.093-18.574 23.054-10.462 2.966-21.648-1.006-27.906-9.891-5.632-7.997-11.73-15.702-18.126-22.902-48.587-54.696-118.374-86.066-191.47-86.066-141.158 0-256 114.84-256 256s114.842 256 256 256h128c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-128c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2c82.034 0 160.589 32.917 218.104 90.866 4.483-9.947 10.048-19.469 16.643-28.403 28.87-39.112 75.093-62.462 123.653-62.462 84.696 0 153.6 68.904 153.6 153.6 0 17.957-3.118 35.523-9.096 52.051 3.126-0.142 6.267-0.211 9.416-0.211 112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudWindy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudWindy.js
new file mode 100644
index 00000000..14548e87
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CloudWindy.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CloudWindy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.768 663.787c-12.531 0-23.483-9.211-25.309-21.978-2.002-13.995 7.72-26.965 21.717-28.966 75.038-10.736 131.624-76.099 131.624-152.043 0-84.696-68.904-153.6-153.6-153.6-17.576 0-34.797 2.936-51.181 8.726-11.101 3.926-23.451-0.232-29.922-10.074-6.469-9.842-5.389-22.827 2.616-31.464 17.595-18.987 27.286-43.701 27.286-69.589 0-56.464-45.936-102.4-102.4-102.4-53.997 0-98.888 42.163-102.198 95.986-0.667 10.858-8.125 20.107-18.594 23.066-10.474 2.954-21.664-1.027-27.912-9.93-47.957-68.328-126.347-109.122-209.696-109.122-141.158 0-256 114.842-256 256 0 7.77 0.352 15.61 1.045 23.301 1.269 14.082-9.117 26.526-23.198 27.795-14.080 1.274-26.525-9.115-27.795-23.198-0.83-9.213-1.251-18.598-1.251-27.898 0-169.39 137.81-307.2 307.2-307.2 82.483 0 160.917 33.286 218.149 90.933 24.093-53.744 78.16-90.933 140.251-90.933 84.696 0 153.6 68.904 153.6 153.6 0 17.71-3.024 35.056-8.818 51.386 2.931-0.123 5.87-0.186 8.818-0.186 112.926 0 204.8 91.872 204.8 204.8 0 49.589-17.957 97.438-50.562 134.736-32.283 36.93-76.68 61.077-125.013 67.99-1.227 0.174-2.45 0.261-3.658 0.261z' />
+            <path d='M742.4 614.4h-332.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c48.435 0 90.627 34.374 100.32 81.736 2.835 13.853 16.368 22.786 30.213 19.947 13.851-2.834 22.782-16.362 19.947-30.213-14.547-71.080-77.834-122.67-150.48-122.67-84.696 0-153.6 68.904-153.6 153.6 0 39.306 14.846 75.205 39.219 102.4h-192.819c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2c21.669 0 41.075 13.714 48.293 34.126 4.712 13.33 19.334 20.312 32.669 15.603 13.33-4.712 20.315-19.339 15.603-32.669-14.434-40.829-53.24-68.261-96.565-68.261-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4h640c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M204.8 921.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4h435.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-435.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c21.667 0 41.074-13.714 48.291-34.125 4.714-13.331 19.339-20.312 32.67-15.602 13.33 4.714 20.315 19.341 15.602 32.67-14.437 40.826-53.242 68.256-96.563 68.256z' />
+            <path d='M793.6 870.4h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clubs.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clubs.js
new file mode 100644
index 00000000..03407db4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Clubs.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Clubs
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 1024h-409.6c-11.872 0-22.187-8.163-24.915-19.718s2.846-23.469 13.467-28.778c75.936-37.968 110.528-99.29 126.283-146.96-41.195 27.080-89.733 41.856-140.435 41.856-141.158 0-256-114.84-256-256 0-67.557 26.080-131.288 73.437-179.453 39.005-39.67 88.794-65.101 142.853-73.482-7.635-25.789-11.49-52.528-11.49-79.866 0-155.275 126.325-281.6 281.6-281.6s281.6 126.325 281.6 281.6c0 27.336-3.854 54.077-11.491 79.866 54.059 8.381 103.848 33.81 142.853 73.482 47.357 48.165 73.438 111.896 73.438 179.453 0 141.16-114.84 256-256 256-50.717 0-99.275-14.789-140.477-41.883 1.509 4.595 3.192 9.31 5.067 14.115 23.262 59.566 64.059 104.27 121.258 132.87 10.619 5.309 16.194 17.224 13.467 28.778-2.728 11.557-13.042 19.72-24.915 19.72zM363.566 972.8h245.666c-33.501-30.933-59.378-69.288-76.346-113.64-20.653-53.99-20.891-98.083-20.891-99.934 0-10.845 6.834-20.514 17.059-24.133 10.219-3.621 21.621-0.402 28.442 8.030 39.123 48.347 97.187 76.077 159.304 76.077 112.926 0 204.8-91.874 204.8-204.8 0-110.891-90.171-202.742-201.010-204.75-8.555-0.155-16.466-4.574-21.085-11.776-4.621-7.202-5.334-16.235-1.907-24.075 12.741-29.141 19.202-60.162 19.202-92.198 0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4c0 32.038 6.461 63.059 19.2 92.198 3.429 7.84 2.712 16.874-1.906 24.075s-12.531 11.621-21.085 11.776c-110.837 2.008-201.010 93.859-201.010 204.75 0 112.926 91.872 204.8 204.8 204.8 62.117 0 120.181-27.73 159.304-76.082 6.821-8.434 18.216-11.65 28.442-8.030 10.224 3.619 17.059 13.288 17.059 24.133 0 1.851-0.238 45.946-20.893 99.936-16.966 44.354-42.845 82.71-76.346 113.643z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Code.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Code.js
new file mode 100644
index 00000000..acd61808
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Code.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Code
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 768c-6.552 0-13.102-2.499-18.101-7.499l-204.8-204.8c-9.998-9.997-9.998-26.206 0-36.203l204.8-204.8c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-186.699 186.699 186.698 186.699c9.998 9.997 9.998 26.206 0 36.203-4.998 4.998-11.549 7.498-18.101 7.498z' />
+            <path d='M768 768c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l186.698-186.698-186.698-186.699c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l204.8 204.8c9.998 9.997 9.998 26.206 0 36.203l-204.8 204.8c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M383.976 768.003c-4.634 0-9.325-1.258-13.544-3.894-11.989-7.494-15.634-23.288-8.141-35.278l256-409.6c7.493-11.984 23.283-15.634 35.278-8.141 11.989 7.494 15.634 23.288 8.141 35.278l-256 409.6c-4.858 7.77-13.202 12.035-21.734 12.035z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeBean.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeBean.js
new file mode 100644
index 00000000..4859549a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeBean.js
@@ -0,0 +1,12 @@
+// Icon: Linear.CoffeeBean
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M772.669 138.496c-32.974-45.125-73.978-79.818-121.87-103.115-48.256-23.478-103.566-35.381-164.398-35.381-60.83 0-116.142 11.902-164.4 35.379-47.891 23.299-88.894 57.992-121.87 103.115-64.848 88.742-97.73 214.406-97.73 373.506s32.882 284.763 97.731 373.504c32.976 45.123 73.979 79.818 121.87 103.115 48.256 23.478 103.568 35.381 164.398 35.381 60.832 0 116.142-11.902 164.398-35.379 47.893-23.299 88.896-57.992 121.87-103.115 64.85-88.742 97.731-214.406 97.731-373.506s-32.882-284.763-97.731-373.504zM241.469 855.296c-57.485-78.662-87.869-197.373-87.869-343.296s30.384-264.634 87.869-343.296c52.248-71.499 125.894-110.65 219.142-116.662-33.843 47.49-51.003 124.621-51.011 229.557-0.008 107.336 26.955 174.738 53.029 239.918 25.389 63.469 49.371 123.419 49.371 220.883 0.002 203.299-66.656 224.987-76.528 227.070-81.424-10.976-146.542-49.23-194.003-114.174zM731.331 855.296c-52.246 71.498-125.893 110.648-219.136 116.661 33.845-47.49 51.005-124.621 51.005-229.557-0.002-107.325-26.962-174.722-53.034-239.899-25.39-63.474-49.373-123.426-49.366-220.899 0.014-203.264 66.635-224.984 76.523-227.072 81.426 10.974 146.547 49.229 194.008 114.174 57.485 78.662 87.869 197.373 87.869 343.296s-30.384 264.634-87.869 343.296z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeCup.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeCup.js
new file mode 100644
index 00000000..68c39864
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoffeeCup.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CoffeeCup
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 768c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 512c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+            <path d='M814.302 105.258l-9.050-36.195c-9.682-38.726-48.534-69.062-88.453-69.062h-409.6c-39.918 0-78.771 30.336-88.454 69.062l-9.048 36.195c-32.32 9.062-56.098 38.768-56.098 73.942v51.2c0 33.925 22.118 62.762 52.685 72.899l46.133 645.853c2.947 41.272 39.008 74.848 80.382 74.848h358.4c41.376 0 77.435-33.576 80.382-74.846l46.131-645.853c30.568-10.139 52.686-38.976 52.686-72.901v-51.2c0-35.174-23.778-64.88-56.098-73.942zM307.2 51.2h409.6c16.334 0 34.821 14.434 38.781 30.28l5.23 20.92h-497.622l5.23-20.92c3.96-15.846 22.446-30.28 38.781-30.28zM762.45 358.4h-500.898l-3.658-51.2h508.213l-3.658 51.2zM729.536 819.2h-435.070l-29.258-409.6h493.584l-29.256 409.6zM691.2 972.8h-358.4c-14.834 0-28.256-12.499-29.312-27.294l-5.365-75.106h427.755l-5.365 75.106c-1.058 14.795-14.48 27.294-29.314 27.294zM819.2 230.4c0 14.115-11.485 25.6-25.6 25.6h-563.2c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.093 11.446-25.558 25.531-25.597 0.030 0 0.059 0.003 0.090 0.003 0.050 0 0.099-0.006 0.149-0.006h563.030c14.115 0 25.6 11.485 25.6 25.6v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog.js
new file mode 100644
index 00000000..15d6231f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Cog
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M390.71 1008.755c-2.109 0-4.248-0.262-6.378-0.81-45.976-11.803-90.149-30.042-131.291-54.21-11.923-7.003-16.13-22.21-9.501-34.344 8.15-14.925 12.459-31.866 12.459-48.992 0-56.464-45.936-102.4-102.4-102.4-17.125 0-34.066 4.309-48.992 12.459-12.133 6.627-27.339 2.421-34.342-9.501-24.17-41.142-42.408-85.315-54.211-131.293-3.333-12.989 3.92-26.349 16.629-30.629 41.699-14.037 69.717-53.034 69.717-97.037s-28.018-83-69.718-97.040c-12.707-4.278-19.962-17.638-16.627-30.627 11.803-45.976 30.042-90.149 54.211-131.291 7.003-11.923 22.21-16.13 34.344-9.501 14.923 8.15 31.864 12.459 48.99 12.459 56.464 0 102.4-45.936 102.4-102.4 0-17.126-4.309-34.067-12.459-48.99-6.629-12.134-2.422-27.341 9.501-34.344 41.141-24.168 85.314-42.408 131.291-54.211 12.994-3.334 26.349 3.92 30.627 16.627 14.040 41.701 53.037 69.718 97.040 69.718s83-28.018 97.038-69.717c4.28-12.71 17.645-19.965 30.629-16.629 45.976 11.802 90.15 30.042 131.293 54.211 11.922 7.003 16.128 22.208 9.501 34.342-8.152 14.926-12.461 31.867-12.461 48.992 0 56.464 45.936 102.4 102.4 102.4 17.126 0 34.067-4.309 48.992-12.459 12.138-6.629 27.341-2.421 34.344 9.501 24.166 41.141 42.406 85.314 54.21 131.291 3.334 12.989-3.918 26.349-16.627 30.627-41.701 14.040-69.718 53.037-69.718 97.040s28.018 83 69.718 97.038c12.707 4.28 19.962 17.638 16.627 30.629-11.803 45.976-30.042 90.15-54.21 131.291-7.005 11.925-22.208 16.128-34.344 9.502-14.926-8.152-31.867-12.461-48.992-12.461-56.464 0-102.4 45.936-102.4 102.4 0 17.125 4.309 34.066 12.461 48.992 6.627 12.136 2.421 27.341-9.502 34.344-41.141 24.166-85.314 42.406-131.291 54.21-12.992 3.336-26.349-3.918-30.629-16.627-14.038-41.701-53.035-69.718-97.038-69.718s-83 28.018-97.040 69.718c-3.578 10.624-13.502 17.437-24.25 17.437zM512 870.4c57.715 0 109.693 32.138 135.917 82.029 26.637-8.218 52.507-18.875 77.299-31.846-5.541-16.077-8.416-33.075-8.416-50.182 0-84.696 68.904-153.6 153.6-153.6 17.107 0 34.106 2.875 50.181 8.418 12.971-24.792 23.63-50.662 31.846-77.299-49.89-26.226-82.027-78.203-82.027-135.918s32.138-109.691 82.029-135.918c-8.218-26.637-18.875-52.506-31.846-77.299-16.077 5.542-33.074 8.418-50.182 8.418-84.696 0-153.6-68.904-153.6-153.6 0-17.107 2.875-34.106 8.418-50.181-24.792-12.971-50.662-23.63-77.299-31.846-26.226 49.89-78.203 82.027-135.918 82.027s-109.691-32.138-135.917-82.027c-26.637 8.216-52.507 18.874-77.299 31.846 5.542 16.075 8.416 33.072 8.416 50.181 0 84.696-68.904 153.6-153.6 153.6-17.109 0-34.106-2.874-50.181-8.418-12.973 24.794-23.63 50.662-31.846 77.299 49.89 26.227 82.027 78.203 82.027 135.918s-32.138 109.693-82.027 135.917c8.216 26.637 18.875 52.507 31.846 77.299 16.075-5.541 33.074-8.416 50.181-8.416 84.696 0 153.6 68.904 153.6 153.6 0 17.109-2.875 34.106-8.418 50.181 24.794 12.971 50.662 23.63 77.299 31.846 26.227-49.89 78.203-82.027 135.918-82.027z' />
+            <path d='M512 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 409.6c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog2.js
new file mode 100644
index 00000000..cfd55d7d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cog2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Cog2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M682.187 993.366c-3.794 0-7.579-0.843-11.069-2.517-6.277-3.010-11.056-8.445-13.238-15.054-20.821-63.040-79.445-105.395-145.88-105.395s-125.059 42.355-145.878 105.394c-2.182 6.61-6.963 12.045-13.238 15.054-6.275 3.011-13.507 3.334-20.029 0.899-53.342-19.928-102.701-48.461-146.707-84.81-5.363-4.43-8.691-10.85-9.222-17.784-0.531-6.936 1.784-13.787 6.41-18.981 44.136-49.546 51.482-121.469 18.282-178.973-27.357-47.384-78.389-76.821-133.179-76.821-10.4 0-20.822 1.067-30.978 3.17-6.822 1.419-13.92-0.011-19.664-3.95-5.744-3.936-9.637-10.042-10.782-16.91-4.653-27.944-7.013-56.438-7.013-84.688s2.36-56.742 7.014-84.688c1.144-6.869 5.037-12.976 10.781-16.912 5.746-3.936 12.846-5.362 19.664-3.95 10.157 2.104 20.579 3.171 30.978 3.17 54.792-0.002 105.824-29.437 133.181-76.819 33.2-57.504 25.853-129.427-18.282-178.973-4.627-5.194-6.941-12.046-6.41-18.981s3.861-13.355 9.224-17.784c44.005-36.347 93.365-64.882 146.704-84.808 6.522-2.435 13.752-2.112 20.029 0.899 6.275 3.010 11.056 8.445 13.238 15.054 20.819 63.037 79.443 105.392 145.878 105.392s125.059-42.355 145.88-105.394c2.182-6.61 6.963-12.045 13.238-15.054 6.274-3.013 13.506-3.334 20.029-0.899 53.341 19.928 102.699 48.462 146.704 84.81 5.363 4.429 8.693 10.85 9.222 17.784 0.531 6.934-1.782 13.787-6.41 18.981-44.134 49.544-51.482 121.469-18.282 178.973 27.358 47.387 78.389 76.822 133.179 76.819 10.403 0 20.826-1.067 30.979-3.17 6.816-1.411 13.918 0.014 19.664 3.95 5.744 3.936 9.637 10.043 10.781 16.914 4.654 27.95 7.014 56.443 7.014 84.686s-2.36 56.738-7.013 84.688c-1.144 6.869-5.037 12.976-10.781 16.912-5.746 3.936-12.842 5.368-19.664 3.95-10.157-2.102-20.578-3.17-30.978-3.17-54.79 0-105.824 29.435-133.181 76.821-33.2 57.504-25.853 129.429 18.282 178.971 4.627 5.194 6.941 12.045 6.41 18.981-0.53 6.934-3.859 13.355-9.222 17.784-44.003 36.347-93.363 64.882-146.704 84.81-2.898 1.082-5.931 1.619-8.962 1.619zM238.301 882.749c27.83 20.587 57.77 37.901 89.442 51.718 33.874-69.912 104.886-115.267 184.258-115.267s150.382 45.355 184.258 115.267c31.674-13.819 61.613-31.131 89.442-51.718-43.574-64.286-47.328-148.437-7.658-217.149 36.475-63.174 104.498-102.421 177.522-102.421 4.781 0 9.566 0.168 14.339 0.506 1.926-17.186 2.898-34.486 2.898-51.685s-0.971-34.499-2.898-51.686c-4.773 0.336-9.558 0.506-14.339 0.506-73.024 0.003-141.046-39.242-177.522-102.419-39.67-68.71-35.917-152.864 7.656-217.149-27.83-20.587-57.768-37.901-89.44-51.718-33.875 69.912-104.886 115.267-184.258 115.267s-150.384-45.355-184.258-115.267c-31.672 13.819-61.611 31.131-89.442 51.718 43.574 64.286 47.326 148.438 7.658 217.149-36.474 63.173-104.496 102.418-177.52 102.419-4.781 0-9.566-0.168-14.341-0.504-1.926 17.182-2.898 34.485-2.898 51.685s0.971 34.502 2.898 51.686c4.773-0.336 9.558-0.506 14.339-0.506 73.024 0 141.046 39.245 177.52 102.421 39.67 68.709 35.917 152.861-7.656 217.147z' />
+            <path d='M512 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 409.6c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinDollar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinDollar.js
new file mode 100644
index 00000000..b63e5e65
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinDollar.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CoinDollar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 409.6h-281.6v-51.2h281.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-128c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h281.6v51.2h-281.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h128v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h128c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M824.667 231.802c-90.773-50.429-210.904-78.202-338.267-78.202-127.362 0-247.494 27.773-338.267 78.202-95.525 53.069-148.133 125.304-148.133 203.398v153.6c0 78.094 52.608 150.328 148.133 203.397 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c95.525-53.069 148.133-125.302 148.133-203.397v-153.6c0-78.094-52.608-150.33-148.133-203.398zM172.998 276.558c83.293-46.274 194.595-71.758 313.402-71.758s230.107 25.485 313.402 71.758c78.544 43.635 121.798 99.974 121.798 158.642s-43.254 115.006-121.798 158.64c-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.973-121.798-158.64s43.256-115.006 121.798-158.642zM921.6 588.8c0 58.666-43.254 115.006-121.798 158.64-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.974-121.798-158.64v-26.277c24.266 28.080 56.794 53.773 96.933 76.074 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c40.139-22.301 72.667-47.994 96.933-76.074v26.277z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinEuro.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinEuro.js
new file mode 100644
index 00000000..712ccda6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinEuro.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CoinEuro
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M824.667 231.802c-90.773-50.429-210.904-78.202-338.267-78.202-127.362 0-247.494 27.773-338.267 78.202-95.525 53.069-148.133 125.304-148.133 203.398v153.6c0 78.094 52.608 150.328 148.133 203.397 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c95.525-53.069 148.133-125.302 148.133-203.397v-153.6c0-78.094-52.608-150.33-148.133-203.398zM172.998 276.558c83.293-46.274 194.595-71.758 313.402-71.758s230.107 25.485 313.402 71.758c78.544 43.635 121.798 99.974 121.798 158.642s-43.254 115.006-121.798 158.64c-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.973-121.798-158.64s43.256-115.006 121.798-158.642zM921.6 588.8c0 58.666-43.254 115.006-121.798 158.64-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.974-121.798-158.64v-26.277c24.266 28.080 56.794 53.773 96.933 76.074 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c40.139-22.301 72.667-47.994 96.933-76.074v26.277z' />
+            <path d='M652.872 515.472c-12.218-7.106-27.891-2.966-35 9.256-13.805 23.73-39.27 38.472-66.459 38.472h-116.213c-33.373 0-61.829-21.403-72.397-51.2h123.597c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-128v-51.2h128c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-123.597c10.568-29.797 39.024-51.2 72.397-51.2l116.213 0.002c27.189 0 52.654 14.741 66.459 38.472 7.112 12.222 22.782 16.363 35.002 9.254 12.221-7.11 16.365-22.781 9.254-35.002-22.939-39.43-65.363-63.925-110.715-63.925l-116.213-0.002c-61.814 0-113.531 44.045-125.424 102.4h-28.176c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h28.176c11.893 58.355 63.61 102.4 125.424 102.4h116.213c45.354 0 87.776-24.496 110.715-63.928 7.109-12.221 2.966-27.891-9.256-35z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinPound.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinPound.js
new file mode 100644
index 00000000..9183b9f7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinPound.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CoinPound
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M824.667 231.802c-90.773-50.429-210.904-78.202-338.267-78.202-127.362 0-247.494 27.773-338.267 78.202-95.525 53.069-148.133 125.304-148.133 203.398v153.6c0 78.094 52.608 150.328 148.133 203.397 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c95.525-53.069 148.133-125.302 148.133-203.397v-153.6c0-78.094-52.608-150.33-148.133-203.398zM172.998 276.558c83.293-46.274 194.595-71.758 313.402-71.758s230.107 25.485 313.402 71.758c78.544 43.635 121.798 99.974 121.798 158.642s-43.254 115.006-121.798 158.64c-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.973-121.798-158.64s43.256-115.006 121.798-158.642zM921.6 588.8c0 58.666-43.254 115.006-121.798 158.64-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.974-121.798-158.64v-26.277c24.266 28.080 56.794 53.773 96.933 76.074 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c40.139-22.301 72.667-47.994 96.933-76.074v26.277z' />
+            <path d='M640 512h-281.6v-102.4h128c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-123.597c10.568-29.797 39.024-51.2 72.397-51.2l116.213 0.002c27.189 0 52.654 14.741 66.459 38.472 7.112 12.222 22.782 16.363 35.002 9.254 12.221-7.11 16.365-22.781 9.254-35.002-22.939-39.43-65.363-63.925-110.715-63.925l-116.213-0.002c-61.814 0-113.531 44.045-125.424 102.4h-28.176c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v128c0 14.139 11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinYen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinYen.js
new file mode 100644
index 00000000..a281560e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoinYen.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CoinYen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M824.667 231.802c-90.773-50.429-210.904-78.202-338.267-78.202-127.362 0-247.494 27.773-338.267 78.202-95.525 53.069-148.133 125.304-148.133 203.398v153.6c0 78.094 52.608 150.328 148.133 203.397 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c95.525-53.069 148.133-125.302 148.133-203.397v-153.6c0-78.094-52.608-150.33-148.133-203.398zM172.998 276.558c83.293-46.274 194.595-71.758 313.402-71.758s230.107 25.485 313.402 71.758c78.544 43.635 121.798 99.974 121.798 158.642s-43.254 115.006-121.798 158.64c-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.973-121.798-158.64s43.256-115.006 121.798-158.642zM921.6 588.8c0 58.666-43.254 115.006-121.798 158.64-83.294 46.275-194.595 71.76-313.402 71.76s-230.107-25.485-313.402-71.76c-78.542-43.634-121.798-99.974-121.798-158.64v-26.277c24.266 28.080 56.794 53.773 96.933 76.074 90.773 50.43 210.906 78.203 338.267 78.203s247.494-27.773 338.267-78.203c40.139-22.301 72.667-47.994 96.933-76.074v26.277z' />
+            <path d='M640 460.8h-128v-51.2h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-80.621l71.013-56.81c11.040-8.832 12.83-24.941 3.998-35.982-8.834-11.040-24.942-12.827-35.982-3.998l-112.008 89.606-112.008-89.606c-11.040-8.834-27.152-7.043-35.982 3.998-8.834 11.040-7.043 27.15 3.998 35.982l71.013 56.81h-80.621c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h128v51.2h-128c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h128v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ColorSampler.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ColorSampler.js
new file mode 100644
index 00000000..9616052c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ColorSampler.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ColorSampler
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 460.8c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M358.4 951.53c-20.554 0-39.84-7.966-54.304-22.43l-260.395-260.395c-14.466-14.464-22.432-33.75-22.432-54.304s7.966-39.84 22.434-54.306l490.794-490.792c14.464-14.466 33.75-22.432 54.304-22.432s39.84 7.966 54.304 22.432l260.394 260.392c29.944 29.944 29.944 78.667 0.002 108.611l-490.794 490.794c-14.466 14.466-33.752 22.43-54.306 22.43zM588.8 98.070c-6.878 0-13.306 2.64-18.101 7.435l-490.794 490.794c-4.795 4.795-7.435 11.224-7.435 18.101s2.64 13.306 7.435 18.099l260.394 260.397c4.795 4.794 11.224 7.434 18.101 7.434s13.307-2.64 18.102-7.435l490.794-490.792c9.979-9.982 9.979-26.224 0-36.205l-260.395-260.392c-4.795-4.795-11.222-7.435-18.101-7.435z' />
+            <path d='M574.595 1023.014c-15.034 0-29.726-4.552-42.49-13.325l-60.21-41.394c-11.651-8.010-14.602-23.949-6.592-35.598 8.010-11.651 23.947-14.605 35.598-6.592l60.21 41.394c5.456 3.75 11.971 5.102 18.325 3.822 6.363-1.288 11.832-5.067 15.4-10.645l279.6-436.875c7.622-11.909 23.458-15.379 35.363-7.763 11.907 7.622 15.382 23.453 7.763 35.363l-279.6 436.875c-11.114 17.366-28.293 29.166-48.371 33.229-4.998 1.008-10.018 1.509-14.997 1.509z' />
+            <path d='M790.802 987.226c-6.112 0-12.202-0.973-18.098-2.939l-38.4-12.8c-13.413-4.47-20.662-18.966-16.19-32.381 4.47-13.411 18.966-20.664 32.381-16.19l38.4 12.8c0.699 0.234 2.826 0.939 6.466-1.011 4.357-2.331 9.957-8.293 12.613-18.034l63.328-232.205c3.72-13.64 17.794-21.675 31.434-17.963 13.64 3.72 21.683 17.794 17.963 31.434l-63.328 232.205c-5.976 21.912-19.773 40.030-37.85 49.704-9.152 4.898-18.962 7.381-28.718 7.381z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Combine.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Combine.js
new file mode 100644
index 00000000..e9bc8b8c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Combine.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Combine
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 358.4h-230.4v-230.4c0-42.347-34.453-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h230.4v230.4c0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8zM921.6 947.2c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-281.6h-281.6c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v281.6h281.6c14.115 0 25.6 11.485 25.6 25.6v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Communication.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Communication.js
new file mode 100644
index 00000000..ede5d3d7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Communication.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Communication
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M221.616 656.816c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.205 0-36.203 33.845-33.848 52.485-78.85 52.485-126.714 0-47.867-18.64-92.87-52.49-126.717-9.998-9.997-9.998-26.206 0-36.203s26.206-10 36.203 0c43.52 43.515 67.486 101.376 67.486 162.92 0 61.541-23.966 119.398-67.482 162.917-4.998 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M330.227 765.427c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203 62.858-62.858 97.475-146.43 97.475-235.325 0-88.898-34.619-172.474-97.48-235.331-9.998-9.998-9.998-26.206 0-36.203s26.206-9.998 36.203 0c72.531 72.528 112.477 168.962 112.477 271.534 0 102.568-39.942 199-112.47 271.528-5 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M802.384 656.816c-6.554 0-13.102-2.499-18.101-7.499-43.517-43.518-67.483-101.376-67.483-162.917 0-61.544 23.966-119.405 67.486-162.92 9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.995 26.206-0.002 36.203-33.85 33.846-52.49 78.85-52.49 126.717 0 47.864 18.64 92.866 52.486 126.714 9.998 9.998 9.997 26.206 0 36.203-4.998 4.998-11.55 7.499-18.102 7.499z' />
+            <path d='M693.771 765.427c-6.554 0-13.102-2.499-18.101-7.499-72.528-72.528-112.47-168.96-112.47-271.528 0-102.573 39.946-199.006 112.477-271.536 10-9.997 26.21-9.995 36.203 0 9.998 9.998 9.998 26.206 0 36.203-62.861 62.859-97.48 146.435-97.48 235.333 0 88.894 34.618 172.466 97.474 235.325 9.998 9.997 9.997 26.206 0 36.203-4.998 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M76.8 563.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M947.2 563.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM947.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CommunicationCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CommunicationCrossed.js
new file mode 100644
index 00000000..5aadcdd0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CommunicationCrossed.js
@@ -0,0 +1,14 @@
+// Icon: Linear.CommunicationCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M76.8 563.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M947.2 563.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM947.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M969.266 217.421c-7.168-12.187-22.859-16.253-35.045-9.086l-305.018 179.422c15.768-51.053 43.819-97.832 82.677-136.688 9.998-9.998 9.998-26.206 0-36.203-9.994-9.995-26.203-9.998-36.203 0-57.499 57.498-94.493 130.022-107.366 208.712l-107.514 63.243c0-0.141 0.005-0.28 0.005-0.421 0-102.573-39.946-199.006-112.477-271.536-9.997-9.997-26.206-9.998-36.203 0s-9.997 26.206 0 36.203c62.859 62.859 97.478 146.435 97.478 235.333 0 10.55-0.504 21.024-1.469 31.398l-126.581 74.459c16.757-32.323 25.65-68.405 25.65-105.858 0-61.544-23.966-119.405-67.486-162.92-9.997-10-26.206-9.997-36.203 0s-9.997 26.206 0 36.203c33.85 33.846 52.49 78.85 52.49 126.717 0 47.864-18.64 92.866-52.486 126.714-7.632 7.634-9.418 18.878-5.397 28.222l-134.296 78.998c-12.187 7.168-16.254 22.859-9.086 35.045 4.771 8.11 13.315 12.626 22.090 12.626 4.41 0 8.88-1.142 12.955-3.539l305.016-179.422c-15.766 51.050-43.816 97.827-82.67 136.682-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c57.494-57.496 94.486-130.018 107.363-208.704l107.514-63.243c0 0.141-0.005 0.28-0.005 0.421 0 102.568 39.942 199 112.47 271.528 4.998 5 11.549 7.499 18.101 7.499 6.55 0 13.102-2.499 18.101-7.499 9.997-9.997 9.998-26.206 0-36.203-62.856-62.861-97.474-146.432-97.474-235.326 0-10.55 0.502-21.024 1.469-31.398l126.579-74.459c-16.755 32.322-25.648 68.405-25.648 105.858 0 61.541 23.966 119.398 67.483 162.917 4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.997-9.997 9.998-26.205 0-36.203-33.845-33.848-52.485-78.85-52.485-126.714 0-47.867 18.64-92.87 52.49-126.717 7.632-7.632 9.419-18.877 5.398-28.222l134.293-78.995c12.186-7.168 16.253-22.859 9.085-35.045z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compare.js
new file mode 100644
index 00000000..e433de2c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Compare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.4h-742.4c-6.79 0-13.301 2.698-18.101 7.499l-179.2 179.2c-4.802 4.8-7.499 11.31-7.499 18.101v537.6c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM204.8 164.203v117.397c0 14.115-11.485 25.6-25.6 25.6h-117.397l142.997-142.997zM972.8 844.8c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v102.4c0 8.974 1.562 17.587 4.403 25.6h-286.003c-14.115 0-25.6-11.485-25.6-25.6v-486.4h128c42.347 0 76.8-34.453 76.8-76.8v-128h245.397l-135.499 135.499c-4.802 4.8-7.499 11.312-7.499 18.101v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-179.2h128c42.347 0 76.8-34.453 76.8-76.8v-128h332.8c14.115 0 25.6 11.485 25.6 25.6v665.6zM563.2 164.203v117.397c0 14.115-11.485 25.6-25.6 25.6h-117.397l142.997-142.997z' />
+            <path d='M786.101 621.899l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l58.698 58.698h-490.792l58.699-58.699c9.997-9.997 9.997-26.206 0-36.203s-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-58.699-58.698h490.792l-58.698 58.699c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass.js
new file mode 100644
index 00000000..65432fda
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Compass
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 563.2c-14.139 0-25.6 11.461-25.6 25.6v25.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6z' />
+            <path d='M766.509 938.589l-213.818-598.688c37.702-22.883 61.709-64.246 61.709-109.501 0-61.814-44.045-113.531-102.4-125.424v-53.776h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v53.776c-58.355 11.893-102.4 63.61-102.4 125.424 0 45.253 24.006 86.618 61.709 109.499l-213.818 598.69c-0.987 2.765-1.491 5.677-1.491 8.611v51.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-46.766l230.4-645.12 230.4 645.12v46.766c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-51.2c0-2.934-0.504-5.846-1.491-8.611zM486.4 204.8c-10.819 0-20.469 6.8-24.109 16.99l-24.352 68.184c-17.555-14.331-28.339-36.077-28.339-59.574 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 23.498-10.784 45.243-28.341 59.573l-24.35-68.184c-3.64-10.189-13.29-16.989-24.109-16.989z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass2.js
new file mode 100644
index 00000000..6cd169b3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Compass2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Compass2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-136.76 0-265.334-53.258-362.038-149.962s-149.962-225.278-149.962-362.038c0-136.76 53.258-265.334 149.962-362.038s225.278-149.962 362.038-149.962c136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962zM512 51.2c-254.086 0-460.8 206.714-460.8 460.8s206.714 460.8 460.8 460.8 460.8-206.714 460.8-460.8-206.714-460.8-460.8-460.8z' />
+            <path d='M252.982 881.917l153.328-443.923 364.709-295.909-153.328 443.922-364.709 295.91zM449.928 468.536l-90.048 260.715 214.192-173.789 90.050-260.712-214.194 173.786z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Concave.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Concave.js
new file mode 100644
index 00000000..b9e43bd7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Concave.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Concave
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 921.6c-7.038 0.002-13.877-2.906-18.784-8.206-6.349-6.854-8.458-16.626-5.502-25.49 0.494-1.488 49.886-152.478 49.886-350.304s-49.392-348.816-49.891-350.317c-2.944-8.862-0.83-18.632 5.518-25.48 6.349-6.846 15.923-9.701 24.981-7.438 2.018 0.502 205.008 50.435 454.592 50.435 249.958 0 452.573-49.931 454.59-50.435 9.069-2.267 18.643 0.586 24.992 7.442s8.458 16.626 5.502 25.49c-0.493 1.488-49.885 152.478-49.885 350.304s49.392 348.816 49.891 350.317c2.944 8.862 0.83 18.632-5.518 25.48-6.347 6.848-15.917 9.707-24.981 7.438-2.363-0.589-205.222-50.435-454.592-50.435-249.957 0-452.573 49.931-454.592 50.435-2.056 0.515-4.141 0.765-6.208 0.765zM486.4 819.2c190.309 0 350.885 27.501 424.373 42.517-15.534-60.166-40.373-179.054-40.373-324.117s24.838-263.95 40.373-324.117c-73.488 15.016-234.064 42.517-424.373 42.517s-350.885-27.501-424.374-42.517c15.536 60.166 40.374 179.054 40.374 324.117s-24.838 263.95-40.374 324.117c73.49-15.016 234.066-42.517 424.374-42.517z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Confused.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Confused.js
new file mode 100644
index 00000000..0136ff2f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Confused.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Confused
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.6 768.070c-14.139 0-25.6-11.531-25.6-25.67 0-3.238 0.435-32.514 15.502-62.648 21.072-42.142 61.024-65.352 112.498-65.352 61.803 0 94.35 32.547 120.501 58.699 24.418 24.414 43.702 43.701 84.299 43.701 31.861 0 53.462-11.694 66.038-35.749 10.402-19.898 10.76-40.982 10.762-41.194 0-14.138 11.462-25.528 25.6-25.528 14.139 0 25.6 11.531 25.6 25.67 0 3.238-0.434 32.514-15.502 62.648-21.070 42.142-61.024 65.352-112.498 65.352-61.803 0-94.35-32.547-120.501-58.699-24.418-24.414-43.702-43.701-84.299-43.701-31.861 0-53.462 11.694-66.038 35.749-10.402 19.898-10.76 40.982-10.763 41.194 0.002 14.138-11.461 25.528-25.598 25.528z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Construction.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Construction.js
new file mode 100644
index 00000000..2f410e04
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Construction.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Construction
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 255.992v-76.792c0-14.138-11.461-25.6-25.6-25.6h-179.192c-0.005 0-0.011 0-0.016 0h-255.984c-0.005 0-0.011 0-0.016 0h-255.984c-0.005 0-0.011 0-0.016 0h-281.592c-14.138 0-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h76.8v307.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-153.6h512v153.6h-25.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-25.6v-307.2h76.8c14.139 0 25.6-11.461 25.6-25.6v-230.392c0-0.005 0-0.011 0-0.016zM972.8 245.397l-215.403 215.403h-183.594l256-256h142.997v40.597zM317.803 460.8l256-256h183.594l-256 256h-183.594zM61.803 460.8l256-256h183.594l-256 256h-183.594zM245.397 204.8l-194.197 194.197v-194.197h194.197zM153.6 819.2v-307.2h51.2v307.2h-51.2zM256 614.4v-102.4h512v102.4h-512zM870.4 819.2h-51.2v-307.2h51.2v307.2zM829.803 460.8l142.997-142.997v142.997h-142.997z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ConstructionCone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ConstructionCone.js
new file mode 100644
index 00000000..f8451b44
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ConstructionCone.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ConstructionCone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 870.4h-33.459l-282.992-754.65c-13.574-36.197-54.49-64.55-93.149-64.55h-51.2c-38.658 0-79.573 28.354-93.147 64.55l-282.994 754.65h-33.459c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8s-34.451-76.8-76.8-76.8zM705.459 460.8h-386.918l57.6-153.6h271.718l57.6 153.6zM724.659 512l57.6 153.6h-540.518l57.6-153.6h425.318zM441.194 133.73c6.147-16.397 27.696-31.33 45.206-31.33h51.2c17.51 0 39.059 14.933 45.208 31.33l45.851 122.27h-233.318l45.853-122.27zM222.541 716.8h578.918l57.6 153.6h-694.118l57.6-153.6zM947.2 972.8h-870.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contacts.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contacts.js
new file mode 100644
index 00000000..de8bde9b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contacts.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Contacts
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 51.2h-665.6c-42.347 0-76.8 34.453-76.8 76.8v76.8h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v76.8c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-819.2c0-42.347-34.451-76.8-76.8-76.8zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-76.8c0-14.115 11.485-25.6 25.6-25.6h665.6c14.115 0 25.6 11.485 25.6 25.6v819.2z' />
+            <path d='M569.042 774.605c-0.011 0-0.016 0-0.026 0-50.802 0-171.299-0.768-192.99-7.878-22.139-7.256-33.275-31.845-28.366-62.64 5.275-33.11 27.277-67.779 58.851-92.739 27.746-21.934 77.45-48.093 156.672-48.147h0.254c62.155 0 115.931 16.307 155.515 47.162 31.896 24.861 53.538 58.32 59.378 91.802 5.435 31.16-5.264 56.41-27.262 64.325-6.128 2.205-16.995 4.707-68.706 6.488-30.533 1.051-70.781 1.629-113.32 1.629zM397.669 718.838c21.659 2.378 85.866 4.566 171.349 4.566 0.006 0 0.029 0 0.034 0 91.299 0 141.853-2.381 159.522-4.418 0.166-7.243-2.52-22.243-14.352-39.874-16.221-24.168-57.381-64.714-150.784-64.714h-0.221c-93.101 0.066-134.467 40.523-150.837 64.634-11.88 17.498-14.757 32.454-14.71 39.805z' />
+            <path d='M563.2 512c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM563.2 358.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract.js
new file mode 100644
index 00000000..ac8320af
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Contract
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 153.6c-14.138 0-25.6 11.462-25.6 25.6v142.995l-314.698-314.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l314.698 314.698h-142.995c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.462-25.6-25.6-25.6z' />
+            <path d='M1016.499 7.498c-9.997-9.997-26.206-9.997-36.203 0l-314.696 314.699v-142.997c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v204.8c0 14.138 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-142.997l314.696-314.698c10-9.998 10-26.206 0-36.205z' />
+            <path d='M384 614.4h-204.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h142.997l-314.699 314.701c-9.997 9.995-9.997 26.206 0 36.203 5 4.997 11.55 7.496 18.102 7.496s13.102-2.499 18.102-7.501l314.698-314.696v142.997c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6z' />
+            <path d='M1016.499 980.301l-314.696-314.701h142.997c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-204.8c-14.139 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-142.997l314.701 314.701c4.997 4.997 11.547 7.496 18.099 7.496s13.102-2.499 18.099-7.501c10-9.995 10-26.203 0-36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract2.js
new file mode 100644
index 00000000..a38edaac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Contract2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.499 7.498c-9.997-9.997-26.206-9.997-36.203 0l-314.696 314.699v-142.997c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v204.8c0 14.138 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-142.997l314.696-314.698c10-9.998 10-26.206 0-36.205z' />
+            <path d='M384 614.4h-204.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h142.997l-314.699 314.701c-9.997 9.995-9.997 26.206 0 36.203 5 4.997 11.55 7.496 18.102 7.496s13.102-2.499 18.102-7.501l314.698-314.696v142.997c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract3.js
new file mode 100644
index 00000000..7ab8e152
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contract3.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Contract3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 921.6h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v614.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 204.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M281.6 614.4h-153.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l109.899-109.898v91.797c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.139-11.462-25.6-25.6-25.6z' />
+            <path d='M844.8 409.6h-91.797l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-109.899 109.899v-91.797c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6h153.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contrast.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contrast.js
new file mode 100644
index 00000000..630217b7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Contrast.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Contrast
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-14.138 0-25.6-11.461-25.6-25.6v-614.4c0-14.138 11.462-25.6 25.6-25.6 183.506 0 332.8 149.294 332.8 332.8s-149.294 332.8-332.8 332.8zM512 257.154v560.894c143.33-12.97 256-133.797 256-280.446 0-146.653-112.67-267.478-256-280.448z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Convex.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Convex.js
new file mode 100644
index 00000000..f76ed250
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Convex.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Convex
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 921.6c-179.941 0-405.634-49.694-415.154-51.81-9.166-2.037-16.482-8.93-19.062-17.958-2.13-7.458-52.184-184.142-52.184-314.232s50.054-306.774 52.186-314.234c2.579-9.029 9.896-15.92 19.062-17.958 9.518-2.114 235.211-51.808 415.152-51.808s405.634 49.694 415.154 51.81c9.166 2.037 16.483 8.93 19.062 17.958 2.13 7.458 52.184 184.142 52.184 314.232s-50.054 306.774-52.184 314.234c-2.579 9.029-9.896 15.92-19.062 17.958-9.52 2.114-235.213 51.808-415.154 51.808zM97.4 822.997c53.734 11.109 240.675 47.403 389 47.403 148.435 0 335.291-36.293 389-47.402 11.91-44.986 46.2-183.365 46.2-285.398s-34.29-240.411-46.2-285.398c-53.734-11.107-240.675-47.402-389-47.402-148.435 0-335.291 36.293-389 47.4-11.91 44.987-46.2 183.366-46.2 285.4s34.29 240.411 46.2 285.397z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cool.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cool.js
new file mode 100644
index 00000000..3fa01d21
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cool.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Cool
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M788.472 266.213c-4.834-6.437-12.418-10.224-20.467-10.224l-204.808 0.003c-8.051 0-15.634 3.787-20.469 10.224-9.493 12.637-16.843 26.427-21.989 40.982h-68.675c-5.146-14.558-12.498-28.349-21.992-40.987-4.835-6.437-12.418-10.224-20.469-10.224l-204.808 0.003c-8.050 0-15.632 3.787-20.467 10.224-20.102 26.762-30.728 58.638-30.728 92.187s10.627 65.427 30.731 92.187c4.835 6.437 12.418 10.224 20.469 10.224l204.813-0.011c8.051 0 15.634-3.789 20.467-10.226 20.099-26.758 30.722-58.632 30.722-92.174 0 0 0 0 0-0.002h51.198c0 0 0 0 0 0.002 0 33.549 10.627 65.427 30.731 92.187 4.835 6.437 12.418 10.224 20.469 10.224l204.813-0.011c8.051 0 15.634-3.789 20.467-10.226 20.099-26.76 30.723-58.634 30.723-92.174-0-33.55-10.627-65.429-30.731-92.189zM395.917 409.602l-177.426 0.010c-8.989-15.494-13.691-32.978-13.691-51.21s4.701-35.717 13.69-51.208l177.424-0.003c5.518 9.512 9.413 19.776 11.603 30.501 0.042 0.211 0.088 0.421 0.134 0.63 1.294 6.546 1.952 13.261 1.952 20.080-0.002 18.229-4.701 35.709-13.686 51.2zM754.317 409.602l-177.427 0.010c-8.989-15.494-13.691-32.978-13.691-51.21 0-6.821 0.659-13.536 1.954-20.083 0.045-0.206 0.093-0.413 0.133-0.622 2.19-10.726 6.086-20.992 11.603-30.502l177.424-0.003c8.989 15.494 13.691 32.979 13.691 51.213 0 18.226-4.701 35.706-13.686 51.198z' />
+            <path d='M486.4 870.4c-79.186 0-155.912-28.288-216.043-79.65-59.454-50.784-99.285-121-112.155-197.712-2.339-13.944 7.067-27.144 21.011-29.483 13.949-2.342 27.144 7.067 29.483 21.011 22.808 135.955 139.6 234.634 277.704 234.634 49.514 0 98.197-13.024 140.787-37.661 12.235-7.080 27.898-2.899 34.978 9.341 7.080 12.237 2.899 27.899-9.341 34.978-50.371 29.139-107.92 44.542-166.424 44.542z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoolantTemperature.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoolantTemperature.js
new file mode 100644
index 00000000..2d7f6bdd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CoolantTemperature.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CoolantTemperature
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-31.643 0-60.419-14.387-88.248-28.302-23.552-11.776-45.795-22.898-65.352-22.898-33.026 0-72.074 31.571-84.333 43.736-10.021 9.944-26.221 9.917-36.186-0.086s-9.966-26.168 0.018-36.152c6.006-6.006 60.432-58.698 120.501-58.698 31.643 0 60.419 14.387 88.248 28.302 23.552 11.776 45.795 22.898 65.352 22.898 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 819.2c-6.539 0-13.078-2.49-18.074-7.47-12.267-12.168-51.307-43.73-84.326-43.73-19.557 0-41.802 11.122-65.352 22.898-27.827 13.915-56.605 28.302-88.248 28.302-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c19.557 0 41.802-11.122 65.352-22.898 27.827-13.915 56.605-28.302 88.248-28.302 60.070 0 114.494 52.691 120.501 58.699 9.998 9.997 9.998 26.206 0 36.203-4.998 4.998-11.549 7.498-18.101 7.498z' />
+            <path d='M742.4 1024c-33.352 0-57.178-15.885-78.2-29.901-17.146-11.429-31.952-21.299-49.8-21.299s-32.654 9.87-49.8 21.299c-21.022 14.016-44.848 29.901-78.2 29.901-33.387 0-57.318-15.928-78.434-29.979-17.141-11.41-31.944-21.261-49.566-21.261s-32.427 9.851-49.566 21.261c-21.115 14.051-45.046 29.979-78.434 29.979-60.069 0-114.494-52.691-120.501-58.699-9.998-9.997-9.998-26.206 0-36.203 9.984-9.986 26.168-10 36.168-0.034v0c12.259 12.165 51.307 43.736 84.333 43.736 17.907 0 32.81-9.918 50.066-21.403 21.013-13.986 44.832-29.837 77.934-29.837s56.922 15.851 77.934 29.837c17.256 11.485 32.158 21.403 50.066 21.403 17.85 0 32.654-9.87 49.8-21.299 21.022-14.016 44.848-29.901 78.2-29.901s57.178 15.885 78.2 29.901c17.146 11.429 31.952 21.299 49.8 21.299 33.026 0 72.074-31.571 84.333-43.736 10.024-9.944 26.222-9.917 36.186 0.086s9.966 26.168-0.018 36.152c-6.006 6.006-60.43 58.698-120.501 58.698z' />
+            <path d='M691.2 409.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-102.4h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-128c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8v563.2c-31.907 24-51.2 61.99-51.2 102.4 0 70.579 57.421 128 128 128s128-57.421 128-128c0-40.41-19.294-78.4-51.2-102.398v-76.802h128c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-102.4h128zM486.4 819.2c-42.347 0-76.8-34.451-76.8-76.8 0-27.222 14.6-52.621 38.123-66.368 0.315-0.176 0.627-0.362 0.936-0.552 7.547-4.664 12.141-12.904 12.141-21.776v-576.904c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v576.694c-0.037 4.459 1.090 8.946 3.41 12.973 1.934 3.366 4.565 6.173 7.637 8.296 0.563 0.389 1.142 0.757 1.736 1.099 23.698 13.704 38.418 39.202 38.418 66.538 0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Copy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Copy.js
new file mode 100644
index 00000000..e18143bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Copy.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Copy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 204.8h-128v-128c0-42.347-34.451-76.8-76.8-76.8h-384c-6.79 0-13.301 2.698-18.101 7.499l-179.2 179.2c-4.802 4.8-7.499 11.312-7.499 18.101v537.6c0 42.349 34.453 76.8 76.8 76.8h128v128c0 42.349 34.453 76.8 76.8 76.8h512c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM256 61.803v117.397c0 14.115-11.485 25.6-25.6 25.6h-117.397l142.997-142.997zM128 768c-14.115 0-25.6-11.485-25.6-25.6v-486.4h128c42.347 0 76.8-34.453 76.8-76.8v-128h332.8c14.115 0 25.6 11.485 25.6 25.6v128h-204.8c-6.79 0-13.301 2.698-18.101 7.499l-179.2 179.2c-4.802 4.8-7.499 11.312-7.499 18.101v358.4h-128zM460.8 266.603v117.397c0 14.115-11.485 25.6-25.6 25.6h-117.397l142.997-142.997zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-486.4h128c42.347 0 76.8-34.453 76.8-76.8v-128h332.8c14.115 0 25.6 11.485 25.6 25.6v665.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cord.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cord.js
new file mode 100644
index 00000000..35ba863d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cord.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cord
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M960.309 878.086c-9.898-10.099-26.104-10.264-36.202-0.366-62.571 61.314-145.285 95.080-232.907 95.080-175.413 0-319.547-136.418-331.923-308.73 114.618-13.174 203.923-110.781 203.923-228.87v-179.2h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-179.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v179.2h-153.6v-179.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v179.2h-128c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v179.2c0 118.658 90.166 216.638 205.578 229.059 5.787 93.442 44.914 180.491 111.693 247.27 72.528 72.526 168.96 112.47 271.53 112.47 101.101 0 196.544-38.963 268.742-109.712 10.098-9.896 10.262-26.104 0.366-36.202zM153.6 435.2v-179.2h358.4v179.2c0 98.811-80.389 179.2-179.2 179.2s-179.2-80.389-179.2-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Couch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Couch.js
new file mode 100644
index 00000000..bf95969a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Couch.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Couch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.4 972.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 972.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M921.234 360.91c-3.931-128.624-41.493-210.912-117.36-257.877-69.722-43.163-163.373-51.834-291.874-51.834s-222.15 8.67-291.875 51.834c-75.867 46.965-113.429 129.253-117.36 257.877-58.534 11.752-102.765 63.547-102.765 125.49 0 61.813 44.048 113.534 102.4 125.429v232.971c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-232.971c58.352-11.894 102.4-63.616 102.4-125.429 0-61.942-44.232-113.738-102.766-125.49zM247.075 146.566c59.411-36.778 145.416-44.166 264.925-44.166s205.514 7.389 264.925 44.166c59.691 36.952 89.528 105.419 93.104 214.486-58.17 12.037-102.029 63.664-102.029 125.347v76.8h-512v-76.8c0-61.683-43.859-113.31-102.030-125.347 3.578-109.067 33.416-177.534 93.106-214.486zM256 614.4h512v76.8c0 14.115-11.485 25.6-25.6 25.6h-460.8c-14.115 0-25.6-11.485-25.6-25.6v-76.8zM896 563.2c-14.139 0-25.6 11.461-25.6 25.6v256c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-256c0-14.139-11.462-25.6-25.6-25.6-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h460.8c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M793.6 307.2h-25.6c-56.464 0-102.4-45.936-102.4-102.4v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6c0 56.464-45.936 102.4-102.4 102.4h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6c56.464 0 102.4 45.936 102.4 102.4v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-56.464 45.936-102.4 102.4-102.4h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM384 375.995c-11.374-17.11-26.083-31.819-43.195-43.195 17.11-11.374 31.819-26.083 43.195-43.195 11.374 17.11 26.083 31.819 43.195 43.195-17.112 11.374-31.821 26.083-43.195 43.195zM640 375.995c-11.374-17.11-26.083-31.819-43.195-43.195 17.112-11.374 31.821-26.083 43.195-43.195 11.374 17.11 26.083 31.819 43.195 43.195-17.112 11.374-31.821 26.083-43.195 43.195z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CreditCard.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CreditCard.js
new file mode 100644
index 00000000..34ea6557
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CreditCard.js
@@ -0,0 +1,15 @@
+// Icon: Linear.CreditCard
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 153.6h-870.4c-42.347 0-76.8 34.453-76.8 76.8v563.2c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-563.2c0-42.347-34.451-76.8-76.8-76.8zM76.8 204.8h870.4c14.115 0 25.6 11.485 25.6 25.6v25.6h-921.6v-25.6c0-14.115 11.485-25.6 25.6-25.6zM972.8 307.2v153.6h-921.6v-153.6h921.6zM947.2 819.2h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-281.6h921.6v281.6c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M870.4 716.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M665.6 716.8h153.6v51.2h-153.6v-51.2z' />
+            <path d='M512 716.8h102.4v51.2h-102.4v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crop.js
new file mode 100644
index 00000000..b3eaea34
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crop.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Crop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 768h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 768h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-358.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v332.8h332.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 204.8c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M742.4 1024c-14.139 0-25.6-11.461-25.6-25.6v-691.2h-691.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6v716.8c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross.js
new file mode 100644
index 00000000..4134f429
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cross
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M548.203 537.6l289.099-289.098c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-289.099 289.099-289.098-289.099c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l289.099 289.098-289.099 289.099c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l289.098-289.098 289.099 289.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-289.098-289.098z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross2.js
new file mode 100644
index 00000000..3c1da6d3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cross2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cross2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M548.203 537.6l442.698-442.699c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-442.698 442.699-442.699-442.698c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l442.699 442.698-442.698 442.699c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l442.699-442.698 442.699 442.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-442.698-442.698z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossCircle.js
new file mode 100644
index 00000000..83d14f1d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CrossCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M733.808 723.266l-208.874-185.666 208.874-185.667c10.566-9.394 11.518-25.574 2.126-36.141-9.394-10.566-25.574-11.522-36.142-2.126l-213.392 189.682-213.392-189.68c-10.568-9.392-26.749-8.44-36.141 2.126-9.394 10.566-8.442 26.749 2.126 36.141l208.874 185.666-208.875 185.666c-10.566 9.394-11.518 25.574-2.126 36.142 5.059 5.691 12.085 8.592 19.142 8.592 6.048 0 12.122-2.131 16.998-6.466l213.394-189.683 213.392 189.683c4.878 4.334 10.949 6.466 16.998 6.466 7.058 0 14.086-2.902 19.144-8.592 9.392-10.568 8.44-26.749-2.126-36.142z' />
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossSquare.js
new file mode 100644
index 00000000..4c61f33b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/CrossSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.CrossSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M733.808 723.266l-208.874-185.666 208.874-185.667c10.566-9.394 11.518-25.574 2.126-36.141-9.394-10.566-25.574-11.522-36.142-2.126l-213.392 189.682-213.392-189.68c-10.568-9.392-26.749-8.44-36.141 2.126-9.394 10.566-8.442 26.749 2.126 36.141l208.874 185.666-208.875 185.666c-10.566 9.394-11.518 25.574-2.126 36.142 5.059 5.691 12.085 8.592 19.142 8.592 6.048 0 12.122-2.131 16.998-6.466l213.394-189.683 213.392 189.683c4.878 4.334 10.949 6.466 16.998 6.466 7.058 0 14.086-2.902 19.144-8.592 9.392-10.568 8.44-26.749-2.126-36.142z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crown.js
new file mode 100644
index 00000000..b172de9d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Crown.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Crown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.8 384c0-42.347-34.451-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 28.184 15.27 52.854 37.963 66.216-14.304 57.136-51.739 213.144-73.282 362.971-30.416-10.498-72.139-18.053-118.117-23.211 2.55-136.451 34.445-408.486 43.701-484.989 33.557-8.221 58.534-38.534 58.534-74.587 0-42.347-34.451-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 30.658 18.061 57.165 44.098 69.47-9.506 78.24-40.762 344.363-43.848 485.434-34.214-2.488-69.275-3.864-102.648-4.325v-631.782c29.797-10.568 51.2-39.024 51.2-72.397 0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 33.373 21.403 61.829 51.2 72.397v631.782c-33.373 0.461-68.434 1.837-102.648 4.325-3.088-141.072-34.342-407.195-43.85-485.434 26.034-12.306 44.096-38.813 44.096-69.47 0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 36.054 24.979 66.368 58.534 74.587 9.258 76.504 41.15 348.538 43.701 484.989-45.978 5.158-87.701 12.714-118.117 23.211-21.541-149.83-58.974-305.837-73.28-362.973 22.691-13.36 37.962-38.030 37.962-66.214 0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 38.426 28.366 70.346 65.256 75.931 19.077 76.432 88.344 365.896 88.344 538.469 0 8.872 4.594 17.112 12.141 21.776s16.971 5.088 24.907 1.12c42.704-21.35 161.557-35.696 295.752-35.696s253.048 14.346 295.752 35.698c3.613 1.808 7.534 2.702 11.446 2.702 4.682 0 9.35-1.283 13.461-3.824 7.547-4.664 12.141-12.904 12.141-21.776 0-172.573 69.269-462.037 88.344-538.469 36.89-5.586 65.256-37.507 65.256-75.931zM691.2 204.8c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM281.6 204.8c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM486.4 51.2c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM51.2 384c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM486.4 934.4c-95.482 0-211.498 7.534-282.446 27.68-1.346-30.438-4.234-63.109-8.192-96.746 46.506-20.038 161.458-33.334 290.638-33.334s244.134 13.296 290.637 33.334c-3.96 33.635-6.846 66.304-8.192 96.746-70.947-20.146-186.963-27.68-282.445-27.68zM896 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cube.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cube.js
new file mode 100644
index 00000000..91748822
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Cube.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Cube
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.683 228.080c-0.022-0.242-0.051-0.48-0.080-0.72-0.066-0.546-0.149-1.088-0.248-1.626-0.043-0.238-0.082-0.478-0.131-0.714-0.149-0.693-0.323-1.378-0.526-2.051-0.077-0.251-0.168-0.494-0.251-0.741-0.155-0.458-0.317-0.909-0.498-1.355-0.112-0.282-0.23-0.56-0.352-0.835-0.202-0.456-0.421-0.904-0.648-1.347-0.106-0.206-0.205-0.419-0.315-0.622-0.339-0.616-0.706-1.214-1.094-1.8-0.125-0.189-0.259-0.371-0.39-0.557-0.306-0.437-0.626-0.866-0.96-1.283-0.142-0.178-0.285-0.355-0.432-0.53-0.426-0.504-0.867-0.994-1.331-1.464-0.051-0.054-0.099-0.11-0.154-0.165-0.523-0.522-1.074-1.016-1.643-1.493-0.155-0.13-0.315-0.251-0.474-0.378-0.422-0.336-0.854-0.662-1.299-0.973-0.205-0.142-0.408-0.285-0.616-0.422-0.462-0.302-0.936-0.589-1.421-0.862-0.173-0.099-0.341-0.206-0.517-0.301-0.555-0.298-1.123-0.578-1.706-0.835l-0.366-0.163c-0.034-0.014-0.066-0.030-0.099-0.043l-460.334-204.594c-6.619-2.942-14.174-2.942-20.794 0l-460.338 204.595c-0.030 0.013-0.061 0.027-0.091 0.040l-0.371 0.165c-0.582 0.259-1.152 0.539-1.709 0.837-0.171 0.093-0.334 0.198-0.504 0.294-0.488 0.277-0.966 0.565-1.434 0.87-0.205 0.134-0.406 0.275-0.606 0.416-0.45 0.314-0.885 0.64-1.31 0.979-0.155 0.125-0.314 0.245-0.467 0.371-0.57 0.478-1.123 0.974-1.646 1.498-0.050 0.050-0.094 0.102-0.142 0.152-0.467 0.475-0.914 0.968-1.342 1.477-0.144 0.171-0.285 0.347-0.426 0.523-0.336 0.421-0.658 0.851-0.966 1.293-0.13 0.184-0.262 0.363-0.387 0.55-0.389 0.586-0.757 1.186-1.096 1.803-0.11 0.2-0.206 0.408-0.31 0.613-0.23 0.446-0.45 0.898-0.653 1.357-0.122 0.274-0.237 0.552-0.35 0.832-0.181 0.448-0.344 0.902-0.499 1.362-0.083 0.246-0.174 0.488-0.25 0.736-0.203 0.674-0.378 1.358-0.528 2.051-0.050 0.235-0.088 0.475-0.133 0.714-0.099 0.538-0.182 1.078-0.248 1.626-0.029 0.24-0.058 0.478-0.080 0.72-0.067 0.768-0.115 1.539-0.115 2.32v563.2c0 10.117 5.958 19.285 15.203 23.394l460.8 204.8c0.045 0.021 0.093 0.034 0.138 0.053 0.667 0.293 1.354 0.549 2.051 0.784 0.131 0.043 0.258 0.099 0.389 0.142 0.792 0.253 1.6 0.469 2.422 0.645 0.040 0.010 0.080 0.022 0.122 0.032 1.702 0.357 3.467 0.55 5.275 0.55s3.573-0.194 5.275-0.55c0.040-0.010 0.080-0.022 0.122-0.032 0.822-0.176 1.63-0.39 2.422-0.645 0.133-0.042 0.261-0.099 0.392-0.142 0.696-0.235 1.381-0.493 2.048-0.784 0.045-0.021 0.093-0.034 0.138-0.053l460.8-204.8c9.245-4.109 15.203-13.277 15.203-23.394v-563.2c0-0.781-0.046-1.552-0.117-2.32zM486.4 53.614l397.766 176.786-397.766 176.786-397.766-176.786 397.766-176.786zM51.2 269.792l409.6 182.045v507.171l-409.6-182.045v-507.171zM512 959.008v-507.171l409.6-182.045v507.17l-409.6 182.046z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dagger.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dagger.js
new file mode 100644
index 00000000..d538ce94
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dagger.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Dagger
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 153.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M881.402 306.802c79.579-5.659 142.598-72.205 142.598-153.202 0-84.696-68.904-153.6-153.6-153.6-80.995 0-147.542 63.019-153.202 142.6l-177.402 177.4-35.155-35.155c10.008 9.858 26.112 9.813 36.062-0.139 14.507-14.506 22.496-33.792 22.496-54.306s-7.989-39.8-22.496-54.304c-29.944-29.944-78.667-29.944-108.61 0-14.506 14.504-22.494 33.79-22.494 54.304s7.989 39.8 22.494 54.307l69.541 69.541-350.072 284.784c-25.51 20.754-53.64 61.448-64.040 92.645l-86.21 258.627c-3.067 9.198-0.672 19.341 6.184 26.197 4.878 4.88 11.422 7.501 18.104 7.499 2.707 0 5.44-0.43 8.093-1.314l258.627-86.21c31.198-10.398 71.893-38.528 92.646-64.038l284.784-350.072 69.541 69.539c14.507 14.506 33.794 22.494 54.307 22.494s39.8-7.989 54.304-22.494c14.507-14.506 22.496-33.792 22.496-54.306s-7.989-39.8-22.494-54.304c-14.506-14.507-33.792-22.496-54.306-22.496s-39.8 7.989-54.306 22.494c-9.947 9.949-9.995 26.045-0.149 36.053l-35.146-35.144 177.402-177.402zM775.501 519.499c4.834-4.837 11.262-7.499 18.099-7.499s13.266 2.662 18.101 7.499c4.837 4.835 7.499 11.264 7.499 18.101s-2.662 13.266-7.501 18.101c-4.834 4.837-11.262 7.499-18.099 7.499s-13.266-2.662-18.101-7.499l-36.053-36.053c10.008 9.85 26.107 9.798 36.054-0.149zM621.901 402.106c0 0-0.002-0.002-0.003-0.003s-0.003-0.002-0.005-0.003l-45.893-45.896 64.587-64.587 91.994 91.598-64.784 64.786-45.896-45.894zM870.4 51.2c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4-102.4-45.936-102.4-102.4 45.936-102.4 102.4-102.4zM817.856 297.941l-49.072 49.070-91.994-91.598 49.269-49.269c15.518 42.496 49.301 76.278 91.797 91.797zM460.8 230.4c0-6.837 2.662-13.267 7.498-18.101 4.99-4.99 11.546-7.486 18.102-7.486 6.555 0 13.11 2.496 18.101 7.486 4.835 4.835 7.499 11.264 7.499 18.101 0 6.838-2.664 13.267-7.499 18.102-9.95 9.95-9.997 26.056-0.139 36.064l-36.064-36.064c-4.834-4.835-7.498-11.264-7.498-18.102zM345.251 840.128c-14.709 18.080-47.008 40.406-69.12 47.776l-210.054 70.019 70.019-210.056c7.37-22.11 29.698-54.41 47.778-69.118l354.157-288.106 29.563 29.563-355.294 355.293c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.102-7.499l355.294-355.294 29.562 29.562-288.107 354.16z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Database.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Database.js
new file mode 100644
index 00000000..17d23d4b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Database.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Database
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 26.446 16.069 50.41 47.758 71.222 25.429 16.701 61.077 31.488 105.955 43.954 89.202 24.779 207.352 38.424 332.686 38.424s243.485-13.645 332.686-38.426c44.878-12.466 80.526-27.253 105.955-43.954 31.69-20.811 47.758-44.774 47.758-71.221v-614.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 833.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.389c25.168 15.803 59.611 29.846 102.514 41.765 89.202 24.779 207.352 38.424 332.686 38.424s243.485-13.645 332.686-38.426c42.902-11.917 77.347-25.962 102.514-41.765v131.39c0 11.608-24.29 40.307-116.218 65.843zM805.382 629.043c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseAdd.js
new file mode 100644
index 00000000..18607795
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseAdd.js
@@ -0,0 +1,14 @@
+// Icon: Linear.DatabaseAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 26.446 16.069 50.41 47.76 71.222 25.429 16.701 61.077 31.488 105.954 43.954 89.202 24.779 207.352 38.424 332.686 38.424 14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-120.834 0-234.118-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.389c25.166 15.803 59.611 29.846 102.514 41.765 89.202 24.779 207.352 38.424 332.686 38.424 14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-120.834 0-234.117-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v80.19c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-358.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 768h-76.8v-76.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseCheck.js
new file mode 100644
index 00000000..3cf1dc3d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DatabaseCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 26.446 16.069 50.41 47.76 71.222 25.429 16.701 61.077 31.488 105.954 43.954 89.202 24.779 207.352 38.424 332.686 38.424 17.333 0 34.824-0.267 51.984-0.794 14.133-0.434 25.237-12.24 24.803-26.371s-12.238-25.288-26.371-24.803c-16.643 0.509-33.605 0.768-50.416 0.768-120.834 0-234.118-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.389c25.168 15.803 59.611 29.846 102.514 41.765 89.202 24.779 207.352 38.424 332.686 38.424s243.485-13.645 332.686-38.426c44.878-12.466 80.526-27.253 105.955-43.954 31.69-20.811 47.758-44.774 47.758-71.221v-409.6c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 629.043c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+            <path d='M742.4 998.4c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l84.298 84.298 237.899-237.898c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-256 256c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseDownload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseDownload.js
new file mode 100644
index 00000000..a24819a9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseDownload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DatabaseDownload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M606.901 801.099c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.696v-219.795c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v219.795l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205-0.002-36.202z' />
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 39.037 34.608 72.194 102.864 98.549 57.515 22.208 136.162 38.683 227.435 47.643 0.851 0.083 1.696 0.123 2.533 0.123 13.013 0 24.149-9.88 25.446-23.101 1.381-14.072-8.906-26.598-22.976-27.979-85.498-8.392-161.496-24.179-213.997-44.45-51.744-19.979-70.106-39.845-70.106-50.786v-131.35c18.050 11.315 40.835 21.72 68.328 31.166 67.083 23.053 160.437 39.304 262.864 45.762 0.549 0.034 1.093 0.051 1.635 0.051 13.402 0 24.669-10.43 25.525-23.99 0.89-14.11-9.829-26.27-23.939-27.162-97.984-6.174-186.571-21.475-249.445-43.082-67.072-23.046-84.968-46.166-84.968-56.195v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 10.029-17.896 33.149-84.966 56.197-62.874 21.606-151.461 36.904-249.443 43.080-14.11 0.891-24.83 13.050-23.941 27.16 0.854 13.565 12.122 23.992 25.525 23.992 0.542 0 1.088-0.018 1.634-0.051 102.427-6.456 195.781-22.706 262.864-45.76 27.493-9.446 50.277-19.85 68.326-31.166v131.349c0 10.941-18.362 30.806-70.106 50.786-52.499 20.27-128.498 36.058-213.995 44.45-14.070 1.381-24.358 13.907-22.976 27.979 1.299 13.222 12.434 23.101 25.446 23.101 0.837 0 1.683-0.040 2.533-0.123 91.275-8.962 169.92-25.435 227.434-47.643 68.258-26.355 102.866-59.512 102.866-98.549v-614.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseHistory.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseHistory.js
new file mode 100644
index 00000000..d8ed53cc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseHistory.js
@@ -0,0 +1,14 @@
+// Icon: Linear.DatabaseHistory
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 45.166 45.912 82.219 136.461 110.126 77.915 24.016 183.731 39.171 297.954 42.68 0.269 0.010 0.533 0.013 0.8 0.013 13.773 0 25.147-10.95 25.573-24.814 0.434-14.131-10.67-25.941-24.802-26.373-109.77-3.371-210.787-17.73-284.445-40.434-79.208-24.413-100.341-49.955-100.341-61.198v-131.35c18.050 11.315 40.835 21.72 68.328 31.166 67.083 23.053 160.437 39.304 262.864 45.762 0.549 0.034 1.093 0.051 1.635 0.051 13.402 0 24.669-10.43 25.525-23.99 0.89-14.11-9.829-26.27-23.939-27.162-97.984-6.174-186.571-21.475-249.445-43.082-67.072-23.046-84.968-46.166-84.968-56.195v-131.314c21.634 13.554 50.058 25.792 85.261 36.642 77.915 24.014 183.73 39.171 297.954 42.678 0.269 0.008 0.534 0.013 0.8 0.013 13.773 0 25.147-10.95 25.573-24.814 0.434-14.133-10.67-25.939-24.802-26.373-109.77-3.371-210.789-17.731-284.445-40.432-79.208-24.414-100.341-49.957-100.341-61.2v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v156.99c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-230.4c0-26.446-16.069-50.408-47.76-71.221zM805.382 219.443c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843z' />
+            <path d='M742.392 716.8c-3.886 0-7.803-0.885-11.44-2.702l-102.4-51.2c-12.645-6.322-17.771-21.699-11.448-34.346 6.322-12.643 21.699-17.771 34.346-11.448l85.898 42.949 89.354-89.354c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-4.918 4.915-11.47 7.498-18.112 7.498z' />
+            <path d='M742.4 972.8c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM742.4 460.8c-127.042 0-230.4 103.358-230.4 230.4s103.358 230.4 230.4 230.4 230.4-103.358 230.4-230.4-103.358-230.4-230.4-230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseLock.js
new file mode 100644
index 00000000..521a7ab1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DatabaseLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 26.446 16.069 50.41 47.76 71.222 25.429 16.701 61.077 31.488 105.954 43.954 89.202 24.779 207.352 38.424 332.686 38.424 35.088 0 70.082-1.085 104.011-3.224 14.11-0.891 24.829-13.050 23.939-27.162-0.891-14.11-13.088-24.813-27.162-23.939-32.861 2.075-66.771 3.125-100.789 3.125-120.834 0-234.118-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.389c25.166 15.803 59.611 29.846 102.514 41.765 89.202 24.778 207.352 38.424 332.686 38.424 53.525 0 106.046-2.493 156.102-7.406 14.070-1.382 24.358-13.909 22.976-27.979s-13.901-24.347-27.979-22.976c-48.4 4.752-99.238 7.162-151.099 7.162-120.834 0-234.118-12.982-318.984-36.557-91.926-25.536-116.216-54.235-116.216-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v80.19c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-358.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+            <path d='M972.8 721.203v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.566-51.2 39.024-51.2 72.397v153.6c0 42.349 34.451 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.83-51.2-72.397zM844.8 614.4c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRefresh.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRefresh.js
new file mode 100644
index 00000000..d0d1f409
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRefresh.js
@@ -0,0 +1,14 @@
+// Icon: Linear.DatabaseRefresh
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M897.050 930.267c-9.357-10.598-25.533-11.61-36.133-2.254-32.726 28.882-74.818 44.787-118.517 44.787-95.134 0-173.178-74.522-178.856-168.253l7.155 7.155c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-51.2-51.2c-9.997-9.997-26.206-9.997-36.203 0l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l7.742-7.742c5.438 122.254 106.587 220.042 230.157 220.042 56.186 0 110.307-20.456 152.395-57.6 10.602-9.355 11.611-25.533 2.254-36.133z' />
+            <path d='M1016.501 775.499c-9.997-9.997-26.206-9.997-36.203 0l-7.742 7.742c-5.437-122.254-106.584-220.042-230.155-220.042-56.186 0-110.306 20.454-152.392 57.594-10.6 9.357-11.611 25.533-2.256 36.134 9.358 10.603 25.534 11.61 36.134 2.254 32.725-28.878 74.814-44.782 118.514-44.782 95.134 0 173.178 74.522 178.856 168.253l-7.155-7.155c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l51.2 51.2c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l51.2-51.2c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 45.166 45.912 82.219 136.461 110.126 77.915 24.016 183.731 39.171 297.954 42.68 0.269 0.010 0.533 0.013 0.8 0.013 13.773 0 25.147-10.95 25.573-24.814 0.434-14.131-10.67-25.941-24.802-26.373-109.77-3.371-210.787-17.73-284.445-40.434-79.208-24.413-100.341-49.955-100.341-61.198v-131.314c21.634 13.554 50.058 25.79 85.261 36.64 77.915 24.016 183.731 39.171 297.954 42.68 0.269 0.010 0.534 0.013 0.8 0.013 13.773 0 25.147-10.95 25.573-24.814 0.434-14.131-10.67-25.941-24.802-26.373-109.77-3.371-210.787-17.73-284.445-40.434-79.208-24.413-100.341-49.955-100.341-61.198v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-409.6c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRemove.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRemove.js
new file mode 100644
index 00000000..bae26236
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseRemove.js
@@ -0,0 +1,14 @@
+// Icon: Linear.DatabaseRemove
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 26.446 16.069 50.41 47.76 71.222 25.429 16.701 61.077 31.488 105.954 43.954 89.202 24.779 207.352 38.424 332.686 38.424 14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-120.834 0-234.118-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.389c25.166 15.803 59.611 29.846 102.514 41.765 89.202 24.779 207.352 38.424 332.686 38.424 14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-120.834 0-234.117-12.982-318.982-36.557-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v80.19c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-358.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 819.2h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseUpload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseUpload.js
new file mode 100644
index 00000000..2f01abdd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DatabaseUpload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DatabaseUpload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M606.901 698.699l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.699-58.698v219.795c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-219.795l58.699 58.698c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M925.040 82.379c-25.429-16.701-61.077-31.488-105.955-43.955-89.2-24.778-207.35-38.424-332.685-38.424s-243.485 13.646-332.686 38.424c-44.877 12.467-80.526 27.254-105.955 43.955-31.69 20.813-47.758 44.774-47.758 71.221v614.4c0 42.165 40.214 77.363 119.528 104.618 67.083 23.053 160.437 39.302 262.862 45.76 0.549 0.034 1.093 0.051 1.634 0.051 13.403 0 24.67-10.43 25.525-23.99 0.89-14.11-9.829-26.27-23.939-27.162-97.982-6.174-186.57-21.474-249.443-43.080-67.070-23.048-84.966-46.168-84.966-56.197v-131.392c10.226 6.421 21.952 12.552 35.21 18.371 47.405 20.814 113.69 37.506 191.69 48.274 1.189 0.165 2.366 0.243 3.533 0.243 12.584 0 23.558-9.285 25.328-22.102 1.933-14.005-7.853-26.926-21.859-28.859-73.382-10.13-134.97-25.496-178.107-44.434-41.181-18.083-55.794-35.49-55.794-44.901v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 9.411-14.613 26.818-55.794 44.899-43.136 18.939-104.725 34.304-178.106 44.434-14.006 1.933-23.792 14.854-21.859 28.859 1.768 12.819 12.742 22.102 25.326 22.102 1.166 0 2.346-0.080 3.533-0.243 78-10.766 144.285-27.459 191.691-48.274 13.258-5.821 24.984-11.952 35.21-18.371v131.394c0 10.029-17.896 33.149-84.966 56.197-62.874 21.606-151.461 36.904-249.445 43.080-14.109 0.891-24.829 13.050-23.939 27.162 0.856 13.563 12.122 23.99 25.525 23.99 0.542 0 1.088-0.018 1.635-0.051 102.426-6.456 195.779-22.706 262.862-45.76 79.312-27.254 119.526-62.453 119.526-104.618v-614.4c0-26.446-16.069-50.408-47.76-71.221zM167.418 87.757c84.864-23.574 198.149-36.557 318.982-36.557s234.117 12.982 318.982 36.557c91.928 25.536 116.218 54.235 116.218 65.843s-24.29 40.307-116.218 65.843c-84.866 23.574-198.149 36.557-318.982 36.557s-234.118-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843s24.29-40.307 116.218-65.843zM805.382 424.243c-84.866 23.574-198.149 36.557-318.982 36.557s-234.117-12.982-318.982-36.557c-91.928-25.536-116.218-54.235-116.218-65.843v-131.39c25.168 15.803 59.611 29.848 102.514 41.766 89.202 24.778 207.352 38.424 332.686 38.424s243.485-13.646 332.686-38.424c42.902-11.918 77.347-25.963 102.514-41.766v131.39c0 11.608-24.29 40.307-116.218 65.843z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Delete.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Delete.js
new file mode 100644
index 00000000..d7fda2ca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Delete.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Delete
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M701.803 537.6l135.499-135.499c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-135.499 135.499-135.499-135.499c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l135.499 135.499-135.499 135.499c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l135.499-135.498 135.499 135.499c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-135.498-135.498z' />
+            <path d='M947.2 870.4h-563.2c-36.024 0-80.581-20.869-103.645-48.544l-190.442-228.534c-26.042-31.245-26.042-80.198 0-111.445l190.442-228.533c23.062-27.675 67.619-48.544 103.645-48.544h563.2c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM384 256c-20.522 0-51.174 14.357-64.312 30.122l-190.442 228.534c-10.187 12.224-10.187 33.664 0 45.886l190.443 228.536c13.136 15.763 43.789 30.122 64.31 30.122h563.2c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DeskTape.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DeskTape.js
new file mode 100644
index 00000000..b26f7a54
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DeskTape.js
@@ -0,0 +1,12 @@
+// Icon: Linear.DeskTape
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M955.32 410.976l0.016-0.048-577.677-193.637c-3.538-1.299-7.128-2.498-10.754-3.605l-0.368-0.123-0.003 0.013c-18.792-5.699-38.709-8.776-59.334-8.776-95.579 0-177.179 65.718-199.058 156.445-26.363-1.848-53.85-2.845-82.542-2.845-14.138 0-25.6 11.462-25.6 25.6 0 55.848 13.53 159.736 39.386 250.234 35.067 122.734 82.107 184.966 139.814 184.966l570.848 0.003c71.198-0.003 126.325-84.547 160.034-155.47 36.928-77.699 62.718-171.675 62.718-228.533 0-11.146-7.192-20.789-17.48-24.224zM307.2 256c15.395 0 30.264 2.286 44.298 6.522l8.938 2.997c58.534 21.694 100.365 78.093 100.365 144.082 0 12.922-1.582 25.578-4.694 37.854-15.36-6.722-31.373-13.366-48.098-19.819 1.048-5.902 1.592-11.92 1.592-18.035 0-56.464-45.936-102.4-102.4-102.4-25.792 0-50.435 9.622-69.39 27.096-11.88 10.95-20.867 24.376-26.443 39.181-16.64-2.81-33.8-5.283-51.506-7.373 18.858-64.27 78.206-110.104 147.339-110.104zM263.157 383.616c9.005-15.093 25.549-25.216 44.043-25.216 28.232 0 51.2 22.968 51.2 51.2 0 0.094-0.006 0.186-0.008 0.28-29.589-9.75-61.242-18.678-95.235-26.264zM863.837 641.755c-37.010 77.872-80.613 126.246-113.792 126.248l-0.258-0.002c-0.062 0-0.125 0-0.187 0l-570.4-0.002c-17.989 0-34.701-20.485-45.555-37.67-16.424-26.005-31.574-63.069-45.030-110.163-20.677-72.368-33.254-155.632-36.546-210.277 25.091 0.555 49.13 1.896 72.202 3.912 0.654 0.128 1.309 0.254 1.981 0.333 1.099 0.128 2.186 0.16 3.262 0.147 33.232 3.074 64.44 7.558 93.864 13.147 1.586 0.47 3.242 0.787 4.95 0.944 50.565 9.883 95.822 23.019 137.032 37.795 1.488 0.707 3.013 1.235 4.55 1.637 32.278 11.75 62.059 24.485 89.962 37.416 0.272 0.133 0.53 0.285 0.808 0.41 0.146 0.066 0.294 0.106 0.44 0.168 28.653 13.31 55.325 26.816 80.678 39.654 73.058 36.997 136.154 68.947 200.602 68.947 59.371 0 112.726-21.006 156.078-61.109-9.459 29.822-21.323 60.443-34.642 88.464zM881.67 496.878c-37.219 44.008-84.077 66.322-139.27 66.322-52.226 0-107.496-27.989-177.469-63.424-19.318-9.782-39.816-20.158-61.718-30.669 5.829-19.181 8.787-39.106 8.787-59.507 0-37.326-10.043-72.349-27.562-102.517l428.013 143.469c-6.686 12.965-16.76 29.749-30.781 46.326z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Desktop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Desktop.js
new file mode 100644
index 00000000..f7b05bf4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Desktop.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Desktop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 51.2h-870.4c-42.347 0-76.8 34.453-76.8 76.8v665.6c0 42.349 34.453 76.8 76.8 76.8h265.778l-35.378 70.757c-8.114 16.227-16.536 27.766-20.933 32.493-10.96 2.898-19.040 12.882-19.040 24.752 0 14.139 11.462 25.6 25.6 25.6h438.344c14.139 0 25.6-11.461 25.6-25.6 0-11.87-8.082-21.854-19.040-24.752-4.395-4.725-12.818-16.264-20.931-32.493l-35.378-70.757h265.778c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM76.8 102.4h870.4c14.115 0 25.6 11.485 25.6 25.6v486.4h-921.6v-486.4c0-14.115 11.485-25.6 25.6-25.6zM671.006 964.053c1.477 2.955 3.010 5.878 4.586 8.747h-327.182c1.574-2.869 3.109-5.792 4.586-8.747l46.827-93.653h224.358l46.826 93.653zM947.2 819.2h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-128h921.6v128c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M537.6 768h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dial.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dial.js
new file mode 100644
index 00000000..65b16d31
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dial.js
@@ -0,0 +1,21 @@
+// Icon: Linear.Dial
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 256c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM256 102.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M512 256c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 102.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M768 256c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 102.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M256 512c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM256 358.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M512 512c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 358.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M768 512c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 358.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M256 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM256 614.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M512 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 614.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M768 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM768 614.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M512 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond.js
new file mode 100644
index 00000000..d722a676
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Diamond
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 921.6c-7.258 0-14.173-3.080-19.029-8.475l-460.8-512c-8.182-9.091-8.79-22.701-1.451-32.486l153.6-204.8c4.834-6.446 12.422-10.24 20.48-10.24h614.4c8.058 0 15.645 3.794 20.48 10.24l153.6 204.8c7.339 9.786 6.731 23.395-1.451 32.486l-460.8 512c-4.856 5.395-11.771 8.475-19.029 8.475zM58.709 382.52l427.691 475.211 427.691-475.211-133.291-177.72h-588.8l-133.291 177.72z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond2.js
new file mode 100644
index 00000000..028f9e10
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Diamond2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M967.68 368.64l-153.6-204.8c-4.834-6.446-12.422-10.24-20.48-10.24h-614.4c-8.058 0-15.645 3.794-20.48 10.24l-153.6 204.8c-7.339 9.786-6.731 23.395 1.451 32.486l460.8 512c4.856 5.394 11.771 8.474 19.029 8.474s14.173-3.080 19.029-8.475l460.8-512c8.182-9.091 8.79-22.699 1.451-32.485zM605.592 409.6l-119.192 397.309-119.194-397.309h238.386zM384 358.4l102.4-136.533 102.4 136.533h-204.8zM537.6 204.8h204.8l-102.4 136.533-102.4-136.533zM332.8 341.333l-102.4-136.533h204.8l-102.4 136.533zM281.6 358.4h-204.8l102.4-136.533 102.4 136.533zM313.754 409.6l115.334 384.451-346.006-384.451h230.672zM659.046 409.6h230.672l-346.006 384.451 115.334-384.451zM691.2 358.4l102.4-136.533 102.4 136.533h-204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond3.js
new file mode 100644
index 00000000..4c6b28dd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Diamond3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M967.68 368.64l-153.6-204.8c-3.95-5.267-9.776-8.81-16.272-9.891l-307.2-51.2c-2.786-0.464-5.632-0.464-8.418 0l-307.2 51.2c-6.494 1.082-12.322 4.626-16.27 9.891l-153.6 204.8c-7.339 9.786-6.731 23.395 1.451 32.486l460.8 512c4.856 5.394 11.771 8.474 19.029 8.474s14.173-3.080 19.029-8.475l460.8-512c8.182-9.091 8.79-22.699 1.451-32.485zM654.65 358.4l-168.25 462.691-168.251-462.691h336.501zM343.405 307.2l142.995-142.995 142.995 142.995h-285.99zM560.989 166.384l189.349 31.558-63.115 94.674-126.234-126.232zM285.579 292.616l-63.117-94.674 189.349-31.558-126.232 126.232zM239.096 315.194l-152.813 30.563 91.688-122.25 61.125 91.686zM265.058 362.216l152.285 418.784-342.642-380.712 190.357-38.072zM707.744 362.216l190.357 38.072-342.643 380.712 152.286-418.784zM733.704 315.194l61.125-91.688 91.688 122.25-152.813-30.562z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond4.js
new file mode 100644
index 00000000..94b10699
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamond4.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Diamond4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 921.6c-7.258 0-14.173-3.080-19.029-8.475l-460.8-512c-8.182-9.091-8.79-22.701-1.451-32.486l153.6-204.8c4.834-6.446 12.422-10.24 20.48-10.24h307.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-294.4l-133.291 177.722 427.691 475.211 427.691-475.211-133.291-177.72h-89.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c8.058 0 15.645 3.794 20.48 10.24l153.6 204.8c7.339 9.786 6.731 23.395-1.451 32.486l-460.8 512c-4.856 5.394-11.771 8.474-19.029 8.474z' />
+            <path d='M588.8 512c-14.139 0-25.6-11.461-25.6-25.6 0-70.579-57.421-128-128-128-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c70.579 0 128-57.421 128-128 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 70.579 57.421 128 128 128 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-70.579 0-128 57.421-128 128 0 14.139-11.461 25.6-25.6 25.6zM527.424 332.8c25.112 15.136 46.24 36.264 61.376 61.376 15.136-25.112 36.264-46.24 61.376-61.376-25.112-15.136-46.24-36.264-61.376-61.376-15.136 25.112-36.264 46.24-61.376 61.376z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamonds.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamonds.js
new file mode 100644
index 00000000..e27f3c19
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Diamonds.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Diamonds
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-7.901 0-15.357-3.646-20.208-9.883l-358.4-460.8c-7.19-9.245-7.19-22.189 0-31.434l358.4-460.8c4.851-6.235 12.307-9.883 20.208-9.883s15.357 3.648 20.208 9.883l358.4 460.8c7.189 9.245 7.189 22.189 0 31.434l-358.4 460.8c-4.851 6.237-12.307 9.883-20.208 9.883zM160.432 537.6l325.968 419.101 325.968-419.101-325.968-419.102-325.968 419.102z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dice.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dice.js
new file mode 100644
index 00000000..dd1f5a44
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dice.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Dice
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.6 614.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.6 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 614.4c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M793.6 972.8h-614.4c-70.579 0-128-57.421-128-128v-614.4c0-70.579 57.421-128 128-128h614.4c70.579 0 128 57.421 128 128v614.4c0 70.579-57.421 128-128 128zM179.2 153.6c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 42.349 34.453 76.8 76.8 76.8h614.4c42.349 0 76.8-34.451 76.8-76.8v-614.4c0-42.347-34.451-76.8-76.8-76.8h-614.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner.js
new file mode 100644
index 00000000..63e6f31f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Dinner
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 66.843 12.915 122.715 23.293 167.608 10.112 43.749 18.099 78.302 6.637 92.718-9.525 11.978-36.712 18.942-80.938 20.778-0.114-8.314-0.189-16.669-0.19-25.109v-204.795c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v204.803c0.002 8.426-0.072 16.768-0.182 25.069-44.099-1.898-71.219-8.901-80.76-20.893-11.52-14.477-3.542-49.086 6.557-92.902 10.328-44.818 23.184-100.594 23.184-167.277 0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 60.859-12.131 113.488-21.878 155.776-13.198 57.259-23.622 102.485 3.27 136.283 19.97 25.096 56.374 37.542 119.458 40.192-5.741 142.84-26.443 265.747-43.589 367.451-22.816 135.354-37.888 224.77 0.605 270.298 15.934 18.845 39.531 28.4 70.134 28.4 30.608 0 54.208-9.558 70.147-28.406 38.52-45.554 23.438-135.051 0.611-270.526-17.126-101.638-37.808-224.466-43.584-367.184 63.213-2.57 99.656-14.973 119.629-40.090 26.837-33.747 16.395-78.923 3.173-136.117-9.79-42.358-21.976-95.074-21.976-156.077zM312.651 962.534c-3.726 4.406-11 10.266-31.051 10.266-20.045 0-27.312-5.854-31.035-10.258-23.154-27.384-7.426-120.69 10.786-228.728 6.581-39.038 13.68-81.157 20.28-126.326 6.589 45.082 13.672 87.115 20.238 126.090 18.224 108.144 33.962 201.544 10.782 228.957z' />
+            <path d='M813.158 725.069c-20.104-119.326-45.13-267.832-45.158-443.472v-255.997c0-11.608-7.811-21.763-19.032-24.742-11.218-2.979-23.035 1.963-28.795 12.042-103.387 180.926-154.437 457.246-156.562 468.922-1.358 7.469 0.667 15.155 5.533 20.982 4.866 5.829 12.064 9.197 19.654 9.197h114.443c-8.957 79.045-20.954 150.25-31.581 213.302-22.819 135.354-37.891 224.77 0.605 270.298 15.936 18.845 39.531 28.4 70.134 28.4 30.608 0 54.208-9.558 70.147-28.406 38.518-45.554 23.437-135.051 0.611-270.525zM620.062 460.8c12.688-59.962 45.166-198.998 96.738-323.424v144.227c0.010 63.296-3.242 123.046-8.334 179.197h-88.403zM773.451 962.534c-3.726 4.406-11 10.266-31.051 10.266-20.043 0-27.312-5.854-31.034-10.258-23.157-27.384-7.429-120.691 10.784-228.73 6.581-39.038 13.68-81.155 20.28-126.326 6.589 45.083 13.674 87.118 20.238 126.093 18.224 108.144 33.963 201.542 10.782 228.955z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner2.js
new file mode 100644
index 00000000..27048f68
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dinner2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Dinner2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M431.576 181.677c-9.79-42.358-21.976-95.074-21.976-156.077 0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 66.843 12.915 122.715 23.293 167.608 10.112 43.749 18.099 78.302 6.637 92.718-9.525 11.978-36.712 18.942-80.938 20.778-0.114-8.314-0.189-16.669-0.19-25.109v-204.795c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v204.8c0 0 0 0.002 0 0.002s0 0.002 0 0.002c0.002 8.426-0.072 16.768-0.182 25.069-44.099-1.898-71.219-8.901-80.76-20.893-11.52-14.477-3.542-49.086 6.557-92.902 10.328-44.818 23.184-100.594 23.184-167.277 0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 60.859-12.131 113.488-21.878 155.776-13.198 57.259-23.622 102.485 3.27 136.283 19.97 25.096 56.374 37.542 119.458 40.192-5.741 142.842-26.443 265.747-43.589 367.451-22.816 135.354-37.888 224.771 0.605 270.298 15.934 18.845 39.531 28.4 70.134 28.4 30.608 0 54.208-9.558 70.147-28.406 38.52-45.554 23.438-135.051 0.611-270.526-17.126-101.638-37.808-224.466-43.584-367.184 63.213-2.57 99.656-14.973 119.629-40.090 26.837-33.747 16.395-78.923 3.173-136.117zM312.651 962.534c-3.726 4.406-11 10.266-31.051 10.266-20.045 0-27.312-5.854-31.035-10.258-23.154-27.384-7.426-120.69 10.786-228.728 6.581-39.040 13.68-81.157 20.28-126.326 6.589 45.082 13.672 87.115 20.238 126.088 18.224 108.146 33.962 201.546 10.782 228.958z' />
+            <path d='M772.024 404.299c57.035-20.854 98.376-101.027 98.376-199.499 0-114.842-56.226-204.8-128-204.8s-128 89.958-128 204.8c0 98.491 41.357 178.674 98.408 199.512-7.925 123.864-26.254 232.642-41.147 320.994-22.816 135.352-37.888 224.77 0.606 270.296 15.933 18.843 39.53 28.398 70.133 28.398 30.608 0 54.208-9.558 70.147-28.406 38.518-45.554 23.437-135.053 0.611-270.528-14.878-88.298-33.19-197.006-41.134-320.766zM665.6 204.8c0-90.518 40.475-153.6 76.8-153.6s76.8 63.082 76.8 153.6-40.475 153.6-76.8 153.6-76.8-63.082-76.8-153.6zM773.45 962.534c-3.726 4.406-10.998 10.266-31.050 10.266-20.043 0-27.312-5.854-31.035-10.258-23.155-27.384-7.427-120.69 10.784-228.728 6.486-38.475 13.618-80.781 20.282-126.542 6.653 45.675 13.766 87.89 20.238 126.301 18.224 108.149 33.962 201.549 10.781 228.962z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionLtr.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionLtr.js
new file mode 100644
index 00000000..f65e782e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionLtr.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DirectionLtr
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M786.101 877.899l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l58.698 58.698h-475.795c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h475.795l-58.698 58.699c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M793.6 51.2h-435.2c-112.928 0-204.8 91.872-204.8 204.8s91.872 204.8 204.8 204.8h51.2v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-588.8h153.6v588.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-588.8h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM409.6 409.6h-51.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6h51.2v307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionRtl.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionRtl.js
new file mode 100644
index 00000000..b95410f8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DirectionRtl.js
@@ -0,0 +1,13 @@
+// Icon: Linear.DirectionRtl
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 51.2h-435.2c-112.928 0-204.8 91.872-204.8 204.8s91.872 204.8 204.8 204.8h51.2v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-588.8h153.6v588.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-588.8h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM409.6 409.6h-51.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6h51.2v307.2z' />
+            <path d='M742.4 870.4h-475.797l58.699-58.699c9.997-9.997 9.997-26.206 0-36.203-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-58.699-58.698h475.797c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Disc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Disc.js
new file mode 100644
index 00000000..68525225
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Disc.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Disc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 614.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 460.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962c-96.704 96.704-149.962 225.278-149.962 362.038s53.258 265.334 149.962 362.038c96.704 96.704 225.278 149.962 362.038 149.962s265.334-53.258 362.038-149.962c96.704-96.704 149.962-225.278 149.962-362.038s-53.258-265.334-149.962-362.038zM916.768 291.941l-232.146 109.963c-16.059-25.091-37.434-46.467-62.526-62.526l109.963-232.146c77.875 42.507 142.202 106.834 184.709 184.709zM358.4 512c0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6zM512 51.2c61.466 0 120.144 12.128 173.81 34.067l-109.958 232.138c-20.102-6.613-41.563-10.205-63.851-10.205-112.928 0-204.8 91.872-204.8 204.8 0 22.288 3.592 43.749 10.203 63.85l-232.136 109.96c-21.939-53.666-34.067-112.344-34.067-173.81 0-254.086 206.714-460.8 460.8-460.8zM107.232 732.059l232.147-109.965c16.059 25.093 37.435 46.467 62.526 62.526l-109.965 232.147c-77.875-42.507-142.202-106.834-184.709-184.709zM512 972.8c-61.466 0-120.144-12.128-173.81-34.066l109.96-232.139c20.102 6.613 41.563 10.205 63.85 10.205 112.926 0 204.8-91.874 204.8-204.8 0-22.286-3.592-43.747-10.205-63.85l232.139-109.96c21.938 53.666 34.066 112.344 34.066 173.81 0 254.086-206.714 460.8-460.8 460.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dna.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dna.js
new file mode 100644
index 00000000..cf6e98ca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dna.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Dna
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M361.742 428.669c35.702-29.008 86.141-51.075 134.918-72.414 51.909-22.71 105.584-46.194 146.683-79.586 49.427-40.162 73.456-88.792 73.456-148.669v-51.2c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v51.2c0 6.235-0.36 12.275-1.061 18.147l-376.738-94.158c-1.989-0.496-4.059-0.789-6.202-0.789-14.138 0-25.6 11.462-25.6 25.6v51.2c0 96.826 64.016 146.555 112.168 175.538 4.131 2.486 8.683 3.67 13.178 3.67 8.683 0 17.154-4.421 21.958-12.402 7.291-12.114 3.382-27.843-8.733-35.134-61.242-36.862-87.371-76.242-87.371-131.672v-18.411l341.154 85.288c-8.861 15.109-21.219 28.992-37.298 42.054-35.701 29.008-86.139 51.075-134.917 72.414-51.909 22.71-105.584 46.194-146.682 79.586-49.429 40.162-73.458 88.792-73.458 148.669 0 96.824 64.011 146.552 112.158 175.533 4.131 2.488 8.683 3.67 13.178 3.67 8.683 0 17.154-4.419 21.957-12.402 7.291-12.112 3.382-27.843-8.731-35.134-61.234-36.859-87.362-76.237-87.362-131.667 0-6.234 0.36-12.27 1.059-18.139l340.094 85.018c-8.861 15.107-21.219 28.99-37.298 42.053-35.701 29.008-86.139 51.075-134.917 72.416-51.909 22.709-105.584 46.192-146.682 79.584-49.429 40.162-73.458 88.79-73.458 148.669v51.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-51.2c0-6.235 0.36-12.275 1.061-18.147l376.738 94.157c1.987 0.498 4.058 0.79 6.202 0.79 14.139 0 25.6-11.461 25.6-25.6v-51.2c0-96.826-64.014-146.554-112.165-175.534-12.114-7.294-27.845-3.382-35.134 8.731-7.293 12.114-3.382 27.843 8.731 35.134 61.24 36.859 87.368 76.237 87.368 131.669v18.413l-341.155-85.29c8.861-15.107 21.221-28.992 37.298-42.054 35.702-29.008 86.141-51.075 134.918-72.416 51.909-22.709 105.584-46.192 146.683-79.584 49.427-40.162 73.456-88.79 73.456-148.669 0-96.826-64.014-146.554-112.165-175.534-12.114-7.293-27.845-3.381-35.134 8.733-7.293 12.114-3.382 27.843 8.731 35.134 61.24 36.859 87.368 76.235 87.368 131.667 0 6.235-0.36 12.277-1.061 18.149l-340.098-85.018c8.861-15.112 21.222-28.998 37.301-42.062z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document.js
new file mode 100644
index 00000000..c9aaff12
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Document
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM179.2 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-665.6z' />
+            <path d='M640 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M742.4 358.4h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M742.4 460.8h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 563.2h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 768h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 870.4h-358.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document2.js
new file mode 100644
index 00000000..44660bb6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Document2.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Document2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM179.2 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-665.6z' />
+            <path d='M435.2 256h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 358.4h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 460.8h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 563.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M742.4 665.6h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 768h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 870.4h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 563.2h-204.8c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.138 11.462-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6zM563.2 512h153.6v-256h-153.6v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dolly.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dolly.js
new file mode 100644
index 00000000..ead7076f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dolly.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Dolly
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.115 0 25.6-11.485 25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M281.6 768c-14.138 0-25.6-11.461-25.6-25.6v-563.2c0-42.347-34.453-76.8-76.8-76.8h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c70.579 0 128 57.421 128 128v563.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M204.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M179.2 1024c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM179.2 819.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M742.4 460.8h-30.003c2.842-8.013 4.403-16.626 4.403-25.6v-153.6c0-42.347-34.451-76.8-76.8-76.8h-204.8c-42.347 0-76.8 34.453-76.8 76.8v153.6c0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2v307.2c0 42.349 34.453 76.8 76.8 76.8h307.2c42.349 0 76.8-34.451 76.8-76.8v-307.2c0-42.347-34.451-76.8-76.8-76.8zM614.4 512v358.4h-51.2v-358.4h51.2zM409.6 281.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6zM409.6 844.8v-307.2c0-14.115 11.485-25.6 25.6-25.6h76.8v358.4h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM768 844.8c0 14.115-11.485 25.6-25.6 25.6h-76.8v-358.4h76.8c14.115 0 25.6 11.485 25.6 25.6v307.2z' />
+            <path d='M588.8 358.4h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download.js
new file mode 100644
index 00000000..021c270b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Download
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M709.301 442.699c-9.997-9.998-26.206-9.998-36.203 0l-161.098 161.098v-526.997c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v526.997l-161.099-161.098c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M486.4 1024c-127.362 0-247.494-27.773-338.267-78.203-95.525-53.069-148.133-125.302-148.133-203.397 0-50.078 21.517-96.146 63.952-136.922 37.506-36.038 90.506-66.95 157.525-91.872 12.709-4.731 26.906 1.28 32.362 13.698 5.454 12.418 0.278 26.936-11.802 33.101-55.376 28.254-88.437 67.579-88.437 105.195 0 37.117 33.102 74.957 90.822 103.816 64.206 32.104 150.142 49.784 241.978 49.784 91.834 0 177.771-17.68 241.978-49.784 57.72-28.859 90.822-66.699 90.822-103.816 0-37.616-33.059-76.942-88.435-105.197-12.082-6.165-17.258-20.682-11.802-33.101s19.653-18.429 32.362-13.698c67.019 24.922 120.018 55.834 157.523 91.872 42.435 40.778 63.952 86.845 63.952 136.923 0 78.094-52.608 150.328-148.133 203.397-90.773 50.43-210.906 78.203-338.267 78.203zM106.010 636.366c-31.773 28.227-54.81 63.398-54.81 106.034 0 58.666 43.256 115.006 121.798 158.64 83.294 46.275 194.595 71.76 313.402 71.76s230.107-25.485 313.402-71.76c78.544-43.634 121.798-99.974 121.798-158.64 0-42.635-23.035-77.806-54.81-106.034 2.389 9.61 3.61 19.374 3.61 29.234 0 58.069-42.306 111.202-119.123 149.611-71.179 35.589-165.246 55.189-264.877 55.189-99.629 0-193.698-19.6-264.875-55.189-76.819-38.41-119.125-91.542-119.125-149.611 0-9.859 1.221-19.626 3.61-29.234z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download2.js
new file mode 100644
index 00000000..366eb529
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Download2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Download2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M760.499 493.901c-9.995-9.997-26.206-9.997-36.203 0l-212.296 212.294v-578.195c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v578.195l-212.298-212.294c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.995-9.997 26.206 0 36.203l256 256c5 4.997 11.55 7.496 18.102 7.496s13.102-2.499 18.102-7.501l256-256c9.997-9.995 9.997-26.203-0.003-36.198z' />
+            <path d='M896 972.8h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers.js
new file mode 100644
index 00000000..b250a776
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Drawers
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 153.6h-563.2c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h614.4v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-614.4c0-42.347-34.453-76.8-76.8-76.8zM230.4 204.8h563.2c14.115 0 25.6 11.485 25.6 25.6v128h-614.4v-128c0-14.115 11.485-25.6 25.6-25.6zM819.2 409.6v153.6h-614.4v-153.6h614.4zM204.8 768v-153.6h614.4v153.6h-614.4z' />
+            <path d='M537.6 307.2h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers2.js
new file mode 100644
index 00000000..a6db8141
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers2.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Drawers2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 153.6h-870.4c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h921.6v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-614.4c0-42.347-34.451-76.8-76.8-76.8zM76.8 204.8h870.4c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM972.8 409.6v153.6h-921.6v-153.6h921.6zM51.2 768v-153.6h921.6v153.6h-921.6z' />
+            <path d='M281.6 307.2h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 512h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M793.6 307.2h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 512h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers3.js
new file mode 100644
index 00000000..e6fdd5c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drawers3.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Drawers3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 512h-614.4c-42.347 0-76.8-34.451-76.8-76.8v-204.8c0-42.347 34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.453 76.8 76.8v204.8c0 42.349-34.451 76.8-76.8 76.8zM179.2 204.8c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M486.4 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.453 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M793.6 921.6h-614.4c-42.347 0-76.8-34.451-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.451 76.8 76.8v204.8c0 42.349-34.451 76.8-76.8 76.8zM179.2 614.4c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M486.4 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dream.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dream.js
new file mode 100644
index 00000000..54647d16
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dream.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Dream
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 183.506-149.294 332.8-332.8 332.8z' />
+            <path d='M395.448 309.902c-12.646-6.323-28.022-1.198-34.346 11.45-0.186 0.37-19.486 37.048-53.902 37.048-34.362 0-53.784-36.822-53.976-37.195l0.074 0.146-0.014 0.006c-4.203-8.392-12.859-14.165-22.883-14.165-14.142 0-25.606 11.464-25.606 25.606 0 4.118 0.995 7.995 2.723 11.442l-0.014 0.006c0.050 0.099 0.147 0.293 0.283 0.554 0.056 0.104 0.107 0.21 0.165 0.312 4.25 8.034 36.363 64.488 99.25 64.488 66.261 0 98.363-62.683 99.698-65.352 6.323-12.645 1.197-28.022-11.45-34.346z' />
+            <path d='M753.846 309.902c-12.645-6.323-28.022-1.198-34.344 11.45-0.186 0.37-19.486 37.048-53.902 37.048-34.363 0-53.784-36.822-53.974-37.195l0.072 0.146-0.014 0.006c-4.203-8.392-12.858-14.165-22.883-14.165-14.142 0-25.606 11.464-25.606 25.606 0 4.118 0.995 7.995 2.723 11.442l-0.014 0.006c0.050 0.099 0.147 0.293 0.283 0.554 0.054 0.104 0.107 0.21 0.165 0.312 4.25 8.034 36.362 64.488 99.25 64.488 66.261 0 98.363-62.683 99.698-65.352 6.325-12.645 1.197-28.022-11.451-34.346z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop.js
new file mode 100644
index 00000000..99e18fcd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Drop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-82.619 0-159.64-33.55-216.877-94.472-58.013-61.747-89.962-146.387-89.963-238.328 0-150.678 66.979-258.499 137.893-372.653 54.789-88.197 111.443-179.397 144.248-299.683 3.038-11.138 13.155-18.864 24.699-18.864s21.661 7.726 24.699 18.864c32.813 120.317 89.56 211.536 144.438 299.752 71 114.131 138.062 221.933 138.062 372.584 0 92.131-31.749 176.763-89.395 238.301-57.085 60.938-134.437 94.499-217.805 94.499zM512.003 108.208c-34.509 90.949-80.589 165.125-125.459 237.355-69.856 112.451-130.184 209.566-130.184 345.635 0 160.539 109.902 281.6 255.64 281.6 145.944 0 256-121.061 256-281.6 0-136.027-60.4-233.117-130.338-345.539-44.95-72.254-91.112-146.461-125.659-237.451z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop2.js
new file mode 100644
index 00000000..43157f3a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Drop2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Drop2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-82.619 0-159.64-33.55-216.877-94.472-58.013-61.747-89.962-146.387-89.963-238.328 0-150.678 66.979-258.499 137.893-372.653 54.789-88.197 111.443-179.397 144.248-299.683 3.038-11.138 13.155-18.864 24.699-18.864s21.661 7.726 24.699 18.864c32.813 120.317 89.56 211.536 144.438 299.752 71 114.131 138.062 221.933 138.062 372.584 0 92.131-31.749 176.763-89.395 238.301-57.085 60.938-134.437 94.499-217.805 94.499zM512.003 108.208c-34.509 90.949-80.589 165.125-125.459 237.355-69.856 112.451-130.184 209.566-130.184 345.635 0 160.539 109.902 281.6 255.64 281.6 145.944 0 256-121.061 256-281.6 0-136.027-60.4-233.117-130.338-345.539-44.95-72.254-91.112-146.461-125.659-237.451z' />
+            <path d='M512 870.4c-39.77 0-77.035-16.352-104.933-46.043-31.152-33.158-48.307-80.446-48.307-133.158 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 39.634 12.224 74.474 34.421 98.099 18.118 19.282 42.131 29.902 67.619 29.902 7.235 0 14.35-0.779 21.142-2.317 13.79-3.125 27.499 5.523 30.621 19.314 3.123 13.789-5.523 27.499-19.314 30.621-10.498 2.378-21.416 3.582-32.45 3.582z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DropCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DropCrossed.js
new file mode 100644
index 00000000..6222aff4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/DropCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.DropCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M861.658 159.934c-10.642-9.314-26.814-8.232-36.123 2.408l-141.216 161.389c-1.059-1.704-2.12-3.41-3.181-5.115-54.88-88.216-111.627-179.435-144.438-299.752-3.038-11.138-13.155-18.864-24.699-18.864s-21.661 7.726-24.699 18.864c-32.805 120.286-89.459 211.486-144.248 299.683-70.914 114.154-137.893 221.974-137.893 372.653 0 52.035 10.243 101.73 29.645 146.261l-126.070 144.082c-9.31 10.64-8.232 26.814 2.408 36.123 4.856 4.25 10.864 6.334 16.848 6.334 7.125 0 14.216-2.958 19.275-8.742l113.427-129.632c10.174 15.63 21.67 30.32 34.43 43.901 57.237 60.923 134.258 94.474 216.877 94.474 83.368 0 160.72-33.562 217.805-94.499 57.646-61.538 89.395-146.17 89.395-238.301 0-128.2-48.566-225.37-106.794-321.818l151.659-173.325c9.31-10.64 8.234-26.813-2.408-36.123zM256.36 691.2c0-136.070 60.33-233.186 130.184-345.635 44.87-72.232 90.95-146.406 125.459-237.355 34.546 90.989 80.709 165.197 125.659 237.453 3.834 6.165 7.634 12.277 11.405 18.358l-376.344 430.106c-10.603-31.598-16.363-66.226-16.363-102.926zM768 691.2c0 160.539-110.056 281.6-256 281.6-93.208 0-171.754-49.522-216.269-127.216l381.248-435.712c51.808 87.421 91.021 171.741 91.021 281.328z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dumbbell.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dumbbell.js
new file mode 100644
index 00000000..4daf6743
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Dumbbell.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Dumbbell
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 614.4c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M998.4 614.4c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M896 358.4c-8.974 0-17.587 1.562-25.6 4.403v-30.003c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v179.2h-409.6v-179.2c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v30.003c-8.013-2.842-16.626-4.403-25.6-4.403-42.347 0-76.8 34.451-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8 8.974 0 17.587-1.562 25.6-4.403v30.003c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8v-179.2h409.6v179.2c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8v-30.003c8.013 2.842 16.626 4.403 25.6 4.403 42.349 0 76.8-34.451 76.8-76.8v-204.8c0-42.349-34.451-76.8-76.8-76.8zM128 665.6c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8c0 14.115-11.485 25.6-25.6 25.6zM256 742.4c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v409.6zM819.2 742.4c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v409.6zM921.6 640c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Earth.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Earth.js
new file mode 100644
index 00000000..9da6e4fe
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Earth.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Earth
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962c-96.704 96.704-149.962 225.278-149.962 362.038s53.258 265.334 149.962 362.038c96.704 96.704 225.278 149.962 362.038 149.962s265.334-53.258 362.038-149.962c96.704-96.704 149.962-225.278 149.962-362.038s-53.258-265.334-149.962-362.038zM941.918 346.178c-9.989-17.987-35.050-26.512-67.853-37.661-35.182-11.957-47.608-48.122-61.994-89.997-12.49-36.35-25.398-73.874-56.069-97.238 83.898 52.584 149.733 131.406 185.915 224.896zM798.235 521.757c3.872 34.683 7.875 70.546-35.163 118.874-11.629 13.056-18.44 31.238-25.653 50.49-16.701 44.582-32.486 86.709-99.642 87.325-1.882-2.262-7.242-10.734-11.981-37.533-4.366-24.698-6.886-56.606-9.555-90.389-4.093-51.834-8.731-110.582-21.544-159.32-16.382-62.325-43.867-99.141-84.026-112.554-17.522-5.853-35.411-8.698-54.693-8.698-14.211 0-27.125 1.522-38.517 2.864-8.875 1.045-17.258 2.034-24.341 2.034 0 0-0.002 0-0.003 0-11.987 0-25.573 0-42.278-38.29-24.021-55.053-6.304-143.267 64.202-189.787 38.661-25.509 65.336-36.392 89.2-36.392 19.026 0 39.581 6.622 68.73 22.146 34.418 18.33 61.379 20.68 81.026 20.68 7.789 0 14.85-0.419 21.682-0.826 5.726-0.339 11.134-0.661 16.139-0.661 11.259 0 20.387 1.467 31.088 8.776 19.723 13.472 29.936 43.195 40.747 74.664 16.392 47.715 34.973 101.798 93.941 121.837 7.925 2.693 21.576 7.333 31.216 11.366-8.328 8.608-22.285 21.067-35.92 33.24-8.808 7.862-18.789 16.773-29.851 26.858-31.965 29.133-28.16 63.221-24.803 93.296zM51.25 508.070c5.52 0.992 11.493 2.141 17.605 3.446 28.776 6.141 42.235 11.686 48.117 14.798-2.706 5.277-8.187 13.056-11.81 18.195-12.669 17.976-28.435 40.349-22.437 64.984 4.046 16.618 0.632 37.032-5.248 55.883-16.994-48.005-26.277-99.624-26.277-153.378 0-1.314 0.038-2.618 0.050-3.93zM512 972.8c-175.379 0-328.173-98.494-406.014-243.062 13.422-25.554 38.314-82.054 26.68-131.547 0.806-4.97 9.248-16.95 14.349-24.186 13.874-19.688 31.141-44.189 18.35-70.152-8.976-18.222-32.957-30.534-80.181-41.17-10.939-2.464-21.594-4.47-30.65-6.019 27.424-228.090 222.107-405.464 457.466-405.464 80.776 0 156.749 20.918 222.83 57.582-16.33-7.134-31.154-8.266-43.014-8.266-6.523 0-12.957 0.382-19.176 0.752-6.085 0.362-12.374 0.734-18.645 0.734-14.542 0-32.682-1.742-56.958-14.67-37.056-19.734-64.808-28.155-92.795-28.155-34.635 0-69.744 13.414-117.397 44.856-41.197 27.181-72.229 68.779-87.381 117.133-14.779 47.166-13.2 95.418 4.448 135.867 20.824 47.728 48.336 69.013 89.203 69.014 0.003 0 0.003 0 0.006 0 10.090 0 19.923-1.158 30.333-2.386 10.482-1.235 21.32-2.512 32.525-2.512 13.869 0 26.094 1.926 38.472 6.061 22.488 7.512 39.082 32.701 50.728 77.008 11.648 44.31 16.098 100.638 20.021 150.334 3.274 41.454 6.366 80.61 13.176 110.126 4.136 17.923 9.494 31.538 16.379 41.621 10.283 15.058 25.032 23.35 41.526 23.35 45.269 0 81.429-14.594 107.47-43.374 21.659-23.934 32.722-53.466 41.613-77.194 5.245-14.003 10.67-28.482 15.941-34.402 58.219-65.373 52.203-119.258 47.813-158.603-3.226-28.888-3.285-39.123 8.408-49.781 10.864-9.904 20.741-18.722 29.454-26.499 18.568-16.576 31.984-28.554 41.397-38.83 6.464-7.058 21.603-23.584 17.395-44.28-0.037-0.184-0.088-0.358-0.126-0.539 17.558 48.701 27.154 101.174 27.154 155.851 0 254.086-206.714 460.8-460.8 460.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EarthLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EarthLock.js
new file mode 100644
index 00000000..c1e28b93
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EarthLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EarthLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.277-149.962-362.038-149.962-45.699 0-91.026 6.027-134.722 17.915-13.643 3.712-21.694 17.781-17.982 31.422 3.712 13.643 17.781 21.694 31.422 17.982 39.317-10.696 80.122-16.12 121.282-16.12 80.774 0 156.747 20.917 222.829 57.581-22.565-9.854-43.384-8.629-62.187-7.512-22.875 1.36-44.475 2.642-75.605-13.934-57.867-30.818-104.858-41.539-173.795-5.133-12.501 6.602-17.285 22.090-10.682 34.592 6.602 12.501 22.090 17.285 34.592 10.682 45.854-24.214 72.899-23.131 125.818 5.050 43.848 23.352 76.488 21.413 102.706 19.854 21.96-1.307 33.142-1.506 47.227 8.115 19.723 13.47 29.936 43.195 40.747 74.662 16.394 47.715 34.974 101.797 93.941 121.835 7.925 2.693 21.576 7.333 31.216 11.366-8.328 8.608-22.285 21.067-35.918 33.238-8.808 7.862-18.79 16.773-29.853 26.858-31.962 29.136-28.157 63.224-24.798 93.299 3.87 34.683 7.874 70.546-35.163 118.872-11.629 13.058-18.44 31.24-25.653 50.491-16.701 44.582-32.486 86.709-99.642 87.325-1.882-2.262-7.242-10.734-11.981-37.533-4.366-24.698-6.886-56.605-9.555-90.387-4.093-51.834-8.731-110.584-21.544-159.322-16.382-62.325-43.869-99.141-84.026-112.554-30.709-10.259-57.746-9.405-77.867-7.512-14.077 1.322-24.416 13.805-23.093 27.882 1.322 14.077 13.806 24.421 27.882 23.093 16.859-1.582 35.416-2.061 56.858 5.101 22.488 7.512 39.082 32.701 50.73 77.008 11.648 44.312 16.098 100.638 20.021 150.333 3.274 41.454 6.366 80.61 13.176 110.126 4.136 17.923 9.494 31.538 16.379 41.621 10.283 15.058 25.032 23.35 41.526 23.35 45.269 0 81.429-14.594 107.472-43.374 21.658-23.934 32.72-53.466 41.611-77.194 5.245-14.003 10.67-28.483 15.942-34.402 58.218-65.373 52.202-119.258 47.81-158.603-3.224-28.89-3.283-39.123 8.41-49.782 10.864-9.904 20.741-18.722 29.456-26.501 18.568-16.576 31.984-28.554 41.397-38.829 6.464-7.058 21.602-23.584 17.394-44.28-0.037-0.182-0.088-0.357-0.126-0.536 17.555 48.702 27.15 101.176 27.15 155.853 0 254.086-206.714 460.8-460.8 460.8-175.464 0-328.435-97.648-406.235-242.64 13.368-25.352 38.598-82.205 26.901-131.97 0.806-4.97 9.248-16.949 14.347-24.184 6.384-9.059 12.986-18.427 17.4-28.362 5.742-12.92-0.077-28.048-12.997-33.79-12.92-5.741-28.048 0.077-33.79 12.997-2.374 5.342-7.504 12.622-12.466 19.661-12.669 17.976-28.434 40.349-22.435 64.982 4.077 16.747 0.581 37.355-5.382 56.328-14.594-41.442-23.456-85.675-25.626-131.778-0.666-14.123-12.659-25.046-26.774-24.368-14.123 0.666-25.034 12.651-24.368 26.774 6.192 131.571 62.139 254.294 157.538 345.56 95.709 91.562 221.389 141.989 353.888 141.989 136.762 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038zM874.066 308.517c-35.181-11.957-47.606-48.122-61.994-89.997-12.49-36.352-25.4-73.878-56.074-97.242 83.899 52.582 149.734 131.405 185.918 224.896-9.989-17.984-35.050-26.51-67.851-37.658z' />
+            <path d='M307.2 158.003v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.347 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.453 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM179.2 51.2c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM307.2 384c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EasterEgg.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EasterEgg.js
new file mode 100644
index 00000000..798d4042
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EasterEgg.js
@@ -0,0 +1,17 @@
+// Icon: Linear.EasterEgg
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M358.4 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M867.010 363.096c-37.149-90.018-92.053-171.728-163.189-242.864-44.31-44.31-103.341-68.714-166.221-68.714s-121.912 24.403-166.222 68.714c-71.134 71.134-126.038 152.846-163.189 242.864-36.222 87.773-54.589 180.938-54.589 276.904 0 102.57 39.942 199.002 112.47 271.53s168.96 112.47 271.53 112.47 199.002-39.942 271.53-112.47 112.47-168.96 112.47-271.53c0-95.966-18.366-189.131-54.59-276.904zM811.701 801.098c-13.966-13.968-33.098-33.098-69.301-33.098s-55.334 19.13-69.301 33.099c-12.554 12.55-18.71 18.101-33.099 18.101s-20.546-5.55-33.099-18.101c-13.966-13.97-33.098-33.099-69.301-33.099s-55.333 19.13-69.302 33.099c-12.552 12.55-18.707 18.101-33.098 18.101s-20.546-5.55-33.099-18.101c-13.968-13.97-33.098-33.099-69.301-33.099s-55.334 19.13-69.302 33.099c-4.186 4.186-7.686 7.611-11.051 10.32-17.48-28.968-30.667-60.803-38.685-94.619h139.038c1.856 0.099 3.722 0.16 5.6 0.16v-0.16h148c1.856 0.099 3.722 0.16 5.6 0.16v-0.16h51.2v0.16c1.88 0 3.746-0.059 5.602-0.16h147.998v0.16c1.88 0 3.746-0.059 5.602-0.16h139.037c-8.019 33.816-21.205 65.65-38.685 94.619-3.366-2.71-6.866-6.136-11.053-10.322zM278.13 334.086l43.222 21.611c7.206 3.603 15.691 3.603 22.898 0l90.95-45.475 90.952 45.475c7.206 3.603 15.691 3.603 22.898 0l90.95-45.475 90.952 45.475c3.603 1.802 7.526 2.702 11.448 2.702s7.845-0.901 11.448-2.702l43.221-21.61c28.618 56.25 49.179 116.026 61.12 177.92l-641.208 0.146c11.938-61.947 32.51-121.773 61.149-178.067zM768 614.56c0 26.936-20.915 49.066-47.357 51.040h-68.728c8.686-15.037 13.685-32.461 13.685-51.040 0-18.69-5.056-36.208-13.837-51.306l65.037-0.016v0.12c28.232 0.002 51.2 22.97 51.2 51.202zM508.155 665.6c-26.442-1.974-47.355-24.104-47.355-51.040 0-28.232 22.968-51.2 51.2-51.2v-0.074l51.2-0.013v0.086c28.232 0 51.2 22.968 51.2 51.2 0 26.936-20.915 49.066-47.357 51.040h-58.888zM354.555 665.6c-26.442-1.974-47.355-24.104-47.355-51.040 0-28.232 22.968-51.2 51.2-51.2v-0.038l65.006-0.014c-8.762 15.085-13.806 32.586-13.806 51.253 0 18.579 4.998 36.003 13.685 51.040h-68.73zM204.8 640c0-25.768 1.464-51.347 4.342-76.645l60.645-0.014c-8.75 15.078-13.787 32.565-13.787 51.219 0 18.579 4.998 36.003 13.685 51.040h-63.909c-0.646-8.45-0.976-16.987-0.976-25.6zM805.515 665.6c8.686-15.037 13.685-32.461 13.685-51.040 0-18.702-5.064-36.234-13.856-51.341l60.696-0.014c2.89 25.349 4.36 50.976 4.36 76.795 0 8.613-0.33 17.15-0.974 25.6h-63.91zM407.582 156.435c34.638-34.64 80.814-53.717 130.018-53.717s95.376 19.077 130.018 53.717c40.648 40.65 75.618 85.261 104.514 132.877l-29.731 14.866-90.952-45.475c-7.206-3.603-15.691-3.603-22.898 0l-90.95 45.475-90.952-45.475c-7.206-3.603-15.691-3.603-22.898 0l-90.95 45.475-29.733-14.866c28.898-47.616 63.866-92.227 104.515-132.877zM537.6 972.8c-102.48 0-194.277-46.573-255.373-119.651 6.76-5.144 12.387-10.76 17.475-15.846 12.552-12.552 18.707-18.102 33.098-18.102s20.546 5.55 33.098 18.101c13.97 13.97 33.099 33.099 69.302 33.099s55.333-19.13 69.301-33.099c12.554-12.55 18.71-18.101 33.099-18.101s20.546 5.55 33.099 18.101c13.966 13.97 33.098 33.099 69.301 33.099s55.334-19.13 69.301-33.099c12.554-12.55 18.71-18.101 33.099-18.101s20.546 5.55 33.099 18.101c5.088 5.088 10.715 10.701 17.477 15.846-61.098 73.080-152.894 119.653-255.376 119.653z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg.js
new file mode 100644
index 00000000..16188618
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Egg
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-102.57 0-199-39.942-271.53-112.47s-112.47-168.96-112.47-271.53c0-95.966 18.366-189.131 54.589-276.904 37.149-90.018 92.054-171.73 163.189-242.864 44.31-44.31 103.342-68.714 166.222-68.714s121.91 24.403 166.221 68.714c71.136 71.134 126.040 152.846 163.189 242.864 36.224 87.773 54.59 180.938 54.59 276.904 0 102.57-39.942 199.002-112.47 271.53s-168.96 112.47-271.53 112.47zM486.4 102.718c-49.203 0-95.379 19.077-130.018 53.717-130.766 130.766-202.782 302.499-202.782 483.565 0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8c0-181.064-72.018-352.797-202.782-483.565-34.642-34.638-80.814-53.717-130.018-53.717z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg2.js
new file mode 100644
index 00000000..7cf80c11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Egg2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Egg2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.595-343.936-142.464s-142.464-214.014-142.464-343.936c0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c202.064 0 330.086 37.424 402.896 117.774 33.114 36.544 55.478 82.504 68.368 140.506 10.366 46.634 14.987 101.197 14.987 176.918 0 53.917 13.211 109.062 25.987 162.394 11.234 46.891 21.843 91.179 23.547 133.467 2.034 50.445-9.547 90.899-35.398 123.677-64.4 81.651-218.725 118.064-500.387 118.064zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c257.346 0 407.874-32.242 460.187-98.57 40.966-51.941 23.030-126.813 2.261-213.507-13.469-56.222-27.397-114.358-27.397-174.322 0-123.462-11.92-218.843-70.096-283.045-62.411-68.878-178.379-100.957-364.955-100.957z' />
+            <path d='M384 768c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4c0 127.043-103.357 230.4-230.4 230.4zM384 358.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M384 665.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c42.347 0 76.8-34.451 76.8-76.8 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 70.579-57.421 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eggs.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eggs.js
new file mode 100644
index 00000000..a78c5538
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eggs.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Eggs
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c14.115 0 25.6-11.485 25.6-25.6 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M281.6 512c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM281.6 204.8c-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128-57.421-128-128-128z' />
+            <path d='M691.2 768c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c14.115 0 25.6-11.485 25.6-25.6 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M691.2 870.4c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM691.2 563.2c-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128-57.421-128-128-128z' />
+            <path d='M978.458 510.078c-27.482-56.49-65.272-109.771-109.286-154.083-63.926-64.363-130.51-99.808-187.483-99.808-9.998 0-22.202 1.181-35.163 5.091 18.677-53.832 32.669-117.491-3.462-169.987-20.885-30.344-54.966-52.446-104.19-67.568-51.96-15.963-119.366-23.723-206.072-23.723-183.506 0-332.8 149.294-332.8 332.8 0 227.050 88.971 332.8 280 332.8 34.922 0 67.562-5.003 97.907-14.942-27.080 35.53-49.824 70.578-61.619 106.92-20.733 63.885-4.739 123.213 48.891 181.374 30.61 33.197 80.765 55.872 153.33 69.318 57.907 10.731 129.050 15.73 223.891 15.73 88.181 0 161.317-34.578 211.502-99.997 45.226-58.95 69.464-139.392 70.098-232.63 0.382-56.574-15.366-119.266-45.542-181.294zM108.57 552.509c-38.603-44.795-57.37-116.662-57.37-219.709 0-155.275 126.325-281.6 281.6-281.6 80.4 0 144.675 7.222 191.037 21.464 37.237 11.44 63.162 27.472 77.050 47.654 29.027 42.174 5.624 103.382-15.026 157.384-6.554 17.138-12.742 33.326-16.91 48.182-54.462 194.142-148.981 288.515-288.95 288.515-79.467 0-135.542-20.243-171.43-61.891zM742.4 972.8c-118.64 0-282.92-7.106-339.579-68.555-41.078-44.549-52.746-84.907-37.834-130.862 14.613-45.027 53.546-92.699 94.766-143.17 56.432-69.098 120.394-147.414 145.826-245.379 20.106-77.446 62.259-77.446 76.11-77.446 41.978 0 98.486 31.659 151.158 84.69 85.664 86.248 140.6 203.594 139.954 298.95-0.925 136.216-61.936 281.773-230.402 281.773z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EightBall.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EightBall.js
new file mode 100644
index 00000000..553b7329
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EightBall.js
@@ -0,0 +1,14 @@
+// Icon: Linear.8Ball
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 768c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.043 0 230.4 103.357 230.4 230.4s-103.357 230.4-230.4 230.4zM486.4 358.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M563.2 486.4c0-42.347-34.451-76.8-76.8-76.8-42.347 0-76.8 34.453-76.8 76.8 0 19.656 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2 0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8 0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.544 19.618-51.2zM486.4 460.8c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM486.4 614.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EjectCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EjectCircle.js
new file mode 100644
index 00000000..70acba56
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EjectCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.EjectCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M691.2 768h-409.6c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM307.2 716.8h358.4v-51.2h-358.4v51.2z' />
+            <path d='M691.232 563.2c-0.010-0.002-0.021-0.002-0.032 0h-409.6c-9.442 0-18.115-5.197-22.571-13.52-4.454-8.323-3.966-18.426 1.27-26.28l204.8-307.2c4.749-7.122 12.741-11.4 21.301-11.4s16.552 4.278 21.299 11.4l204.142 306.213c3.136 4.248 4.987 9.501 4.987 15.187 0.003 14.139-11.459 25.6-25.597 25.6zM329.434 512h313.931l-156.965-235.45-156.966 235.45z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ellipsis.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ellipsis.js
new file mode 100644
index 00000000..1415dc95
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ellipsis.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Ellipsis
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M844.8 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Engine.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Engine.js
new file mode 100644
index 00000000..c36cc082
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Engine.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Engine
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 307.2h-51.2c-14.139 0-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.461-25.6-25.6-25.6h-76.8v-25.6c0-14.138-11.461-25.6-25.6-25.6h-179.2v-51.2h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-307.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h128v51.2h-179.2c-14.138 0-25.6 11.462-25.6 25.6v25.6h-128c-14.138 0-25.6 11.462-25.6 25.6v179.2h-51.2v-128c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h51.2v179.2c0 14.139 11.462 25.6 25.6 25.6h142.997l94.902 94.901c4.8 4.802 11.312 7.499 18.101 7.499h409.6c14.139 0 25.6-11.461 25.6-25.6v-128h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6h51.2c42.349 0 76.8-34.451 76.8-76.8v-358.4c0-42.347-34.451-76.8-76.8-76.8zM972.8 742.4c0 14.115-11.485 25.6-25.6 25.6h-25.6v-76.8c0-14.139-11.461-25.6-25.6-25.6h-102.4c-14.139 0-25.6 11.461-25.6 25.6v128h-373.397l-94.902-94.901c-4.8-4.802-11.312-7.499-18.101-7.499h-128v-358.4h128c14.138 0 25.6-11.462 25.6-25.6v-25.6h358.4v25.6c0 14.138 11.461 25.6 25.6 25.6h76.8v76.8c0 14.138 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.462 25.6-25.6v-76.8h25.6c14.115 0 25.6 11.485 25.6 25.6v358.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter.js
new file mode 100644
index 00000000..175818a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Enter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-460.8c-42.347 0-76.8 34.453-76.8 76.8v153.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h387.278l-196.702 84.301c-35.088 15.038-62.576 56.723-62.576 94.899v486.4h-128c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v153.6c0 42.347 34.453 76.8 76.8 76.8h128v76.8c0 22.181 9.234 40.99 25.331 51.606 8.886 5.861 19.243 8.814 30.171 8.814 8.867 0 18.109-1.946 27.242-5.859l264.277-113.261c35.091-15.038 62.579-56.723 62.579-94.901v-614.4c0-42.347-34.451-76.8-76.8-76.8zM921.6 793.6c0 17.963-15.035 40.765-31.546 47.838l-264.277 113.261c-4.912 2.107-8.163 1.955-9.062 1.363-0.894-0.59-2.315-3.518-2.315-8.862v-614.4c0-17.962 15.035-40.763 31.546-47.838l273.043-117.019c1.672 3.4 2.611 7.221 2.611 11.258v614.4z' />
+            <path d='M427.701 468.299l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-322.197c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h322.197l-109.898 109.899c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter2.js
new file mode 100644
index 00000000..a64353c9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Enter2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Enter2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464z' />
+            <path d='M486.4 204.8c-14.138 0-25.6 11.462-25.6 25.6v245.397l-417.099-417.098c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l417.099 417.098h-245.397c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.138 0 25.6-11.461 25.6-25.6v-307.2c0-14.138-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown.js
new file mode 100644
index 00000000..3539ed91
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M658.101 596.299c-9.997-9.997-26.206-9.997-36.203 0l-109.898 109.898v-629.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v629.397l-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M793.6 1024h-614.4c-42.347 0-76.8-34.451-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h204.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown2.js
new file mode 100644
index 00000000..b989f733
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterDown2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterDown2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-51.2c0-42.349 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6h-256c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h256c42.349 0 76.8 34.451 76.8 76.8v51.2c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M760.499 596.301c-9.995-9.997-26.206-9.997-36.203 0l-212.296 212.294v-731.795c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v731.795l-212.298-212.294c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.995-9.997 26.206 0 36.203l256 256c5 4.997 11.55 7.496 18.102 7.496s13.102-2.499 18.102-7.501l256-256c9.997-9.995 9.997-26.203-0.003-36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterHorizontal.js
new file mode 100644
index 00000000..31af3ca2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterHorizontal.js
@@ -0,0 +1,15 @@
+// Icon: Linear.EnterHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 947.2v-256c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v256c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v256c0 42.349-34.453 76.8-76.8 76.8h-51.2c-42.349 0-76.8-34.451-76.8-76.8z' />
+            <path d='M409.6 384v-256c0-42.347 34.451-76.8 76.8-76.8h51.2c42.347 0 76.8 34.453 76.8 76.8v256c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-256c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v256c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6z' />
+            <path d='M734.901 709.301c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898h373.397c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-373.397l109.898-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-4.998 5-7.498 11.55-7.498 18.102s2.499 13.102 7.499 18.101l153.6 153.6c9.997 9.998 26.205 9.998 36.202 0z' />
+            <path d='M325.301 709.301l153.6-153.6c9.997-9.997 9.997-26.206 0-36.203l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0s-9.997 26.206 0 36.203l109.899 109.899h-373.397c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h373.397l-109.899 109.899c-4.998 4.998-7.498 11.549-7.498 18.101s2.499 13.102 7.499 18.101c9.997 9.998 26.205 9.998 36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft.js
new file mode 100644
index 00000000..4d36329b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M427.701 709.301c9.997-9.997 9.997-26.206 0-36.203l-109.898-109.898h629.397c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-629.397l109.899-109.899c9.997-9.997 9.997-26.206 0-36.203s-26.206-9.998-36.203 0l-153.6 153.6c-5 5-7.499 11.55-7.499 18.102s2.499 13.102 7.499 18.101l153.6 153.6c9.997 9.998 26.205 9.998 36.202 0z' />
+            <path d='M0 844.8v-614.4c0-42.347 34.451-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8v204.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 42.349-34.453 76.8-76.8 76.8h-512c-42.349 0-76.8-34.451-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft2.js
new file mode 100644
index 00000000..a10035ad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterLeft2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterLeft2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 947.2v-819.2c0-42.347 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.453 76.8 76.8v256c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-256c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-256c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v256c0 42.349-34.451 76.8-76.8 76.8h-51.2c-42.349 0-76.8-34.451-76.8-76.8z' />
+            <path d='M427.699 811.699c9.997-9.995 9.997-26.206 0-36.203l-212.294-212.296h731.795c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-731.795l212.294-212.298c9.997-9.998 9.997-26.206 0-36.205-9.995-9.997-26.206-9.997-36.203 0l-256 256c-4.997 5-7.496 11.55-7.496 18.102s2.499 13.102 7.501 18.102l256 256c9.995 9.997 26.203 9.997 36.198-0.003z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight.js
new file mode 100644
index 00000000..4fa6df11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M545.099 365.899c-9.997 9.997-9.997 26.206 0 36.203l109.898 109.898h-629.397c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h629.397l-109.899 109.899c-9.997 9.997-9.997 26.206 0 36.203s26.206 9.998 36.203 0l153.6-153.6c5-5 7.499-11.55 7.499-18.102s-2.499-13.102-7.499-18.101l-153.6-153.6c-9.997-9.998-26.205-9.998-36.202 0z' />
+            <path d='M972.8 230.4v614.4c0 42.347-34.451 76.8-76.8 76.8h-512c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-204.8c0-42.349 34.453-76.8 76.8-76.8h512c42.349 0 76.8 34.451 76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight2.js
new file mode 100644
index 00000000..effd76c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterRight2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterRight2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 128v819.2c0 42.347-34.451 76.8-76.8 76.8h-51.2c-42.349 0-76.8-34.453-76.8-76.8v-256c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v256c0 14.139-11.461 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-256c0-42.349 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.451 76.8 76.8z' />
+            <path d='M596.301 263.501c-9.997 9.995-9.997 26.206 0 36.203l212.294 212.296h-731.795c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h731.795l-212.294 212.298c-9.997 9.998-9.997 26.206 0 36.205 9.995 9.997 26.206 9.997 36.203 0l256-256c4.997-5 7.496-11.55 7.496-18.102s-2.499-13.102-7.501-18.102l-256-256c-9.995-9.997-26.203-9.997-36.198 0.003z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp.js
new file mode 100644
index 00000000..74a793a6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M658.101 478.901c-9.997 9.997-26.206 9.997-36.203 0l-109.898-109.898v629.397c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-629.397l-109.899 109.899c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.205 0 36.202z' />
+            <path d='M793.6 51.2h-614.4c-42.347 0-76.8 34.451-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h204.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h614.4c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c42.349 0 76.8-34.453 76.8-76.8v-512c0-42.349-34.451-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp2.js
new file mode 100644
index 00000000..2bd518d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterUp2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.EnterUp2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v51.2c0 42.349 34.453 76.8 76.8 76.8h256c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-256c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-256c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c42.349 0 76.8-34.451 76.8-76.8v-51.2c0-42.349-34.451-76.8-76.8-76.8z' />
+            <path d='M760.499 478.899c-9.995 9.997-26.206 9.997-36.203 0l-212.296-212.294v731.795c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-731.795l-212.298 212.294c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.995-9.997-26.206 0-36.203l256-256c5-4.997 11.55-7.496 18.102-7.496s13.102 2.499 18.102 7.501l256 256c9.997 9.995 9.997 26.203-0.003 36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterVertical.js
new file mode 100644
index 00000000..01558c8a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnterVertical.js
@@ -0,0 +1,15 @@
+// Icon: Linear.EnterVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 614.4h-256c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h256c14.115 0 25.6-11.485 25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6h-256c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h256c42.349 0 76.8 34.453 76.8 76.8v51.2c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M332.8 614.4h-256c-42.347 0-76.8-34.451-76.8-76.8v-51.2c0-42.347 34.453-76.8 76.8-76.8h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-256c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M658.101 289.099c-9.997-9.998-26.206-9.998-36.203 0l-109.898 109.898v-373.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v373.397l-109.899-109.898c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M658.101 698.699l-153.6-153.6c-9.997-9.997-26.206-9.997-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l109.899-109.899v373.397c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-373.397l109.899 109.899c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Envelope.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Envelope.js
new file mode 100644
index 00000000..7a25ded2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Envelope.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Envelope
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 307.2h-819.2c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-42.347-34.451-76.8-76.8-76.8zM896 358.4c1.514 0 2.99 0.158 4.434 0.411l-385.632 257.090c-14.862 9.907-41.938 9.907-56.802 0l-385.634-257.090c1.443-0.253 2.92-0.411 4.434-0.411h819.2zM896 870.4h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-438.566l378.4 252.267c15.925 10.618 36.363 15.925 56.8 15.925s40.877-5.307 56.802-15.925l378.398-252.267v438.566c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnvelopeOpen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnvelopeOpen.js
new file mode 100644
index 00000000..8b5b969e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EnvelopeOpen.js
@@ -0,0 +1,12 @@
+// Icon: Linear.EnvelopeOpen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M916.861 284.258l-373.424-228.203c-15.584-9.525-35.842-14.77-57.037-14.77s-41.453 5.245-57.037 14.77l-373.424 228.203c-31.891 19.488-55.939 62.37-55.939 99.742v460.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-37.373-24.048-80.253-55.939-99.742zM82.637 327.946l373.424-228.203c7.547-4.611 18.605-7.258 30.339-7.258s22.792 2.645 30.339 7.258l373.424 228.202c7.947 4.858 15.547 13.605 21.286 23.522l-396.648 264.435c-14.862 9.907-41.938 9.907-56.802 0l-396.648-264.434c5.739-9.917 13.338-18.666 21.285-23.522zM896 870.4h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-438.566l378.4 252.266c15.925 10.618 36.363 15.926 56.8 15.926s40.877-5.309 56.802-15.926l378.398-252.266v438.566c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Equalizer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Equalizer.js
new file mode 100644
index 00000000..4e7fc1bc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Equalizer.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Equalizer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M128 307.2c-14.138 0-25.6-11.462-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 512h-102.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM76.8 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 512c-14.138 0-25.6-11.462-25.6-25.6v-460.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v460.8c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM435.2 614.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M844.8 1024c-14.139 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v512c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 204.8c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-102.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM793.6 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eraser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eraser.js
new file mode 100644
index 00000000..9b43ea24
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eraser.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Eraser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1009.411 353.947c-1.317-7.912-3.949-15.614-7.917-22.846-5.862-10.678-14.136-19.464-24.146-25.901-0.083-0.056-0.17-0.107-0.253-0.163-0.536-0.342-1.074-0.685-1.621-1.014-4.899-3.040-10.494-5.547-16.731-7.421-1.253-0.381-2.522-0.734-3.806-1.056l-310.258-77.565c-8.272-2.067-17.4-3.117-27.13-3.117-30.661 0-63.979 10.504-84.883 26.76l-379.97 295.534c-26.094 20.296-54.722 60.76-65.174 92.118l-70.019 210.056c-6.587 19.763-4.811 40.49 5 58.366 9.813 17.875 26.347 30.501 46.557 35.555l310.259 77.566c8.27 2.067 17.4 3.115 27.13 3.115 24.293 0 50.227-6.61 70.357-17.434 4.678-2.33 9.506-5.424 14.525-9.328l379.97-295.531c26.094-20.298 54.722-60.76 65.174-92.118l70.019-210.056c4.694-14.082 5.659-25.811 2.917-35.522zM617.55 266.066c5.47 0 10.558 0.549 14.712 1.589l308.906 77.226-378.869 294.678c-12.096 9.408-34.074 15.978-53.448 15.976-5.47 0-10.558-0.549-14.712-1.587l-308.909-77.229 378.87-294.677c12.094-9.406 34.074-15.976 53.45-15.976zM67.389 873.059c-2.872-5.23-3.338-11.458-1.312-17.536l70.019-210.058c4.712-14.138 20.901-23.034 35.365-19.414 0 0 0 0 0.002 0l310.259 77.566c6.216 1.554 11.221 5.291 14.093 10.52 2.87 5.232 3.336 11.459 1.31 17.538l-70.021 210.058c-4.714 14.138-20.917 23.030-35.366 19.414l-52.73-13.182c-0.002 0-0.005-0.002-0.008-0.002l-257.52-64.382c-6.216-1.552-11.221-5.29-14.091-10.522zM839.867 651.227l-353.642 275.054 59.47-178.414c7.32-21.958 29.766-53.685 48.037-67.894l353.643-275.056-59.472 178.416c-7.318 21.957-29.766 53.683-48.037 67.894z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Escape.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Escape.js
new file mode 100644
index 00000000..50dad9a8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Escape.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Escape
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464z' />
+            <path d='M504.501 519.499l-417.098-417.099h245.397c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-307.2c-14.138 0-25.6 11.462-25.6 25.6v307.2c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-245.397l417.099 417.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Evil.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Evil.js
new file mode 100644
index 00000000..44a0b209
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Evil.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Evil
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M402.091 350.901c1.901-1.899 3.539-4.118 4.806-6.653 6.323-12.645 1.197-28.022-11.45-34.346l-102.4-51.2c-12.643-6.323-28.022-1.197-34.346 11.45-6.323 12.645-1.197 28.022 11.45 34.346l25.094 12.547c-23.398 13.176-39.246 38.243-39.246 66.955 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-11.845-2.699-23.070-7.509-33.099zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M677.554 317.045l25.096-12.547c12.645-6.323 17.771-21.701 11.448-34.346-6.32-12.645-21.698-17.768-34.346-11.45l-102.4 51.2c-12.645 6.323-17.771 21.701-11.448 34.346 1.267 2.534 2.906 4.754 4.806 6.653-4.81 10.029-7.51 21.254-7.51 33.099 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-28.712-15.848-53.779-39.246-66.955zM640 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M901.8 284.267c19.349-28.997 36.192-76.493 51.194-144.176 12.91-58.254 19.341-109.176 19.61-111.315 1.422-11.381-4.899-22.32-15.472-26.77-10.57-4.448-22.813-1.325-29.958 7.65-25.107 31.533-96.613 112.89-147.459 139.87-84.019-63.781-186.005-98.326-293.314-98.326s-209.293 34.546-293.314 98.323c-50.787-26.97-122.33-108.333-147.459-139.869-7.144-8.973-19.386-12.098-29.958-7.65-10.571 4.45-16.894 15.389-15.47 26.77 0.267 2.139 6.698 53.062 19.608 111.315 15.002 67.682 31.846 115.178 51.194 144.176-46.253 75.53-71 162.525-71 253.334 0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936 0-90.81-24.747-177.805-71-253.333zM907.224 109.59c-9.75 47.443-22.85 96.318-37.837 128.075-12.042-15.314-25.061-30.014-39.050-44.003-3.133-3.133-6.306-6.206-9.507-9.242 29.824-19.568 60.672-48.213 86.394-74.83zM65.595 109.61c25.717 26.613 56.557 55.248 86.376 74.811-3.2 3.035-6.374 6.109-9.507 9.242-13.987 13.987-27.003 28.685-39.045 43.997-14.973-31.747-28.070-80.611-37.824-128.050zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2z' />
+            <path d='M486.4 819.2c-45.043 0-88.091-10.323-127.949-30.685-37.994-19.41-71.653-47.744-97.338-81.939-8.491-11.304-6.211-27.352 5.094-35.843 11.304-8.493 27.352-6.211 35.843 5.094 44 58.578 111.194 92.173 184.349 92.173s140.346-33.595 184.346-92.171c8.493-11.304 24.541-13.582 35.843-5.094 11.304 8.491 13.584 24.539 5.094 35.843-25.686 34.195-59.344 62.53-97.338 81.938-39.854 20.362-82.904 30.685-127.946 30.685z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclamation.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclamation.js
new file mode 100644
index 00000000..cfbbebe6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclamation.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Exclamation
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 870.4c-14.138 0-25.6-11.461-25.6-25.6v-768c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v768c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclude.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclude.js
new file mode 100644
index 00000000..d2707f68
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exclude.js
@@ -0,0 +1,35 @@
+// Icon: Linear.Exclude
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M564 410.4h-52.8v-52.8h52.8v52.8zM512.8 408.8h49.6v-49.6h-49.6v49.6z' />
+            <path d='M409.6 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M461.6 410.4h-52.8v-52.8h52.8v52.8zM410.4 408.8h49.6v-49.6h-49.6v49.6z' />
+            <path d='M307.2 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M359.2 410.4h-52.8v-52.8h52.8v52.8zM308 408.8h49.6v-49.6h-49.6v49.6z' />
+            <path d='M307.2 460.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M359.2 512.8h-52.8v-52.8h52.8v52.8zM308 511.2h49.6v-49.6h-49.6v49.6z' />
+            <path d='M307.2 563.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M359.2 615.2h-52.8v-52.8h52.8v52.8zM308 613.6h49.6v-49.6h-49.6v49.6z' />
+            <path d='M409.6 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M461.6 717.6h-52.8v-52.8h52.8v52.8zM410.4 716h49.6v-49.6h-49.6v49.6z' />
+            <path d='M512 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M564 717.6h-52.8v-52.8h52.8v52.8zM512.8 716h49.6v-49.6h-49.6v49.6z' />
+            <path d='M614.4 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M666.4 717.6h-52.8v-52.8h52.8v52.8zM615.2 716h49.6v-49.6h-49.6v49.6z' />
+            <path d='M614.4 563.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M666.4 615.2h-52.8v-52.8h52.8v52.8zM615.2 613.6h49.6v-49.6h-49.6v49.6z' />
+            <path d='M614.4 460.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M666.4 512.8h-52.8v-52.8h52.8v52.8zM615.2 511.2h49.6v-49.6h-49.6v49.6z' />
+            <path d='M614.4 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M76.8 665.6c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v179.2h51.2v-179.2c0-42.347-34.453-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h179.2v-51.2h-179.2z' />
+            <path d='M307.2 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M896 358.4h-179.2v51.2h179.2c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-179.2h-51.2v179.2c0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exit.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exit.js
new file mode 100644
index 00000000..ea1a62b2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Exit.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Exit
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 409.6c14.139 0 25.6-11.462 25.6-25.6v-204.8c0-42.347-34.451-76.8-76.8-76.8h-460.8c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 38.178 27.488 79.862 62.576 94.899l264.278 113.262c9.134 3.915 18.373 5.859 27.24 5.859 10.926-0.002 21.288-2.955 30.173-8.814 16.099-10.616 25.333-29.426 25.333-51.606v-76.8h128c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v204.8c0 14.115-11.485 25.6-25.6 25.6h-128v-486.4c0-38.176-27.488-79.861-62.576-94.899l-196.702-84.301h387.278c14.115 0 25.6 11.485 25.6 25.6v204.8c0 14.138 11.461 25.6 25.6 25.6zM326.854 284.962c16.51 7.075 31.546 29.877 31.546 47.838v614.4c0 5.344-1.421 8.272-2.317 8.862-0.898 0.589-4.15 0.742-9.061-1.362l-264.278-113.262c-16.509-7.074-31.544-29.875-31.544-47.838v-614.4c0-4.037 0.939-7.859 2.611-11.258l273.043 117.019z' />
+            <path d='M939.701 468.299l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-322.197c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h322.197l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown.js
new file mode 100644
index 00000000..343aa120
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 0h-614.4c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h204.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h614.4c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M658.099 837.301l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203s26.206-9.998 36.203 0l109.901 109.899v-578.197c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v578.197l109.901-109.898c4.997-5 11.547-7.499 18.099-7.499s13.102 2.499 18.099 7.499c10 9.997 10 26.205 0 36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown2.js
new file mode 100644
index 00000000..b0f157da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitDown2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitDown2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v51.2c0 42.349 34.453 76.8 76.8 76.8h307.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-307.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h307.2c42.349 0 76.8-34.451 76.8-76.8v-51.2c0-42.349-34.451-76.8-76.8-76.8z' />
+            <path d='M760.501 698.699c-9.997-9.997-26.206-9.997-36.203 0l-212.298 212.296v-731.795c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v731.795l-212.298-212.296c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l256 256c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l256-256c9.997-9.997 9.997-26.205-0.002-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft.js
new file mode 100644
index 00000000..9480634d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 230.4v614.4c0 42.347-34.453 76.8-76.8 76.8h-512c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-204.8c0-42.347 34.453-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8z' />
+            <path d='M186.699 365.901l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c9.997 9.998 26.206 9.998 36.203 0s9.998-26.206 0-36.203l-109.899-109.901h578.197c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-578.197l109.898-109.901c5-4.997 7.499-11.547 7.499-18.099s-2.499-13.102-7.499-18.099c-9.997-10-26.205-10-36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft2.js
new file mode 100644
index 00000000..15793835
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitLeft2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitLeft2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.8 128v819.2c0 42.347-34.451 76.8-76.8 76.8h-51.2c-42.349 0-76.8-34.453-76.8-76.8v-307.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-307.2c0-42.349 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.451 76.8 76.8z' />
+            <path d='M325.301 263.499c9.997 9.997 9.997 26.206 0 36.203l-212.296 212.298h731.795c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-731.795l212.296 212.298c9.997 9.998 9.997 26.206 0 36.205-9.997 9.997-26.206 9.997-36.203 0l-256-256c-4.998-5-7.498-11.55-7.498-18.102s2.499-13.102 7.499-18.102l256-256c9.997-9.997 26.205-9.997 36.202 0.002z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight.js
new file mode 100644
index 00000000..af35de98
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 844.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8v204.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 42.347-34.453 76.8-76.8 76.8h-512c-42.347 0-76.8-34.453-76.8-76.8z' />
+            <path d='M837.301 709.299l153.6-153.6c9.998-9.997 9.998-26.206 0-36.203l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.901h-578.197c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h578.197l-109.898 109.901c-5 4.997-7.499 11.547-7.499 18.099s2.499 13.102 7.499 18.099c9.997 10 26.205 10 36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight2.js
new file mode 100644
index 00000000..c393bbe8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitRight2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitRight2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 947.2v-819.2c0-42.347 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.453 76.8 76.8v307.2c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 42.349-34.451 76.8-76.8 76.8h-51.2c-42.349 0-76.8-34.451-76.8-76.8z' />
+            <path d='M698.699 811.701c-9.997-9.997-9.997-26.206 0-36.203l212.296-212.298h-731.795c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h731.795l-212.296-212.298c-9.997-9.998-9.997-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203 0l256 256c4.998 5 7.498 11.55 7.498 18.102s-2.499 13.102-7.499 18.102l-256 256c-9.997 9.997-26.205 9.997-36.202-0.002z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp.js
new file mode 100644
index 00000000..cba200fc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 1024h-614.4c-42.347 0-76.8-34.453-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h204.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-204.8c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c42.347 0 76.8 34.453 76.8 76.8v512c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M658.099 186.699l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.901-109.899v578.197c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-578.197l109.901 109.898c4.997 5 11.547 7.499 18.099 7.499s13.102-2.499 18.099-7.499c10-9.997 10-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp2.js
new file mode 100644
index 00000000..edd561e9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ExitUp2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ExitUp2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 972.8h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-51.2c0-42.349 34.453-76.8 76.8-76.8h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-307.2c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6h-307.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h307.2c42.349 0 76.8 34.451 76.8 76.8v51.2c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M760.501 325.301c-9.997 9.997-26.206 9.997-36.203 0l-212.298-212.296v731.795c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-731.795l-212.298 212.296c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203l256-256c5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.102 7.499l256 256c9.997 9.997 9.997 26.205-0.002 36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand.js
new file mode 100644
index 00000000..dce5d95d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Expand
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M402.102 365.898l-314.698-314.698h194.195c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-256c-14.138 0-25.6 11.462-25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-194.195l314.698 314.698c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205z' />
+            <path d='M998.4 0h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h194.197l-314.696 314.698c-10 9.998-10 26.206 0 36.205 4.997 4.998 11.547 7.498 18.099 7.498s13.102-2.499 18.099-7.498l314.701-314.699v194.197c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M402.102 621.901c-9.998-9.997-26.206-9.997-36.205 0l-314.698 314.696v-194.197c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v256c0 14.139 11.462 25.6 25.6 25.6h256c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-194.197l314.699-314.701c9.997-9.995 9.997-26.203-0-36.198z' />
+            <path d='M998.4 716.8c-14.139 0-25.6 11.461-25.6 25.6v194.197l-314.701-314.696c-9.995-9.997-26.206-9.997-36.203 0-9.997 9.995-9.997 26.206 0 36.203l314.701 314.696h-194.197c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h256c14.139 0 25.6-11.461 25.6-25.6v-256c0-14.139-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand2.js
new file mode 100644
index 00000000..bda79880
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Expand2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 0h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h194.197l-314.696 314.698c-10 9.998-10 26.206 0 36.205 4.997 4.998 11.547 7.498 18.099 7.498s13.102-2.499 18.099-7.498l314.701-314.699v194.197c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M402.102 621.901c-9.998-9.997-26.206-9.997-36.205 0l-314.698 314.696v-194.197c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v256c0 14.139 11.462 25.6 25.6 25.6h256c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-194.197l314.699-314.701c9.997-9.995 9.997-26.203-0-36.198z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand3.js
new file mode 100644
index 00000000..88db0003
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand3.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Expand3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 921.6h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v614.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 204.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M606.901 340.298l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205 9.998 9.997 26.206 9.997 36.205 0l58.699-58.699v117.397c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-117.397l58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.498c9.998-9.998 9.998-26.206 0-36.205z' />
+            <path d='M606.901 698.699c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.696v-117.395c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v117.395l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205-0.002-36.202z' />
+            <path d='M888.501 519.499l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l58.698 58.698h-117.395c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h117.395l-58.698 58.699c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M281.6 512h-117.397l58.699-58.699c9.997-9.997 9.997-26.206 0-36.203s-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-58.699-58.698h117.397c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand4.js
new file mode 100644
index 00000000..6980454d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Expand4.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Expand4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 921.6h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v614.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 204.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M844.8 256h-153.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h91.797l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l109.899-109.898v91.797c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M281.6 768h-91.797l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.203 0l-109.899 109.899v-91.797c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v153.6c0 14.139 11.462 25.6 25.6 25.6h153.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eye.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eye.js
new file mode 100644
index 00000000..91174964
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Eye.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Eye
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.429 520.474c-2.429-2.698-60.515-66.826-151.349-131.706-53.587-38.277-107.499-68.826-160.234-90.8-66.837-27.848-132.056-41.968-193.846-41.968s-127.010 14.12-193.846 41.97c-52.736 21.973-106.646 52.523-160.234 90.8-90.832 64.878-148.92 129.006-151.349 131.704-8.763 9.736-8.763 24.515 0 34.251 2.429 2.699 60.517 66.827 151.349 131.707 53.587 38.277 107.498 68.827 160.234 90.8 66.837 27.848 132.056 41.968 193.846 41.968s127.010-14.12 193.846-41.968c52.734-21.973 106.645-52.523 160.234-90.8 90.834-64.88 148.92-129.008 151.349-131.706 8.762-9.736 8.762-24.517 0-34.253zM643.789 329.643c46.458 39.074 73.011 95.923 73.011 156.757 0 112.926-91.874 204.8-204.8 204.8-112.928 0-204.8-91.874-204.8-204.8 0-60.835 26.554-117.685 73.014-156.757 42.107-13.744 86.602-22.443 131.786-22.443 45.186 0 89.682 8.699 131.789 22.443zM835.418 645.413c-78.488 55.925-198.309 122.587-323.418 122.587s-244.93-66.662-323.416-122.587c-59.24-42.21-104.574-84.89-127.458-107.813 22.888-22.928 68.222-65.606 127.458-107.813 27.13-19.331 59.2-39.942 94.72-58.643-17.766 35.224-27.304 74.52-27.304 115.256 0 141.16 114.842 256 256 256 141.16 0 256-114.84 256-256 0-40.734-9.538-80.032-27.301-115.256 35.517 18.701 67.589 39.312 94.718 58.643 59.238 42.21 104.573 84.89 127.456 107.813-22.888 22.928-68.222 65.606-127.456 107.813z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeCrossed.js
new file mode 100644
index 00000000..fa1a829d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.EyeCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.429 520.474c-2.429-2.698-60.515-66.826-151.349-131.706-30.728-21.949-61.562-41.341-92.218-58.048l88.301-81.509c10.389-9.59 11.037-25.786 1.446-36.174-9.59-10.39-25.786-11.035-36.174-1.446l-102.555 94.666c-6.36-2.883-12.704-5.65-19.034-8.286-66.837-27.85-132.056-41.97-193.846-41.97s-127.010 14.12-193.846 41.97c-52.736 21.973-106.646 52.523-160.234 90.8-90.832 64.878-148.92 129.006-151.349 131.704-8.763 9.736-8.763 24.515 0 34.251 2.429 2.699 60.517 66.827 151.349 131.707 30.728 21.949 61.56 41.342 92.218 58.048l-88.301 81.509c-10.389 9.59-11.037 25.786-1.446 36.174 5.046 5.467 11.922 8.235 18.818 8.235 6.208 0 12.435-2.245 17.358-6.789l102.555-94.667c6.36 2.883 12.706 5.65 19.034 8.288 66.835 27.85 132.054 41.97 193.845 41.97s127.010-14.12 193.846-41.968c52.734-21.973 106.645-52.523 160.234-90.8 90.834-64.88 148.92-129.008 151.349-131.706 8.762-9.736 8.762-24.517 0-34.253zM716.8 486.4c0 112.926-91.872 204.8-204.8 204.8-36.384 0-70.573-9.549-100.218-26.253l286.294-264.272c12.203 26.486 18.723 55.614 18.723 85.725zM643.787 329.643c9.774 8.221 18.662 17.234 26.613 26.901l-300.397 277.29c-38.691-37.277-62.803-89.59-62.803-147.434 0-60.835 26.552-117.683 73.013-156.757 42.109-13.744 86.602-22.443 131.787-22.443s89.68 8.699 131.787 22.443zM188.584 645.413c-59.24-42.21-104.574-84.89-127.458-107.813 22.888-22.928 68.222-65.606 127.458-107.813 27.13-19.331 59.2-39.942 94.72-58.643-17.766 35.222-27.304 74.52-27.304 115.256 0 71.224 29.248 135.738 76.35 182.19l-42.248 38.997c-38.229-19.614-72.669-41.619-101.518-62.174zM835.418 645.413c-78.488 55.925-198.309 122.587-323.418 122.587-59.717 0-118.224-15.194-171.61-37.152l32.275-29.792c40.125 26.134 87.984 41.344 139.334 41.344 141.158 0 256-114.84 256-256 0-40.734-9.538-80.032-27.301-115.256 35.518 18.701 67.589 39.312 94.718 58.643 59.238 42.21 104.573 84.89 127.456 107.813-22.888 22.928-68.222 65.606-127.456 107.813z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeDropper.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeDropper.js
new file mode 100644
index 00000000..f3281949
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeDropper.js
@@ -0,0 +1,12 @@
+// Icon: Linear.EyeDropper
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.8 203.514c0-40.685-15.843-78.934-44.613-107.701-28.766-28.77-67.018-44.613-107.701-44.613-40.686 0-78.934 15.843-107.701 44.613l-175.186 175.184-33.099-33.099c-9.997-9.998-26.206-9.998-36.203 0s-9.998 26.206 0 36.203l58.699 58.699-364.298 364.301c-19.896 19.896-31.699 46.294-33.693 73.886-44.626 11.040-77.806 51.424-77.806 99.413 0 56.464 45.936 102.4 102.4 102.4 47.989 0 88.373-33.181 99.414-77.806 27.59-1.995 53.994-13.798 73.886-33.694l364.299-364.296 58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-33.098-33.098 175.184-175.184c28.77-28.768 44.613-67.018 44.613-107.702zM290.699 825.101c-14.685 14.683-35.722 21.483-56.264 18.182-7.51-1.205-15.168 0.992-20.898 5.995-5.73 5.005-8.936 12.299-8.752 19.901 0.010 0.406 0.014 0.813 0.014 1.221 0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2 22.968-51.2 51.2-51.2c0.419 0 0.837 0.005 1.254 0.014 7.603 0.147 14.883-3.035 19.88-8.766 4.997-5.728 7.189-13.379 5.984-20.888-3.298-20.544 3.501-41.574 18.184-56.261l364.298-364.296 91.797 91.797-364.298 364.301zM891.984 275.013l-175.184 175.184-142.997-142.997 175.187-175.186c19.094-19.096 44.486-29.614 71.496-29.614 27.008 0 52.4 10.518 71.499 29.616s29.616 44.49 29.616 71.498-10.518 52.4-29.618 71.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeMinus.js
new file mode 100644
index 00000000..302d3c26
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyeMinus.js
@@ -0,0 +1,14 @@
+// Icon: Linear.EyeMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.429 469.274c-2.429-2.698-60.515-66.826-151.349-131.706-53.587-38.277-107.499-68.826-160.234-90.8-13.496-5.622-26.92-10.658-40.269-15.158-0.963-0.387-1.942-0.706-2.933-0.97-51.736-17.136-102.245-25.84-150.645-25.84-48.405 0-98.92 8.706-150.662 25.848-0.979 0.262-1.949 0.576-2.901 0.958-13.354 4.501-26.784 9.538-40.283 15.163-52.736 21.973-106.646 52.522-160.234 90.8-90.832 64.878-148.92 129.006-151.349 131.704-8.763 9.736-8.763 24.515 0 34.251 2.269 2.522 56.571 62.482 142.234 125.118 50.494 36.92 101.458 67.078 151.475 89.634 63.312 28.55 125.371 44.978 184.454 48.829 0.566 0.037 1.13 0.056 1.69 0.056 13.379 0 24.638-10.395 25.522-23.938 0.92-14.107-9.773-26.291-23.882-27.21-120.355-7.843-234.006-73.966-308.157-128.054-54.976-40.102-97.026-79.76-118.784-101.558 22.886-22.926 68.219-65.603 127.459-107.814 27.13-19.331 59.2-39.942 94.72-58.643-17.765 35.224-27.302 74.52-27.302 115.256 0 63.414 23.363 124.262 65.784 171.331 42.099 46.71 99.562 76.227 161.802 83.107 0.957 0.104 1.904 0.157 2.845 0.157 12.877 0 23.966-9.693 25.414-22.789 1.554-14.051-8.579-26.702-22.632-28.258-103.765-11.472-182.013-98.979-182.013-203.549 0-60.835 26.554-117.685 73.014-156.757 42.107-13.744 86.602-22.443 131.786-22.443 45.186 0 89.682 8.699 131.789 22.443 46.458 39.074 73.011 95.923 73.011 156.757 0 15.378-1.706 30.698-5.074 45.534-3.128 13.789 5.514 27.501 19.301 30.63 1.906 0.434 3.811 0.64 5.688 0.64 11.691 0 22.246-8.061 24.942-19.941 4.208-18.549 6.342-37.68 6.342-56.864 0-40.734-9.538-80.032-27.301-115.256 35.517 18.701 67.589 39.312 94.718 58.643 59.25 42.218 104.589 84.904 127.469 107.826-8.226 8.25-19.338 19.040-32.915 31.398-10.456 9.517-11.218 25.707-1.701 36.165 9.515 10.454 25.709 11.218 36.165 1.701 33.123-30.149 52.2-51.267 52.995-52.15 8.76-9.736 8.76-24.517-0.002-34.253z' />
+            <path d='M896 819.2h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyePlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyePlus.js
new file mode 100644
index 00000000..a306030e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/EyePlus.js
@@ -0,0 +1,14 @@
+// Icon: Linear.EyePlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.429 469.274c-2.429-2.698-60.515-66.826-151.349-131.706-53.587-38.277-107.499-68.826-160.234-90.8-13.496-5.622-26.92-10.658-40.269-15.158-0.963-0.387-1.942-0.706-2.933-0.97-51.736-17.136-102.245-25.84-150.645-25.84-48.405 0-98.92 8.706-150.662 25.848-0.979 0.262-1.949 0.576-2.901 0.958-13.354 4.501-26.784 9.538-40.283 15.163-52.736 21.973-106.646 52.522-160.234 90.8-90.832 64.878-148.92 129.006-151.349 131.704-8.763 9.736-8.763 24.515 0 34.251 2.269 2.522 56.571 62.482 142.234 125.118 50.494 36.92 101.458 67.078 151.475 89.634 63.312 28.55 125.371 44.978 184.454 48.829 0.566 0.037 1.13 0.056 1.69 0.056 13.379 0 24.638-10.395 25.522-23.938 0.92-14.107-9.773-26.291-23.882-27.21-120.355-7.843-234.006-73.966-308.157-128.054-54.976-40.102-97.026-79.76-118.784-101.558 22.886-22.926 68.219-65.603 127.459-107.814 27.13-19.331 59.2-39.942 94.72-58.643-17.765 35.224-27.302 74.52-27.302 115.256 0 63.414 23.363 124.262 65.784 171.331 42.099 46.71 99.562 76.227 161.802 83.107 0.957 0.104 1.904 0.157 2.845 0.157 12.877 0 23.966-9.693 25.414-22.789 1.554-14.051-8.579-26.702-22.632-28.258-103.765-11.472-182.013-98.979-182.013-203.549 0-60.835 26.554-117.685 73.014-156.757 42.107-13.744 86.602-22.443 131.786-22.443 45.186 0 89.682 8.699 131.789 22.443 46.458 39.074 73.011 95.923 73.011 156.757 0 15.378-1.706 30.698-5.074 45.534-3.128 13.789 5.514 27.501 19.301 30.63 1.906 0.434 3.811 0.64 5.688 0.64 11.691 0 22.246-8.061 24.942-19.941 4.208-18.549 6.342-37.68 6.342-56.864 0-40.734-9.538-80.032-27.301-115.256 35.517 18.701 67.589 39.312 94.718 58.643 59.25 42.218 104.589 84.904 127.469 107.826-8.226 8.25-19.338 19.040-32.915 31.398-10.456 9.517-11.218 25.707-1.701 36.165 9.515 10.454 25.709 11.218 36.165 1.701 33.123-30.149 52.2-51.267 52.995-52.15 8.76-9.736 8.76-24.517-0.002-34.253z' />
+            <path d='M896 768h-76.8v-76.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FaceDetection.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FaceDetection.js
new file mode 100644
index 00000000..987abe42
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FaceDetection.js
@@ -0,0 +1,19 @@
+// Icon: Linear.FaceDetection
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 307.2c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM281.6 102.4c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M332.8 563.2h-204.8c-21.75 0-40.766-9.075-52.171-24.899s-14.002-36.733-7.125-57.368c1.106-3.315 11.715-33.254 43.464-63.077 28.874-27.123 81.707-59.456 169.432-59.456 19.45 0 38.195 1.592 55.715 4.733 13.917 2.494 23.176 15.798 20.683 29.714-2.493 13.918-15.798 23.174-29.714 20.683-14.549-2.608-30.256-3.93-46.685-3.93-133.603 0-164.032 86.648-164.323 87.523-1.587 4.762-1.554 8.963 0.088 11.24s5.616 3.637 10.635 3.637h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M128 358.4h-51.2c-14.138 0-25.6-11.462-25.6-25.6v-307.2c0-14.138 11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-25.6v256h25.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 358.4h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h25.6v-256h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6v307.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M665.6 768c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM665.6 512c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4z' />
+            <path d='M896 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h25.6v-307.2h-25.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6v358.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 819.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6v-358.4c0-14.138 11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-25.6v307.2h25.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 1024h-358.4c-21.75 0-40.766-9.075-52.171-24.899s-14.002-36.733-7.123-57.366c1.666-5.005 43.090-122.534 238.494-122.534s236.829 117.53 238.496 122.533c6.878 20.634 4.282 41.544-7.123 57.366-11.406 15.826-30.422 24.901-52.173 24.901zM475.608 958.133c-1.517 4.675-1.461 8.786 0.157 11.030 1.64 2.277 5.616 3.637 10.635 3.637h358.4c5.019 0 8.995-1.36 10.635-3.637 1.618-2.243 1.674-6.355 0.157-11.030-0.573-1.502-8.981-22.616-34.774-43.376-36.053-29.019-89.725-44.357-155.218-44.357s-119.165 15.338-155.216 44.357c-25.798 20.763-34.205 41.878-34.776 43.376z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory.js
new file mode 100644
index 00000000..d9fd4e5d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Factory
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-20.832 0-39.934-8.238-53.79-23.202-13.856-14.962-20.605-34.64-19.008-55.41l43.336-563.352c1.026-13.338 12.147-23.637 25.525-23.637h106.338c12.91 0 23.8 9.614 25.402 22.426l46.326 370.603 222.301-133.379c7.907-4.746 17.757-4.869 25.784-0.325 8.026 4.544 12.987 13.053 12.987 22.277v108.386l217.23-130.338c7.904-4.746 17.757-4.869 25.782-0.325s12.987 13.051 12.987 22.275v108.386l217.23-130.338c7.906-4.746 17.758-4.869 25.782-0.325 8.027 4.544 12.987 13.053 12.987 22.277v307.2c0 42.349-34.451 76.8-76.8 76.8zM96.568 409.6l-41.517 539.715c-0.491 6.387 1.47 12.317 5.526 16.696s9.816 6.789 16.222 6.789h870.4c14.115 0 25.6-11.485 25.6-25.6v-261.986l-217.23 130.338c-7.906 4.746-17.758 4.87-25.782 0.325-8.026-4.544-12.987-13.053-12.987-22.277v-108.386l-217.229 130.338c-7.91 4.746-17.76 4.869-25.784 0.325-8.026-4.544-12.987-13.053-12.987-22.277v-108.386l-217.229 130.338c-7.422 4.456-16.59 4.856-24.376 1.066-7.782-3.787-13.125-11.253-14.198-19.842l-48.397-387.176h-60.032z' />
+            <path d='M128 307.2c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM128 204.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M307.2 204.8c-57.421 0-102.4-33.734-102.4-76.8s44.979-76.8 102.4-76.8 102.4 33.734 102.4 76.8-44.979 76.8-102.4 76.8zM307.2 102.4c-31.254 0-51.2 15.162-51.2 25.6s19.946 25.6 51.2 25.6 51.2-15.162 51.2-25.6-19.946-25.6-51.2-25.6z' />
+            <path d='M614.4 204.8c-86.131 0-153.6-44.979-153.6-102.4s67.469-102.4 153.6-102.4 153.6 44.979 153.6 102.4-67.469 102.4-153.6 102.4zM614.4 51.2c-58.608 0-102.4 27.032-102.4 51.2s43.792 51.2 102.4 51.2 102.4-27.032 102.4-51.2-43.792-51.2-102.4-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory2.js
new file mode 100644
index 00000000..f22c91cc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Factory2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Factory2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-20.832 0-39.934-8.238-53.79-23.202-13.856-14.962-20.605-34.64-19.008-55.41l43.336-563.352c1.026-13.338 12.147-23.637 25.525-23.637h106.338c12.91 0 23.8 9.614 25.402 22.426l46.326 370.603 222.301-133.379c7.907-4.746 17.757-4.869 25.784-0.325 8.026 4.544 12.987 13.053 12.987 22.277v108.386l217.23-130.338c7.904-4.746 17.757-4.869 25.782-0.325s12.987 13.051 12.987 22.275v108.386l217.23-130.338c7.906-4.746 17.758-4.869 25.782-0.325 8.027 4.544 12.987 13.053 12.987 22.277v307.2c0 42.349-34.451 76.8-76.8 76.8zM96.568 409.6l-41.517 539.715c-0.491 6.387 1.47 12.317 5.526 16.696s9.816 6.789 16.222 6.789h870.4c14.115 0 25.6-11.485 25.6-25.6v-261.986l-217.23 130.338c-7.906 4.746-17.758 4.87-25.782 0.325-8.026-4.544-12.987-13.053-12.987-22.277v-108.386l-217.229 130.338c-7.91 4.746-17.76 4.869-25.784 0.325-8.026-4.544-12.987-13.053-12.987-22.277v-108.386l-217.229 130.338c-7.422 4.456-16.59 4.856-24.376 1.066-7.782-3.787-13.125-11.253-14.198-19.842l-48.397-387.176h-60.032z' />
+            <path d='M128 307.2c-14.138 0-25.6-11.462-25.6-25.6 0-155.275 126.325-281.6 281.6-281.6 61.509 0 119.947 19.478 168.997 56.33 11.304 8.493 13.582 24.541 5.091 35.845-8.491 11.302-24.539 13.584-35.843 5.090-40.112-30.134-87.915-46.064-138.245-46.064-127.043 0-230.4 103.357-230.4 230.4 0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M793.621 256c-61.509 0-119.949-19.478-168.997-56.33-11.304-8.493-13.582-24.541-5.091-35.845 8.493-11.301 24.542-13.584 35.843-5.090 40.112 30.134 87.917 46.064 138.245 46.064 72.866 0 139.898-33.382 183.906-91.587 8.528-11.277 24.582-13.506 35.861-4.979 11.277 8.528 13.506 24.582 4.979 35.859-25.702 33.994-59.314 62.15-97.202 81.427-39.747 20.226-82.661 30.48-127.544 30.48z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fan.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fan.js
new file mode 100644
index 00000000..c05c482f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fan.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Fan
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 972.8c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 51.2c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M814.774 432.101c-6.488-39.589-19.952-77.267-40.115-112.122-7.082-12.24-22.742-16.419-34.978-9.341-12.238 7.080-16.421 22.739-9.341 34.978 11.899 20.566 21.026 42.299 27.33 64.925-5.013-0.597-10.101-0.941-15.27-0.941h-153.67c-2.136-2.84-4.4-5.576-6.762-8.227 54.851-42.058 83.632-100.533 83.632-170.973 0-70.579-57.421-128-128-128-43.734 0-82.4 22.061-105.499 55.626-39.589 6.488-77.266 19.952-112.122 40.115-12.238 7.080-16.421 22.739-9.341 34.978 4.744 8.202 13.342 12.786 22.184 12.786 4.349 0 8.758-1.11 12.795-3.445 20.566-11.898 42.299-21.024 64.925-27.328-0.598 5.011-0.942 10.099-0.942 15.269v153.669c-2.84 2.136-5.576 4.4-8.226 6.762-42.059-54.848-100.534-83.63-170.974-83.63-70.579 0-128 57.421-128 128 0 43.734 22.061 82.4 55.626 105.499 6.488 39.589 19.952 77.267 40.115 112.122 4.746 8.203 13.342 12.786 22.184 12.786 4.349 0 8.76-1.11 12.795-3.445 12.238-7.080 16.421-22.741 9.341-34.978-11.898-20.566-21.026-42.299-27.328-64.925 5.011 0.598 10.099 0.942 15.269 0.942h153.669c2.136 2.838 4.4 5.576 6.762 8.227-54.85 42.056-83.632 100.531-83.632 170.971 0 70.579 57.421 128 128 128 43.734 0 82.402-22.061 105.501-55.626 39.587-6.488 77.266-19.952 112.12-40.115 12.238-7.080 16.421-22.741 9.341-34.978-7.082-12.24-22.742-16.419-34.978-9.341-20.566 11.899-42.299 21.026-64.925 27.33 0.598-5.013 0.942-10.099 0.942-15.27v-153.67c2.838-2.136 5.576-4.4 8.227-6.762 42.056 54.851 100.531 83.632 170.971 83.632 70.579 0 128-57.421 128-128 0-43.734-22.061-82.402-55.626-105.499zM486.4 563.2c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM460.8 230.4c0-42.347 34.453-76.8 76.8-76.8 42.349 0 76.8 34.453 76.8 76.8 0 59.304-25.539 106.037-75.928 139.114-15.92-7.12-33.534-11.114-52.072-11.114-8.765 0-17.326 0.89-25.6 2.576v-130.576zM230.4 512c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c59.306 0 106.038 25.539 139.114 75.928-7.12 15.922-11.114 33.534-11.114 52.072 0 8.765 0.89 17.326 2.576 25.6h-130.576zM512 742.4c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8c0-59.304 25.539-106.038 75.928-139.114 15.92 7.12 33.533 11.114 52.072 11.114 8.765 0 17.326-0.89 25.6-2.574v130.574zM742.4 614.4c-59.304 0-106.038-25.539-139.114-75.928 7.12-15.92 11.114-33.533 11.114-52.072 0-8.765-0.89-17.326-2.574-25.6h130.574c42.347 0 76.8 34.453 76.8 76.8 0 42.349-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather.js
new file mode 100644
index 00000000..3244bdfd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Feather
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.621 1024c-0.453 0-0.906-0.011-1.363-0.035-13.918-0.73-24.694-12.459-24.245-26.389 6.037-187.152 56.115-355.309 148.842-499.802 76.144-118.651 180.746-221.237 310.902-304.909 124.197-79.84 247.318-126.366 328.738-151.339 93.522-28.686 172.811-41.526 209.906-41.526 14.139 0 25.6 11.462 25.6 25.6 0 61.803-59.074 120.877-84.299 146.102-40.987 40.989-116.48 67.2-189.488 92.549-22.901 7.952-46.054 15.99-67.638 24.341 72.21-6.286 143.658-7.010 172.386-7.010 4.483 0 6.92 0.021 6.92 0.021 9.502 0.083 18.179 5.422 22.534 13.867 4.354 8.446 3.674 18.608-1.77 26.398-54.811 78.418-121.653 139.506-204.344 186.758-38.766 22.15-81.678 32.467-135.050 32.467-31.558 0-63.579-3.566-94.546-7.014-30.344-3.379-61.722-6.874-91.982-6.874-55.731 0-98.205 11.749-137.723 38.093-141.539 94.36-167.621 431.563-167.867 434.957-0.978 13.445-12.186 23.744-25.512 23.744zM966.262 53.6c-88.459 10.819-288.438 59.946-478.819 182.333-97.731 62.827-205.734 154.006-289.904 282.282 45.957-28.766 96.786-42.208 159.182-42.208 33.102 0 65.917 3.654 97.65 7.189 30.939 3.445 60.165 6.701 88.88 6.701 44.096 0 78.936-8.174 109.646-25.723 61.973-35.413 112.709-77.635 156.774-130.843-63.938 1.429-173.421 6.502-239.885 24.208-10.286 2.741-21.2-1.174-27.402-9.83-6.2-8.656-6.395-20.248-0.488-29.107 31.418-47.128 109.186-74.13 191.52-102.717 67.55-23.454 137.398-47.706 170.078-80.386 14.752-14.749 48.515-48.514 62.766-81.898z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather2.js
new file mode 100644
index 00000000..66955f2e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Feather2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.621 1023.997c-0.464 0-0.928-0.013-1.397-0.037-13.904-0.749-24.661-12.469-24.211-26.384 6.037-187.152 56.115-355.309 148.842-499.802 76.144-118.651 180.746-221.237 310.902-304.909 124.197-79.84 247.318-126.366 328.738-151.339 93.522-28.686 172.811-41.526 209.906-41.526 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-59.699 0-291.698 43.781-510.957 184.734-96.49 62.029-203.006 151.715-286.701 277.434 29.013-18.226 62.395-29.723 100.939-34.87 48.805-6.517 100.112-2.27 149.73 1.837 74.598 6.178 145.059 12.010 202.739-16.832 95.558-47.779 169.443-145.099 170.178-146.075 8.498-11.296 24.539-13.578 35.838-5.090 11.299 8.486 13.59 24.517 5.11 35.822-3.285 4.378-81.651 107.846-188.232 161.138-70.509 35.253-151.522 28.549-229.861 22.062-94.962-7.862-184.658-15.286-249.885 49.942-122.49 122.49-145.952 416.067-146.174 419.018-1.010 13.416-12.206 23.677-25.504 23.677z' />
+            <path d='M588.813 307.206c-9.891 0-19.309-5.765-23.498-15.416-5.629-12.97 0.325-28.046 13.296-33.674 100.901-43.782 329.546-104.517 368.589-104.517 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-27.019 0-245.427 55.688-348.211 100.285-3.317 1.44-6.774 2.122-10.176 2.122z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather3.js
new file mode 100644
index 00000000..7f6cb575
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Feather3.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Feather3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.43 768.002c-0.877 0-1.76-0.043-2.651-0.136-13.982-1.438-24.19-13.883-22.866-27.878 12.214-129.035 54.398-245.043 125.379-344.802 58.243-81.858 135.643-152.653 230.050-210.421 163.32-99.933 334.048-133.565 386.858-133.565 14.139 0 25.6 11.462 25.6 25.6 0 48.333-44.909 93.242-64.088 112.419-31.296 31.294-87.662 50.866-142.174 69.792-1.584 0.55-3.171 1.101-4.766 1.656 34.917-1.725 64.955-1.984 79.731-1.984 3.344 0 5.165 0.016 5.165 0.016 9.502 0.083 18.179 5.422 22.533 13.867 4.355 8.446 3.675 18.608-1.768 26.398-40.965 58.606-90.93 104.269-152.749 139.6-29.626 16.928-62.306 24.813-102.853 24.813-23.632 0-47.414-2.65-70.413-5.21-22.176-2.47-45.106-5.024-67.034-5.024-39.653 0-69.797 8.307-97.739 26.936-0.883 0.589-1.802 1.122-2.75 1.597-37.104 18.554-69.234 69.17-92.912 146.379-18.786 61.25-25.075 116.622-25.136 117.173-1.456 13.080-12.533 22.773-25.416 22.773zM911.595 105.875c-66.794 10.248-197.187 44.645-324.528 122.563-70.47 43.12-149.366 105.859-212.848 194.24 29.499-14.075 61.995-20.736 100.163-20.736 24.77 0 49.136 2.714 72.701 5.338 22.605 2.518 43.957 4.896 64.746 4.896 31.27 0 55.88-5.741 77.448-18.066 40.4-23.090 74.216-50.166 103.848-83.426-47.512 1.478-116.565 5.635-160.013 17.208-10.285 2.741-21.198-1.173-27.402-9.832-6.2-8.658-6.394-20.248-0.488-29.107 24.41-36.61 82.752-56.866 144.52-78.312 49.054-17.032 99.779-34.643 122.766-57.629 8.101-8.098 27.242-27.24 39.086-47.138z' />
+            <path d='M387.474 866.56c-0.29-0.318-29.074-32.84-29.074-72.96 0-18.435-9.894-35.91-27.862-49.205-11.366-8.411-27.398-6.013-35.806 5.354-8.41 11.366-6.013 27.397 5.354 35.806 5.848 4.326 7.115 7.494 7.115 8.045 0 0.886-2.754 6.763-15.84 13.306-15.627 7.813-37.845 12.294-60.96 12.294s-45.333-4.482-60.96-12.294c-13.086-6.544-15.84-12.421-15.84-13.306 0-0.434 0.822-2.76 4.842-6.234 10.696-9.245 11.872-25.411 2.627-36.107-9.246-10.699-25.411-11.872-36.109-2.627-18.646 16.115-22.56 33.349-22.56 44.968 0 40.182-28.861 72.72-29.074 72.96-27.821 30.35-27.821 79.731 0 110.082 4.443 4.846 46.602 47.358 157.074 47.358s152.63-42.512 157.074-47.36c27.821-30.349 27.821-79.731 0-110.080zM349.733 942.043c-0.283 0.309-32.11 30.757-119.333 30.757-84.8 0-117.387-28.981-119.592-31.045-9.722-10.936-9.635-29.803 0.261-40.598 1.128-1.23 18.736-20.752 30.938-50.848 1.477 0.818 2.984 1.618 4.538 2.394 22.826 11.411 52.606 17.698 83.856 17.698s61.030-6.286 83.856-17.699c1.554-0.776 3.061-1.576 4.538-2.394 12.202 30.098 29.81 49.619 30.938 50.848 9.984 10.891 9.984 29.998 0.002 40.888z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fence.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fence.js
new file mode 100644
index 00000000..cdca9768
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fence.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Fence
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M153.6 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M870.4 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M965.301 135.499l-102.4-102.4c-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-4.802 4.8-7.499 11.312-7.499 18.101v51.2h-102.4v-51.2c0-6.79-2.698-13.301-7.499-18.101l-102.4-102.4c-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-4.802 4.8-7.499 11.312-7.499 18.101v51.2h-102.4v-51.2c0-6.79-2.698-13.301-7.499-18.101l-102.4-102.4c-9.997-9.998-26.206-9.998-36.203 0l-102.4 102.4c-4.797 4.8-7.494 11.31-7.494 18.101v844.8c0 14.139 11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6v-76.8h102.4v76.8c0 14.139 11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-76.8h102.4v76.8c0 14.139 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-844.8c0-6.79-2.698-13.301-7.499-18.101zM614.4 460.8h102.4v204.8h-102.4v-204.8zM716.8 256v153.6h-102.4v-153.6h102.4zM256 460.8h102.4v204.8h-102.4v-204.8zM358.4 256v153.6h-102.4v-153.6h102.4zM204.8 972.8h-153.6v-808.597l76.8-76.8 76.8 76.8v808.597zM256 870.4v-153.6h102.4v153.6h-102.4zM563.2 972.8h-153.6v-808.597l76.8-76.8 76.8 76.8v808.597zM614.4 870.4v-153.6h102.4v153.6h-102.4zM921.6 972.8h-153.6v-808.597l76.8-76.8 76.8 76.8v808.597z' />
+            <path d='M153.6 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M870.4 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAdd.js
new file mode 100644
index 00000000..38d9b3e3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAdd.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M588.8 665.6h-128v-128c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v128h-128c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h128v128c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h128c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAudio.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAudio.js
new file mode 100644
index 00000000..1447dfe9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileAudio.js
@@ -0,0 +1,16 @@
+// Icon: Linear.FileAudio
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M435.203 870.434c-5.709 0-11.368-1.907-15.998-5.611l-120.987-96.806h-16.618c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h16.619l120.989-96.794c7.685-6.146 18.21-7.346 27.082-3.083 8.869 4.262 14.51 13.234 14.51 23.074v307.221c0 9.84-5.642 18.811-14.51 23.074-3.526 1.696-7.318 2.526-11.086 2.526zM307.2 716.818c5.814 0 11.454 1.979 15.994 5.611l86.406 69.138v-200.686l-86.408 69.128c-4.539 3.632-10.179 5.61-15.992 5.61v51.2z' />
+            <path d='M600.872 819.208c-6.078 0-12.179-2.152-17.066-6.526-10.534-9.43-11.43-25.614-1.998-36.149 21.018-23.478 32.592-53.784 32.592-85.333s-11.573-61.851-32.59-85.331c-9.43-10.534-8.534-26.718 2.002-36.149 10.534-9.429 26.717-8.533 36.149 2.002 29.43 32.88 45.64 75.312 45.64 119.478 0 44.168-16.211 86.602-45.645 119.483-5.056 5.648-12.054 8.525-19.083 8.525z' />
+            <path d='M691.182 870.419c-5.352 0-10.749-1.672-15.357-5.134-11.304-8.493-13.582-24.541-5.091-35.843 30.138-40.114 46.066-87.915 46.066-138.242 0-50.32-15.923-98.118-46.050-138.229-8.493-11.306-6.211-27.354 5.094-35.843 11.306-8.493 27.355-6.21 35.843 5.094 36.84 49.048 56.312 107.478 56.312 168.978 0 61.506-19.478 119.944-56.33 168.994-5.030 6.696-12.71 10.226-20.488 10.226z' />
+            <path d='M530.723 742.411c-4.354 0-8.763-1.11-12.802-3.448-12.235-7.083-16.414-22.746-9.331-34.981 2.262-3.907 3.41-8.208 3.41-12.781 0-4.571-1.147-8.874-3.41-12.782-7.082-12.237-2.902-27.899 9.333-34.981 12.237-7.080 27.898-2.902 34.981 9.334 6.734 11.637 10.296 24.926 10.296 38.427 0 13.502-3.562 26.794-10.298 38.432-4.744 8.198-13.342 12.779-22.179 12.779z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCharts.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCharts.js
new file mode 100644
index 00000000..370a6e06
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCharts.js
@@ -0,0 +1,16 @@
+// Icon: Linear.FileCharts
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 819.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 512c-14.138 0-25.6 11.461-25.6 25.6v25.6c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6h25.6c14.139 0 25.6-11.461 25.6-25.6 0-98.811-80.389-179.2-179.2-179.2zM460.8 565.771c50.077 10.208 89.621 49.752 99.829 99.829h-99.829v-99.829zM409.6 819.2c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4v76.8c0 14.139 11.462 25.6 25.6 25.6h76.8c0 56.464-45.936 102.4-102.4 102.4z' />
+            <path d='M742.4 614.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCheck.js
new file mode 100644
index 00000000..4a2deed6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M435.2 844.8c-6.552 0-13.102-2.499-18.102-7.499l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l84.298 84.298 237.899-237.898c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-256 256c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCode.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCode.js
new file mode 100644
index 00000000..818d1511
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileCode.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FileCode
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M358.4 870.4c-6.552 0-13.102-2.499-18.102-7.499l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203l102.4-102.4c9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.997 26.206 0 36.203l-84.299 84.299 84.299 84.299c9.997 9.997 9.997 26.206 0 36.203-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M486.422 870.406c-1.89 0-3.806-0.211-5.726-0.65-13.782-3.15-22.403-16.877-19.254-30.659l46.8-204.8c3.15-13.784 16.875-22.402 30.661-19.253 13.782 3.15 22.403 16.877 19.253 30.659l-46.8 204.8c-2.709 11.862-13.258 19.902-24.933 19.902z' />
+            <path d='M665.6 870.4c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l84.296-84.298-84.298-84.299c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-4.998 5-11.549 7.499-18.101 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileEmpty.js
new file mode 100644
index 00000000..614bea2f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileEmpty.js
@@ -0,0 +1,12 @@
+// Icon: Linear.FileEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileImage.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileImage.js
new file mode 100644
index 00000000..0b5ae7c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileImage.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FileImage
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M588.8 716.8c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 614.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 460.8h-460.8c-14.138 0-25.6 11.462-25.6 25.6v358.4c0 14.139 11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6v-358.4c0-14.138-11.461-25.6-25.6-25.6zM307.2 751.379l64.806-81.006c3.715-4.645 8.422-7.272 13.254-7.397 4.826-0.146 9.67 2.253 13.621 6.699l132.91 149.525h-224.592v-67.821zM716.8 819.2h-116.502l-163.149-183.541c-13.941-15.685-33.368-24.352-53.218-23.866-19.88 0.517-38.798 10.211-51.906 26.595l-24.826 31.032v-157.421h409.6v307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileLock.js
new file mode 100644
index 00000000..3e2e6792
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M614.4 618.803v-55.603c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v55.603c-29.797 10.568-51.2 39.024-51.2 72.397v102.4c0 42.349 34.453 76.8 76.8 76.8h153.6c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-33.373-21.403-61.83-51.2-72.397zM512 512c28.232 0 51.2 22.968 51.2 51.2v51.2h-102.4v-51.2c0-28.232 22.968-51.2 51.2-51.2zM614.4 793.6c0 14.115-11.485 25.6-25.6 25.6h-153.6c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilePreview.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilePreview.js
new file mode 100644
index 00000000..3146781c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilePreview.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FilePreview
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v307.2c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v51.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM665.6 281.6v-168.597l194.197 194.197h-168.597c-14.115 0-25.6-11.485-25.6-25.6z' />
+            <path d='M761.472 648.523c-1.72-1.922-42.906-47.59-109.496-93.587-50.427-34.834-101.976-60.368-152.835-75.989-1.706-0.714-3.467-1.245-5.261-1.571-37.27-10.955-74.136-16.576-109.88-16.576-35.757 0-72.635 5.626-109.92 16.587-1.773 0.326-3.514 0.85-5.2 1.554-50.866 15.619-102.422 41.157-152.856 75.995-66.59 45.997-107.774 91.666-109.496 93.587-8.704 9.72-8.704 24.434 0 34.154 1.722 1.922 42.906 47.59 109.496 93.587 89.157 61.584 181.821 94.136 267.976 94.136s178.821-32.552 267.976-94.136c66.589-45.997 107.774-91.666 109.496-93.587 8.704-9.72 8.704-24.434 0-34.154zM476.061 525.482c23.216 23.968 35.939 55.306 35.939 88.918 0 70.579-57.421 128-128 128s-128-57.421-128-128c0-33.68 12.776-65.072 36.078-89.058 29.312-8.314 60.155-13.342 91.922-13.342 31.93 0 62.89 5.173 92.061 13.482zM384 819.2c-95.224 0-181.901-45.872-237.846-84.354-38.061-26.178-67.541-52.642-84.691-69.24 26.325-25.443 81.762-74.122 153.283-109.886-6.507 18.731-9.946 38.57-9.946 58.68 0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2c0-20.091-3.432-39.907-9.926-58.622 25.949 12.926 49.122 27.195 68.573 40.574 38.059 26.178 67.541 52.642 84.691 69.24-44.739 43.243-173.539 153.608-322.538 153.608z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSearch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSearch.js
new file mode 100644
index 00000000..01a3bb43
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSearch.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileSearch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M761.942 879.464l-150.418-177.766c33.555-36.485 54.075-85.138 54.075-138.498 0-112.928-91.874-204.8-204.8-204.8-112.928 0-204.8 91.872-204.8 204.8 0 112.926 91.872 204.8 204.8 204.8 41.165 0 79.523-12.219 111.662-33.203l150.395 177.739c5.064 5.984 12.285 9.064 19.555 9.064 5.842 0 11.715-1.989 16.523-6.058 10.794-9.133 12.139-25.286 3.006-36.078zM307.2 563.2c0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSpreadsheet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSpreadsheet.js
new file mode 100644
index 00000000..28e06701
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileSpreadsheet.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileSpreadsheet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M742.4 512h-460.8c-14.138 0-25.6 11.461-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6v-307.2c0-14.139-11.461-25.6-25.6-25.6zM716.8 665.6h-102.4v-102.4h102.4v102.4zM460.8 665.6v-102.4h102.4v102.4h-102.4zM563.2 716.8v102.4h-102.4v-102.4h102.4zM409.6 563.2v102.4h-102.4v-102.4h102.4zM307.2 716.8h102.4v102.4h-102.4v-102.4zM614.4 819.2v-102.4h102.4v102.4h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileStats.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileStats.js
new file mode 100644
index 00000000..c4e176f0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileStats.js
@@ -0,0 +1,16 @@
+// Icon: Linear.FileStats
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M435.2 768c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 768c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 768c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 870.4h-460.8c-14.138 0-25.6-11.461-25.6-25.6v-358.4c0-14.138 11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.462 25.6 25.6v358.4c0 14.139-11.461 25.6-25.6 25.6zM307.2 819.2h409.6v-307.2h-409.6v307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileVideo.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileVideo.js
new file mode 100644
index 00000000..522bd319
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileVideo.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FileVideo
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M728.786 546.619c-6.944 0-13.92 1.726-20.731 5.133l-93.654 46.826v-9.778c0-42.349-34.451-76.8-76.8-76.8h-204.8c-42.347 0-76.8 34.451-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-9.781l93.654 46.829c6.813 3.406 13.787 5.133 20.733 5.134 11.6 0 22.030-4.787 29.368-13.482 6.44-7.629 9.845-17.554 9.845-28.701v-204.8c0-24.046-16.858-42.181-39.214-42.181zM563.2 793.6c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v204.8zM716.797 777.774l-93.656-46.829c-3.92-1.96-8.741-9.76-8.741-14.147v-51.2c0-4.386 4.822-12.189 8.746-14.152l93.654-46.821-0.003 173.149z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileZip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileZip.js
new file mode 100644
index 00000000..e4bddd19
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FileZip.js
@@ -0,0 +1,21 @@
+// Icon: Linear.FileZip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 289.099l-230.4-230.4c-4.8-4.802-11.312-7.499-18.101-7.499h-486.4c-42.347 0-76.8 34.453-76.8 76.8v819.2c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-640c0-6.79-2.698-13.301-7.499-18.101zM859.797 307.2h-168.597c-14.115 0-25.6-11.485-25.6-25.6v-168.597l194.197 194.197zM844.8 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h435.2v179.2c0 42.347 34.451 76.8 76.8 76.8h179.2v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M332.8 204.8h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 256h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 307.2h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 358.4h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 409.6h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 460.8h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 512c-42.347 0-76.8 34.451-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8v-204.8c0-42.349-34.453-76.8-76.8-76.8zM332.8 563.2c14.115 0 25.6 11.485 25.6 25.6v25.6h-51.2v-25.6c0-14.115 11.485-25.6 25.6-25.6zM332.8 819.2c-14.115 0-25.6-11.485-25.6-25.6v-128h51.2v128c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M384 153.6h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 512h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Files.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Files.js
new file mode 100644
index 00000000..d6495d75
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Files.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Files
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 204.8h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-384c-6.79 0-13.301 2.698-18.101 7.499l-179.2 179.2c-4.802 4.8-7.499 11.312-7.499 18.101v537.6c0 42.349 34.453 76.8 76.8 76.8h25.6v25.6c0 42.349 34.453 76.8 76.8 76.8h25.6v25.6c0 42.349 34.453 76.8 76.8 76.8h512c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM256 61.803v117.397c0 14.115-11.485 25.6-25.6 25.6h-117.397l142.997-142.997zM102.4 742.4v-486.4h128c42.347 0 76.8-34.453 76.8-76.8v-128h332.8c14.115 0 25.6 11.485 25.6 25.6v665.6c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6zM204.8 844.8v-25.6h435.2c42.349 0 76.8-34.451 76.8-76.8v-588.8h25.6c14.115 0 25.6 11.485 25.6 25.6v665.6c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-25.6h435.2c42.349 0 76.8-34.451 76.8-76.8v-588.8h25.6c14.115 0 25.6 11.485 25.6 25.6v665.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film.js
new file mode 100644
index 00000000..4d517093
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Film
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 51.2h-870.4c-14.138 0-25.6 11.462-25.6 25.6v921.6c0 14.139 11.462 25.6 25.6 25.6h870.4c14.139 0 25.6-11.461 25.6-25.6v-921.6c0-14.138-11.461-25.6-25.6-25.6zM204.8 358.4h-102.4v-102.4h102.4v102.4zM204.8 409.6v102.4h-102.4v-102.4h102.4zM204.8 563.2v102.4h-102.4v-102.4h102.4zM102.4 716.8h102.4v102.4h-102.4v-102.4zM256 102.4h512v870.4h-512v-870.4zM819.2 563.2h102.4v102.4h-102.4v-102.4zM819.2 512v-102.4h102.4v102.4h-102.4zM819.2 358.4v-102.4h102.4v102.4h-102.4zM819.2 716.8h102.4v102.4h-102.4v-102.4zM921.6 204.8h-102.4v-102.4h102.4v102.4zM204.8 102.4v102.4h-102.4v-102.4h102.4zM102.4 870.4h102.4v102.4h-102.4v-102.4zM819.2 972.8v-102.4h102.4v102.4h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film2.js
new file mode 100644
index 00000000..458405e2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Film2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Film2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 972.8h-25.6v-768h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-76.8c0-14.138-11.461-25.6-25.6-25.6h-256c-14.139 0-25.6 11.462-25.6 25.6v76.8h-128c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-435.2c-14.138 0-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6 155.275 0 281.6 126.325 281.6 281.6 0 6.789 2.698 13.301 7.499 18.101 4.8 4.802 11.312 7.499 18.101 7.499h128v51.2h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM921.6 972.8h-256v-768h256v768zM486.418 870.4c-0.006 0-0.011-0.002-0.018-0.002s-0.011 0.002-0.018 0.002h-25.582v-51.2h51.2v51.198l-25.582 0.002zM563.2 819.2h51.2v51.198h-51.2v-51.198zM460.8 358.4v-51.2h51.2v51.2h-51.2zM358.4 358.4v-51.2h51.2v51.2h-51.2zM256 358.4v-51.2h51.2v51.2h-51.2zM153.6 358.4v-51.2h51.2v51.2h-51.2zM563.2 307.2h51.2v51.2h-51.2v-51.2zM614.4 102.4h204.8v51.2h-204.8v-51.2zM512 204.8h102.4v51.2h-102.4v-51.2zM102.4 307.2v51.2h-51.2v-51.2h51.2zM51.2 564.174v-154.574h563.2v358.4h-281.608c-47.122-112.666-154.48-194.109-281.592-203.826zM349.446 819.2h60.154v51.2h-52.174c-1.336-17.477-4.037-34.574-7.979-51.2zM512 921.598h25.579c0.006 0 0.014 0.002 0.021 0.002s0.014-0.002 0.021-0.002h76.779v51.202h-102.4v-51.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilmPlay.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilmPlay.js
new file mode 100644
index 00000000..8d0f8bf8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FilmPlay.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FilmPlay
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M383.997 768c-3.902 0-7.822-0.891-11.445-2.702-8.674-4.336-14.152-13.2-14.152-22.898v-460.8c0-9.698 5.478-18.562 14.152-22.898 8.67-4.334 19.051-3.4 26.808 2.418l307.2 230.4c6.446 4.834 10.24 12.422 10.24 20.48s-3.794 15.645-10.24 20.48l-307.2 230.4c-4.517 3.387-9.923 5.12-15.363 5.12zM409.6 332.8v358.4l238.933-179.2-238.933-179.2z' />
+            <path d='M998.4 102.4h-972.8c-14.138 0-25.6 11.462-25.6 25.6v768c0 14.139 11.462 25.6 25.6 25.6h972.8c14.139 0 25.6-11.461 25.6-25.6v-768c0-14.138-11.461-25.6-25.6-25.6zM153.6 563.2h-102.4v-102.4h102.4v102.4zM153.6 409.6h-102.4v-102.4h102.4v102.4zM51.2 614.4h102.4v102.4h-102.4v-102.4zM204.8 153.6h614.4v716.8h-614.4v-716.8zM870.4 460.8h102.4v102.4h-102.4v-102.4zM870.4 409.6v-102.4h102.4v102.4h-102.4zM870.4 614.4h102.4v102.4h-102.4v-102.4zM972.8 256h-102.4v-102.4h102.4v102.4zM153.6 153.6v102.4h-102.4v-102.4h102.4zM51.2 768h102.4v102.4h-102.4v-102.4zM870.4 870.4v-102.4h102.4v102.4h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FindReplace.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FindReplace.js
new file mode 100644
index 00000000..e818ae58
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FindReplace.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FindReplace
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M895.994 588.8c6.662 0 13.21-2.6 18.106-7.501l102.4-102.4c10-9.997 10-26.206 0-36.203-9.995-9.997-26.205-9.997-36.205 0l-58.829 58.829c-2.63-105.485-44.95-204.269-119.837-279.158-77.36-77.36-180.219-119.966-289.629-119.966-150.326 0-288.328 82.131-360.15 214.341-6.749 12.424-2.149 27.966 10.275 34.715 12.424 6.747 27.966 2.149 34.715-10.275 62.856-115.704 183.618-187.581 315.16-187.581 197.622 0 358.4 160.778 358.4 358.4v51.2c0 10.357 6.237 19.691 15.803 23.651 3.166 1.312 6.494 1.949 9.79 1.949z' />
+            <path d='M512 921.6c152.278 0 291.122-83.699 362.344-218.438 6.606-12.499 1.834-27.987-10.669-34.595-12.496-6.606-27.987-1.834-34.597 10.669-62.331 117.914-183.829 191.165-317.078 191.165-197.622 0-358.4-160.778-358.4-358.4v-51.2c0-10.355-6.237-19.69-15.803-23.651-9.568-3.96-20.579-1.771-27.899 5.55l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l58.83-58.83c2.63 105.486 44.949 204.269 119.837 279.158 77.363 77.363 180.224 119.97 289.632 119.97z' />
+            <path d='M709.301 673.099l-123.347-123.347c17.904-25.117 28.446-55.826 28.446-88.952 0-84.696-68.904-153.6-153.6-153.6s-153.6 68.904-153.6 153.6 68.904 153.6 153.6 153.6c33.126 0 63.835-10.542 88.952-28.445l123.347 123.347c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202zM358.4 460.8c0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap.js
new file mode 100644
index 00000000..34bf3554
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap.js
@@ -0,0 +1,16 @@
+// Icon: Linear.FingerTap
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-167.376c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M230.381 102.405c-3.848 0-7.754-0.87-11.429-2.707l-102.4-51.2c-12.646-6.323-17.771-21.701-11.45-34.346 6.323-12.646 21.701-17.771 34.346-11.45l102.4 51.2c12.646 6.323 17.771 21.701 11.45 34.346-4.485 8.971-13.528 14.157-22.917 14.157z' />
+            <path d='M128.019 256.005c-9.39 0-18.432-5.186-22.917-14.157-6.323-12.645-1.197-28.022 11.45-34.346l102.4-51.2c12.643-6.322 28.022-1.197 34.346 11.45 6.323 12.645 1.197 28.022-11.45 34.346l-102.4 51.2c-3.674 1.837-7.581 2.707-11.429 2.707z' />
+            <path d='M588.821 102.405c-9.392 0-18.434-5.186-22.917-14.157-6.323-12.645-1.197-28.022 11.448-34.346l102.4-51.2c12.648-6.318 28.026-1.197 34.346 11.45 6.323 12.645 1.197 28.022-11.448 34.346l-102.4 51.2c-3.677 1.837-7.582 2.707-11.429 2.707z' />
+            <path d='M691.179 256.005c-3.846 0-7.754-0.87-11.429-2.707l-102.4-51.2c-12.645-6.323-17.771-21.701-11.448-34.346s21.699-17.773 34.346-11.45l102.4 51.2c12.645 6.323 17.771 21.701 11.448 34.346-4.483 8.971-13.526 14.157-22.917 14.157z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap2.js
new file mode 100644
index 00000000..f3f5e353
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingerTap2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingerTap2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-9.995 0-19.541 1.939-28.306 5.429-8.885-32.59-38.728-56.629-74.094-56.629-8.971 0-17.589 1.547-25.6 4.387v-132.387c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.554-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.39l-207.707-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M640 307.2c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2v51.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-51.2c0-127.043 103.357-230.4 230.4-230.4s230.4 103.357 230.4 230.4v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersCrossed.js
new file mode 100644
index 00000000..07465be3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.FingersCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M933.37 432.496c-21.525-16.818-48.32-24.165-75.459-20.694-27.134 3.474-51.219 17.334-67.814 39.034l-62.571 81.808-55.557-196.477 71.541-134.547c12.838-24.15 15.507-51.856 7.509-78.013-7.997-26.157-25.699-47.634-49.85-60.474-39.653-21.085-87.053-13.358-118.134 15.762-25.283-23.003-61.414-33.149-96.584-23.682-26.338 7.090-48.362 24.080-62.014 47.838-13.653 23.76-17.242 51.342-10.106 77.667l36.584 134.955-67.856 127.621c-18.747-20.685-45.811-33.694-75.858-33.694-44.605 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v102.4c0 71.891 28.624 159.486 74.699 228.6 55.802 83.702 129.28 129.8 206.901 129.8h204.8c55.451 0 112.834-33.906 175.434-103.656 49.509-55.166 92.742-122.264 124.307-171.256 11.070-17.181 20.634-32.022 28.456-43.245l89.406-128.246c31.867-45.709 22.072-110.798-21.834-145.101zM677.131 108.338c12.077 6.421 20.928 17.158 24.926 30.237s2.666 26.931-3.755 39.005l-46.466 87.389-39.038-138.064c-0.334-1.181-0.712-2.338-1.086-3.498 14.757-20.288 42.648-27.176 65.419-15.069zM256 512c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v153.6c0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2v-153.6zM102.4 563.2c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v102.4c0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2v-102.4zM913.206 548.312l-89.406 128.245c-8.36 11.99-18.155 27.194-29.498 44.797-56.618 87.878-162.006 251.446-256.702 251.446h-204.8c-80.888 0-137.659-67.038-164.299-107-20.872-31.307-37.893-67.574-49.438-103.808 10.797 3.88 22.422 6.008 34.538 6.008 30.563 0 58.021-13.475 76.8-34.776 18.779 21.301 46.237 34.776 76.8 34.776 56.464 0 102.4-45.936 102.4-102.4v-153.6c0-2.968-0.155-5.901-0.403-8.805l61.299-115.291 42.397 156.394c3.699 13.645 17.765 21.707 31.406 18.010 13.645-3.699 21.709-17.76 18.011-31.406l-98.562-363.579c-3.554-13.109-1.749-26.875 5.082-38.762s17.816-20.378 30.933-23.907c27.438-7.384 56.038 8.85 63.768 36.186l128.634 454.93c2.637 9.325 10.314 16.365 19.834 18.179 9.51 1.818 19.246-1.896 25.136-9.592l93.634-122.413c8.227-10.757 20.173-17.629 33.643-19.354 13.472-1.731 26.766 1.917 37.437 10.254 22.453 17.538 27.653 52.099 11.358 75.469z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal.js
new file mode 100644
index 00000000..ae0749f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersScrollHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-269.776c0-56.464-45.936-102.4-102.4-102.4-44.606 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M939.701 109.898l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l58.698 58.698h-117.395c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h117.395l-58.698 58.698c-9.998 9.998-9.998 26.206 0 36.205 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.498l102.4-102.4c9.998-9.998 9.998-26.206 0-36.205z' />
+            <path d='M230.4 102.4h-117.397l58.699-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205l-58.699-58.698h117.397c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal2.js
new file mode 100644
index 00000000..36743516
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollHorizontal2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FingersScrollHorizontal2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-8.974 0-17.587 1.562-25.6 4.403v-234.803c0-42.347-34.453-76.8-76.8-76.8-35.36 0-65.214 24.021-74.104 56.6-8.762-3.485-18.309-5.4-28.296-5.4-42.347 0-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.552-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M939.701 212.298l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l58.698 58.698h-168.595c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h168.595l-58.698 58.698c-9.998 9.998-9.998 26.206 0 36.205 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.498l102.4-102.4c9.998-9.998 9.998-26.206 0-36.205z' />
+            <path d='M281.6 204.8h-168.597l58.699-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205l-58.699-58.698h168.597c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft.js
new file mode 100644
index 00000000..980f1601
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FingersScrollLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-269.776c0-56.464-45.936-102.4-102.4-102.4-44.606 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M230.4 102.4h-117.397l58.699-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205l-58.699-58.698h117.397c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft2.js
new file mode 100644
index 00000000..b900e2c1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollLeft2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersScrollLeft2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-8.974 0-17.587 1.562-25.6 4.403v-234.803c0-42.347-34.453-76.8-76.8-76.8-35.36 0-65.214 24.021-74.104 56.6-8.762-3.485-18.309-5.4-28.296-5.4-42.347 0-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.552-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M281.6 204.8h-168.597l58.699-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498c9.997-9.998 9.997-26.206 0-36.205l-58.699-58.698h168.597c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight.js
new file mode 100644
index 00000000..44b97441
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FingersScrollRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-269.776c0-56.464-45.936-102.4-102.4-102.4-44.606 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M939.701 109.898l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l58.698 58.698h-117.395c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h117.395l-58.698 58.698c-9.998 9.998-9.998 26.206 0 36.205 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.498l102.4-102.4c9.998-9.998 9.998-26.206 0-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight2.js
new file mode 100644
index 00000000..cbe37a70
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollRight2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersScrollRight2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-8.974 0-17.587 1.562-25.6 4.403v-234.803c0-42.347-34.453-76.8-76.8-76.8-35.36 0-65.214 24.021-74.104 56.6-8.762-3.485-18.309-5.4-28.296-5.4-42.347 0-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.552-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M939.701 212.298l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l58.698 58.698h-168.595c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h168.595l-58.698 58.698c-9.998 9.998-9.998 26.206 0 36.205 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.498l102.4-102.4c9.998-9.998 9.998-26.206 0-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical.js
new file mode 100644
index 00000000..24f4ec99
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersScrollVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 153.6c0 21.072 6.403 40.674 17.358 56.973-39.88 14.008-68.558 52.021-68.558 96.627 0 18.645 5.034 36.126 13.776 51.2h-269.776c-56.464 0-102.4 45.936-102.4 102.4 0 44.606 28.678 82.619 68.558 96.627-10.955 16.299-17.358 35.901-17.358 56.973 0 56.464 45.936 102.4 102.4 102.4h377.52l-119.446 68.909c-24.326 13.366-41.645 35.163-48.782 61.405-6.949 25.558-3.272 52.144 10.357 74.858 27.877 46.461 90.819 64.138 140.37 39.442 3.101-1.514 70.024-34.213 273.938-136.17 96.021-48.010 164.653-100.704 203.994-156.619 30.886-43.896 32.451-74.195 32.451-79.824v-256c0-43.41-12.566-83.571-37.352-119.371-23.957-34.603-58.984-64.469-104.11-88.768-89.251-48.059-217.381-73.461-370.538-73.461-56.464 0-102.4 45.936-102.4 102.4zM858.262 169.741c52.251 28.134 114.538 79.262 114.538 163.059v255.49c-0.173 2.016-2.565 23.546-26.894 56.067-24.246 32.41-75.373 82.155-181.246 135.091-207.579 103.789-272.947 135.685-273.584 135.995-0.077 0.037-0.154 0.075-0.23 0.114-25.742 12.87-59.49 3.744-73.694-19.928-6.387-10.645-8.11-23.102-4.853-35.080 3.47-12.766 12.059-23.438 24.182-30.051 0.179-0.098 0.357-0.198 0.534-0.301l138.498-79.899c29.842-16.35 42.405-34.725 37.328-54.622-5.088-19.955-25.019-30.075-59.24-30.075h-400c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h332.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-384c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h384c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-25.6c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2c144.712 0 264.448 23.286 346.262 67.341z' />
+            <path d='M109.898 84.299l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.998 26.206 9.998 36.205 0l58.698-58.698v117.395c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-117.395l58.698 58.698c9.998 9.998 26.206 9.998 36.205 0 4.998-5 7.498-11.55 7.498-18.102s-2.499-13.102-7.498-18.101l-102.4-102.4c-9.998-9.998-26.206-9.998-36.205 0z' />
+            <path d='M102.4 793.6v117.397l-58.698-58.699c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c9.998 9.997 26.206 9.997 36.205 0l102.4-102.4c4.998-5 7.498-11.55 7.498-18.102s-2.499-13.102-7.498-18.102c-9.998-9.997-26.206-9.997-36.205 0l-58.698 58.699v-117.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical2.js
new file mode 100644
index 00000000..5b2a977a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FingersScrollVertical2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 307.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6z' />
+            <path d='M486.4 204.8c-42.347 0-76.8 34.451-76.8 76.8 0 9.995 1.939 19.541 5.429 28.306-32.59 8.883-56.629 38.726-56.629 74.094 0 8.974 1.562 17.587 4.403 25.6h-234.803c-42.347 0-76.8 34.453-76.8 76.8 0 35.36 24.021 65.214 56.6 74.104-3.485 8.762-5.4 18.309-5.4 28.296 0 42.347 34.453 76.8 76.8 76.8h305.483l-56.976 71.968c-12.339 15.587-18.498 35.552-17.358 56.232 1.149 20.723 9.512 39.866 23.549 53.902 29.768 29.768 78.451 29.83 108.525 0.139l180.371-178.106c11.643 27.624 38.997 47.064 70.806 47.064h102.4c42.349 0 76.8-34.453 76.8-76.8v-358.4c0-42.349-34.451-76.8-76.8-76.8h-102.4c-27.699 0-52.018 14.744-65.53 36.794-32.579-16.768-92.078-36.794-190.47-36.794h-51.2zM470.101 811.499c-10.589-10.592-11.643-30.288-2.251-42.15l89.822-113.458c6.093-7.696 7.25-18.2 2.973-27.038-4.275-8.838-13.227-14.453-23.045-14.453h-358.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h256c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h307.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h51.2c107.634 0 160.736 26.406 179.2 38.31v309.389l-210.352 207.709c-9.938 9.813-26.582 9.854-36.347 0.091zM896 256c14.115 0 25.6 11.485 25.6 25.6v358.4c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-358.4c0-14.115 11.485-25.6 25.6-25.6h102.4z' />
+            <path d='M161.098 84.299l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203s26.206 9.998 36.205 0l58.698-58.698v168.595c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-168.595l58.698 58.698c9.998 9.998 26.206 9.998 36.205 0 4.998-5 7.498-11.55 7.498-18.102s-2.499-13.102-7.498-18.101l-102.4-102.4c-9.998-9.998-26.206-9.998-36.205 0z' />
+            <path d='M153.6 742.4v168.597l-58.698-58.699c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l102.4 102.4c9.998 9.997 26.206 9.997 36.205 0l102.4-102.4c4.998-5 7.498-11.55 7.498-18.102s-2.499-13.102-7.498-18.102c-9.998-9.997-26.206-9.997-36.205 0l-58.698 58.699v-168.597c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical3.js
new file mode 100644
index 00000000..46dd9308
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersScrollVertical3.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersScrollVertical3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-8.974 0-17.587 1.562-25.6 4.403v-234.803c0-42.347-34.453-76.8-76.8-76.8-35.358 0-65.214 24.021-74.104 56.6-8.762-3.485-18.309-5.4-28.296-5.4-42.347 0-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.558-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.698 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M929.099 289.098l-58.699 58.699v-234.794l58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.498c9.998-9.998 9.998-26.206 0-36.205l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0l-102.4 102.4c-9.998 9.998-9.998 26.206 0 36.205 9.997 9.997 26.206 9.997 36.203 0l58.699-58.699v234.792l-58.699-58.699c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.498l102.4-102.4c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.205-9.997-36.202 0z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap.js
new file mode 100644
index 00000000..476f130e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap.js
@@ -0,0 +1,16 @@
+// Icon: Linear.FingersTap
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-269.776c0-56.464-45.936-102.4-102.4-102.4-44.606 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M230.381 102.405c-3.848 0-7.754-0.87-11.429-2.707l-102.4-51.2c-12.646-6.323-17.771-21.701-11.45-34.346 6.323-12.646 21.701-17.771 34.346-11.45l102.4 51.2c12.646 6.323 17.771 21.701 11.45 34.346-4.485 8.971-13.528 14.157-22.917 14.157z' />
+            <path d='M128.019 256.005c-9.39 0-18.432-5.186-22.917-14.157-6.323-12.645-1.197-28.022 11.45-34.346l102.4-51.2c12.643-6.322 28.022-1.197 34.346 11.45 6.323 12.645 1.197 28.022-11.45 34.346l-102.4 51.2c-3.674 1.837-7.581 2.707-11.429 2.707z' />
+            <path d='M742.421 102.405c-9.392 0-18.434-5.186-22.917-14.157-6.323-12.645-1.197-28.022 11.448-34.346l102.4-51.2c12.648-6.318 28.026-1.197 34.346 11.45 6.323 12.645 1.197 28.022-11.448 34.346l-102.4 51.2c-3.677 1.837-7.582 2.707-11.429 2.707z' />
+            <path d='M844.779 256.005c-3.846 0-7.754-0.87-11.429-2.707l-102.4-51.2c-12.645-6.323-17.771-21.701-11.448-34.346s21.699-17.773 34.346-11.45l102.4 51.2c12.645 6.323 17.771 21.701 11.448 34.346-4.483 8.971-13.526 14.157-22.917 14.157z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap2.js
new file mode 100644
index 00000000..6bc5bfe1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersTap2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FingersTap2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-8.974 0-17.587 1.562-25.6 4.403v-183.603c0-42.347-34.453-76.8-76.8-76.8-35.36 0-65.214 24.021-74.104 56.6-8.762-3.485-18.309-5.4-28.296-5.4-42.347 0-76.8 34.453-76.8 76.8v254.283l-71.968-56.976c-15.587-12.339-35.554-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.39l-207.707-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M742.4 358.4c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-127.043-103.358-230.4-230.4-230.4s-230.4 103.357-230.4 230.4v51.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-51.2c0-155.275 126.325-281.6 281.6-281.6s281.6 126.325 281.6 281.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersVictory.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersVictory.js
new file mode 100644
index 00000000..fc4a32d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FingersVictory.js
@@ -0,0 +1,12 @@
+// Icon: Linear.FingersVictory
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M852.296 45.419c-15.229-22.746-38.37-38.142-65.168-43.352-55.101-10.715-109.699 25.189-121.696 80.030l-57.15 261.274-99.776-274.69c-19.198-52.85-78.066-80.952-131.232-62.646-53.117 18.29-82.336 76.678-65.136 130.158l72.576 225.65c-8.4-2.235-17.218-3.443-26.314-3.443-44.605 0-82.619 28.678-96.627 68.558-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v102.4c0 59.662 16.68 161.411 63.688 251.811 24.224 46.584 53.256 83.646 86.291 110.155 39.387 31.606 83.67 47.634 131.621 47.634h204.8c142.749 0 230.4-164.013 230.4-281.6 0-91.195-4.517-138.56-8.147-176.614-2.496-26.181-4.653-48.792-4.653-79.386 0-35.75 36.573-237.427 61.166-364.314 5.36-26.728-0.062-53.952-15.27-76.667zM358.4 409.6c28.232 0 51.2 22.968 51.2 51.2v69.771l-76.125-15.501c-8.698-2.256-17.515-3.33-26.275-3.294v-50.976c0-28.232 22.968-51.2 51.2-51.2zM153.6 512c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v13.866c-23.381 13.699-40.112 35.626-47.133 61.826-6.923 25.835-3.576 52.784 9.363 76.114-4.339 1.176-8.848 1.795-13.43 1.795-28.232 0-51.2-22.968-51.2-51.2v-102.4zM718.104 894.298c-24.621 35.811-67.040 78.502-129.304 78.502h-204.8c-120.31 0-193.613-141.318-219.646-264.344 12.416 5.36 26.086 8.344 40.446 8.344 18.32 0 36.077-4.893 51.629-13.984 7.68 4.435 15.971 7.91 24.75 10.262l198.499 54.026c2.251 0.613 4.512 0.902 6.738 0.902 11.264 0 21.586-7.493 24.688-18.883 3.71-13.643-4.338-27.712-17.979-31.427l-198.597-54.048c-7.834-2.099-14.894-5.944-20.778-11.184-0.186-0.171-0.374-0.339-0.563-0.502-3.802-3.491-7.094-7.568-9.749-12.166-6.837-11.842-8.654-25.638-5.115-38.851 3.539-13.21 12.011-24.25 23.856-31.090 11.845-6.835 25.642-8.654 38.851-5.114 0.502 0.134 1.008 0.253 1.518 0.36l107.424 21.875c0.046 0.010 0.094 0.019 0.141 0.029l153.579 31.274c40.634 8.274 87.157 19.434 124.114 39.453 40.504 21.934 60.194 49.634 60.194 84.669 0 48.928-19.118 107.131-49.896 151.898zM817.355 112.078c-0.013 0.062-0.026 0.125-0.035 0.187-6.36 32.802-62.12 321.982-62.12 374.134 0 33.032 2.264 56.766 4.885 84.246 1.702 17.859 3.608 37.85 5.122 63.731-9.71-7.776-20.709-15.010-33.013-21.672-42.867-23.222-93.96-35.578-138.286-44.606l-133.107-27.102v-92.997c0-16.002-20.613-80.902-24.744-93.75l-75.176-233.733c-8.731-27.147 6.101-56.787 33.066-66.070 26.917-9.27 56.718 4.96 66.437 31.715l129.955 357.778c3.893 10.71 14.405 17.56 25.766 16.803 11.37-0.757 20.872-8.939 23.306-20.072l76.040-347.632c6.099-27.899 33.875-46.157 61.904-40.712 13.306 2.587 24.811 10.25 32.394 21.574 7.586 11.328 10.286 24.886 7.608 38.178z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fire.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fire.js
new file mode 100644
index 00000000..5f684225
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fire.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Fire
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M723.315 31.037c-4.354-9.139-8.171-16.008-11.354-20.419-7.909-10.963-22.973-13.886-34.406-6.685-11.435 7.203-15.301 22.054-8.83 33.92 3.016 5.53 5.989 10.987 8.925 16.387 22.635 48.098 61.494 162.338 63.618 284.234-23.622-51.19-59.882-95.71-92.95-136.29-50.259-61.675-93.666-114.941-85.376-172.963 1.050-7.346-1.141-14.787-6.002-20.394s-11.917-8.827-19.338-8.827c-0.003 0-0.002 0-0.005 0-52.109 0-107.462 40.813-144.718 75.050-47.488 43.637-92.925 101.088-127.942 161.766-5.077 8.798-9.864 17.574-14.37 26.302 11.878-82.67 35.069-168.669 54.96-228.322 2.995-8.981 1.933-17.112-3.154-24.171-4.811-6.675-12.539-10.632-20.768-10.632-9.467 0-18.099 5.221-22.536 13.456-153.987 282.312-207.869 399.122-207.869 600.95 0 110.016 41.302 211.906 116.298 286.901 38.664 38.664 84.912 68.84 137.461 89.694 55.189 21.901 116.235 33.005 181.442 33.005s126.253-11.104 181.442-33.005c52.549-20.853 98.797-51.030 137.459-89.694 74.998-74.995 116.299-176.885 116.299-286.901 0-199.765-54.39-318.76-198.285-583.363zM309.28 262.406c32.018-55.478 75.114-110.027 118.242-149.659 30.371-27.909 59.499-47.326 83.643-56.16 5.192 64.706 50.211 119.952 97.464 177.939 83.781 102.813 162.91 199.952 54.917 364.101-23.082 28.565-51.266 53.213-84.445 73.85 32.283-58.869 43.195-127.848 28.73-196.090-10.867-51.269-35.518-98.304-71.288-136.022-38.235-40.32-88.837-69.229-146.333-83.602-12.085-3.019-24.582 3.091-29.621 14.48-5.037 11.387-1.15 24.749 9.211 31.658 33.186 22.123 49.405 97.856 32.744 152.893-11.414 37.707-34.016 56.827-67.174 56.83-5.894 0-12.208-0.606-18.766-1.805-22.552-4.123-39.358-16.008-51.382-36.338-1.594-2.694-3.085-5.518-4.493-8.448h0.237c-18.438-43.43-0.832-118.462 48.315-203.627zM486.4 972.8c-252.099 0-384-180.299-384-358.4 0-140.606 26.766-235.365 101.867-387.354-21.704 125.869-16.035 217.834 16.885 273.496 19.744 33.386 48.762 53.789 86.245 60.64 9.589 1.754 19 2.64 27.976 2.64 55.901-0.005 98.245-33.973 116.174-93.197 10.717-35.403 11.707-78.15 2.717-117.282-1.387-6.038-2.981-11.886-4.77-17.53 55.722 33.387 94.541 86.53 108.248 151.189 18.763 88.512-14.61 178.64-87.093 235.213-9.776 7.632-12.678 21.171-6.885 32.138 5.792 10.966 18.611 16.208 30.427 12.43 126.872-40.531 214.688-115.163 261.010-221.821 34.166-78.675 44.989-172.318 32.251-278.674 59.81 128.038 82.947 219.424 82.947 348.11 0 178.101-131.901 358.4-384 358.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstAid.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstAid.js
new file mode 100644
index 00000000..b6829c3e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstAid.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FirstAid
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 819.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6v-76.8h-76.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h76.8v-76.8c0-14.138 11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6v76.8h76.8c14.139 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6h-76.8v76.8c0 14.139-11.461 25.6-25.6 25.6zM460.8 768h102.4v-76.8c0-14.139 11.461-25.6 25.6-25.6h76.8v-102.4h-76.8c-14.139 0-25.6-11.461-25.6-25.6v-76.8h-102.4v76.8c0 14.139-11.462 25.6-25.6 25.6h-76.8v102.4h76.8c14.138 0 25.6 11.461 25.6 25.6v76.8z' />
+            <path d='M947.2 256h-230.4v-76.8c0-42.347-34.453-76.8-76.8-76.8h-256c-42.347 0-76.8 34.453-76.8 76.8v76.8h-230.4c-42.347 0-76.8 34.453-76.8 76.8v563.2c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-563.2c0-42.347-34.451-76.8-76.8-76.8zM358.4 179.2c0-14.115 11.485-25.6 25.6-25.6h256c14.115 0 25.6 11.485 25.6 25.6v76.8h-307.2v-76.8zM972.8 896c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-563.2c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstCircle.js
new file mode 100644
index 00000000..0c98dc54
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FirstCircle.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FirstCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M486.403 768.002c-7.906 0-15.555-3.67-20.483-10.242l-153.6-204.8c-6.827-9.101-6.827-21.618 0-30.718l153.6-204.8c6.611-8.814 18.122-12.411 28.573-8.926 10.456 3.483 17.507 13.266 17.507 24.285v409.6c0 11.019-7.051 20.802-17.504 24.286-2.662 0.886-5.392 1.315-8.093 1.315zM364.8 537.6l96 128v-256l-96 128z' />
+            <path d='M281.6 768c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M691.205 768.002c-7.906 0-15.557-3.67-20.485-10.242l-153.6-204.8c-6.829-9.101-6.829-21.618 0-30.718l153.6-204.8c6.611-8.816 18.114-12.414 28.573-8.926 10.456 3.483 17.507 13.266 17.507 24.285v409.6c0 11.019-7.051 20.802-17.504 24.286-2.662 0.886-5.394 1.315-8.091 1.315zM569.6 537.6l96 128v-256l-96 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fish.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fish.js
new file mode 100644
index 00000000..8b5dbfc6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Fish.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Fish
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 460.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 563.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 665.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 512c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 614.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M691.2 563.2c-6.752 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M307.2 486.4c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8zM230.4 512c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M1019.366 727.709c-0.725-1.034-71.040-101.99-96.845-190.35 25.565-93.925 95.645-188.245 96.36-189.2 6.65-8.867 6.838-21.003 0.47-30.074-6.37-9.070-17.859-13.011-28.448-9.765-6.154 1.885-144.018 44.883-248.349 138.563-19.234-17.982-41.96-37.742-67.744-57.578-3.712-2.856-7.432-5.654-11.155-8.422-5.941-46.032 6.499-89.301 37.053-128.749 25.507-32.933 54.635-50.846 54.862-50.986 9.365-5.618 14.133-16.555 11.878-27.238-2.256-10.683-11.038-18.76-21.874-20.115-2.229-0.278-55.434-6.704-128.382 3.678-92.77 13.205-175.87 48.003-241.138 100.826-14.515-1.507-28.942-2.299-43.256-2.299-5.966 0-11.818 0.142-17.574 0.398-0.179 0.003-0.358 0.016-0.538 0.022-132.189 6.054-210.002 77.845-252.461 138.499-47.333 67.619-61.165 134.832-61.731 137.661-0.662 3.314-0.662 6.726 0 10.040 0.566 2.829 14.397 70.040 61.731 137.661 42.376 60.536 119.97 132.171 251.696 138.466 0.336 0.024 0.672 0.034 1.010 0.042 5.851 0.264 11.8 0.411 17.867 0.411 31.813 0 64.173-3.768 96.835-11.195 68.888 49.024 128.387 61.763 171.555 61.763 8.011 0 15.466-0.437 22.306-1.163 50.365-5.336 79.866-26.526 83.062-28.925 10.856-8.142 13.461-23.36 5.954-34.662-11.88-17.885-41.002-69.848-46.126-112.738 2.811-2.107 5.619-4.234 8.424-6.389 25.784-19.834 48.51-39.594 67.742-57.574 104.333 93.682 242.195 136.677 248.35 138.562 2.475 0.76 4.998 1.125 7.496 1.125 8.046 0 15.808-3.803 20.712-10.552 6.424-8.843 6.526-20.79 0.256-29.742zM622.874 208.386c18.981-2.758 36.563-4.254 52.014-4.984-4.47 4.883-8.976 10.147-13.408 15.781-30.214 38.406-47.074 81.216-49.968 125.973-29.422-18.466-59.016-34.211-88.502-47.034-25.763-11.2-51.475-20.15-77.030-26.899 62.493-39.077 128.435-55.795 176.894-62.837zM105.178 652.349c-34.75-49.077-49.33-99.122-53.294-114.781 3.888-15.517 18.046-64.37 52.288-113.286 48.366-69.094 114.576-107.867 197.096-115.606 37.424 70.085 57.133 148.888 57.133 228.925s-19.709 158.838-57.131 228.926c-81.93-7.688-147.8-45.981-196.091-114.178zM655.349 809.066c-28.354 10.827-84.778 21.050-160.79-20.549 9.474-3.525 18.957-7.314 28.45-11.44 32.488-14.125 65.101-31.794 97.475-52.749 8.315 32.886 23.499 64.158 34.866 84.738zM642.621 646.054c-67.566 51.814-169.917 112.886-284.346 121.024 33.68-71.39 51.325-149.891 51.325-229.478s-17.645-158.088-51.326-229.478c114.43 8.138 216.779 69.21 284.347 121.024 55.68 42.699 97.026 85.894 117.213 108.454-20.194 22.566-61.538 65.76-117.213 108.454zM779.062 592.258c21.39-22.355 33.504-37.386 34.528-38.666 7.48-9.35 7.48-22.634 0-31.984-1.024-1.28-13.136-16.31-34.528-38.666 49.882-44.102 108.987-76.256 154.368-96.99-23.002 39.702-48.963 92.218-62.267 145.437-1.056 4.227-1.018 8.651 0.114 12.858 13.715 51.006 40.858 105.070 64.277 145.966-45.65-20.694-105.83-53.163-156.491-97.955z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag.js
new file mode 100644
index 00000000..eb276a43
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Flag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M76.8 1024c-14.138 0-25.6-11.461-25.6-25.6v-870.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v870.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M793.6 614.4c-113.005 0-171.389-58.386-222.901-109.899-50.925-50.922-94.902-94.901-186.699-94.901s-135.774 43.979-186.699 94.901c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203 51.514-51.512 109.899-109.898 222.902-109.898s171.389 58.386 222.901 109.899c50.925 50.923 94.904 94.901 186.699 94.901 87.264 0 131.315-39.744 179.2-87.414v-288.141c-42.934 37.016-96.406 68.355-179.2 68.355-113.005 0-171.389-58.386-222.901-109.899-50.925-50.922-94.902-94.901-186.699-94.901s-135.774 43.979-186.699 94.901c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203 51.514-51.512 109.899-109.898 222.902-109.898s171.389 58.386 222.901 109.899c50.925 50.922 94.904 94.901 186.699 94.901s135.774-43.979 186.699-94.901c7.32-7.322 18.33-9.514 27.899-5.55 9.565 3.962 15.802 13.296 15.802 23.651v358.4c0 6.79-2.698 13.301-7.499 18.101-51.512 51.514-109.896 109.899-222.901 109.899z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag2.js
new file mode 100644
index 00000000..9aa56411
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Flag2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M76.8 1024c-14.138 0-25.6-11.461-25.6-25.6v-768c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v768c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M793.6 716.8c-113.005 0-171.389-58.386-222.901-109.899-50.925-50.923-94.902-94.901-186.699-94.901s-135.774 43.978-186.699 94.901c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203 51.514-51.512 109.899-109.898 222.902-109.898s171.389 58.386 222.901 109.899c50.925 50.923 94.904 94.901 186.699 94.901 87.264 0 131.315-39.744 179.2-87.416v-288.139c-42.934 37.016-96.406 68.355-179.2 68.355-113.005 0-171.389-58.386-222.901-109.899-50.925-50.922-94.902-94.901-186.699-94.901s-135.774 43.979-186.699 94.901c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203 51.514-51.512 109.899-109.898 222.902-109.898s171.389 58.386 222.901 109.899c50.925 50.922 94.904 94.901 186.699 94.901s135.774-43.979 186.699-94.901c7.32-7.322 18.33-9.514 27.899-5.55 9.565 3.962 15.802 13.296 15.802 23.651v358.4c0 6.79-2.698 13.299-7.499 18.101-51.512 51.514-109.896 109.899-222.901 109.899z' />
+            <path d='M76.8 153.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag3.js
new file mode 100644
index 00000000..8f252b31
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flag3.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Flag3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M76.8 972.8c-14.138 0-25.6-11.461-25.6-25.6v-768c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v768c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M179.181 512.002c-5.346 0-10.734-1.667-15.341-5.122-11.31-8.483-13.603-24.53-5.12-35.838 3.45-4.6 85.789-112.64 199.68-112.64 86.715 0 144.038 30.666 194.614 57.722 44.813 23.973 83.515 44.677 138.186 44.677 112.246 0 192.389-106.49 238.093-190.344-35.736 20.317-81.411 36.744-135.693 36.744-113.005 0-171.389-58.386-222.901-109.899-50.925-50.922-94.902-94.901-186.699-94.901-113.883 0-183.629 91.238-184.32 92.16-8.483 11.31-24.53 13.603-35.84 5.12s-13.603-24.53-5.12-35.84c3.45-4.6 86.080-112.64 225.28-112.64 113.003 0 171.389 58.386 222.901 109.899 50.925 50.922 94.904 94.901 186.699 94.901 113.883 0 183.629-91.238 184.32-92.16 7.534-10.043 21.238-13.141 32.362-7.315 11.122 5.827 16.374 18.861 12.405 30.771-1.090 3.269-27.288 80.958-79.786 159.704-31.341 47.011-65.638 84.654-101.941 111.88-46.997 35.248-97.384 53.12-149.76 53.12-67.504 0-115.715-25.79-162.338-50.733-49.669-26.57-96.582-51.667-170.462-51.667-88.576 0-158.029 91.238-158.72 92.16-5.029 6.706-12.717 10.242-20.499 10.242z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flare.js
new file mode 100644
index 00000000..8f10cd21
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flare.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Flare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384.378 435.576c-6.552 0-13.102-2.499-18.101-7.498l-108.613-108.611c-9.998-9.998-9.998-26.206 0-36.203 9.998-9.998 26.206-9.998 36.203 0l108.613 108.611c9.998 9.998 9.998 26.206 0 36.203-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M697.034 799.434c-6.552 0-13.102-2.499-18.101-7.499l-108.613-108.61c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-10 36.203 0l108.613 108.61c9.998 9.997 9.998 26.206 0 36.203-4.998 5-11.55 7.499-18.102 7.499z' />
+            <path d='M275.765 799.434c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l108.613-108.611c9.997-9.998 26.206-9.998 36.203 0 9.997 9.997 9.997 26.206 0 36.203l-108.613 108.611c-4.997 5-11.55 7.499-18.101 7.499z' />
+            <path d='M588.422 435.576c-6.554 0-13.102-2.499-18.101-7.499-9.998-9.998-9.998-26.206 0-36.203l108.613-108.611c9.998-9.997 26.208-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.203l-108.613 108.611c-5 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M486.4 409.6c-14.138 0-25.6-11.462-25.6-25.6v-307.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 563.2h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 563.2h-307.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 614.4c-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8 42.349 0 76.8 34.453 76.8 76.8 0 42.349-34.451 76.8-76.8 76.8zM486.4 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashAuto.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashAuto.js
new file mode 100644
index 00000000..2b8700a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashAuto.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FlashAuto
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.592 1024c-5.030 0-10.088-1.478-14.485-4.498-10.168-6.984-13.91-20.229-8.901-31.501l166.046-373.602h-245.053c-10.355 0-19.69-6.237-23.651-15.803s-1.771-20.576 5.55-27.899l512-512c8.725-8.725 22.427-9.984 32.595-3s13.909 20.227 8.899 31.499l-166.046 373.603h245.053c10.355 0 19.69 6.237 23.651 15.803 3.963 9.566 1.771 20.578-5.55 27.899l-512 512c-4.95 4.95-11.506 7.498-18.109 7.498zM241.003 563.2h222.64c8.666 0 16.742 4.384 21.466 11.65 4.722 7.267 5.448 16.429 1.928 24.347l-126.050 283.611 370.81-370.808h-222.642c-8.666 0-16.742-4.384-21.466-11.65-4.722-7.267-5.448-16.429-1.928-24.347l126.050-283.61-370.808 370.806z' />
+            <path d='M844.8 716.8c-70.579 0-128 57.421-128 128v153.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h153.6v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-70.579-57.421-128-128-128zM768 870.4v-25.6c0-42.349 34.451-76.8 76.8-76.8s76.8 34.451 76.8 76.8v25.6h-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashMemory.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashMemory.js
new file mode 100644
index 00000000..da71140a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlashMemory.js
@@ -0,0 +1,17 @@
+// Icon: Linear.FlashMemory
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-640c0-35.235 18.787-80.594 43.701-105.506l157.992-157.992c24.917-24.915 70.275-43.702 105.507-43.702h435.2c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM409.6 51.2c-21.245 0-54.278 13.683-69.302 28.707l-157.992 157.992c-15.024 15.022-28.706 48.053-28.706 69.301v640c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-435.2z' />
+            <path d='M793.6 256c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 256c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 256c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M384 256c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M691.2 256c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flashlight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flashlight.js
new file mode 100644
index 00000000..96933672
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Flashlight.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Flashlight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 0h-409.6c-42.347 0-76.8 34.453-76.8 76.8v102.4c0 32.099 11.245 79.733 25.6 108.443l56.605 113.211c10.758 21.515 20.195 61.49 20.195 85.546v409.6c0 70.579 57.421 128 128 128h102.4c70.579 0 128-57.421 128-128v-409.6c0-24.058 9.435-64.032 20.194-85.546l56.606-113.211c14.355-28.709 25.6-76.342 25.6-108.443v-102.4c0-42.347-34.451-76.8-76.8-76.8zM281.6 51.2h409.6c14.115 0 25.6 11.485 25.6 25.6v25.6h-460.8v-25.6c0-14.115 11.485-25.6 25.6-25.6zM696.606 264.746l-56.606 113.211c-14.355 28.709-25.6 76.342-25.6 108.443v409.6c0 42.349-34.451 76.8-76.8 76.8h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-409.6c0-32.099-11.245-79.733-25.6-108.443l-56.605-113.211c-10.758-21.515-20.195-61.49-20.195-85.546v-25.6h460.8v25.6c0 24.058-9.435 64.032-20.194 85.546z' />
+            <path d='M486.4 665.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 563.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipFlops.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipFlops.js
new file mode 100644
index 00000000..1a3a286f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipFlops.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FlipFlops
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1008.835 448.488c8.050-46.403 15.165-98.962 15.165-166.888 0-112.322-57.99-179.293-106.637-215.698-55.147-41.266-130.125-65.902-200.563-65.902-40.19 0-94.851 16.042-127.022 92.467-17.635 41.899-26.578 96.918-26.578 163.533 0 55.92 9.442 102.67 18.946 142.466-11.584 28.184-18.946 57.901-18.946 87.934 0 65.867 24.19 119.058 50.166 157.197-0.544 16.315-1.234 32.616-1.915 48.456-4.914 114.301-9.555 222.262 48.608 282.979 30.573 31.915 74.256 47.432 133.542 47.432 41.566 0 76.539-10.202 103.949-30.323 23.909-17.552 42.213-42.805 54.398-75.061 20.851-55.189 20.851-121.445 20.851-174.68 0-30.435 1.15-59.234 3.478-87.781 23.653-30.57 47.722-77.646 47.722-142.619 0-20.189-5.093-41.387-15.165-63.512zM716.8 51.2c98.976 0 256 62.55 256 230.4 0 38.347-2.421 71.616-6.003 101.61-20.926-25.541-47.53-52.072-79.818-79.515-48.733-41.424-96.899-73.458-118.979-87.51v-36.984c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v39.57c-18.52 16.645-60.963 57.304-96.557 109.952-3.486-22.387-5.843-46.568-5.843-72.722 0-76.486 13.302-204.8 102.4-204.8zM793.6 971.264c-44.579 0-76.166-10.354-96.568-31.65-42.206-44.058-39.005-138.517-34.686-239.339 7.507 6.846 12.574 10.714 13.496 11.405 11.288 8.467 27.27 6.181 35.768-5.085s6.248-27.304-4.994-35.834c-0.922-0.699-92.216-71.27-92.216-184.362 0-93.075 94.688-190.395 130.71-224.048 22.514 14.55 65.757 43.843 108.709 80.354 76.726 65.216 118.981 125.339 118.981 169.294 0 45.901-14.61 85.97-43.422 119.101-22.072 25.379-44.71 37.142-44.827 37.203-12.645 6.322-17.771 21.699-11.448 34.346 4.485 8.971 13.525 14.158 22.917 14.158 3.846-0.002 7.754-0.872 11.429-2.709 0.525-0.262 6.186-3.134 14.722-8.851-0.378 12.181-0.57 24.531-0.57 37.152 0 125.216-9.632 228.864-128 228.864z' />
+            <path d='M441.854 396.93c9.504-39.795 18.946-86.547 18.946-142.466 0-66.614-8.942-121.634-26.578-163.533-32.17-76.426-86.832-92.467-127.022-92.467-70.438 0-145.416 24.637-200.562 65.902-48.648 36.405-106.638 103.376-106.638 215.698 0 67.925 7.117 120.483 15.165 166.886-10.072 22.126-15.165 43.325-15.165 63.514 0 64.973 24.067 112.048 47.722 142.619 2.328 28.547 3.478 57.346 3.478 87.781 0 53.235 0 119.491 20.853 174.68 12.187 32.256 30.49 57.509 54.398 75.061 27.41 20.122 62.384 30.323 103.949 30.323 59.286 0 102.968-15.515 133.542-47.432 58.163-60.717 53.522-168.68 48.608-282.979-0.682-15.84-1.371-32.141-1.917-48.456 25.974-38.139 50.166-91.33 50.166-157.197 0-30.034-7.362-59.75-18.946-87.934zM312.32 705.024c8.482 11.31 24.528 13.602 35.84 5.12 0.92-0.691 5.989-4.558 13.496-11.406 4.318 100.824 7.518 195.283-34.686 239.341-20.4 21.298-51.989 31.65-96.568 31.65-118.368 0-128-103.648-128-228.864 0-12.621-0.192-24.97-0.57-37.155 8.534 5.715 14.197 8.589 14.722 8.851 3.675 1.837 7.581 2.709 11.429 2.709 9.39-0.002 18.432-5.187 22.917-14.158 6.323-12.645 1.197-28.024-11.45-34.346-0.883-0.44-88.25-45.405-88.25-156.301 0-43.853 42.080-103.827 118.486-168.875 43.022-36.626 86.579-66.138 109.205-80.768 36.038 33.666 130.709 130.976 130.709 224.043 0 113.091-91.294 183.662-92.216 184.363-11.262 8.493-13.533 24.504-5.064 35.797zM403.757 327.186c-35.594-52.65-78.035-93.307-96.557-109.952v-39.57c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v36.984c-22.080 14.053-70.246 46.086-118.979 87.51-32.288 27.443-58.891 53.974-79.818 79.517-3.582-29.995-6.003-63.264-6.003-101.611 0-167.85 157.024-230.4 256-230.4 89.098 0 102.4 128.314 102.4 204.8 0 26.154-2.357 50.334-5.843 72.722z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal.js
new file mode 100644
index 00000000..5a2db020
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FlipHorizontal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 1024h-409.6c-8.576 0-16.582-4.296-21.326-11.438-4.744-7.146-5.595-16.19-2.267-24.096l409.6-972.8c4.728-11.23 16.714-17.573 28.661-15.16 11.944 2.413 20.533 12.909 20.533 25.094v972.8c0 14.139-11.462 25.6-25.6 25.6zM64.155 972.8h345.445v-820.43l-345.445 820.43z' />
+            <path d='M998.4 1024h-409.6c-14.139 0-25.6-11.461-25.6-25.6v-972.8c0-12.186 8.589-22.682 20.533-25.094 11.941-2.414 23.931 3.93 28.661 15.16l409.6 972.8c3.328 7.904 2.477 16.95-2.267 24.096-4.744 7.142-12.75 11.438-21.326 11.438zM614.4 972.8h345.443l-345.443-820.43v820.43z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal2.js
new file mode 100644
index 00000000..c53c37ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipHorizontal2.js
@@ -0,0 +1,18 @@
+// Icon: Linear.FlipHorizontal2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.598 972.8c-4.002 0-8.019-0.938-11.712-2.837-8.526-4.389-13.886-13.174-13.886-22.763v-512c0-9.59 5.36-18.374 13.886-22.763 8.528-4.387 18.79-3.642 26.594 1.931l358.4 256c6.728 4.805 10.72 12.565 10.72 20.832s-3.994 16.027-10.72 20.832l-358.4 256c-4.424 3.16-9.642 4.768-14.882 4.768zM51.2 484.946v412.509l288.757-206.254-288.757-206.254z' />
+            <path d='M947.203 972.8c-5.242 0-10.458-1.608-14.883-4.768l-358.4-256c-6.728-4.805-10.72-12.565-10.72-20.832s3.992-16.027 10.72-20.832l358.4-256c7.803-5.573 18.066-6.318 26.594-1.931 8.526 4.389 13.886 13.173 13.886 22.763v512c0 9.589-5.36 18.374-13.886 22.763-3.69 1.899-7.709 2.837-11.71 2.837zM632.843 691.2l288.757 206.254v-412.509l-288.757 206.254z' />
+            <path d='M486.4 512c-14.138 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 819.2c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 972.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M896 51.2c-14.139 0-25.6 11.462-25.6 25.6v135.757c-100.885-102.965-238.883-161.357-384-161.357-85.99 0-168.16 19.701-244.226 58.555-72.533 37.050-136.797 91.139-185.845 156.426-8.493 11.304-6.213 27.352 5.091 35.843 4.608 3.462 10.005 5.134 15.357 5.134 7.774 0 15.458-3.53 20.486-10.226 92.88-123.629 234.715-194.533 389.136-194.533 134.822 0 262.851 55.717 354.714 153.6h-149.914c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical.js
new file mode 100644
index 00000000..a5b91c17
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FlipVertical
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M0 435.2v-409.6c0-8.576 4.296-16.582 11.438-21.326 7.146-4.744 16.19-5.595 24.096-2.267l972.8 409.6c11.23 4.728 17.573 16.714 15.16 28.661-2.413 11.944-12.909 20.533-25.094 20.533l-972.8 0c-14.139 0-25.6-11.462-25.6-25.6zM51.2 64.155v345.445h820.43l-820.43-345.445z' />
+            <path d='M0 998.4l-0-409.6c0-14.139 11.461-25.6 25.6-25.6h972.8c12.186 0 22.682 8.589 25.094 20.533 2.414 11.941-3.93 23.931-15.16 28.661l-972.8 409.6c-7.904 3.328-16.95 2.477-24.096-2.267-7.142-4.744-11.438-12.75-11.438-21.326zM51.2 614.4v345.443l820.43-345.443h-820.43z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical2.js
new file mode 100644
index 00000000..19b53b0a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FlipVertical2.js
@@ -0,0 +1,18 @@
+// Icon: Linear.FlipVertical2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 25.598c0-4.002 0.938-8.019 2.837-11.712 4.389-8.526 13.174-13.886 22.763-13.886h512c9.59 0 18.374 5.36 22.763 13.886 4.387 8.528 3.642 18.79-1.931 26.594l-256 358.4c-4.805 6.728-12.565 10.72-20.832 10.72s-16.027-3.994-20.832-10.72l-256-358.4c-3.16-4.424-4.768-9.642-4.768-14.882zM539.054 51.2h-412.509l206.254 288.757 206.254-288.757z' />
+            <path d='M51.2 947.203c0-5.242 1.608-10.458 4.768-14.883l256-358.4c4.805-6.728 12.565-10.72 20.832-10.72s16.027 3.992 20.832 10.72l256 358.4c5.573 7.803 6.318 18.066 1.931 26.594-4.389 8.526-13.173 13.886-22.763 13.886h-512c-9.589 0-18.374-5.36-22.763-13.886-1.899-3.69-2.837-7.709-2.837-11.71zM332.8 632.843l-206.254 288.757h412.509l-206.254-288.757z' />
+            <path d='M512 486.4c0-14.138 11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.138 0-25.6-11.462-25.6-25.6z' />
+            <path d='M358.4 486.4c0-14.138 11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6z' />
+            <path d='M204.8 486.4c0-14.138 11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6z' />
+            <path d='M51.2 486.4c0-14.138 11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6z' />
+            <path d='M972.8 896c0-14.139-11.462-25.6-25.6-25.6h-135.757c102.965-100.885 161.357-238.883 161.357-384 0-85.99-19.701-168.16-58.555-244.226-37.050-72.533-91.139-136.797-156.426-185.845-11.304-8.493-27.352-6.213-35.843 5.091-3.462 4.608-5.134 10.005-5.134 15.357 0 7.774 3.53 15.458 10.226 20.486 123.629 92.88 194.533 234.715 194.533 389.136 0 134.822-55.717 262.851-153.6 354.714v-149.914c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FloppyDisk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FloppyDisk.js
new file mode 100644
index 00000000..0cbc7d85
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FloppyDisk.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FloppyDisk
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 307.2h-102.4c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6zM614.4 256h51.2v-102.4h-51.2v102.4z' />
+            <path d='M1016.501 135.498l-128-128c-4.8-4.8-11.312-7.498-18.101-7.498h-844.8c-14.138-0-25.6 11.462-25.6 25.6v972.8c0 14.139 11.462 25.6 25.6 25.6h972.8c14.139 0 25.6-11.461 25.6-25.6v-844.8c0-6.79-2.698-13.301-7.499-18.102zM307.2 51.2h460.8v307.2h-460.8v-307.2zM819.2 972.8h-614.4v-409.6h614.4v409.6zM972.8 972.8h-102.4v-435.2c0-14.139-11.461-25.6-25.6-25.6h-665.6c-14.138 0-25.6 11.461-25.6 25.6v435.2h-102.4v-921.6h204.8v332.8c0 14.138 11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.462 25.6-25.6v-332.8h40.595l113.005 113.003v808.597z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Focus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Focus.js
new file mode 100644
index 00000000..1c574f5c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Focus.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Focus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 358.4c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c42.349 0 76.8 34.453 76.8 76.8v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 358.4c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 921.6h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 921.6h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M588.8 512h-76.8v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Folder.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Folder.js
new file mode 100644
index 00000000..be8e8303
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Folder.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Folder
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256h-384c-4.386 0-12.189-4.822-14.152-8.747l-28.302-56.603c-10.56-21.122-36.331-37.050-59.946-37.050h-358.4c-23.614 0-49.386 15.928-59.946 37.048l-28.304 56.605c-8.067 16.136-14.15 41.907-14.15 59.947v537.6c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-512c0-42.347-34.451-76.8-76.8-76.8zM972.8 844.8c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6c0-10.053 4.25-28.058 8.746-37.048l28.304-56.605c1.962-3.925 9.765-8.747 14.15-8.747h358.4c4.386 0 12.189 4.822 14.152 8.747l28.302 56.603c10.562 21.122 36.331 37.050 59.946 37.050h384c14.115 0 25.6 11.485 25.6 25.6v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderDownload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderDownload.js
new file mode 100644
index 00000000..7b47b6b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderDownload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderDownload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M658.101 596.299c-9.997-9.997-26.206-9.997-36.203 0l-109.898 109.898v-270.997c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v270.997l-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderFilm.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderFilm.js
new file mode 100644
index 00000000..2bdfe300
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderFilm.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderFilm
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M793.6 409.6h-563.2c-14.138 0-25.6 11.461-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6v-307.2c0-14.139-11.461-25.6-25.6-25.6zM256 563.2h51.2v51.2h-51.2v-51.2zM358.4 460.8h307.2v256h-307.2v-256zM716.8 563.2h51.2v51.2h-51.2v-51.2zM768 512h-51.2v-51.2h51.2v51.2zM307.2 460.8v51.2h-51.2v-51.2h51.2zM256 665.6h51.2v51.2h-51.2v-51.2zM716.8 716.8v-51.2h51.2v51.2h-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderHeart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderHeart.js
new file mode 100644
index 00000000..a4478545
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderHeart.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderHeart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M486.4 768c-3.934 0-7.867-0.906-11.48-2.718-2.168-1.088-53.69-27.090-105.958-66.427-74.486-56.058-112.253-110.31-112.253-161.254 0-37.634 15.045-71.203 42.365-94.528 25.282-21.584 59.989-33.472 97.726-33.472 30.63 0 62.229 14.085 89.6 39.371 27.37-25.286 58.97-39.371 89.6-39.371 37.738 0 72.443 11.888 97.726 33.472 27.317 23.325 42.363 56.894 42.363 94.528 0 50.944-37.766 105.197-112.25 161.254-52.269 39.338-103.79 65.339-105.958 66.427-3.613 1.813-7.547 2.718-11.482 2.718zM396.8 460.8c-44.245 0-88.891 23.747-88.891 76.8 0 65.766 121.752 145.206 178.406 175.87 17.515-9.566 52.651-29.808 87.29-55.942 58.866-44.416 91.285-87.006 91.285-119.928 0-53.053-44.643-76.8-88.89-76.8-22.523 0-48.578 15.589-69.696 41.699-4.861 6.010-12.176 9.501-19.904 9.501s-15.043-3.491-19.904-9.501c-21.12-26.11-47.173-41.699-69.696-41.699z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMinus.js
new file mode 100644
index 00000000..6588e528
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMinus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M640 614.4h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMusic.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMusic.js
new file mode 100644
index 00000000..55518c8d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderMusic.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderMusic
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.083-43.811 14.15-59.946l28.304-56.605c10.56-21.122 36.331-37.050 59.946-37.050h358.4c23.614 0 49.386 15.928 59.946 37.050l28.302 56.603c1.963 3.925 9.766 8.747 14.152 8.747h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.822-14.15 8.746l-28.304 56.605c-4.496 8.992-8.746 26.997-8.746 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.302-56.603c-1.963-3.925-9.765-8.747-14.152-8.747h-358.4z' />
+            <path d='M707.432 415.403c-5.931-4.866-13.731-6.808-21.25-5.306l-256 51.2c-11.97 2.394-20.582 12.899-20.582 25.102v137.994c-14.982-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-183.813l204.8-40.963v106.766c-14.981-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-204.797c0-7.67-3.438-14.934-9.368-19.797zM358.4 716.8c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6zM614.4 665.6c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPicture.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPicture.js
new file mode 100644
index 00000000..382c7977
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPicture.js
@@ -0,0 +1,14 @@
+// Icon: Linear.FolderPicture
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.083-43.811 14.15-59.946l28.304-56.605c10.56-21.122 36.331-37.050 59.946-37.050h358.4c23.614 0 49.386 15.928 59.946 37.050l28.302 56.603c1.963 3.925 9.766 8.747 14.152 8.747h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.822-14.15 8.746l-28.304 56.605c-4.496 8.992-8.746 26.997-8.746 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.302-56.603c-1.963-3.925-9.765-8.747-14.152-8.747h-358.4z' />
+            <path d='M640 665.6c42.349 0 76.8-34.451 76.8-76.8s-34.451-76.8-76.8-76.8-76.8 34.451-76.8 76.8 34.451 76.8 76.8 76.8zM640 563.2c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6z' />
+            <path d='M793.6 409.6h-563.2c-14.138 0-25.6 11.461-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6v-307.2c0-14.139-11.461-25.6-25.6-25.6zM256 648.979l64.806-81.006c3.715-4.645 8.422-7.274 13.254-7.397 4.806-0.147 9.67 2.251 13.621 6.699l132.91 149.525h-224.592v-67.821zM768 716.8h-218.902l-163.149-183.541c-13.941-15.685-33.349-24.354-53.218-23.866-19.88 0.515-38.798 10.211-51.906 26.595l-24.826 31.032v-106.221h512v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPlus.js
new file mode 100644
index 00000000..963ba626
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderPlus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M640 563.2h-128v-128c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-128c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h128v128c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h128c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderSearch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderSearch.js
new file mode 100644
index 00000000..9910a300
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderSearch.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderSearch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M660.48 727.040l-78.403-104.538c20.088-22.611 32.323-52.347 32.323-84.902 0-70.579-57.421-128-128-128s-128 57.421-128 128 57.421 128 128 128c19.582 0 38.144-4.434 54.754-12.328l78.366 104.488c5.030 6.706 12.715 10.242 20.499 10.242 5.344 0 10.734-1.669 15.339-5.122 11.312-8.483 13.605-24.53 5.122-35.84zM409.6 537.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8c-42.347 0-76.8-34.453-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderShared.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderShared.js
new file mode 100644
index 00000000..1f5f0534
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderShared.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FolderShared
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M486.4 768c-44.166 0-86.598-16.21-119.478-45.64-10.534-9.43-11.43-25.614-2-36.149 9.43-10.533 25.614-11.432 36.149-2.002 23.477 21.018 53.782 32.59 85.33 32.59 70.579 0 128-57.421 128-128 0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-78.624c-12.459 86.728-87.256 153.6-177.376 153.6z' />
+            <path d='M332.8 614.4h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h78.624c12.459-86.728 87.256-153.6 177.376-153.6 44.166 0 86.595 16.208 119.474 45.637 10.534 9.43 11.432 25.614 2.002 36.149-9.43 10.533-25.614 11.432-36.149 2.002-23.477-21.014-53.779-32.587-85.326-32.587-70.579 0-128 57.421-128 128 0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 563.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderStar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderStar.js
new file mode 100644
index 00000000..718f053a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderStar.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderStar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M588.797 768c-3.901 0-7.821-0.891-11.445-2.702l-90.952-45.475-90.952 45.475c-8.834 4.418-19.419 3.36-27.203-2.718s-11.378-16.091-9.235-25.731l22.824-102.704-68.469-79.882c-6.506-7.592-7.998-18.275-3.821-27.358s13.258-14.904 23.256-14.904h86.491l44.155-89.416c4.314-8.734 13.211-14.264 22.954-14.264s18.64 5.53 22.954 14.264l44.155 89.416h86.491c9.997 0 19.080 5.821 23.258 14.902s2.686 19.766-3.821 27.358l-68.47 79.882 22.824 102.704c2.142 9.64-1.451 19.653-9.235 25.731-4.589 3.584-10.155 5.422-15.758 5.422zM486.4 665.6c3.923 0 7.845 0.901 11.448 2.702l54.294 27.147-13.933-62.698c-1.749-7.866 0.309-16.096 5.554-22.214l40.578-47.338h-46.741c-9.742 0-18.64-5.53-22.954-14.264l-28.246-57.2-28.246 57.2c-4.314 8.734-13.211 14.264-22.954 14.264h-46.739l40.576 47.339c5.245 6.118 7.301 14.349 5.554 22.214l-13.933 62.698 54.294-27.147c3.603-1.803 7.525-2.704 11.448-2.704z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUpload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUpload.js
new file mode 100644
index 00000000..a83d1345
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUpload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderUpload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M658.101 545.099l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l109.899-109.899v270.997c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-270.997l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUser.js
new file mode 100644
index 00000000..68f86639
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FolderUser.js
@@ -0,0 +1,13 @@
+// Icon: Linear.FolderUser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-537.6c0-18.040 6.085-43.813 14.154-59.947l28.301-56.603c10.558-21.122 36.33-37.050 59.946-37.050h358.4c23.611 0 49.382 15.926 59.947 37.045l28.302 56.61c1.962 3.923 9.765 8.746 14.15 8.746h384c42.349 0 76.8 34.453 76.8 76.8v512c0 42.349-34.451 76.8-76.8 76.8zM102.4 204.8c-4.387 0-12.189 4.821-14.149 8.744l-28.302 56.606c-4.498 8.992-8.749 26.997-8.749 37.050v537.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.115-11.485-25.6-25.6-25.6h-384c-23.614 0-49.384-15.928-59.946-37.050l-28.301-56.605c-1.962-3.92-9.766-8.746-14.154-8.746h-358.4z' />
+            <path d='M665.576 740.704c-0.192-8.499-1.95-46.563-17.946-84.952-10.963-26.309-26.317-47.486-45.638-62.944-4.936-3.949-10.114-7.488-15.504-10.651 17.283-18.341 27.912-43.024 27.912-70.157 0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4c0 27.133 10.627 51.816 27.914 70.158-5.392 3.165-10.57 6.702-15.506 10.651-19.322 15.458-34.677 36.634-45.638 62.944-17.766 42.635-17.97 84.87-17.97 86.646 0 14.139 11.462 25.6 25.6 25.6h256c0.011 0 0.024 0.002 0.032 0 14.139 0 25.6-11.461 25.6-25.6 0-0.57-0.018-1.134-0.056-1.696zM460.8 512c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2c-28.232 0-51.2-22.968-51.2-51.2zM412.152 716.8c1.955-11.966 5.402-26.77 11.478-41.354 17.117-41.078 46.022-61.046 88.37-61.046 73.144 0 94.045 64.947 100.016 102.4h-199.864z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Football.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Football.js
new file mode 100644
index 00000000..cc74c3c6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Football.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Football
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M980.301 176.098c-3.093-3.093-77.664-75.742-246.701-75.742-85.034 0-179.712 18.416-281.41 54.736-102.648 36.661-190.346 90.264-260.656 159.323-56.4 55.395-101.693 120.702-134.624 194.11-56.051 124.946-56.835 229.453-56.842 233.842-0.048 36.339 21.546 80.566 50.227 102.875 4.059 3.158 101.44 77.341 277.178 77.341 86.507 0 177.499-18.131 270.45-53.888 96.691-37.197 179.31-91.187 245.566-160.472 53.051-55.478 95.682-120.73 126.701-193.942 52.744-124.485 53.646-228.25 53.659-232.605 0.104-35.259-18.619-80.648-43.549-105.578zM922.253 496.174c-65.485 153.186-180.789 262.442-342.714 324.731-87.061 33.493-171.867 50.475-252.066 50.475-157.062 0-244.946-65.944-245.742-66.555-6.502-5.058-12.765-12.986-17.901-21.974 31.92-44.090 105.666-133.736 232.654-224.493 11.502-8.222 14.163-24.211 5.942-35.712-8.222-11.504-24.21-14.165-35.714-5.944-101.795 72.752-171.266 145.318-213.413 196.304 3.974-37.379 15.706-106.365 50.322-183.526 69.309-154.501 192.378-264.242 365.786-326.173 96.155-34.341 185.043-51.754 264.19-51.754 76.544 0 129.784 16.598 160.968 30.522 24.088 10.755 39.067 21.602 45.686 26.946-43.43 5.715-110.437 18.741-205.386 47.971-13.514 4.16-21.096 18.486-16.936 32 3.387 11.005 13.515 18.075 24.459 18.075 2.494 0 5.032-0.368 7.539-1.139 112.392-34.6 183.374-45.294 218.642-48.563 2.582 8.619 4.099 17.035 4.078 24.126-0.003 0.981-1.117 99.403-50.397 214.683z' />
+            <path d='M384 563.131c-14.138 0-25.6-11.461-25.6-25.6 0-42.387-34.483-76.87-76.869-76.87-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c70.618 0 128.069 57.453 128.069 128.070 0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 511.931c-14.138 0-25.6-11.462-25.6-25.6 0-42.387-34.483-76.87-76.869-76.87-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c70.618 0 128.069 57.453 128.069 128.070 0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 460.731c-14.139 0-25.6-11.462-25.6-25.6 0-42.387-34.483-76.87-76.869-76.87-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c70.618 0 128.069 57.453 128.069 128.070 0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 409.531c-14.139 0-25.6-11.462-25.6-25.6 0-42.387-34.483-76.87-76.869-76.87-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c70.618 0 128.069 57.453 128.069 128.070 0 14.138-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Footprint.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Footprint.js
new file mode 100644
index 00000000..f5bd7858
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Footprint.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Footprint
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 614.264c-58.614 0-111.467-28.782-148.827-81.045-36.618-51.227-55.973-120.531-55.973-200.419 0-35.587 2.738-126.965 28.093-206.661 33.166-104.254 86.557-126.139 125.507-126.139 57.349 0 110.202 36.466 148.827 102.678 36.094 61.877 55.973 143.603 55.973 230.122 0 64.957 0 132.123-17.315 184.034-21.566 64.65-67.419 97.43-136.285 97.43zM665.6 51.2c-39.622 0-63.589 49.194-76.718 90.461-23.179 72.861-25.682 157.941-25.682 191.139 0 68.16 16.488 128.763 46.427 170.645 27.88 39.003 64.941 59.619 107.173 59.619 46.886 0 73.118-18.672 87.715-62.434 14.685-44.022 14.685-106.963 14.685-167.83 0-152.643-70.341-281.6-153.6-281.6z' />
+            <path d='M691.2 921.6c-39.17 0-90.755-15.904-114.067-91.672-13.933-45.278-13.933-99.291-13.933-138.728 0-8.872 4.594-17.112 12.141-21.776s16.971-5.093 24.907-1.12c20.661 10.33 54.661 16.496 90.952 16.496s70.291-6.166 90.952-16.498c7.934-3.966 17.36-3.544 24.907 1.12s12.141 12.904 12.141 21.776c0 39.437 0 93.45-13.933 138.728-23.312 75.77-74.898 91.674-114.067 91.674zM614.731 727.36c0.755 29.197 3.23 61.165 11.336 87.512 15.144 49.218 42.765 55.528 65.133 55.528s49.989-6.31 65.133-55.528c8.106-26.349 10.581-58.315 11.336-87.512-22.674 5.6-48.995 8.64-76.469 8.64s-53.795-3.040-76.469-8.64z' />
+            <path d='M256 716.664c-68.867 0-114.718-32.781-136.285-97.432-17.315-51.909-17.315-119.075-17.315-184.032 0-86.518 19.878-168.245 55.974-230.122 38.624-66.213 91.478-102.678 148.826-102.678 38.95 0 92.341 21.885 125.509 126.139 25.354 79.696 28.091 171.074 28.091 206.661 0 79.89-19.355 149.192-55.973 200.419-37.36 52.262-90.214 81.045-148.827 81.045zM307.2 153.6c-83.261 0-153.6 128.957-153.6 281.6 0 60.867 0 123.81 14.685 167.832 14.598 43.762 40.83 62.434 87.715 62.434 42.234 0 79.293-20.616 107.173-59.619 29.939-41.883 46.427-102.486 46.427-170.646 0-33.198-2.502-118.278-25.682-191.139-13.13-41.267-37.096-90.461-76.718-90.461z' />
+            <path d='M281.6 1024c-39.17 0-90.755-15.904-114.067-91.672-13.933-45.278-13.933-99.291-13.933-138.728 0-8.872 4.594-17.112 12.141-21.776 7.547-4.662 16.97-5.091 24.907-1.12 20.661 10.33 54.661 16.496 90.952 16.496s70.291-6.166 90.952-16.498c7.934-3.968 17.362-3.544 24.907 1.12 7.547 4.664 12.141 12.904 12.141 21.776 0 39.437 0 93.45-13.933 138.728-23.312 75.77-74.898 91.674-114.067 91.674zM205.133 829.76c0.755 29.197 3.229 61.165 11.336 87.512 15.142 49.218 42.762 55.528 65.131 55.528s49.989-6.31 65.133-55.528c8.107-26.349 10.581-58.315 11.336-87.512-22.672 5.6-48.995 8.64-76.467 8.64s-53.797-3.040-76.469-8.64z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ForwardCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ForwardCircle.js
new file mode 100644
index 00000000..3aec83e0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ForwardCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.ForwardCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M537.594 768c-3.299 0-6.624-0.635-9.79-1.949-9.566-3.962-15.803-13.296-15.803-23.651v-409.6c0-10.354 6.237-19.69 15.803-23.651 9.57-3.962 20.579-1.771 27.901 5.55l204.8 204.8c9.998 9.997 9.998 26.206 0 36.203l-204.8 204.8c-4.899 4.896-11.448 7.498-18.11 7.498zM563.2 394.603v285.994l142.997-142.997-142.997-142.997z' />
+            <path d='M281.595 768c-3.299 0-6.624-0.635-9.792-1.949-9.566-3.962-15.803-13.296-15.803-23.651v-409.6c0-10.354 6.237-19.69 15.803-23.651s20.576-1.773 27.899 5.55l204.8 204.8c9.997 9.997 9.997 26.206 0 36.203l-204.8 204.8c-4.898 4.896-11.446 7.498-18.107 7.498zM307.2 394.603v285.994l142.997-142.997-142.997-142.997z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameContract.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameContract.js
new file mode 100644
index 00000000..2f5fd333
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameContract.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FrameContract
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 460.8h-102.4c-42.349 0-76.8-34.451-76.8-76.8v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 460.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 42.349-34.453 76.8-76.8 76.8z' />
+            <path d='M588.8 819.2c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-42.349 34.451-76.8 76.8-76.8h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M384 819.2c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c42.347 0 76.8 34.451 76.8 76.8v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameExpand.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameExpand.js
new file mode 100644
index 00000000..95688d5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/FrameExpand.js
@@ -0,0 +1,15 @@
+// Icon: Linear.FrameExpand
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 358.4c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c42.349 0 76.8 34.453 76.8 76.8v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 358.4c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 921.6h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M896 921.6h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Funnel.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Funnel.js
new file mode 100644
index 00000000..1200e713
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Funnel.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Funnel
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.966 169.328c-20.294-13.707-48.59-25.803-84.106-35.95-69.917-19.976-162.418-30.978-260.461-30.978-98.045 0-190.544 11.002-260.461 30.978-35.515 10.147-63.813 22.243-84.104 35.95-32.594 22.016-39.435 45.363-39.435 61.072v25.6c0 21.894 16.451 58.026 32.701 82.4l250.398 375.598c12.838 19.259 24.101 56.456 24.101 79.602v153.6c0 8.872 4.594 17.112 12.141 21.776 4.11 2.541 8.778 3.824 13.459 3.824 3.912 0 7.835-0.898 11.448-2.702l102.4-51.2c8.674-4.336 14.152-13.2 14.152-22.898v-102.4c0-23.146 11.262-60.342 24.099-79.602l250.4-375.598c16.251-24.373 32.701-60.504 32.701-82.4v-25.6c0-15.709-6.842-39.056-39.434-61.072zM240.005 182.606c65.47-18.706 152.974-29.006 246.395-29.006s180.925 10.301 246.394 29.006c70.533 20.154 86.406 41.798 86.406 47.794s-15.874 27.64-86.406 47.794c-65.469 18.706-152.973 29.006-246.394 29.006s-180.925-10.301-246.395-29.006c-70.531-20.154-86.405-41.798-86.405-47.794s15.874-27.64 86.405-47.794zM544.701 685.598c-18.338 27.504-32.701 74.946-32.701 108.002v86.578l-51.2 25.6v-112.178c0-33.056-14.363-80.496-32.701-108.002l-249.859-374.79c14.035 5.997 29.966 11.549 47.699 16.614 69.917 19.976 162.416 30.978 260.461 30.978 98.043 0 190.544-11.002 260.459-30.978 17.733-5.067 33.666-10.619 47.702-16.616l-249.861 374.792z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gallon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gallon.js
new file mode 100644
index 00000000..dbda4b1e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gallon.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Gallon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M689.701 719.602c-12.838-19.259-24.101-56.456-24.101-79.602v-51.2c0-23.146 11.262-60.342 24.099-79.6l74-110.998c2.91-4.366 4.302-9.299 4.302-14.181-0.002-8.272-4.005-16.389-11.403-21.322-11.762-7.842-27.658-4.664-35.501 7.101l-74 111c-10.885 16.328-38.672 31.2-58.298 31.2h-204.8c-19.626 0-47.414-14.872-58.301-31.2l-74-111c-7.843-11.765-23.738-14.944-35.501-7.101-7.398 4.933-11.402 13.050-11.402 21.32 0 4.882 1.392 9.816 4.301 14.181l74 111c12.84 19.258 24.102 56.454 24.102 79.6v51.2c0 23.146-11.262 60.342-24.101 79.602l-74 110.998c-2.91 4.366-4.302 9.299-4.301 14.179 0 8.272 4.003 16.389 11.402 21.32 11.765 7.845 27.659 4.666 35.501-7.101l74-110.998c10.885-16.328 38.674-31.2 58.299-31.2h204.8c19.626 0 47.413 14.872 58.301 31.202l74 110.998c4.933 7.4 13.050 11.403 21.323 11.403 4.88 0 9.813-1.394 14.176-4.302 7.398-4.931 11.402-13.048 11.403-21.32 0-4.88-1.392-9.814-4.302-14.179l-74-111zM384 665.6c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-204.8z' />
+            <path d='M588.8 256h-204.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h204.8c42.349 0 76.8 34.453 76.8 76.8s-34.451 76.8-76.8 76.8zM384 153.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-204.8z' />
+            <path d='M877.899 201.694l-1.694-1.694 22.494-22.494c29.944-29.944 29.944-78.667 0-108.611l-45.995-45.992c-14.464-14.466-33.749-22.432-54.304-22.432s-39.84 7.966-54.304 22.432l-22.496 22.494-1.696-1.694c-24.912-24.914-70.27-43.702-105.504-43.702h-256c-35.234 0-80.59 18.787-105.506 43.701l-157.992 157.992c-24.914 24.914-43.702 70.272-43.702 105.507v640c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-640c0-35.234-18.787-80.59-43.701-105.506zM780.299 59.106c4.795-4.795 11.224-7.435 18.101-7.435s13.306 2.64 18.101 7.435l45.994 45.992c9.981 9.982 9.981 26.222 0 36.203l-22.494 22.496-82.197-82.197 22.496-22.494zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-640c0-21.246 13.682-54.278 28.706-69.301l157.992-157.992c15.024-15.024 48.056-28.707 69.302-28.707h256c21.246 0 54.278 13.682 69.301 28.706l157.994 157.992c15.022 15.024 28.706 48.056 28.706 69.302v640z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Game.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Game.js
new file mode 100644
index 00000000..5a3160a3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Game.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Game
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c90.926 0 179.611 25.254 256.466 73.034 74.717 46.45 135.534 112.258 175.882 190.309 3.118 6.035 3.71 13.062 1.646 19.534s-6.616 11.858-12.653 14.971l-365.502 188.552 365.501 188.55c6.037 3.114 10.589 8.501 12.653 14.973s1.472 13.499-1.646 19.533c-40.346 78.051-101.163 143.859-175.88 190.31-76.854 47.779-165.539 73.034-256.466 73.034zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c154.907 0 296.128-81.075 374.44-213.234l-386.176-199.214c-8.515-4.392-13.864-13.173-13.864-22.752s5.349-18.36 13.864-22.752l386.178-199.216c-78.314-132.157-219.534-213.232-374.442-213.232z' />
+            <path d='M588.8 358.4c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gamepad.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gamepad.js
new file mode 100644
index 00000000..570207ec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gamepad.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Gamepad
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 768c-55.33 0-109.509-18.115-153.603-51.189l-204.797 0.002c-44.094 33.072-98.274 51.187-153.6 51.187-141.158 0-256-114.84-256-256s114.842-256 256-256h512c141.16 0 256 114.84 256 256s-114.84 256-256 256zM623.184 665.611c5.861 0 11.546 2.011 16.101 5.699 36.786 29.76 81.293 45.49 128.715 45.49 112.926 0 204.8-91.874 204.8-204.8s-91.874-204.8-204.8-204.8h-512c-112.928 0-204.8 91.874-204.8 204.8s91.872 204.8 204.8 204.8c47.419 0 91.926-15.73 128.709-45.49 4.557-3.688 10.24-5.699 16.101-5.699h222.374z' />
+            <path d='M384 460.8h-76.8v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+            <path d='M691.2 512c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M844.8 614.4c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM844.8 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gas.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gas.js
new file mode 100644
index 00000000..e0564bf4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gas.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Gas
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 1024h-460.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h460.8c42.349 0 76.8 34.453 76.8 76.8v716.8c0 42.349-34.451 76.8-76.8 76.8zM76.8 204.8c-14.115 0-25.6 11.485-25.6 25.6v716.8c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-716.8c0-14.115-11.485-25.6-25.6-25.6h-460.8z' />
+            <path d='M435.2 512h-256c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h256c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM179.2 307.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h256c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-256z' />
+            <path d='M929.099 201.694l-117.392-117.39c-0.002-0.002-0.003-0.003-0.005-0.005s-0.003-0.003-0.005-0.005l-14.992-14.992c-23.552-23.554-67.741-46.294-100.598-51.771l-103.098-17.182c-13.947-2.323-27.138 7.098-29.461 21.043-2.325 13.946 7.098 27.136 21.042 29.461l103.098 17.182c21.198 3.533 52.458 19.165 69.616 34.459l-22.402 22.4c-29.944 29.944-29.944 78.667 0 108.611l29.994 29.992c14.464 14.466 33.75 22.432 54.304 22.432s39.84-7.966 54.304-22.432l22.366-22.366c13.808 16.139 25.73 46.235 25.73 66.069v486.4c0 42.349-34.451 76.8-76.8 76.8s-76.8-34.451-76.8-76.8v-358.4c0-42.347-34.451-76.8-76.8-76.8h-25.6v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6h25.6c14.115 0 25.6 11.485 25.6 25.6v358.4c0 70.579 57.421 128 128 128s128-57.421 128-128v-486.4c0-35.234-18.787-80.59-43.701-105.506zM819.2 234.73c-6.878 0-13.306-2.64-18.101-7.435l-29.994-29.992c-9.981-9.982-9.981-26.222 0-36.203l22.494-22.496 66.197 66.197-22.496 22.496c-4.795 4.794-11.222 7.434-18.101 7.434z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch.js
new file mode 100644
index 00000000..6f47b262
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch.js
@@ -0,0 +1,14 @@
+// Icon: Linear.GesturePinch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-167.376c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM905.459 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M281.6 102.4h-40.595l58.698-58.698c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-58.698 58.698v-40.595c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+            <path d='M128 153.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h40.595l-58.698 58.698c-9.997 9.998-9.997 26.206 0 36.205 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.498l58.698-58.698v40.595c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch2.js
new file mode 100644
index 00000000..ff5925e1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GesturePinch2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.GesturePinch2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M921.6 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-9.995 0-19.541 1.939-28.306 5.429-8.885-32.59-38.728-56.629-74.094-56.629-8.971 0-17.589 1.547-25.6 4.387v-132.387c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.554-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM314.901 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.39l-207.707-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M384 153.6h-91.797l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-109.899 109.899v-91.797c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6h153.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+            <path d='M204.8 230.342c-0.032-14.117-11.483-25.542-25.6-25.542h-153.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-109.898 109.899c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l110.035-110.035 0.205 91.992c0.032 14.12 11.486 25.544 25.598 25.542 0.019 0 0.040 0 0.059 0 14.138-0.032 25.574-11.518 25.542-25.658l-0.341-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom.js
new file mode 100644
index 00000000..ffe77d0b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom.js
@@ -0,0 +1,13 @@
+// Icon: Linear.GestureZoom
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.126 5.034-51.2 13.776v-167.376c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.558-6.949-52.144-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM905.459 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.35 29.842 34.725 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+            <path d='M281.6 0h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h40.595l-168.595 168.595v-40.595c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-40.595l168.595-168.595v40.595c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom2.js
new file mode 100644
index 00000000..3004731a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GestureZoom2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.GestureZoom2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M921.6 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-9.995 0-19.541 1.939-28.306 5.429-8.885-32.59-38.728-56.629-74.094-56.629-8.971 0-17.589 1.547-25.6 4.387v-132.387c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.554-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM314.901 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.696 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.39l-207.707-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M230.742 358.4h-92.139l219.797-219.797v91.797c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.138-11.462-25.6-25.6-25.6h-153.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-219.797 219.797v-91.797c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6h153.942c14.138 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ghost.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ghost.js
new file mode 100644
index 00000000..0ba5e901
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ghost.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Ghost
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024c-84.24 0-128.296-21.168-160.462-36.626-17.61-8.461-30.333-14.574-44.338-14.574-17.848 0-32.654 9.87-49.8 21.299-21.022 14.016-44.848 29.901-78.2 29.901s-57.178-15.885-78.2-29.901c-17.146-11.429-31.95-21.299-49.8-21.299s-32.656 9.87-49.8 21.299c-21.022 14.016-44.85 29.901-78.2 29.901-33.869 0-59.272-16.357-81.685-30.787-17.013-10.954-31.704-20.413-46.315-20.413-11.264 0-23.277 5.717-39.904 13.629-33.323 15.856-78.958 37.571-164.896 37.571-14.138 0-25.6-11.461-25.6-25.6v-460.8c0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936v460.8c0 14.139-11.461 25.6-25.6 25.6zM486.4 921.6c33.352 0 57.178 15.885 78.2 29.901 17.146 11.429 31.952 21.299 49.8 21.299s32.654-9.87 49.8-21.299c21.022-14.016 44.848-29.901 78.2-29.901 25.667 0 45.507 9.533 66.512 19.627 25.613 12.306 56.706 27.246 112.688 30.792v-434.419c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2v434.434c57.915-3.584 90.486-19.082 117.298-31.838 20.096-9.562 39.078-18.595 61.902-18.595 29.669 0 53.237 15.174 74.032 28.565 18.864 12.146 35.155 22.635 53.968 22.635 17.85 0 32.656-9.87 49.8-21.299 21.022-14.016 44.85-29.901 78.2-29.901z' />
+            <path d='M332.8 512c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 512c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GhostHipster.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GhostHipster.js
new file mode 100644
index 00000000..e6e9e39e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GhostHipster.js
@@ -0,0 +1,15 @@
+// Icon: Linear.GhostHipster
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024c-84.24 0-128.296-21.168-160.462-36.626-17.61-8.461-30.333-14.574-44.338-14.574-17.848 0-32.654 9.87-49.8 21.299-21.022 14.016-44.848 29.901-78.2 29.901s-57.178-15.885-78.2-29.901c-17.146-11.429-31.95-21.299-49.8-21.299s-32.656 9.87-49.8 21.299c-21.022 14.016-44.85 29.901-78.2 29.901-33.869 0-59.272-16.357-81.685-30.787-17.013-10.954-31.704-20.413-46.315-20.413-11.264 0-23.277 5.717-39.904 13.629-33.323 15.856-78.958 37.571-164.896 37.571-14.138 0-25.6-11.461-25.6-25.6v-460.8c0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936v460.8c0 14.139-11.461 25.6-25.6 25.6zM486.4 921.6c33.352 0 57.178 15.885 78.2 29.901 17.146 11.429 31.952 21.299 49.8 21.299s32.654-9.87 49.8-21.299c21.022-14.016 44.848-29.901 78.2-29.901 25.667 0 45.507 9.533 66.512 19.627 25.613 12.306 56.706 27.246 112.688 30.792v-434.419c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2v434.434c57.915-3.584 90.486-19.082 117.298-31.838 20.096-9.562 39.078-18.595 61.902-18.595 29.669 0 53.237 15.174 74.032 28.565 18.864 12.146 35.155 22.635 53.968 22.635 17.85 0 32.656-9.87 49.8-21.299 21.022-14.016 44.85-29.901 78.2-29.901z' />
+            <path d='M332.8 512c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 512c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 409.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M815.258 728.752c-5.658-8.979-16.27-13.528-26.678-11.454-9.582 1.917-18.819 2.888-27.454 2.888-0.002 0-0.006 0-0.010 0-44.645-0.003-71.763-25.77-100.47-53.053-27.28-25.925-55.49-52.733-97.445-52.733-30.563 0-58.021 13.475-76.8 34.776-18.779-21.301-46.237-34.776-76.8-34.776-41.954 0-70.163 26.808-97.443 52.733-28.709 27.283-55.826 53.051-100.47 53.051-8.643 0-17.883-0.97-27.466-2.888-10.402-2.082-21.019 2.475-26.678 11.454-5.659 8.978-5.19 20.517 1.178 29.008 59.243 78.992 135.293 95.573 188.658 95.573 31.79 0 57.109-5.984 69.373-9.552 27.166-7.902 52.106-27.757 69.648-52.627 17.542 24.87 42.482 44.723 69.648 52.627 12.266 3.566 37.587 9.554 69.374 9.552 53.366-0.002 129.416-16.584 188.656-95.573 6.371-8.49 6.84-20.029 1.181-29.006zM402.45 794.619c-9.646 2.806-29.63 7.514-55.070 7.514-29.939 0-69.050-6.722-105.958-33.501 47.877-9.141 79.642-39.328 106.006-64.384 25.213-23.962 41.706-38.648 62.173-38.648 28.232 0 51.2 22.968 51.2 51.2 0 31.275-28.358 69.094-58.35 77.819zM625.422 802.133c-25.437 0.002-45.424-4.706-55.070-7.514-29.994-8.725-58.352-46.544-58.352-77.819 0-28.232 22.968-51.2 51.2-51.2 20.469 0 36.962 14.686 62.176 38.646 26.365 25.053 58.13 55.238 106.005 64.382-36.907 26.781-76.019 33.504-105.958 33.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gift.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gift.js
new file mode 100644
index 00000000..927f169b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gift.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Gift
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256h-153.67c16.107-21.408 25.67-48.006 25.67-76.8 0-70.579-57.421-128-128-128-71.181 0-130.869 56.381-160.112 89.987-17.707 20.35-32.954 42.136-44.686 63.208-11.733-21.070-26.981-42.858-44.688-63.208-29.245-33.606-88.931-89.987-160.114-89.987-70.579 0-128 57.421-128 128 0 28.794 9.563 55.392 25.669 76.8h-153.669c-14.138 0-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6h25.6v486.4c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-486.4h25.6c14.139 0 25.6-11.462 25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6zM569.712 174.797c40.035-46.010 84.317-72.397 121.488-72.397 42.349 0 76.8 34.453 76.8 76.8s-34.451 76.8-76.8 76.8h-172.946c8.854-22.621 26.758-52.818 51.458-81.203zM563.2 972.8h-153.6v-665.6h153.6v665.6zM204.8 179.2c0-42.347 34.453-76.8 76.8-76.8 37.173 0 81.453 26.387 121.488 72.397 24.699 28.386 42.603 58.582 51.458 81.203h-172.946c-42.347 0-76.8-34.453-76.8-76.8zM51.2 307.2h307.2v102.4h-307.2v-102.4zM102.4 947.2v-486.4h256v512h-230.4c-14.115 0-25.6-11.485-25.6-25.6zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-230.4v-512h256v486.4zM921.6 409.6h-307.2v-102.4h307.2v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass.js
new file mode 100644
index 00000000..b188799f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Glass
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M815.827 12.899c-4.558-7.976-13.040-12.899-22.227-12.899h-614.4c-9.187 0-17.669 4.923-22.227 12.899-34.325 60.067-51.728 118.533-51.728 173.768 0 48.893 13.645 96.707 40.554 142.118 48.104 81.176 128.848 141.733 200.086 195.163 56.496 42.37 114.915 86.184 114.915 116.051v256c0 41.63-23.446 76.8-51.2 76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8c-27.754 0-51.2-35.17-51.2-76.8v-256c0-29.867 58.421-73.682 114.915-116.053 71.237-53.429 151.981-113.986 200.086-195.163 26.909-45.41 40.555-93.226 40.555-142.118 0-55.235-17.405-113.699-51.73-173.766zM782.955 302.682c-42.918 72.424-119.336 129.738-186.76 180.304-45.557 34.168-85.347 64.011-109.795 94.462-24.448-30.45-64.238-60.294-109.795-94.462-67.422-50.566-143.842-107.882-186.76-180.304-45.662-77.054-44.23-159.446 4.482-251.482h584.147c48.71 92.035 50.144 174.427 4.482 251.482z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass2.js
new file mode 100644
index 00000000..8f71bf30
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glass2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Glass2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 0h-153.6c-40.080 0-78.666 30.562-87.845 69.576l-67.61 287.338c-16.090 0.973-32.597 1.486-49.346 1.486-62.416 0-121.717-6.92-166.979-19.486-45.28-12.57-60.226-26.427-62.998-31.109l-0.152-0.946c2.355-4.408 16.998-18.562 63.149-31.373 45.264-12.566 104.565-19.486 166.981-19.486 14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-70.803 0-137.702 8.371-188.376 23.573-26.182 7.854-47.149 17.293-62.317 28.051-25.544 18.12-30.907 37.613-30.907 50.776 0 3.845 0.464 8.234 1.749 12.966l100.726 629.536c1.432 23.821 23.426 42.982 65.43 56.984 33.008 11.003 74.45 17.314 113.694 17.314 39.080 0 80.301-6.317 113.094-17.333 41.342-13.886 63.51-32.821 65.925-56.299l100.832-630.197c1.285-4.734 1.749-9.125 1.749-12.971 0-0.296-0.018-0.586-0.022-0.88-0.005-0.123-0.003-0.246-0.010-0.37-0.656-27.96-23.272-51.042-67.28-68.613-13.13-5.245-28.024 1.152-33.267 14.282-5.242 13.131 1.152 28.026 14.283 33.267 24.397 9.741 33.064 18.646 34.826 21.97l-0.152 0.947c-2.766 4.68-17.71 18.539-62.998 31.112-19.046 5.288-40.6 9.562-63.803 12.755l63.616-270.366c3.707-15.757 21.824-30.104 38.008-30.104h153.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM674.774 386.027c11.266-3.379 21.56-7.054 30.846-11l-90.757 567.222c-9.038 9.856-59.795 30.55-128.464 30.55-29.811 0-60.837-4.112-87.358-11.578-25.517-7.182-37.43-14.949-41.002-18.307l-90.862-567.886c9.288 3.946 19.581 7.619 30.846 11 50.674 15.2 117.573 23.571 188.376 23.571 12.523 0 24.922-0.267 37.133-0.782l-36.325 154.376c-0.272 0-0.534 0.006-0.808 0.006-76.875 0-120.867-19.050-128.101-27.891-1.16-13.066-12.133-23.309-25.499-23.309-14.138 0-25.6 11.461-25.6 25.6 0 50.83 82.619 74.755 167.99 76.67l-64.91 275.866c-3.238 13.763 5.294 27.546 19.056 30.782 1.971 0.464 3.942 0.688 5.885 0.688 11.61-0.002 22.123-7.954 24.898-19.742l68.059-289.248c73.494-6.408 137.422-30.304 137.422-75.016 0-14.139-11.461-25.6-25.6-25.6-13.366 0-24.339 10.243-25.499 23.309-5.31 6.491-30.464 18.478-73.874 24.395l36.445-154.898c36.184-3.962 69.466-10.309 97.702-18.779z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GlassCocktail.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GlassCocktail.js
new file mode 100644
index 00000000..f05c96ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GlassCocktail.js
@@ -0,0 +1,12 @@
+// Icon: Linear.GlassCocktail
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M868.181 180.074c-3.896-9.886-15.443-26.474-48.981-26.474h-665.6c-33.538 0-45.085 16.587-48.981 26.474-3.898 9.888-6.774 29.891 17.744 52.774l338.437 315.877v347.275c0 41.63-23.446 76.8-51.2 76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8c-27.754 0-51.2-35.17-51.2-76.8v-347.275l338.437-315.875c24.52-22.883 21.642-42.888 17.744-52.776zM486.4 502.582l-319.053-297.782h638.104l-319.051 297.782z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses.js
new file mode 100644
index 00000000..ae6feee5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Glasses
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 460.8h-33.104c-4.050-15.39-10.253-29.939-19.736-43.282-28.274-39.781-80.072-59.118-158.36-59.118h-499.2c-78.286 0-130.086 19.338-158.36 59.118-9.483 13.342-15.685 27.891-19.734 43.282h-33.106c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h26.157c-0.448 9.995-0.557 20.154-0.557 30.4 0 101.054 71.328 174.4 169.6 174.4 46.706 0 105.602-31.454 157.549-84.141 38.702-39.253 65.712-82.16 76.811-120.659h62.48c11.099 38.499 38.109 81.406 76.811 120.659 51.946 52.686 110.843 84.141 157.549 84.141 98.274 0 169.6-73.346 169.6-174.4 0-10.246-0.107-20.405-0.557-30.4h26.157c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM512.68 460.8h-52.56c-1.949-20.304-8.174-37.317-18.806-51.2h90.174c-10.634 13.883-16.858 30.896-18.808 51.2zM341.89 596.712c-41.259 41.848-88.79 68.888-121.090 68.888-69.712 0-118.4-50.661-118.4-123.2 0-18.493 0.333-35.37 2.29-50.437 0.274-1.234 0.446-2.502 0.534-3.797 7.554-49.693 34.834-78.566 131.576-78.566 160.773 0 172.8 25.974 172.8 65.6 0 32.098-26.578 79.794-67.71 121.512zM752 665.6c-32.301 0-79.83-27.040-121.090-68.888-41.133-41.718-67.71-89.414-67.71-121.512 0-39.626 12.029-65.6 172.8-65.6 96.742 0 124.022 28.874 131.574 78.566 0.090 1.294 0.261 2.565 0.534 3.798 1.958 15.066 2.291 31.942 2.291 50.435 0 72.539-48.688 123.2-118.4 123.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses2.js
new file mode 100644
index 00000000..e2d4a9f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Glasses2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Glasses2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 460.8h-32.080c-22.794-88.234-103.067-153.6-198.32-153.6-85.422 0-158.782 52.576-189.459 127.062-17.912-15.355-41.154-24.662-66.541-24.662s-48.629 9.307-66.541 24.662c-30.675-74.486-104.037-127.062-189.459-127.062-95.254 0-175.528 65.366-198.32 153.6h-32.080c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6c0 112.926 91.872 204.8 204.8 204.8s204.8-91.874 204.8-204.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 112.926 91.874 204.8 204.8 204.8s204.8-91.874 204.8-204.8h25.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM256 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM768 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf.js
new file mode 100644
index 00000000..62e45fa3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf.js
@@ -0,0 +1,25 @@
+// Icon: Linear.Golf
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 819.2c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4c0 127.043-103.357 230.4-230.4 230.4zM384 409.6c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M384 1024c-14.138 0-25.6-11.461-25.6-25.6 0-85.587-87.366-130.261-88.248-130.702-12.646-6.322-17.771-21.699-11.45-34.346 6.323-12.646 21.702-17.77 34.346-11.448 3.288 1.643 57.646 29.469 90.952 85.035 33.306-55.566 87.664-83.392 90.952-85.035 12.642-6.323 28.022-1.198 34.346 11.448 6.323 12.645 1.197 28.024-11.45 34.346-0.813 0.413-88.248 45.802-88.248 130.702 0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M358.4 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M1014.52 159.312c-10.984-8.902-27.104-7.214-36.008 3.766l-168.498 207.875c-12.725-27.418-38.76-56.349-78.65-87.525-45.811-35.802-110.035-74.266-185.73-111.232-143.56-70.11-297.669-120.997-366.435-120.997-56.678 0-105.613 33.224-137.789 93.554-26.704 50.070-41.411 116.854-41.411 188.046 0 85.675 41.034 147.032 118.664 177.437 3.067 1.2 6.224 1.77 9.33 1.77 10.227 0 19.888-6.173 23.843-16.27 5.157-13.165-1.336-28.016-14.501-33.173-57.962-22.701-86.136-65.147-86.136-129.763 0-114.494 43.966-230.4 128-230.4 59.914 0 211 50.867 343.966 115.803 180.712 88.256 244.834 158.264 244.834 191.397 0 22.885-9.771 42.538-129.856 51.267-14.101 1.026-24.701 13.288-23.677 27.389 1.026 14.099 13.248 24.677 27.389 23.677 62.467-4.541 100.474-11.906 127.086-24.624 14.304-6.837 25.576-15.558 33.794-26.094 0.064-0.077 0.138-0.141 0.2-0.219l215.352-265.675c8.902-10.984 7.214-27.104-3.768-36.008z' />
+            <path d='M307.2 204.8h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 307.2h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 409.6h-76.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h76.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M204.8 409.6h-76.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h76.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf2.js
new file mode 100644
index 00000000..80f15d64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Golf2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Golf2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 460.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM896 256c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M332.8 870.4c-46.027 0-89.642-12.178-122.811-34.293-36.363-24.24-56.389-57.52-56.389-93.707 0-38.672 23.558-74.709 64.634-98.872 12.184-7.166 27.875-3.102 35.045 9.086 7.168 12.186 3.101 27.877-9.086 35.045-25.034 14.726-39.392 34.678-39.392 54.741 0 41.63 58.618 76.8 128 76.8s128-35.17 128-76.8c0-20.061-14.357-40.014-39.387-54.741-12.186-7.168-16.253-22.859-9.083-35.045 7.168-12.182 22.861-16.254 35.046-9.083 41.069 24.163 64.624 60.198 64.624 98.869 0 36.187-20.026 69.467-56.389 93.707-33.17 22.115-76.784 34.293-122.811 34.293z' />
+            <path d='M332.8 768c-14.138 0-25.6-11.461-25.6-25.6v-409.045c-0.008-0.357-0.008-0.714 0-1.070v-306.685c0-8.872 4.594-17.112 12.141-21.776 7.549-4.666 16.971-5.088 24.907-1.122l307.2 153.6c8.674 4.336 14.152 13.2 14.152 22.898s-5.478 18.562-14.152 22.898l-293.048 146.525v393.778c0 14.139-11.462 25.6-25.6 25.6zM358.4 67.022v224.357l224.357-112.179-224.357-112.178z' />
+            <path d='M460.8 1024c-120.741 0-234.64-27.885-320.712-78.515-90.338-53.139-140.088-125.262-140.088-203.085 0-100.035 82.827-190.222 221.563-241.246 13.269-4.878 27.982 1.918 32.864 15.19 4.88 13.269-1.92 27.982-15.19 32.862-57.848 21.277-105.886 50.651-138.92 84.95-32.133 33.363-49.117 70.795-49.117 108.243 0 58.938 40.787 115.389 114.846 158.954 78.323 46.074 183.003 71.446 294.754 71.446s216.43-25.373 294.754-71.446c74.061-43.565 114.846-100.016 114.846-158.954s-40.786-115.389-114.846-158.954c-78.323-46.074-183.003-71.446-294.754-71.446-8.221 0-16.539 0.141-24.725 0.421-14.146 0.502-25.976-10.581-26.459-24.712-0.482-14.131 10.581-25.976 24.712-26.459 8.766-0.298 17.672-0.45 26.472-0.45 120.742 0 234.638 27.883 320.712 78.515 90.338 53.139 140.088 125.262 140.088 203.085s-49.75 149.946-140.088 203.085c-86.074 50.63-199.97 78.515-320.712 78.515z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient.js
new file mode 100644
index 00000000..f6aa4245
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient.js
@@ -0,0 +1,85 @@
+// Icon: Linear.Gradient
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M256 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 332.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 537.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M128 921.6c-14.138 0-25.6-11.461-25.6-25.6v-768c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v768c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient2.js
new file mode 100644
index 00000000..dca2de81
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gradient2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Gradient2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M548.203 512l365.898-365.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-365.898 365.899-40.597-40.597 289.098-289.099c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-289.098 289.099-40.597-40.597 212.298-212.299c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-212.298 212.299-40.597-40.597 135.499-135.499c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-135.499 135.499-40.597-40.597 58.699-58.699c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-58.699 58.699-58.699-58.698c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-58.699 58.699c-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-58.699 58.699c-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-58.699 58.699c-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-58.699 58.699c-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-58.699 58.699c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l58.699-58.698 58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-58.698-58.698 40.597-40.597 135.499 135.499c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-135.498-135.498 40.597-40.597 212.299 212.299c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-212.298-212.298 40.597-40.597 289.099 289.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-289.098-289.098 40.597-40.597 365.899 365.899c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-365.898-365.898zM398.997 435.2l-40.597 40.597-40.597-40.597 40.597-40.597 40.597 40.597zM322.197 512l-40.597 40.597-40.597-40.597 40.597-40.597 40.597 40.597zM322.197 358.4l-40.597 40.597-40.597-40.597 40.597-40.597 40.597 40.597zM164.203 281.6l40.597-40.597 40.597 40.597-40.597 40.597-40.597-40.597zM164.203 435.2l40.597-40.597 40.597 40.597-40.597 40.597-40.597-40.597zM164.203 588.8l40.597-40.597 40.597 40.597-40.597 40.597-40.597-40.597zM204.8 782.997l-40.597-40.597 40.597-40.597 40.597 40.597-40.597 40.597zM281.6 706.197l-40.597-40.597 40.597-40.597 40.597 40.597-40.597 40.597zM358.4 629.397l-40.597-40.597 40.597-40.597 40.597 40.597-40.597 40.597zM435.2 552.597l-40.597-40.597 40.597-40.597 40.597 40.597-40.597 40.597z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GraduationHat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GraduationHat.js
new file mode 100644
index 00000000..dd536eaf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GraduationHat.js
@@ -0,0 +1,12 @@
+// Icon: Linear.GraduationHat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M955.296 359.714l-460.8-153.6c-5.254-1.752-10.936-1.752-16.19 0l-460.8 153.6c-10.454 3.485-17.506 13.267-17.506 24.286s7.051 20.802 17.504 24.286l136.096 45.365v135.149c0 6.789 2.698 13.301 7.499 18.101 4.486 4.488 112.346 109.899 325.301 109.899 77.454 0 149.712-13.941 214.766-41.434 13.024-5.504 19.118-20.523 13.616-33.547-5.504-13.024-20.525-19.117-33.547-13.616-58.714 24.816-124.266 37.397-194.835 37.397-99.586 0-172.84-25.781-216.758-47.41-32.53-16.019-54.259-32.203-64.842-40.926v-106.547l273.504 91.168c2.627 0.877 5.362 1.314 8.096 1.314s5.467-0.437 8.096-1.314l273.504-91.168v45.686c-29.797 10.568-51.2 39.024-51.2 72.397 0 31.269 18.792 58.213 45.666 70.181l-44.901 179.61c-1.91 7.648-0.194 15.75 4.658 21.965s12.294 9.845 20.178 9.845h102.4c7.883 0 15.326-3.632 20.178-9.845s6.568-14.315 4.658-21.965l-44.901-179.61c26.874-11.968 45.666-38.912 45.666-70.181 0-33.373-21.403-61.829-51.2-72.397v-62.752l136.096-45.366c10.453-3.483 17.504-13.266 17.504-24.285s-7.051-20.802-17.504-24.286zM793.6 563.2c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM775.187 819.2l18.413-73.648 18.413 73.648h-36.826zM791.536 408.902l-300.928-50.155c-13.952-2.322-27.136 7.099-29.461 21.042-2.325 13.947 7.098 27.138 21.043 29.461l205.533 34.256-201.323 67.11-379.846-126.616 379.846-126.616 379.845 126.616-74.709 24.902z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grapes.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grapes.js
new file mode 100644
index 00000000..7071bb23
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grapes.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Grapes
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M953.016 740.962c12.869-22.84 19.784-48.741 19.784-75.362 0-54.306-28.33-102.118-70.984-129.438 12.869-22.84 19.784-48.741 19.784-75.362 0-84.696-68.904-153.6-153.6-153.6-27.363 0-53.072 7.2-75.347 19.792-25.344-39.514-67.978-65.87-115.28-70.302 1.936-2.318 3.877-4.674 5.818-7.099 53.912-67.39 82.41-144.845 82.41-223.99 0-8.494-4.214-16.435-11.248-21.198-7.035-4.763-15.974-5.723-23.859-2.57-32.203 12.882-85.208 8.869-141.32 4.621-93.469-7.080-199.406-15.099-268.547 49.003-44.592 41.342-66.512 105.523-67.002 196.106-12.715 16.558-23.653 34.208-32.734 52.87-18.166-27.459-33.168-58.63-44.906-93.448-24.336-72.184-24.782-133.606-24.784-134.218-0.018-14.125-11.472-25.566-25.6-25.566-14.138 0-25.6 11.462-25.6 25.6 0 2.782 0.306 69.072 26.914 148.896 18.635 55.904 45.662 104.51 80.024 144.618 1.080 1.57 2.342 3.016 3.758 4.32 13.882 15.709 28.907 30.080 45.038 43.002-60.707 20.518-104.534 78.019-104.534 145.565 0 52.861 27.565 101.598 70.992 129.453-12.592 22.275-19.792 47.984-19.792 75.347 0 84.696 68.904 153.6 153.6 153.6 26.621 0 52.52-6.915 75.362-19.784 27.32 42.654 75.133 70.984 129.438 70.984 38.546 0 74.595-13.997 102.498-39.133 27.182 24.32 63.043 39.133 102.302 39.133 26.621 0 52.52-6.915 75.362-19.784 27.32 42.654 75.133 70.984 129.438 70.984 84.696 0 153.6-68.904 153.6-153.6 0-54.306-28.33-102.118-70.984-129.438zM905.41 720.83c-11.25-2.634-22.97-4.030-35.010-4.030-27.363 0-53.072 7.2-75.347 19.792-18.424-28.722-45.968-50.512-77.821-61.966-0.261-2.997-0.432-6.005-0.432-9.026 0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4c0 19.718-5.686 38.843-16.19 55.23zM359.579 703.771c-31.856-17.91-52.379-52.112-52.379-89.371 0-56.464 45.936-102.4 102.4-102.4 26.674 0 51.554 10.066 70.434 28.053-12.246 22.045-19.234 47.392-19.234 74.347 0 17.834 3.141 35.2 8.965 51.454-2.971-0.168-5.96-0.254-8.965-0.254-38.739 0-74.17 14.422-101.221 38.171zM256.434 418.626c-0.262-2.997-0.434-6.006-0.434-9.026 0-56.464 45.936-102.4 102.4-102.4 26.672 0 51.554 10.066 70.434 28.053-12.246 22.045-19.234 47.394-19.234 74.347 0 17.834 3.141 35.2 8.965 51.456-2.971-0.168-5.96-0.256-8.965-0.256-27.363 0-53.070 7.2-75.346 19.792-18.422-28.723-45.97-50.514-77.821-61.966zM564.379 703.771c-3.13-1.762-6.142-3.688-9.045-5.75-1.483-1.165-2.99-2.29-4.512-3.394-23.997-19.125-38.822-48.568-38.822-80.227 0-56.464 45.936-102.4 102.4-102.4 37.261 0 71.461 20.523 89.371 52.379-23.749 27.051-38.171 62.482-38.171 101.221-38.739 0-74.17 14.422-101.221 38.171zM870.4 460.8c0 19.72-5.686 38.843-16.19 55.229-11.25-2.632-22.97-4.029-35.010-4.029-27.363 0-53.072 7.2-75.347 19.794-18.424-28.723-45.968-50.514-77.821-61.968-0.261-2.997-0.432-6.006-0.432-9.026 0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4zM652.571 359.579c-23.749 27.051-38.171 62.482-38.171 101.221-38.741 0-74.17 14.422-101.221 38.171-3.131-1.762-6.146-3.69-9.050-5.752-1.48-1.163-2.987-2.286-4.506-3.39-23.998-19.126-38.824-48.568-38.824-80.229 0-56.464 45.936-102.4 102.4-102.4 37.259 0 71.461 20.523 89.371 52.379zM314.442 189.966c64.482-29.902 122.877-36.448 123.424-36.506 14.062-1.472 24.267-14.066 22.795-28.128-1.472-14.061-14.064-24.27-28.126-22.795-2.667 0.28-66.138 7.219-138.099 40.272-32.043 14.718-60.68 32.341-85.701 52.555 6.739-45.891 22.19-79.638 46.702-102.366 52.75-48.906 142.795-42.086 229.87-35.498 45.883 3.474 89.883 6.806 127.166 1.376-6.491 55.586-29.363 108.406-68.234 157.434-30.245 38.144-60.984 61.622-69.634 67.88-0.29 0.205-0.578 0.414-0.866 0.622-0.957 0.682-1.501 1.053-1.539 1.078-0.912 0.608-1.754 1.28-2.562 1.979-3.003 2.314-5.92 4.734-8.741 7.261-27.904-25.134-63.954-39.131-102.499-39.131-78.482 0-143.394 59.166-152.498 135.235-17.704-12.037-33.998-25.835-48.859-41.368 25.69-69.594 78.571-123.346 157.398-159.901zM204.8 460.8c37.261 0 71.462 20.523 89.371 52.379-23.749 27.051-38.171 62.48-38.171 101.221-38.739 0-74.17 14.422-101.221 38.171-31.856-17.91-52.379-52.112-52.379-89.371 0-56.464 45.936-102.4 102.4-102.4zM256 870.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c3.016 0 6.026 0.157 9.021 0.418 11.453 31.858 33.245 59.411 61.971 77.835-12.592 22.275-19.792 47.984-19.792 75.347 0 12.040 1.397 23.76 4.029 35.010-16.386 10.504-35.51 16.19-55.229 16.19zM358.4 819.2c0-56.464 45.936-102.4 102.4-102.4 26.672 0 51.552 10.066 70.434 28.053-12.246 22.045-19.234 47.394-19.234 74.347 0 26.955 6.987 52.304 19.234 74.347-18.88 17.987-43.76 28.053-70.434 28.053-56.464 0-102.4-45.936-102.4-102.4zM665.6 921.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c37.261 0 71.461 20.522 89.373 52.378-23.749 27.051-38.173 62.482-38.173 101.222 0 12.040 1.397 23.76 4.029 35.010-16.387 10.504-35.51 16.19-55.229 16.19zM870.4 972.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Graph.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Graph.js
new file mode 100644
index 00000000..d49e0ad4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Graph.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Graph
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 1024h-972.8c-14.138 0-25.6-11.461-25.6-25.6v-972.8c0-11.872 8.163-22.187 19.718-24.915 11.554-2.733 23.469 2.848 28.779 13.467l51.2 102.4c6.323 12.645 1.197 28.022-11.45 34.346-12.643 6.32-28.022 1.197-34.346-11.45l-2.702-5.405v838.757h838.757l-5.405-2.702c-12.645-6.322-17.771-21.699-11.448-34.346 6.322-12.645 21.699-17.771 34.346-11.448l102.4 51.2c10.619 5.309 16.194 17.224 13.467 28.778-2.73 11.555-13.043 19.718-24.917 19.718z' />
+            <path d='M870.4 230.4c0-42.347-34.451-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 24.576 11.618 46.477 29.634 60.544l-107.832 323.491c-14.336 0.258-27.722 4.453-39.123 11.565l-142.958-114.368c2.762-7.909 4.28-16.394 4.28-25.232 0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 20.669 8.221 39.442 21.547 53.261l-88.872 177.746c-3.107-0.384-6.266-0.606-9.475-0.606-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8c0-20.669-8.222-39.442-21.547-53.261l88.872-177.746c3.107 0.384 6.266 0.606 9.475 0.606 14.866 0 28.749-4.258 40.52-11.6l142.958 114.366c-2.76 7.91-4.278 16.397-4.278 25.234 0 42.349 34.451 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-24.576-11.618-46.478-29.634-60.546l107.832-323.49c41.702-0.75 75.402-34.885 75.402-76.765zM793.6 204.8c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM384 460.8c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM230.4 819.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM640 716.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grid.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grid.js
new file mode 100644
index 00000000..d0965f87
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grid.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Grid
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 102.4h-665.6c-42.347 0-76.8 34.453-76.8 76.8v665.6c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-665.6c0-42.347-34.451-76.8-76.8-76.8zM870.4 179.2v179.2h-204.8v-204.8h179.2c14.115 0 25.6 11.485 25.6 25.6zM409.6 614.4v-204.8h204.8v204.8h-204.8zM614.4 665.6v204.8h-204.8v-204.8h204.8zM358.4 614.4h-204.8v-204.8h204.8v204.8zM409.6 358.4v-204.8h204.8v204.8h-204.8zM665.6 409.6h204.8v204.8h-204.8v-204.8zM179.2 153.6h179.2v204.8h-204.8v-179.2c0-14.115 11.485-25.6 25.6-25.6zM153.6 844.8v-179.2h204.8v204.8h-179.2c-14.115 0-25.6-11.485-25.6-25.6zM844.8 870.4h-179.2v-204.8h204.8v179.2c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GridCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GridCrossed.js
new file mode 100644
index 00000000..9320ba91
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GridCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.GridCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 7.498c-9.997-9.997-26.206-9.997-36.203 0l-102.408 102.408c-10.026-4.808-21.248-7.506-33.090-7.506h-665.6c-42.347 0-76.8 34.453-76.8 76.8v665.6c0 11.842 2.698 23.064 7.506 33.091l-102.408 102.408c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l102.406-102.406c10.027 4.806 21.248 7.504 33.091 7.504h665.6c42.349 0 76.8-34.451 76.8-76.8v-665.598c0-11.842-2.699-23.064-7.504-33.091l102.406-102.406c9.997-9.998 9.997-26.206-0.002-36.205zM578.197 409.6l-168.597 168.597v-168.597h168.597zM409.6 358.4v-204.8h204.8v204.8h-204.8zM358.4 614.4h-204.8v-204.8h204.8v204.8zM445.803 614.4l168.597-168.597v168.597h-168.597zM614.4 665.6v204.8h-204.8v-204.8h204.8zM665.6 409.6h204.8v204.8h-204.8v-204.8zM665.6 153.6h168.597l-168.597 168.597v-168.597zM179.2 153.6h179.2v204.8h-204.8v-179.2c0-14.115 11.485-25.6 25.6-25.6zM153.6 665.6h168.597l-168.597 168.597v-168.597zM358.4 701.803v168.597h-168.597l168.597-168.597zM844.8 870.4h-179.2v-204.8h204.8v179.2c0 14.115-11.485 25.6-25.6 25.6zM870.4 358.4h-168.597l168.597-168.597v168.597z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grin.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grin.js
new file mode 100644
index 00000000..49f7e13b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grin.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Grin
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M793.6 512h-614.4c-14.138 0-25.6 11.461-25.6 25.6 0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8c0-14.139-11.461-25.6-25.6-25.6zM460.8 818.034c-36.582-3.312-71.17-13.642-102.395-29.642l-0.005-225.192h102.4v254.834zM512 563.2h102.4v225.187c-31.227 16.002-65.816 26.333-102.4 29.645v-254.832zM205.954 563.2h101.246l0.003 191.456c-56.323-46.581-94.296-114.605-101.25-191.456zM665.6 754.651v-191.451h101.246c-6.954 76.848-44.925 144.872-101.246 191.451z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GrinEvil.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GrinEvil.js
new file mode 100644
index 00000000..27fe5866
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GrinEvil.js
@@ -0,0 +1,15 @@
+// Icon: Linear.GrinEvil
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M793.6 512h-614.4c-14.138 0-25.6 11.461-25.6 25.6 0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8c0-14.139-11.461-25.6-25.6-25.6zM460.8 818.034c-36.584-3.312-71.17-13.642-102.395-29.642l-0.005-225.192h102.4v254.834zM512 563.2h102.4v225.187c-31.227 16.002-65.816 26.333-102.4 29.645v-254.832zM205.954 563.2h101.246l0.003 191.456c-56.323-46.581-94.296-114.606-101.25-191.456zM665.6 754.651v-191.451h101.246c-6.954 76.848-44.925 144.872-101.246 191.451z' />
+            <path d='M402.091 350.901c1.901-1.899 3.539-4.118 4.806-6.653 6.323-12.645 1.197-28.022-11.45-34.346l-102.4-51.2c-12.643-6.323-28.022-1.197-34.346 11.45-6.323 12.645-1.197 28.022 11.45 34.346l25.094 12.547c-23.398 13.176-39.246 38.243-39.246 66.955 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-11.845-2.699-23.070-7.509-33.099zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M677.554 317.045l25.096-12.547c12.645-6.323 17.771-21.701 11.448-34.346-6.32-12.645-21.698-17.768-34.346-11.45l-102.4 51.2c-12.645 6.323-17.771 21.701-11.448 34.346 1.267 2.534 2.906 4.754 4.806 6.653-4.81 10.029-7.51 21.254-7.51 33.099 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-28.712-15.848-53.779-39.246-66.955zM640 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GroupWork.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GroupWork.js
new file mode 100644
index 00000000..a2db0d78
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/GroupWork.js
@@ -0,0 +1,17 @@
+// Icon: Linear.GroupWork
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.576 331.106c-0.192-8.499-1.95-46.563-17.946-84.952-10.963-26.309-26.317-47.488-45.638-62.944-4.936-3.949-10.114-7.488-15.506-10.651 17.285-18.342 27.914-43.026 27.914-70.158 0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4c0 27.133 10.627 51.816 27.914 70.158-5.392 3.165-10.57 6.702-15.506 10.651-19.322 15.456-34.677 36.634-45.638 62.944-17.766 42.637-17.97 84.87-17.97 86.646 0 14.138 11.462 25.6 25.6 25.6h256c0.011 0.002 0.024 0 0.032 0 14.139 0 25.6-11.462 25.6-25.6 0-0.57-0.018-1.134-0.056-1.694zM460.8 102.4c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2c-28.232 0-51.2-22.968-51.2-51.2zM412.152 307.2c1.955-11.966 5.402-26.77 11.478-41.354 17.117-41.078 46.022-61.046 88.37-61.046 73.144 0 94.045 64.946 100.016 102.4h-199.864z' />
+            <path d='M307.176 894.304c-0.192-8.499-1.95-46.563-17.946-84.952-10.962-26.309-26.317-47.486-45.638-62.944-4.936-3.949-10.114-7.488-15.506-10.651 17.286-18.341 27.914-43.024 27.914-70.157 0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4c0 27.133 10.627 51.816 27.914 70.158-5.392 3.165-10.57 6.702-15.506 10.651-19.322 15.458-34.677 36.634-45.638 62.944-17.766 42.635-17.97 84.87-17.97 86.646 0 14.139 11.462 25.6 25.6 25.6h256c0.011-0.002 0.021-0.002 0.032 0 14.138 0 25.6-11.461 25.6-25.6 0-0.57-0.019-1.134-0.056-1.696zM102.4 665.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2-51.2-22.968-51.2-51.2zM53.752 870.4c1.955-11.966 5.402-26.77 11.478-41.354 17.117-41.078 46.022-61.046 88.37-61.046 73.144 0 94.045 64.947 100.016 102.4h-199.864z' />
+            <path d='M1023.976 894.304c-0.192-8.499-1.95-46.563-17.946-84.952-10.963-26.309-26.317-47.486-45.638-62.944-4.936-3.949-10.114-7.488-15.504-10.651 17.283-18.341 27.912-43.024 27.912-70.157 0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4c0 27.133 10.629 51.816 27.912 70.158-5.39 3.165-10.568 6.702-15.504 10.651-19.322 15.458-34.677 36.634-45.638 62.944-17.765 42.635-17.97 84.87-17.97 86.646 0 14.139 11.461 25.6 25.6 25.6h256c0.011 0.002 0.024 0 0.032 0 14.139 0 25.6-11.461 25.6-25.6 0-0.57-0.018-1.134-0.056-1.696zM819.2 665.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2-51.2-22.968-51.2-51.2zM770.554 870.4c1.955-11.966 5.402-26.77 11.478-41.354 17.115-41.078 46.019-61.046 88.368-61.046 73.144 0 94.045 64.947 100.016 102.4h-199.862z' />
+            <path d='M512 1024c-66.571 0-132.675-16.342-191.162-47.258-12.499-6.608-17.277-22.098-10.669-34.597s22.099-17.275 34.597-10.669c51.141 27.034 108.97 41.323 167.234 41.323s116.094-14.29 167.235-41.323c12.501-6.606 27.987-1.832 34.597 10.669 6.606 12.499 1.83 27.989-10.669 34.597-58.488 30.915-124.592 47.258-191.163 47.258z' />
+            <path d='M882.179 537.602c-11.23 0-21.53-7.445-24.662-18.795-23.741-86.010-78.57-159.755-154.389-207.65-11.954-7.552-15.522-23.363-7.971-35.315 7.552-11.954 23.36-15.523 35.315-7.971 86.616 54.715 149.261 138.995 176.398 237.315 3.763 13.629-4.235 27.726-17.866 31.488-2.278 0.627-4.571 0.928-6.826 0.928z' />
+            <path d='M141.821 537.603c-2.256 0-4.547-0.301-6.826-0.93-13.629-3.763-21.629-17.859-17.867-31.488 27.136-98.318 89.782-182.597 176.397-237.312 11.955-7.55 27.765-3.982 35.315 7.97 7.552 11.954 3.982 27.765-7.97 35.315-75.819 47.896-130.648 121.64-154.387 207.65-3.133 11.349-13.435 18.795-24.662 18.795z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grumpy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grumpy.js
new file mode 100644
index 00000000..a32e6270
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Grumpy.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Grumpy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M640 716.8h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 358.4h-204.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h30.003c-2.842 8.013-4.403 16.626-4.403 25.6 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-8.974-1.562-17.587-4.403-25.6h30.003c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6zM358.4 435.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6z' />
+            <path d='M742.4 358.4h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h30.003c-2.842 8.013-4.403 16.626-4.403 25.6 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-8.974-1.562-17.587-4.403-25.6h30.003c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM665.6 435.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Guitar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Guitar.js
new file mode 100644
index 00000000..f2de2080
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Guitar.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Guitar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 563.2c-31.25 0-61.030-6.286-83.856-17.699-28.467-14.232-44.144-35.222-44.144-59.101s15.677-44.867 44.144-59.101c22.826-11.414 52.606-17.699 83.856-17.699s61.030 6.285 83.856 17.699c28.467 14.234 44.144 35.222 44.144 59.101s-15.677 44.869-44.144 59.101c-22.824 11.413-52.606 17.699-83.856 17.699zM486.4 460.8c-23.115 0-45.333 4.48-60.96 12.293-13.086 6.544-15.84 12.421-15.84 13.307s2.754 6.763 15.84 13.307c15.626 7.813 37.845 12.293 60.96 12.293s45.334-4.48 60.96-12.293c13.088-6.544 15.84-12.421 15.84-13.307s-2.754-6.763-15.84-13.307c-15.626-7.813-37.845-12.293-60.96-12.293z' />
+            <path d='M639.957 716.8h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M827.894 596.403c-26.685-19.006-59.894-42.662-59.894-58.803 0-15.037 1.925-30.899 3.787-46.237 4.926-40.571 10.509-86.555-21.714-122.928-25.128-28.363-69.914-46.2-140.27-54.888l-40.586-186.28c11.246-2.699 19.614-12.794 19.614-24.867 0-3.317-0.63-6.486-1.778-9.395l-25.168-75.501c-3.485-10.453-13.267-17.504-24.286-17.504h-102.4c-11.019 0-20.802 7.051-24.286 17.504l-25.6 76.8c-2.602 7.806-1.294 16.389 3.518 23.064 3.61 5.010 8.862 8.486 14.736 9.91l-40.653 186.267c-70.341 8.688-115.114 26.52-140.23 54.877-32.211 36.366-26.618 82.341-21.683 122.904 1.867 15.352 3.798 31.226 3.798 46.274 0 16.144-33.21 39.798-59.896 58.806-43.922 31.285-93.704 66.744-93.704 120.394v153.6c0 26.59 10.395 50.347 30.898 70.608 18.834 18.614 46.674 34.238 82.746 46.442 71.693 24.253 179.882 36.55 321.557 36.55 141.683 0 249.872-12.298 321.563-36.55 36.070-12.203 63.909-27.829 82.742-46.442 20.501-20.262 30.894-44.018 30.894-70.608v-153.6c0-53.65-49.782-89.11-93.706-120.397zM453.651 51.2h65.498l8.533 25.6h-82.563l8.533-25.6zM455.814 128h61.162l39.424 180.947c-21.491-1.171-44.8-1.747-70.043-1.747-25.24 0-48.546 0.574-70.034 1.746l39.491-180.946zM174.608 638.109c40.016-28.502 81.392-57.974 81.392-100.509 0-18.152-2.122-35.59-4.173-52.454-4.802-39.469-6.926-64.582 9.186-82.773 25.843-29.178 101.659-43.973 225.344-43.973 123.701 0 199.536 14.8 225.394 43.987 16.125 18.2 14.005 43.323 9.211 82.805-2.046 16.85-4.162 34.274-4.162 52.408 0 42.533 41.376 72.005 81.39 100.506 33.846 24.11 72.21 51.435 72.21 78.694 0 64.12-143.566 102.4-384.043 102.4-240.422 0-383.957-38.28-383.957-102.4 0-27.258 38.363-54.582 72.208-78.691zM486.4 972.8c-240.448 0-384-38.28-384-102.4v-66.403c16.757 11.472 37.646 21.47 62.421 29.853 71.682 24.253 179.862 36.55 321.536 36.55 141.686 0 249.882-12.298 321.582-36.55 24.792-8.384 45.696-18.387 62.461-29.864v66.414c0 64.12-143.552 102.4-384 102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gun.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gun.js
new file mode 100644
index 00000000..fd429f93
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Gun.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Gun
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 204.8h-25.6v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-742.4c-9.698 0-18.562 5.478-22.898 14.152l-51.2 102.4c-3.123 6.248-3.558 13.501-1.203 20.078 4.403 12.296 10.579 25.584 17.118 39.654 8.958 19.274 18.613 40.056 25.069 61.051 0.115 0.411 0.237 0.819 0.373 1.222 4.339 14.398 7.141 28.883 7.141 43.042 0 38.203-28.189 80.013-60.829 128.422-43.485 64.494-92.771 137.595-92.771 229.978 0 14.139 11.462 25.6 25.6 25.6h358.4c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.197c6.366-62.227 33.819-137.994 63.443-204.8h165.554c39.056 0 79.326-29.024 91.677-66.077l29.174-87.523h186.349c42.347 0 76.8-34.451 76.8-76.8v-25.6h25.6c14.139 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6zM409.6 256h256v51.2h-256v-51.2zM135.224 643.443c35.779-53.067 69.576-103.192 69.576-157.043 0-8.616-0.714-17.163-1.976-25.6h239.518c-40.533 73.614-123.082 236.317-133.95 358.4h-255.61c8.086-65.47 45.818-121.435 82.442-175.757zM631.904 532.133c-5.419 16.259-25.965 31.067-43.104 31.067h-141.71c22.603-46.405 43.475-83.934 54.038-102.4h11.397c2.069 21.13 8.853 49.518 29.11 68.624 4.946 4.666 11.258 6.976 17.56 6.976 6.803 0 13.592-2.696 18.629-8.035 9.701-10.286 9.227-26.488-1.059-36.187-7.411-6.99-11.026-19.651-12.656-31.376h91.574l-23.779 71.331zM972.8 307.2h-25.6c-14.139 0-25.6 11.462-25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-204.262c-0.034 0-0.069 0-0.104 0h-502.589c-6.658-17.941-14.496-34.818-21.598-50.096-4.173-8.981-8.189-17.618-11.462-25.43l39.038-78.074h163.378v76.8c0 14.138 11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.462 25.6-25.6v-76.8h256v51.2z' />
+            <path d='M230.4 358.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M179.2 768c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Haircut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Haircut.js
new file mode 100644
index 00000000..157aa248
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Haircut.js
@@ -0,0 +1,21 @@
+// Icon: Linear.Haircut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256.874 743.157c1.862-13.416 6.757-25.47 15.034-37.194 8.154-11.55 5.402-27.523-6.149-35.677-11.552-8.158-27.523-5.403-35.678 6.149-9.818 13.904-16.706 28.47-20.79 43.971-9.656-2.336-19.725-3.606-30.090-3.606-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128c0-41.387-19.762-78.23-50.326-101.643zM179.2 921.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8z' />
+            <path d='M537.6 972.8c-14.115 0-25.6-11.485-25.6-25.6 0-0.022-0.003-0.043-0.003-0.067 31.070-23.376 51.203-60.546 51.203-102.333 0-70.579-57.421-128-128-128-8.782 0-17.362 0.893-25.651 2.584-0.726-264.31-9.386-461.549-25.766-586.597-9.243-70.562-20.306-112.714-32.882-125.29-6.272-6.274-15.346-8.856-23.982-6.813-8.635 2.038-15.6 8.402-18.405 16.819-2.144 6.434-52.514 161.082-52.514 468.896 0 90.85 34.29 135.566 61.842 171.499 20.349 26.538 36.848 48.078 40.005 85.006-30.749 23.4-50.646 60.36-50.646 101.894 0 70.579 57.421 128 128 128 9.941 0 19.608-1.176 28.904-3.331 9.568 31.52 38.891 54.531 73.496 54.531 14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM307.2 486.4c0-154.243 13.198-269.594 26.019-345.248 10.555 81.818 21.659 227.613 24.493 484.6-26.083-34.021-50.512-66.582-50.512-139.352zM358.4 844.8c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8-76.8-34.453-76.8-76.8z' />
+            <path d='M870.4 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M844.8 0h-153.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h153.6c42.349 0 76.8 34.453 76.8 76.8 0 361.947-83.48 481.835-144.434 569.376-32.392 46.52-60.366 86.693-60.366 147.424 0 70.579 57.421 128 128 128s128-57.421 128-128v-716.8c0-70.579-57.421-128-128-128zM921.6 844.8c0 42.349-34.451 76.8-76.8 76.8s-76.8-34.451-76.8-76.8c0-44.661 20.363-73.902 51.182-118.166 31.478-45.208 71.234-102.299 102.418-198.589v316.755z' />
+            <path d='M844.8 153.6h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 256h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 358.4h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 460.8h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 563.2h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 665.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Halloween.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Halloween.js
new file mode 100644
index 00000000..b8e8d2dd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Halloween.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Halloween
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384.032 614.4c-0.010 0.002-0.019 0.002-0.032 0h-153.6c-7.883 0-15.326-3.632-20.178-9.843-4.851-6.214-6.57-14.315-4.658-21.966 0.29-1.157 7.242-28.645 21.138-56.437 27.006-54.016 58.682-65.354 80.498-65.354s53.491 11.338 80.498 65.354c12.168 24.334 19.011 48.437 20.72 54.834 0.789 2.464 1.214 5.090 1.214 7.814 0 14.138-11.462 25.598-25.6 25.598zM266.010 563.2h82.381c-11.11-26.483-27.024-51.2-41.19-51.2s-30.080 24.717-41.19 51.2z' />
+            <path d='M742.432 614.4c-0.010 0-0.022 0-0.032 0h-153.6c-7.883 0-15.326-3.632-20.178-9.843-4.85-6.214-6.566-14.315-4.658-21.966 0.291-1.157 7.242-28.645 21.141-56.437 27.003-54.016 58.678-65.354 80.494-65.354s53.491 11.338 80.498 65.354c12.168 24.334 19.014 48.437 20.72 54.834 0.789 2.464 1.214 5.090 1.214 7.814 0 14.138-11.464 25.598-25.6 25.598zM624.41 563.2h82.381c-11.11-26.483-27.026-51.2-41.19-51.2s-30.080 24.717-41.19 51.2z' />
+            <path d='M742.4 665.6h-512c-14.138 0-25.6 11.461-25.6 25.6 0 4.882 1.067 48.966 38.050 93.218 21.387 25.589 50.45 45.834 86.379 60.163 42.957 17.133 96.083 25.821 157.904 25.822h0.002c0.002 0 0.003 0 0.005 0 0 0 0.002 0 0.003 0 0.032 0 0.059 0 0.090 0 0.098-0.002 0.19-0.002 0.286-0.003 0.002 0 0.003 0 0.003 0 61.341-0.035 114.070-8.726 156.725-25.837 35.75-14.342 64.664-34.595 85.938-60.198 36.755-44.24 37.816-88.288 37.816-93.165 0-14.139-11.461-25.6-25.6-25.6zM512.365 818.64l-0.368-25.416c-0.206-14.136-11.824-25.366-25.97-25.224-14.138 0.206-25.43 11.834-25.224 25.97l0.36 24.64c-143.082-6.478-186.394-66.342-199.49-101.816h96.726v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h153.6v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h96.709c-13.099 35.357-56.328 95.485-198.744 101.846z' />
+            <path d='M909.442 373.866c-42.63-74.6-100.566-116.278-163.472-117.8-70.093-18.378-113.702-63.758-129.342-82.63l22.606-90.426c2.181-8.723-0.373-17.952-6.734-24.31l-51.2-51.2c-6.138-6.138-14.971-8.717-23.469-6.899-8.488 1.816-15.49 7.84-18.578 15.952-0.184 0.483-18.963 48.939-67.059 102.49-63.542 70.744-145.861 116.824-244.68 137.010-63.171 1.235-121.373 42.944-164.157 117.814-40.856 71.499-63.357 166.013-63.357 266.13 0 101.443 31.234 197.064 87.949 269.246 58.144 74.003 136.010 114.758 219.251 114.758 35.056 0 69.274-7.251 101.92-21.563 24.526 14.216 50.611 21.563 77.28 21.563s52.752-7.347 77.278-21.566c32.646 14.315 66.866 21.566 101.922 21.566 83.242 0 161.106-40.755 219.251-114.758 56.715-72.182 87.949-167.803 87.949-269.246 0-100.117-22.499-194.63-63.358-266.13zM511.933 151.408c27.739-31.206 46.661-60.717 58.594-82.277l15.522 15.523-22.086 88.338c-1.749 6.997-0.466 14.408 3.538 20.408 1.744 2.618 33.803 49.79 96.912 84.715-17.621 10.331-34.413 24.16-49.966 41.253-37.299-41.235-81.411-63.378-128.046-63.378-46.637 0-90.749 22.141-128.048 63.376-12.949-14.23-26.758-26.195-41.189-35.768 93.013-34.536 155.914-88.477 194.771-132.19zM665.6 972.8c-18.741 0-37.213-2.637-55.248-7.826 0.502-0.53 1.010-1.050 1.51-1.586 9.65-10.334 9.094-26.534-1.238-36.182-10.336-9.653-26.536-9.094-36.181 1.238-18.896 20.235-49.507 44.355-88.043 44.355-38.538 0-69.147-24.117-88.038-44.349-9.648-10.331-25.85-10.89-36.182-1.238s-10.888 25.85-1.238 36.182c0.499 0.534 1.005 1.053 1.506 1.581-18.037 5.19-36.507 7.824-55.246 7.824-141.158 0-256-149.296-256-332.805 0-91.349 20.104-176.842 56.611-240.73 33.866-59.266 77.304-91.949 122.338-92.069 0.109 0.002 0.218-0.003 0.328-0.003 41.438 0.034 74.078 26.918 96.47 54.040-2.024 3.226-4.027 6.494-5.987 9.856-7.123 12.213-2.995 27.888 9.218 35.010 4.056 2.366 8.493 3.49 12.872 3.49 8.808 0 17.381-4.55 22.139-12.707 33.728-57.837 76.773-89.69 121.21-89.69 44.434 0 87.478 31.851 121.206 89.685 7.123 12.214 22.803 16.339 35.011 9.218 12.213-7.123 16.341-22.798 9.219-35.011-1.962-3.36-3.963-6.626-5.982-9.848 22.36-27.082 54.936-53.922 96.285-54.035 0.094 0 0.189 0.008 0.283 0.008 0.075 0 0.15-0.008 0.224-0.010 45.035 0.117 88.48 32.8 122.349 92.069 36.502 63.886 56.606 149.379 56.606 240.728 0 183.509-114.84 332.805-256 332.805z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hamburger.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hamburger.js
new file mode 100644
index 00000000..442f0a62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hamburger.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Hamburger
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 563.2h-819.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4h332.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-332.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h25.6c160.013 0 295.155 41.525 390.818 120.086 72.069 59.186 97.205 119.31 97.414 119.822 3.901 9.75 13.338 16.083 23.763 16.083 0.374 0 0.752-0.010 1.128-0.026 10.866-0.475 20.25-7.776 23.392-18.189 0.717-2.379 73.592-237.778 231.485-237.778h25.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-128c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h128c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4zM679.336 702.848c-19.134 29.437-33.701 58.717-44.056 82.422-17.302-25.032-43.502-56.646-81.291-88.136-40.45-33.709-87.206-61.461-139.256-82.734h342.618c-28.134 22.41-54.315 51.987-78.014 88.448z' />
+            <path d='M896 358.4h-768c-14.138 0-25.6-11.462-25.6-25.6 0-17.010 3.013-105.997 62.478-187.709 31.499-43.282 73.546-77.467 124.968-101.603 61.040-28.651 135.723-43.178 221.974-43.178 86.331 0 161.078 14.526 222.171 43.173 51.469 24.134 93.552 58.318 125.077 101.598 59.517 81.709 62.531 170.707 62.531 187.718 0 14.138-11.461 25.6-25.6 25.6zM155.296 307.2h713.408c-3.691-30.933-15.253-82.87-51.018-131.971-59.797-82.093-162.702-123.717-305.864-123.717-143.005 0-245.806 41.622-305.546 123.709-35.739 49.107-47.293 101.046-50.981 131.979z' />
+            <path d='M124.128 513.101c-16.675 0-32.227-9.099-43.029-25.301l-25.6-38.4c-7.843-11.765-4.666-27.658 7.099-35.501 11.763-7.845 27.658-4.666 35.501 7.099l25.6 38.4c0.248 0.371 0.482 0.699 0.701 0.989 0.981-1.139 2.243-2.92 3.6-5.632l5.403-10.81c10.501-21 27.192-33.042 45.797-33.042s35.296 12.043 45.795 33.040l5.405 10.811c0 0 0 0 0 0l5.403-10.81c10.501-21 27.192-33.042 45.797-33.042s35.296 12.043 45.795 33.040l5.405 10.811c0 0 0 0 0 0l5.403-10.81c10.501-21 27.192-33.042 45.797-33.042s35.296 12.043 45.795 33.040l5.405 10.811c0 0 0 0 0 0l5.403-10.81c10.501-21 27.192-33.042 45.797-33.042s35.296 12.043 45.795 33.040l5.405 10.81 5.406-10.811c10.499-20.997 27.19-33.040 45.794-33.040s35.296 12.043 45.794 33.040l5.406 10.81 5.406-10.811c10.499-20.997 27.19-33.040 45.794-33.040s35.296 12.043 45.794 33.040l5.406 10.81 5.406-10.811c10.499-20.997 27.19-33.040 45.794-33.040s35.296 12.043 45.794 33.040l5.406 10.81 5.406-10.811c10.64-21.28 27.699-34.166 46.802-35.357 17.75-1.115 34.475 8.086 45.894 25.211l25.598 38.4c7.843 11.765 4.664 27.658-7.101 35.501-11.763 7.842-27.658 4.666-35.501-7.099l-25.602-38.4c-0.246-0.371-0.482-0.699-0.699-0.987-0.981 1.139-2.243 2.92-3.6 5.632l-5.406 10.811c-10.499 20.997-27.19 33.040-45.794 33.040s-35.296-12.043-45.794-33.040l-5.405-10.805-5.406 10.811c-10.499 20.997-27.19 33.040-45.794 33.040s-35.296-12.043-45.794-33.040l-5.406-10.811-5.406 10.811c-10.499 20.997-27.19 33.040-45.794 33.040s-35.296-12.043-45.794-33.040l-5.406-10.811-5.406 10.811c-10.499 20.997-27.19 33.040-45.794 33.040s-35.294-12.043-45.794-33.040l-5.406-10.813c0 0 0 0 0 0s0 0 0 0.002l-5.403 10.81c-10.501 21-27.192 33.042-45.797 33.042s-35.296-12.043-45.795-33.040l-5.405-10.813c0 0 0 0 0 0l-5.403 10.81c-10.501 21-27.192 33.042-45.797 33.042s-35.296-12.043-45.795-33.040l-5.405-10.811c0 0 0 0 0 0l-5.403 10.81c-10.501 21-27.192 33.042-45.797 33.042s-35.296-12.043-45.795-33.040l-5.405-10.811c0 0 0 0 0 0l-5.403 10.81c-10.642 21.283-27.701 34.17-46.803 35.36-0.958 0.059-1.915 0.088-2.866 0.088z' />
+            <path d='M896 819.2h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h128v25.6c0 42.349-34.451 76.8-76.8 76.8h-563.2c-42.347 0-76.8-34.451-76.8-76.8v-25.6h384c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-409.6c-14.138 0-25.6 11.461-25.6 25.6v51.2c0 70.579 57.421 128 128 128h563.2c70.579 0 128-57.421 128-128v-51.2c0-14.139-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer.js
new file mode 100644
index 00000000..856b3f15
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Hammer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M952.136 740.218l-487.43-443.118c-4.846-4.406-7.598-10.31-7.749-16.626s2.317-12.342 6.949-16.974l117.397-117.397c7.322-7.322 9.512-18.333 5.55-27.899s-13.298-15.803-23.653-15.803c-2.122 0-52.579 0.037-107.102 3.243-104.158 6.128-129.514 17.97-141.398 29.854l-179.2 179.2c-4.802 4.8-7.499 11.312-7.499 18.101v25.6h-25.6c-6.79 0-13.301 2.698-18.101 7.499l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c9.997 9.997 26.206 9.997 36.203 0l51.2-51.2c4.802-4.8 7.499-11.312 7.499-18.101v-25.6h25.6c6.79 0 13.301-2.698 18.101-7.499l40.597-40.597c4.486-4.485 10.323-6.955 16.435-6.955 6.523 0 12.619 2.755 17.166 7.755l443.118 487.43c14.163 15.579 34.229 24.514 55.050 24.514 19.789 0 38.483-7.795 52.637-21.952l55.594-55.594c14.629-14.629 22.418-33.947 21.931-54.395-0.488-20.448-9.187-39.373-24.494-53.29zM331.133 354.55c-19.789 0-38.483 7.797-52.638 21.952l-33.098 33.098h-40.597c-14.138 0-25.6 11.462-25.6 25.6v40.597l-25.6 25.6-66.197-66.197 25.6-25.6h40.597c14.138 0 25.6-11.462 25.6-25.6v-40.597l170.99-170.99c3.251-1.845 23.534-10.925 113.797-15.938 12.472-0.693 24.733-1.219 36.152-1.618l-72.435 72.435c-14.63 14.629-22.418 33.947-21.931 54.397s9.186 39.376 24.494 53.291l44.648 40.59-48.141 48.141-40.59-44.648c-14.163-15.579-34.229-24.514-55.051-24.514zM918.496 811.701l-55.594 55.594c-4.486 4.485-10.322 6.955-16.434 6.955-6.523 0-12.619-2.755-17.166-7.755l-368.048-404.853 51.589-51.589 404.853 368.048c4.846 4.406 7.598 10.31 7.749 16.626 0.149 6.315-2.318 12.344-6.949 16.974z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer2.js
new file mode 100644
index 00000000..382bb242
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hammer2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Hammer2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M925.347 895.898c-0.566-20.43-9.386-39.294-24.834-53.115l-428.077-383.016 92.341-92.341c7.302 3.88 15.501 5.939 24.022 5.939 13.696 0 26.554-5.314 36.203-14.965l40.597-40.597c9.65-9.65 14.966-22.507 14.966-36.203s-5.315-26.554-14.966-36.203l-168.597-168.597c-9.65-9.651-22.507-14.965-36.203-14.965s-26.554 5.314-36.203 14.965l-40.597 40.597c-9.651 9.65-14.965 22.507-14.965 36.203 0 8.523 2.061 16.718 5.939 24.021l-248.554 248.554c-7.302-3.88-15.499-5.939-24.021-5.939-13.696 0-26.554 5.314-36.203 14.965l-40.597 40.597c-19.963 19.962-19.963 52.442 0 72.406l168.597 168.597c9.65 9.65 22.507 14.966 36.203 14.966s26.554-5.315 36.203-14.966l40.597-40.597c16.272-16.275 19.275-40.867 9.014-60.216l92.35-92.35 383.016 428.077c13.822 15.446 32.686 24.266 53.115 24.834 0.699 0.019 1.394 0.029 2.090 0.029 19.654 0 38.165-7.722 52.318-21.877l4.394-4.394c14.658-14.656 22.416-33.979 21.85-54.408zM460.8 113.003l168.597 168.597-40.53 40.558c-0.006 0.002-0.032 0.006-0.067 0.006v0.032l-168.597-168.597 40.597-40.597zM409.6 215.403l117.397 117.397-245.397 245.397-117.397-117.397 245.397-245.397zM230.467 680.558c-0.006 0.003-0.032 0.008-0.067 0.008v0.032l-168.597-168.598 40.597-40.597 168.597 168.597-40.53 40.558zM867.296 914.101l-4.394 4.394c-4.603 4.603-10.544 7.008-16.784 6.872-6.221-0.173-12.037-2.941-16.379-7.794l-311.403-348.037 348.037 311.402c4.853 4.342 7.621 10.16 7.794 16.379 0.173 6.221-2.267 12.181-6.87 16.784z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HammerWrench.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HammerWrench.js
new file mode 100644
index 00000000..98e50d48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HammerWrench.js
@@ -0,0 +1,12 @@
+// Icon: Linear.HammerWrench
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M952.136 740.218l-232.173-211.066 27.147-30.202c22.96 8.669 47.126 13.050 72.090 13.050 112.926 0 204.8-91.872 204.8-204.8 0-32.712-7.917-65.272-22.898-94.16-3.758-7.246-10.746-12.267-18.813-13.515-8.069-1.246-16.243 1.424-22.016 7.197l-100.477 100.478h-40.597v-40.597l100.478-100.477c5.771-5.771 8.445-13.95 7.197-22.016-1.246-8.067-6.267-15.054-13.512-18.811-28.888-14.981-61.448-22.899-94.163-22.899-112.926 0-204.8 91.872-204.8 204.8 0 24.963 4.381 49.131 13.050 72.090l-36.371 32.693-126.373-114.885c-4.846-4.406-7.598-10.31-7.749-16.626s2.317-12.342 6.949-16.974l117.397-117.397c7.322-7.322 9.512-18.333 5.55-27.899-3.963-9.565-13.298-15.802-23.653-15.802-2.122 0-52.579 0.037-107.102 3.243-104.158 6.128-129.514 17.97-141.398 29.854l-179.2 179.2c-4.802 4.8-7.499 11.312-7.499 18.101v25.6h-25.6c-6.79 0-13.301 2.698-18.101 7.499l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c9.997 9.997 26.206 9.997 36.203 0l51.2-51.2c4.802-4.8 7.499-11.312 7.499-18.101v-25.6h25.6c6.79 0 13.301-2.698 18.101-7.499l40.597-40.597c4.486-4.485 10.323-6.955 16.435-6.955 6.523 0 12.619 2.755 17.166 7.755l108.41 119.251-230.944 207.579c-15.408 13.848-24.192 32.731-24.736 53.166s7.224 39.757 21.872 54.403l55.594 55.594c14.168 14.168 32.706 21.899 52.397 21.899 0.667 0 1.338-0.010 2.008-0.027 20.435-0.544 39.317-9.328 53.166-24.736l201.387-224.058 203.963 224.36c14.163 15.579 34.229 24.514 55.050 24.514 19.789 0 38.483-7.795 52.637-21.952l55.594-55.594c14.629-14.629 22.418-33.947 21.931-54.395-0.486-20.45-9.186-39.374-24.493-53.291zM681.224 374.758c-10.368-21.125-15.624-43.856-15.624-67.558 0-84.696 68.904-153.6 153.6-153.6 12.418 0 24.547 1.435 36.31 4.285l-80.013 80.013c-4.8 4.802-7.498 11.312-7.498 18.102v76.8c0 14.138 11.461 25.6 25.6 25.6h76.8c6.789 0 13.301-2.698 18.101-7.498l80.013-80.013c2.853 11.765 4.286 23.894 4.286 36.31 0 84.696-68.904 153.6-153.6 153.6-23.702 0-46.434-5.256-67.558-15.622-10.282-5.045-22.662-2.648-30.317 5.869l-39.246 43.666-52.922-48.112 46.197-41.523c8.517-7.658 10.914-20.038 5.87-30.318zM331.133 354.55c-19.789 0-38.483 7.797-52.638 21.952l-33.098 33.098h-40.597c-14.138 0-25.6 11.462-25.6 25.6v40.597l-25.6 25.6-66.197-66.197 25.6-25.6h40.597c14.138 0 25.6-11.462 25.6-25.6v-40.597l170.99-170.99c3.251-1.845 23.534-10.925 113.797-15.938 12.472-0.693 24.733-1.219 36.152-1.618l-72.435 72.435c-14.63 14.629-22.418 33.947-21.931 54.397s9.186 39.376 24.494 53.291l44.648 40.59-48.141 48.141-40.59-44.648c-14.163-15.579-34.229-24.514-55.051-24.514zM347.987 866.408c-4.36 4.851-10.202 7.614-16.45 7.781-6.258 0.147-12.227-2.283-16.838-6.894l-55.594-55.594c-4.611-4.613-7.061-10.592-6.894-16.838s2.93-12.090 7.781-16.45l231.158-207.77 61.69 67.858-204.853 227.907zM918.496 811.701l-55.594 55.594c-4.486 4.485-10.322 6.955-16.434 6.955-6.523 0-12.619-2.755-17.166-7.755l-368.048-404.853 51.589-51.589 404.853 368.048c4.846 4.406 7.598 10.31 7.749 16.626 0.149 6.315-2.318 12.344-6.949 16.974z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand.js
new file mode 100644
index 00000000..e3aa3855
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Hand
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 204.8c-18.645 0-36.126 5.034-51.2 13.776v-64.976c0-56.464-45.936-102.4-102.4-102.4-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558s-82.619 28.678-96.627 68.558c-16.299-10.955-35.901-17.358-56.973-17.358-56.464 0-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.56-6.949-52.146-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.573 0 84.085-14.166 120.41-42.109 34.146-26.266 63.782-64.232 88.088-112.842 47.824-95.65 73.102-227.966 73.102-382.65v-179.2c0-56.464-45.936-102.4-102.4-102.4zM921.6 486.4c0 146.774-23.41 271.174-67.698 359.752-28.888 57.776-80.565 126.648-162.702 126.648h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.349 29.842 34.723 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-332.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v384c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-230.4c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand2.js
new file mode 100644
index 00000000..cb25d761
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hand2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Hand2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 384c0-42.347-34.451-76.8-76.8-76.8-8.974 0-17.587 1.562-25.6 4.403v-81.203c0-42.347-34.453-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.43-8.883-32.592-38.728-56.63-74.094-56.63s-65.21 24.038-74.094 56.629c-8.765-3.49-18.31-5.429-28.306-5.429-42.347 0-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.56-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.766 29.768-29.83 78.45-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-204.8zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.698 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v204.8c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.981-10.109-10.022-26.414-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HandWaving.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HandWaving.js
new file mode 100644
index 00000000..01b7b24a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HandWaving.js
@@ -0,0 +1,15 @@
+// Icon: Linear.HandWaving
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M563.2 256c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM563.2 102.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M537.568 1024.002c-12.992 0.002-24.122-9.851-25.442-23.054l-25.131-251.31-74.694-149.387c-2.546-5.093-3.322-10.886-2.205-16.469l47.838-239.189-62.534-41.69c-3.024-2.016-5.582-4.651-7.509-7.733l-128-204.8c-7.494-11.99-3.848-27.784 8.141-35.277 11.99-7.493 27.784-3.85 35.277 8.141l125.078 200.126 72.213 48.141c8.632 5.755 12.938 16.149 10.902 26.322l-49.477 247.387 72.87 145.744c1.394 2.786 2.266 5.802 2.576 8.901l25.6 256c1.406 14.067-8.858 26.613-22.926 28.021-0.864 0.085-1.725 0.126-2.578 0.126z' />
+            <path d='M281.597 1024.006c-2.987 0-6.024-0.525-8.986-1.635-13.238-4.965-19.946-19.72-14.981-32.96l76.288-203.434 25.246-100.986c3.43-13.714 17.333-22.046 31.045-18.627 13.717 3.43 22.056 17.328 18.627 31.045l-25.6 102.4c-0.235 0.942-0.525 1.87-0.866 2.779l-76.8 204.8c-3.854 10.277-13.61 16.618-23.974 16.618z' />
+            <path d='M691.213 665.606c-9.933 0.002-19.382-5.814-23.542-15.522l-75.875-177.040-49.896-74.845c-7.843-11.763-4.664-27.658 7.101-35.501 11.763-7.842 27.658-4.664 35.501 7.101l51.2 76.8c0.867 1.301 1.614 2.678 2.23 4.115l76.8 179.2c5.57 12.995-0.45 28.045-13.445 33.614-3.29 1.41-6.71 2.077-10.074 2.077z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hanger.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hanger.js
new file mode 100644
index 00000000..aca75347
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hanger.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Hanger
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 921.6h-665.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h665.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M922.211 753.939l-339.026-260.626c-19.814-15.232-44.451-25.32-71.186-29.4v-28.714c0-24.411 14.8-36.701 40.96-56.32 27.373-20.53 61.44-46.080 61.44-97.28 0-70.579-57.421-128-128-128s-128 57.421-128 128c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8 42.349 0 76.8 34.453 76.8 76.8 0 24.411-14.8 36.701-40.96 56.32-27.373 20.53-61.44 46.080-61.44 97.28v28.304c-26.89 3.637-51.818 13.326-71.862 28.221l-337.509 250.789c-29.32 21.787-51.429 65.76-51.429 102.286v51.2c0 8.885 4.606 17.134 12.171 21.795 7.563 4.661 17.003 5.062 24.941 1.070l369.338-185.952c20.525-10.334 49.666-16.261 79.949-16.261s59.426 5.926 79.95 16.261l369.338 185.952c3.632 1.829 7.574 2.734 11.51 2.734 4.669 0 9.326-1.277 13.43-3.805 7.566-4.661 12.173-12.91 12.173-21.795v-39.362c0-36.378-21.749-80.531-50.589-102.699zM589.374 687.182c-27.834-14.013-64.403-21.73-102.974-21.73s-75.142 7.717-102.974 21.73l-332.226 167.267v-9.65c0-20.059 14.664-49.226 30.766-61.189l337.51-250.789c17.144-12.738 40.357-19.754 65.362-19.754 25.445 0 49.918 7.594 67.144 20.835l339.026 260.627c15.434 11.864 29.542 39.8 30.538 59.891l-332.171-167.24z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Happy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Happy.js
new file mode 100644
index 00000000..f07a241e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Happy.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Happy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8 0-14.139 11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.461 25.6 25.6 0 183.506-149.294 332.8-332.8 332.8zM205.954 563.2c12.97 143.33 133.797 256 280.446 256s267.477-112.67 280.446-256h-560.893z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HappyGrin.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HappyGrin.js
new file mode 100644
index 00000000..d41f98ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HappyGrin.js
@@ -0,0 +1,15 @@
+// Icon: Linear.HappyGrin
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M793.6 512h-614.4c-14.138 0-25.6 11.461-25.6 25.6 0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8c0-14.139-11.461-25.6-25.6-25.6zM460.8 818.034c-36.584-3.312-71.17-13.642-102.395-29.642l-0.005-225.192h102.4v254.834zM512 563.2h102.4v225.187c-31.227 16.002-65.816 26.333-102.4 29.645v-254.832zM205.954 563.2h101.246l0.003 191.456c-56.323-46.581-94.296-114.606-101.25-191.456zM665.6 754.651v-191.451h101.246c-6.954 76.848-44.925 144.872-101.246 191.451z' />
+            <path d='M406.878 321.362l0.019-0.010c-0.061-0.122-0.187-0.37-0.374-0.73-0.006-0.013-0.013-0.026-0.021-0.038-4.046-7.68-36.17-64.584-99.302-64.584-66.261 0-98.363 62.683-99.698 65.352-6.323 12.645-1.197 28.022 11.45 34.346 3.675 1.837 7.581 2.707 11.429 2.707 9.39 0 18.432-5.187 22.917-14.157 0.186-0.37 19.486-37.048 53.902-37.048 34.362 0 53.784 36.822 53.976 37.195l-0.074-0.146 0.019-0.010c4.203 8.387 12.856 14.16 22.878 14.16 14.138 0 25.6-11.462 25.6-25.6 0-4.117-0.995-7.994-2.722-11.438z' />
+            <path d='M765.278 321.362l0.019-0.010c-0.059-0.118-0.181-0.36-0.363-0.704-0.014-0.026-0.027-0.050-0.038-0.075-4.074-7.726-36.195-64.573-99.296-64.573-66.259 0-98.363 62.683-99.698 65.352-6.323 12.645-1.197 28.022 11.448 34.346 3.675 1.837 7.581 2.707 11.429 2.707 9.39 0 18.434-5.187 22.917-14.157 0.187-0.37 19.488-37.048 53.904-37.048 34.363 0 53.784 36.822 53.976 37.195l-0.074-0.146 0.019-0.010c4.203 8.389 12.856 14.16 22.878 14.16 14.139 0 25.6-11.462 25.6-25.6 0-4.117-0.995-7.994-2.722-11.438z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hat.js
new file mode 100644
index 00000000..03f0a7f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hat.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Hat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M888.322 532.893l33.278-249.594v-1.699c0-41.795-22.419-99.875-129.222-139.222-70.994-26.154-167.946-39.978-280.378-39.978s-209.384 13.824-280.379 39.978c-106.802 39.347-129.221 97.427-129.221 139.222v1.699l33.28 249.597c-87.712 41.981-135.68 97.638-135.68 158.304 0 65.666 56.158 125.474 158.13 168.41 94.941 39.974 220.614 61.99 353.87 61.99s258.93-22.016 353.87-61.99c101.971-42.936 158.13-102.744 158.13-168.41 0-60.637-47.978-116.328-135.678-158.307zM839.498 511.677c-62.613 31.43-189.432 51.523-327.498 51.523s-264.882-20.093-327.498-51.523l-28.416-213.128c76.621 41.090 223.949 59.851 355.914 59.851 132.792 0 279.466-18.784 355.914-59.861l-28.416 213.138zM285.749 595.232l-63.426 80.242c-10.438-5.040-15.698-9.248-17.541-11.701l-12.427-93.206c26.352 9.674 57.936 17.973 93.394 24.666zM343.834 604.312c29.95 3.802 61.76 6.587 94.821 8.256l-67.085 96.918c-27.16-2.989-52.557-6.853-75.374-11.531-8.104-1.661-15.546-3.357-22.379-5.061l70.018-88.582zM499.694 614.346c4.090 0.034 8.19 0.054 12.306 0.054 26.821 0 53.147-0.722 78.702-2.11l-67.186 104.459c-3.832 0.032-7.669 0.051-11.517 0.051-27.784 0-55.171-0.811-81.576-2.378l69.27-100.077zM654.829 607.238c30.645-3.2 59.635-7.421 86.368-12.565l-65.806 112.021c-27.963 3.742-58.221 6.499-89.79 8.176l69.229-107.632zM810.57 577.667c7.347-2.277 14.381-4.643 21.075-7.101l-12.429 93.206c-3.981 5.296-23.811 18.744-77.531 31.157l68.885-117.262zM249.32 190.422c64.454-23.746 157.744-36.822 262.68-36.822 104.938 0 198.226 13.077 262.68 36.822 30.595 11.272 65.288 28.832 83.326 54.226-16.659 12.238-49.984 26.923-104.501 39.157-67.227 15.086-152.997 23.395-241.506 23.395-87.2 0-171.994-8.091-238.757-22.784-63.416-13.957-93.422-29.605-107.229-39.8 18.046-25.376 52.722-42.926 83.306-54.194zM846.003 812.422c-88.797 37.387-207.414 57.978-334.003 57.978s-245.206-20.59-334.002-57.978c-80.582-33.93-126.798-78.114-126.798-121.222 0-36.381 32.92-73.531 91.635-104.634l10.806 81.053c1.453 34.086 39.854 59.366 117.275 77.232 64.691 14.926 150.309 23.149 241.083 23.149s176.392-8.222 241.082-23.15c77.421-17.866 115.824-43.146 117.277-77.232l10.805-81.040c58.694 31.107 91.637 68.274 91.637 104.622 0 43.109-46.216 87.293-126.797 121.222z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hdd.js
new file mode 100644
index 00000000..6674bd26
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hdd.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Hdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-153.6c0-32.099 11.245-79.733 25.6-108.443l107.805-215.61c16.808-33.616 59.413-59.947 96.995-59.947h512c37.581 0 80.186 26.331 96.994 59.946l107.806 215.611c14.355 28.709 25.6 76.344 25.6 108.443v153.6c0 42.349-34.451 76.8-76.8 76.8zM230.4 460.8c-18.515 0-42.92 15.083-51.2 31.643l-107.805 215.61c-10.758 21.515-20.195 61.493-20.195 85.547v153.6c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-153.6c0-24.056-9.435-64.032-20.194-85.547l-107.806-215.61c-8.282-16.56-32.685-31.643-51.2-31.643h-512z' />
+            <path d='M844.8 921.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 819.2h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddDown.js
new file mode 100644
index 00000000..3ab632c9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddDown.js
@@ -0,0 +1,15 @@
+// Icon: Linear.HddDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-153.6c0-32.099 11.245-79.733 25.6-108.443l107.805-215.61c16.808-33.616 59.413-59.947 96.995-59.947 14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-18.515 0-42.92 15.083-51.2 31.643l-107.805 215.61c-10.758 21.517-20.195 61.493-20.195 85.547v153.6c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-153.6c0-24.056-9.435-64.032-20.194-85.547l-107.806-215.61c-8.282-16.56-32.685-31.643-51.2-31.643-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c37.581 0 80.186 26.331 96.994 59.946l107.806 215.611c14.355 28.709 25.6 76.344 25.6 108.443v153.6c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M844.8 921.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 819.2h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M658.101 391.499c-9.997-9.998-26.206-9.998-36.203 0l-109.898 109.898v-424.597c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v424.597l-109.899-109.899c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddUp.js
new file mode 100644
index 00000000..e8148acf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HddUp.js
@@ -0,0 +1,15 @@
+// Icon: Linear.HddUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-153.6c0-32.099 11.245-79.733 25.6-108.443l107.805-215.61c16.808-33.616 59.413-59.947 96.995-59.947h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-153.6c-18.515 0-42.92 15.083-51.2 31.643l-107.805 215.61c-10.758 21.517-20.195 61.493-20.195 85.547v153.6c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-153.6c0-24.056-9.435-64.032-20.194-85.547l-107.806-215.61c-8.282-16.56-32.685-31.643-51.2-31.643h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c37.581 0 80.186 26.331 96.994 59.946l107.806 215.611c14.355 28.709 25.6 76.344 25.6 108.443v153.6c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M844.8 921.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 819.2h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M658.101 237.899l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.899-109.899v424.597c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-424.597l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headphones.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headphones.js
new file mode 100644
index 00000000..fa8b5679
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headphones.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Headphones
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 769.416c-14.139 0-25.6-11.461-25.6-25.6v-180.616c0-260.306-149.294-409.6-409.6-409.6s-409.6 149.294-409.6 409.6v180.616c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-180.616c0-77.499 12.12-147.173 36.022-207.086 22.805-57.163 56.445-105.88 99.984-144.8 79.709-71.251 192.021-108.914 324.794-108.914s245.085 37.662 324.794 108.914c43.539 38.92 77.178 87.637 99.984 144.8 23.902 59.914 36.022 129.587 36.022 207.086v180.616c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 512c-33.614 0-62.234 21.715-72.616 51.848-56.493 3.472-96.968 21.182-123.317 53.877-23.515 29.179-34.467 68.795-34.467 124.675s10.952 95.496 34.467 124.675c26.347 32.694 66.824 50.405 123.317 53.877 10.382 30.133 39.002 51.848 72.616 51.848 42.347 0 76.8-34.451 76.8-76.8v-307.2c0-42.349-34.453-76.8-76.8-76.8zM153.6 742.4c0-72.237 17.907-119.358 102.4-126.92v253.84c-84.493-7.562-102.4-54.683-102.4-126.92zM358.4 896c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2z' />
+            <path d='M887.133 617.725c-26.349-32.694-66.826-50.403-123.315-53.877-10.384-30.133-39.002-51.848-72.618-51.848-42.349 0-76.8 34.451-76.8 76.8v307.2c0 42.349 34.451 76.8 76.8 76.8 33.616 0 62.234-21.715 72.618-51.848 56.491-3.474 96.966-21.182 123.315-53.877 23.515-29.179 34.467-68.795 34.467-124.675s-10.952-95.496-34.467-124.675zM691.2 921.6c-14.115 0-25.6-11.485-25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6zM768 869.32v-253.84c84.493 7.563 102.4 54.683 102.4 126.92s-17.907 119.358-102.4 126.92z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headset.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headset.js
new file mode 100644
index 00000000..126c9f84
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Headset.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Headset
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 667.016c-14.139 0-25.6-11.461-25.6-25.6v-180.616c0-260.306-149.294-409.6-409.6-409.6s-409.6 149.294-409.6 409.6v180.616c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-180.616c0-77.499 12.12-147.173 36.022-207.086 22.805-57.163 56.445-105.88 99.982-144.8 79.709-71.251 192.022-108.914 324.795-108.914s245.085 37.662 324.794 108.914c43.539 38.92 77.178 87.637 99.984 144.8 23.902 59.914 36.022 129.587 36.022 207.086v180.616c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 409.6c-33.614 0-62.234 21.717-72.616 51.848-56.491 3.472-96.968 21.182-123.317 53.877-23.515 29.179-34.467 68.795-34.467 124.675s10.952 95.496 34.467 124.675c26.347 32.694 66.824 50.405 123.317 53.877 10.382 30.133 39.002 51.848 72.616 51.848 42.347 0 76.8-34.451 76.8-76.8v-307.2c0-42.347-34.453-76.8-76.8-76.8zM153.6 640c0-72.237 17.907-119.358 102.4-126.92v253.84c-84.493-7.562-102.4-54.683-102.4-126.92zM358.4 793.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2z' />
+            <path d='M887.133 515.325c-26.347-32.694-66.826-50.403-123.315-53.875-10.384-30.133-39.003-51.85-72.618-51.85-42.349 0-76.8 34.453-76.8 76.8v307.2c0 42.349 34.451 76.8 76.8 76.8 33.614 0 62.234-21.715 72.618-51.848 45.662-2.808 80.854-14.926 106.582-36.736v62.984c0 42.349-34.451 76.8-76.8 76.8h-183.603c-10.566-29.797-39.024-51.2-72.397-51.2-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8c33.373 0 61.83-21.403 72.397-51.2h183.603c70.579 0 128-57.421 128-128v-204.8c0-55.88-10.952-95.496-34.467-124.675zM537.6 972.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 819.2c-14.115 0-25.6-11.485-25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6zM768 766.92v-253.84c84.493 7.563 102.4 54.683 102.4 126.92s-17.907 119.358-102.4 126.92z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearing.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearing.js
new file mode 100644
index 00000000..1fd76b36
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearing.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Hearing
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 921.6c-48.269 0-88.414-19.010-116.099-54.973-24.533-31.872-37.501-74.83-37.501-124.227 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 61.88 26.899 128 102.4 128 22.339 0 41.213-16.758 53.109-30.816 20.245-23.92 37.63-59.958 50.275-104.218 24.195-84.68 59.030-136.258 89.763-181.765 35.117-51.992 62.853-93.061 62.853-169.602 0-133.502-96.898-230.4-230.4-230.4-127.043 0-230.4 103.357-230.4 230.4 0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-155.275 126.325-281.6 281.6-281.6 76.462 0 147.070 27.558 198.816 77.598 53.384 51.624 82.784 124.074 82.784 204.002 0 92.211-34.79 143.722-71.624 198.259-29.992 44.41-61.006 90.33-82.962 167.173-14.835 51.923-35.166 93.384-60.424 123.229-27.096 32.016-58.974 48.939-92.19 48.939z' />
+            <path d='M412.982 880.066c-2.683 0-5.41-0.424-8.096-1.318-13.413-4.469-20.664-18.966-16.195-32.379 13.875-41.643 20.909-85.235 20.909-129.568 0-120.136-52.482-233.789-143.989-311.816-10.758-9.173-12.043-25.331-2.869-36.090 9.173-10.758 25.331-12.042 36.090-2.869 102.933 87.77 161.968 215.621 161.968 350.774 0 49.843-7.918 98.882-23.533 145.752-3.574 10.728-13.566 17.514-24.285 17.514z' />
+            <path d='M267.224 831.482c-2.683 0-5.411-0.426-8.098-1.318-13.413-4.47-20.664-18.966-16.195-32.379 8.672-26.022 13.069-53.27 13.069-80.984 0-75.085-32.802-146.118-89.997-194.89-10.758-9.173-12.043-25.331-2.869-36.091 9.173-10.758 25.333-12.042 36.090-2.869 68.621 58.514 107.976 143.749 107.976 233.85 0 33.226-5.28 65.917-15.693 97.166-3.574 10.73-13.565 17.515-24.283 17.515z' />
+            <path d='M121.467 782.894c-2.683 0-5.411-0.424-8.096-1.318-13.413-4.469-20.664-18.966-16.195-32.379 3.467-10.405 5.224-21.302 5.224-32.397 0-30.034-13.122-58.445-36-77.955-10.758-9.174-12.042-25.333-2.867-36.091 9.173-10.757 25.333-12.040 36.090-2.869 34.304 29.254 53.978 71.869 53.978 116.915 0 16.605-2.64 32.949-7.848 48.579-3.576 10.728-13.565 17.515-24.285 17.515z' />
+            <path d='M691.2 204.8c-98.811 0-179.2 80.389-179.2 179.2 0 42.347 34.453 76.8 76.8 76.8 25.485 0 38.386-18.675 46.923-31.032 9.661-13.986 14.578-20.168 29.877-20.168 47.507 0 51.2 58.782 51.2 76.8 0 42.347-34.453 76.8-76.8 76.8-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c70.579 0 128-57.421 128-128 0-34.408-8.208-64.477-23.736-86.958-18.283-26.466-46.219-41.042-78.664-41.042-42.802 0-61.080 26.458-72.002 42.266-1.968 2.85-4.773 6.909-6.581 8.872-13.288-0.918-23.818-12.021-23.818-25.538 0-70.579 57.421-128 128-128s128 57.421 128 128c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-98.811-80.389-179.2-179.2-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Heart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Heart.js
new file mode 100644
index 00000000..a9feeb8c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Heart.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Heart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 972.8c-4.283 0-8.566-1.074-12.434-3.222-4.808-2.67-119.088-66.624-235.122-171.376-68.643-61.97-123.467-125.363-162.944-188.418-50.365-80.443-75.901-160.715-75.901-238.584 0-148.218 120.582-268.8 268.8-268.8 50.173 0 103.462 18.805 150.051 52.952 27.251 19.973 50.442 44.043 67.549 69.606 17.107-25.565 40.299-49.634 67.55-69.606 46.589-34.147 99.878-52.952 150.050-52.952 148.218 0 268.8 120.582 268.8 268.8 0 77.869-25.538 158.141-75.901 238.584-39.478 63.054-94.301 126.446-162.944 188.418-116.034 104.754-230.314 168.706-235.122 171.376-3.867 2.149-8.15 3.222-12.434 3.222zM268.8 153.6c-119.986 0-217.6 97.614-217.6 217.6 0 155.624 120.302 297.077 221.224 388.338 90.131 81.504 181.44 138.658 213.976 158.042 32.536-19.384 123.845-76.538 213.976-158.042 100.922-91.261 221.224-232.714 221.224-388.338 0-119.986-97.616-217.6-217.6-217.6-87.187 0-171.856 71.725-193.314 136.096-3.485 10.453-13.267 17.504-24.286 17.504s-20.802-7.051-24.286-17.504c-21.456-64.371-106.125-136.096-193.314-136.096z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HeartPulse.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HeartPulse.js
new file mode 100644
index 00000000..3a4e1b22
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/HeartPulse.js
@@ -0,0 +1,14 @@
+// Icon: Linear.HeartPulse
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 972.8c-4.283 0-8.566-1.074-12.432-3.222-5.954-3.307-147.285-82.464-274.914-208.987-10.040-9.954-10.11-26.163-0.157-36.203s26.163-10.11 36.203-0.157c101.349 100.472 214.307 171.323 251.293 193.35 37-22.054 150.123-93.045 251.304-193.352 10.042-9.952 26.248-9.882 36.205 0.158 9.954 10.040 9.883 26.25-0.158 36.205-127.629 126.52-268.958 205.678-274.912 208.986-3.866 2.149-8.149 3.222-12.432 3.222z' />
+            <path d='M65.478 563.216c-9.61 0-18.821-5.437-23.182-14.709-28.066-59.659-42.296-119.314-42.296-177.307 0-148.218 120.582-268.8 268.8-268.8 50.173 0 103.461 18.805 150.051 52.952 27.251 19.973 50.442 44.043 67.549 69.606 17.107-25.565 40.299-49.634 67.55-69.606 46.589-34.147 99.878-52.952 150.050-52.952 148.218 0 268.8 120.582 268.8 268.8 0 57.992-14.23 117.645-42.294 177.301-6.018 12.794-21.267 18.29-34.061 12.267-12.794-6.018-18.286-21.267-12.269-34.061 24.834-52.786 37.424-105.107 37.424-155.507 0-119.986-97.616-217.6-217.6-217.6-87.187 0-171.856 71.725-193.314 136.096-3.485 10.453-13.267 17.504-24.286 17.504s-20.802-7.051-24.286-17.504c-21.456-64.371-106.125-136.096-193.314-136.096-119.986 0-217.6 97.614-217.6 217.6 0 50.4 12.592 102.723 37.426 155.512 6.019 12.794 0.526 28.043-12.267 34.061-3.522 1.659-7.23 2.443-10.88 2.443z' />
+            <path d='M538.346 768.024c-0.232 0-0.456-0.002-0.678-0.006-10.35-0.218-29.122-5.598-38.552-39.194l-62.291-221.915-41.328 167.894c-8.106 32.933-26.902 39.813-37.387 40.982-10.483 1.173-30.334-1.397-45.504-31.733l-31.005-62.010c-1.475-2.952-2.85-4.834-3.893-6-0.171 0.229-0.355 0.483-0.546 0.765-18.939 27.816-61.053 48.792-97.962 48.792h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c21.554 0 47.152-13.942 55.638-26.408 11.397-16.739 28.026-25.638 45.629-24.48 19.142 1.286 36.246 14.274 46.928 35.634l22.781 45.562 47.93-194.71c8.069-32.784 24.658-39.907 37.15-40.109 12.512-0.24 29.302 6.379 38.43 38.888l65.763 234.286 60.323-184.738c10.504-32.168 29.779-37.707 40.334-38.144 10.542-0.435 30.224 3.482 43.357 34.672l37.062 88.026c6.946 16.496 29.573 31.522 47.474 31.522h76.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8c-38.24 0-79.822-27.608-94.662-62.853l-30.301-71.968-65.208 199.699c-10.598 32.454-29 37.546-39.483 37.546z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearts.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearts.js
new file mode 100644
index 00000000..6595de12
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hearts.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Hearts
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 972.8c-14.138 0-25.6-11.461-25.6-25.6 0-111.554-102.57-182.714-211.162-258.053-59.469-41.259-120.965-83.922-167.83-135.234-55.048-60.277-81.808-124.229-81.808-195.514 0-141.158 114.842-256 256-256 101.2 0 188.872 59.026 230.4 144.458 41.528-85.432 129.2-144.458 230.4-144.458 68.453 0 132.733 26.522 180.998 74.677 48.368 48.256 75.002 112.651 75.002 181.323 0 71.285-26.76 135.237-81.81 195.509-46.866 51.315-108.362 93.978-167.832 135.235-108.59 75.342-211.158 146.502-211.158 258.056 0 14.139-11.462 25.6-25.6 25.6zM256 153.6c-112.928 0-204.8 91.872-204.8 204.8 0 130.757 110.566 207.467 227.624 288.68 82.262 57.072 166.538 115.547 207.576 195.139 41.037-79.592 125.314-138.066 207.574-195.139 117.059-81.213 227.626-157.923 227.626-288.68 0-112.928-91.874-204.8-204.8-204.8s-204.8 91.872-204.8 204.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-112.928-91.872-204.8-204.8-204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Height.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Height.js
new file mode 100644
index 00000000..607a2e63
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Height.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Height
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM281.6 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M435.2 307.2h-307.2c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8 8.974 0 17.587-1.562 25.6-4.403v286.003c0 42.349 34.453 76.8 76.8 76.8 19.654 0 37.602-7.43 51.2-19.619 13.598 12.189 31.546 19.619 51.2 19.619 42.347 0 76.8-34.451 76.8-76.8v-286.003c8.013 2.842 16.626 4.403 25.6 4.403 42.347 0 76.8-34.451 76.8-76.8v-204.8c0-42.347-34.453-76.8-76.8-76.8zM460.8 588.8c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-153.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-307.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-512c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M947.2 51.2h-204.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 1024h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M929.099 801.099l-58.699 58.696v-695.592l58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.498c9.998-9.998 9.998-26.206 0-36.205l-102.4-102.4c-9.997-9.997-26.206-9.997-36.203 0l-102.4 102.4c-9.998 9.998-9.998 26.206 0 36.205 9.997 9.997 26.206 9.997 36.203 0l58.699-58.699v695.592l-58.699-58.698c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.205-9.997-36.202 0.002z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Helicopter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Helicopter.js
new file mode 100644
index 00000000..a7a64223
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Helicopter.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Helicopter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 486.4c0-33.373-21.403-61.829-51.2-72.397v-81.203c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v81.203c-29.797 10.568-51.2 39.024-51.2 72.397s21.403 61.83 51.2 72.397v81.203c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-81.203c29.797-10.566 51.2-39.024 51.2-72.397zM947.2 512c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M869.112 555.181c-4.43-13.429-18.904-20.725-32.331-16.293l-273.581 90.237v-117.125h256c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-258.574c-11.894-58.355-63.61-102.4-125.426-102.4h-25.6v-51.2h332.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-332.8v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-332.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h332.8v51.2h-76.8c-127.043 0-230.4 103.357-230.4 230.4v51.2c0 61.814 44.045 113.531 102.4 125.426v53.774h-25.6c-14.115 0-25.6-11.485-25.6-25.6 0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 42.349 34.453 76.8 76.8 76.8h358.4c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-53.774c43.104-8.786 78.373-39.314 93.877-79.578l298.142-98.336c13.426-4.429 20.722-18.904 16.293-32.331zM281.6 409.6h76.8v128c0 14.115-11.485 25.6-25.6 25.6h-228.563c12.461-86.726 87.243-153.6 177.363-153.6zM204.8 819.2v-51.2h204.8v51.2h-204.8zM435.2 716.8h-256c-42.347 0-76.8-34.451-76.8-76.8v-25.6h230.4c42.347 0 76.8-34.453 76.8-76.8v-128h25.6c42.347 0 76.8 34.453 76.8 76.8v153.6c0 6.426-0.803 12.664-2.298 18.634-0.054 0.192-0.088 0.392-0.138 0.586-8.554 33.078-38.651 57.581-74.365 57.581z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Highlight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Highlight.js
new file mode 100644
index 00000000..3d6bd999
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Highlight.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Highlight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 493.899c-9.997-9.998-26.206-9.998-36.203 0l-183.592 183.592c-29.944 29.944-78.669 29.944-108.613 0l-239.184-239.186c-14.426-14.426-22.37-33.712-22.37-54.306s7.944-39.88 22.37-54.306l183.592-183.594c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-183.592 183.594c-24.096 24.096-37.366 56.238-37.366 90.509 0 14.605 2.432 28.818 7.064 42.192l-374.906 374.907c-4.8 4.8-7.498 11.312-7.498 18.101v76.8c0 14.139 11.462 25.6 25.6 25.6h486.4c6.789 0 13.301-2.698 18.101-7.499l170.104-170.104c13.374 4.634 27.587 7.064 42.194 7.064 34.27 0 66.414-13.27 90.509-37.366l183.592-183.592c10-9.998 10-26.206 0.002-36.203zM501.397 870.4h-450.197v-40.595l358.477-358.477c1 1.069 1.99 2.142 3.030 3.181l239.184 239.184c1.038 1.038 2.112 2.032 3.182 3.030l-153.677 153.677z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History.js
new file mode 100644
index 00000000..1ca28f95
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History.js
@@ -0,0 +1,13 @@
+// Icon: Linear.History
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-188.634 0-361.451-103.248-451.011-269.453-6.706-12.446-2.054-27.973 10.394-34.68 12.445-6.706 27.974-2.054 34.68 10.392 80.614 149.605 236.16 242.541 405.938 242.541 254.086 0 460.8-206.714 460.8-460.8s-206.714-460.8-460.8-460.8c-169.123 0-324.386 92.413-405.2 241.174-6.075 11.187-19.448 16.205-31.386 11.787-11.936-4.421-18.813-16.939-16.139-29.386l43.696-203.354c2.97-13.822 16.579-22.619 30.406-19.651 13.822 2.97 22.622 16.584 19.651 30.406l-17.859 83.118c95.738-104.040 231.691-165.296 376.83-165.296 136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962z' />
+            <path d='M512 537.6c-4.277 0-8.558-1.069-12.432-3.222l-230.4-128c-12.36-6.866-16.813-22.451-9.946-34.81s22.451-16.813 34.81-9.946l217.080 120.6 268.744-171.021c11.925-7.59 27.75-4.078 35.342 7.854 7.59 11.928 4.074 27.75-7.854 35.341l-281.6 179.2c-4.182 2.662-8.962 4.003-13.744 4.003z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History2.js
new file mode 100644
index 00000000..5a923033
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/History2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.History2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962-158.432 0-305.912 72.984-402.094 194.938v-66.938c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v152.154c0 11.71 7.946 21.928 19.296 24.811 4.941 1.256 9.979 0.979 14.555-0.581v0.003l146.096-49.754c13.384-4.558 20.538-19.102 15.979-32.486s-19.099-20.539-32.486-15.979l-76.304 25.987c86.443-113.066 221.208-180.955 366.158-180.955 254.086 0 460.8 206.714 460.8 460.8s-206.714 460.8-460.8 460.8c-169.778 0-325.323-92.936-405.938-242.541-6.706-12.446-22.235-17.099-34.68-10.392-12.446 6.706-17.099 22.234-10.394 34.68 89.56 166.205 262.378 269.453 451.011 269.453 136.76 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038z' />
+            <path d='M512 537.6c-4.277 0-8.558-1.069-12.432-3.222l-230.4-128c-12.36-6.866-16.813-22.451-9.946-34.81s22.451-16.813 34.81-9.946l217.080 120.6 268.744-171.021c11.925-7.59 27.75-4.078 35.342 7.854 7.59 11.928 4.074 27.75-7.854 35.341l-281.6 179.2c-4.182 2.662-8.962 4.003-13.744 4.003z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hockey.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hockey.js
new file mode 100644
index 00000000..ca929d5b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hockey.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Hockey
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256 614.4c-108.291 0-179.798-16.768-218.608-51.266-37.392-33.237-37.392-74.819-37.392-102.334 0-65.077 37.323-102.4 102.4-102.4 9.95 0 25.197 2.445 48.277 6.146 45.374 7.277 121.317 19.454 207.723 19.454 125.17 0 296.597 0 417.099-120.502 49.926-49.926 201.934-227.173 203.464-228.958 9.202-10.733 25.363-11.979 36.099-2.776 10.734 9.2 11.976 25.363 2.776 36.098-6.299 7.347-154.83 180.536-206.136 231.842-60.301 60.299-135.691 99.211-230.48 118.96-79.384 16.538-158.917 16.538-222.822 16.538-90.485 0-168.95-12.582-215.83-20.099-17.638-2.829-34.299-5.501-40.17-5.501-36.845 0-51.2 14.355-51.2 51.2 0 23.709 0 46.104 20.208 64.066 28.616 25.437 90.722 38.334 184.592 38.334 321.248 0 419.138-46.534 487.395-132.406 29.461-37.064 232.987-290.661 235.038-293.218 8.851-11.027 24.965-12.79 35.989-3.941 11.027 8.85 12.79 24.962 3.942 35.989-2.051 2.557-205.502 256.059-234.89 293.030-44.872 56.45-95.208 90.422-168.312 113.59-82.134 26.030-196.262 38.155-359.163 38.155z' />
+            <path d='M751.197 741.365c-36.962-15.842-85.542-24.565-136.797-24.565s-99.835 8.723-136.798 24.565c-59.168 25.357-68.002 59.651-68.002 77.835v89.6c0 34.136 23.666 64.766 66.638 86.254 37.331 18.666 86.398 28.946 138.162 28.946s100.83-10.28 138.163-28.946c42.971-21.488 66.637-52.118 66.637-86.254v-89.6c0-18.184-8.834-52.478-68.003-77.835zM614.4 768c95.285 0 153.6 33.15 153.6 51.2s-58.315 51.2-153.6 51.2-153.6-33.15-153.6-51.2 58.315-51.2 153.6-51.2zM729.664 949.259c-29.92 14.962-71.933 23.541-115.264 23.541s-85.344-8.579-115.266-23.541c-24.003-12.002-38.334-27.126-38.334-40.459v-19.918c5.101 2.795 10.666 5.525 16.802 8.155 36.963 15.84 85.544 24.563 136.798 24.563s99.835-8.723 136.797-24.565c6.138-2.63 11.702-5.362 16.803-8.155v19.92c0 13.333-14.331 28.458-38.336 40.459z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home.js
new file mode 100644
index 00000000..e3234037
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Home
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.382 622.826l-452.050-499.634c-14.051-15.533-32.992-24.086-53.333-24.086-0.002 0 0 0 0 0-20.339 0-39.282 8.555-53.334 24.086l-452.050 499.634c-9.485 10.485-8.675 26.674 1.808 36.158 4.899 4.432 11.043 6.616 17.168 6.616 6.982 0 13.938-2.838 18.992-8.426l109.016-120.491v410.517c0 42.347 34.453 76.8 76.8 76.8h563.2c42.347 0 76.8-34.453 76.8-76.8v-410.517l109.018 120.493c9.485 10.483 25.674 11.296 36.158 1.808 10.483-9.485 11.293-25.675 1.806-36.158zM614.4 972.8h-204.8v-230.4c0-14.115 11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v230.4zM819.2 947.2c0 14.115-11.485 25.6-25.6 25.6h-128v-230.4c0-42.349-34.451-76.8-76.8-76.8h-153.6c-42.347 0-76.8 34.451-76.8 76.8v230.4h-128c-14.115 0-25.6-11.485-25.6-25.6v-467.106l291.832-322.552c4.222-4.667 9.68-7.237 15.368-7.237s11.146 2.57 15.366 7.235l291.834 322.552v467.107z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home2.js
new file mode 100644
index 00000000..ef4f9986
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Home2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.592 614.4c-6.125 0-12.269-2.184-17.166-6.618-10.485-9.485-11.294-25.674-1.808-36.158l452.048-499.632c14.053-15.531 32.995-24.086 53.334-24.086 0 0 0 0 0 0 20.339 0 39.28 8.554 53.333 24.086l452.050 499.634c9.486 10.485 8.677 26.674-1.808 36.158-10.485 9.488-26.674 8.677-36.158-1.808l-452.050-499.635c-4.222-4.667-9.68-7.235-15.366-7.235s-11.146 2.57-15.368 7.237l-452.048 499.632c-5.053 5.587-12.010 8.426-18.992 8.426z' />
+            <path d='M793.6 1024h-563.2c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h563.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 42.347-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home3.js
new file mode 100644
index 00000000..9ac27df6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home3.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Home3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.592 614.4c-6.125 0-12.269-2.184-17.166-6.618-10.485-9.485-11.294-25.674-1.808-36.158l452.048-499.632c14.053-15.531 32.995-24.086 53.334-24.086 0 0 0 0 0 0 20.339 0 39.28 8.554 53.333 24.086l452.050 499.634c9.486 10.485 8.677 26.674-1.808 36.158-10.485 9.488-26.674 8.677-36.158-1.808l-452.050-499.635c-4.222-4.667-9.68-7.235-15.366-7.235s-11.146 2.57-15.368 7.237l-452.048 499.632c-5.053 5.587-12.010 8.426-18.992 8.426z' />
+            <path d='M793.6 1024h-204.8c-14.139 0-25.6-11.461-25.6-25.6v-179.2h-102.4v179.2c0 14.139-11.462 25.6-25.6 25.6h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h179.2v-179.2c0-14.139 11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6v179.2h179.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 42.347-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home4.js
new file mode 100644
index 00000000..f10337d8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home4.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Home4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.592 614.4c-6.125 0-12.269-2.184-17.166-6.618-10.485-9.485-11.294-25.674-1.808-36.158l452.048-499.632c14.053-15.531 32.995-24.086 53.334-24.086 0 0 0 0 0 0 20.339 0 39.28 8.554 53.333 24.086l151.802 167.781-0.334-60.432c-0.037-6.814 2.643-13.362 7.448-18.194 4.805-4.83 11.338-7.547 18.152-7.547h102.4c14.139 0 25.6 11.462 25.6 25.6v229.97l146.982 162.456c9.486 10.485 8.677 26.674-1.808 36.158-10.485 9.488-26.674 8.677-36.158-1.808l-153.6-169.766c-4.259-4.707-6.618-10.829-6.618-17.176v-214.234h-51.058l0.563 101.691c0.058 10.613-6.437 20.162-16.331 24.005-9.894 3.84-21.133 1.182-28.251-6.688l-196.755-217.467c-4.222-4.667-9.68-7.235-15.366-7.235s-11.146 2.57-15.368 7.237l-452.048 499.632c-5.053 5.587-12.010 8.426-18.992 8.426z' />
+            <path d='M793.6 1024h-204.8c-14.139 0-25.6-11.461-25.6-25.6v-179.2h-102.4v179.2c0 14.139-11.462 25.6-25.6 25.6h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h179.2v-179.2c0-14.139 11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6v179.2h179.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 42.347-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home5.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home5.js
new file mode 100644
index 00000000..431e9a7e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home5.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Home5
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.592 614.4c-6.125 0-12.269-2.184-17.166-6.618-10.485-9.485-11.294-25.674-1.808-36.158l452.048-499.632c14.053-15.531 32.995-24.086 53.334-24.086 0 0 0 0 0 0 20.339 0 39.28 8.554 53.333 24.086l151.802 167.781-0.334-60.432c-0.037-6.814 2.643-13.362 7.448-18.194 4.805-4.83 11.338-7.547 18.152-7.547h102.4c14.139 0 25.6 11.462 25.6 25.6v229.97l146.982 162.456c9.486 10.485 8.677 26.674-1.808 36.158-10.485 9.488-26.674 8.677-36.158-1.808l-153.6-169.766c-4.259-4.707-6.618-10.829-6.618-17.176v-214.234h-51.058l0.563 101.691c0.058 10.613-6.437 20.162-16.331 24.005-9.894 3.84-21.133 1.182-28.251-6.688l-196.755-217.467c-4.222-4.667-9.68-7.235-15.366-7.235s-11.146 2.57-15.368 7.237l-452.048 499.632c-5.053 5.587-12.010 8.426-18.992 8.426z' />
+            <path d='M793.6 1024h-563.2c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h563.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 42.347-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home6.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home6.js
new file mode 100644
index 00000000..eadc3766
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Home6.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Home6
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024h-153.6c-14.139 0-25.6-11.461-25.6-25.6v-179.2h-102.4v179.2c0 14.139-11.462 25.6-25.6 25.6h-153.6c-42.347 0-76.8-34.451-76.8-76.8v-313.506l-57.816 63.901c-9.451 10.443-25.56 11.293-36.054 1.902l-102.4-91.621c-5.078-4.544-8.134-10.923-8.494-17.728s2.010-13.472 6.581-18.525l452.050-499.632c14.053-15.533 32.995-24.086 53.334-24.086 20.341 0 39.282 8.554 53.333 24.086l452.050 499.634c4.571 5.053 6.941 11.72 6.581 18.523-0.36 6.805-3.416 13.186-8.494 17.73l-102.4 91.622c-10.499 9.39-26.605 8.541-36.053-1.902l-57.814-63.901-0.002 313.502c0 42.349-34.451 76.8-76.8 76.8zM614.4 972.8h128c14.115 0 25.6-11.485 25.6-25.6l0.003-379.957c0-10.587 6.517-20.083 16.397-23.89 9.882-3.805 21.083-1.138 28.187 6.714l85.315 94.299 64.242-57.48-434.778-480.546c-4.222-4.667-9.68-7.235-15.366-7.235-5.688 0-11.146 2.57-15.368 7.237l-434.778 480.544 64.243 57.482 85.32-94.301c7.102-7.853 18.306-10.518 28.187-6.714 9.88 3.806 16.397 13.301 16.397 23.89v379.957c0 14.115 11.485 25.6 25.6 25.6h128v-179.2c0-14.139 11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6v179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hotdog.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hotdog.js
new file mode 100644
index 00000000..2cee1604
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hotdog.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Hotdog
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 921.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-70.579 57.421-128 128-128 42.347 0 76.8-34.451 76.8-76.8 0-70.578 57.421-128 128-128 42.349 0 76.8-34.453 76.8-76.8 0-70.579 57.421-128 128-128 42.349 0 76.8-34.453 76.8-76.8v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 70.579-57.421 128-128 128-42.349 0-76.8 34.453-76.8 76.8 0 70.579-57.421 128-128 128-42.347 0-76.8 34.451-76.8 76.8 0 70.579-57.421 128-128 128-42.347 0-76.8 34.451-76.8 76.8v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M972.8 230.4c0-47.866-18.64-92.867-52.488-126.712-33.845-33.848-78.846-52.488-126.712-52.488-42.566 0-82.859 14.752-115.064 41.819-23.57-17.978-68.483-41.819-140.936-41.819-47.654 0-104.451 19.674-168.816 58.475-57.098 34.419-116.741 82.078-172.486 137.822-55.744 55.744-103.402 115.389-137.822 172.486-38.802 64.365-58.475 121.163-58.475 168.816 0 72.453 23.842 117.366 41.819 140.936-27.067 32.205-41.819 72.498-41.819 115.064 0 47.866 18.64 92.867 52.488 126.712 33.845 33.848 78.846 52.488 126.712 52.488 42.566 0 82.859-14.754 115.064-41.819 23.57 17.978 68.482 41.819 140.936 41.819 47.654 0 104.451-19.674 168.818-58.475 57.098-34.421 116.741-82.078 172.486-137.826 55.746-55.744 103.403-115.387 137.824-172.485 38.798-64.363 58.472-121.162 58.472-168.814 0-72.454-23.842-117.366-41.819-140.936 27.067-32.205 41.819-72.499 41.819-115.064zM232.501 283.701c110.138-110.136 229.896-181.301 305.099-181.301 53.062 0 85.952 14.842 103.822 26.754l-563.469 563.469c-11.912-17.87-26.754-50.76-26.754-103.822 0-75.203 71.165-194.962 181.301-305.099zM179.2 972.8c-34.19 0-66.333-13.314-90.51-37.491-24.176-24.176-37.49-56.32-37.49-90.509s13.315-66.333 37.491-90.509l614.4-614.4c24.176-24.178 56.32-37.491 90.509-37.491s66.333 13.315 90.509 37.491c24.176 24.176 37.491 56.318 37.491 90.509s-13.314 66.333-37.491 90.51l-614.4 614.4c-24.176 24.176-56.318 37.49-90.509 37.49zM740.301 791.501c-110.139 110.133-229.898 181.299-305.101 181.299-53.062 0-85.952-14.84-103.821-26.754l563.467-563.467c11.914 17.87 26.754 50.758 26.754 103.821 0 75.203-71.166 194.962-181.299 305.101z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hourglass.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hourglass.js
new file mode 100644
index 00000000..031f278e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Hourglass.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Hourglass
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 179.2v-25.6c0-20.061-12.354-37.533-36.715-51.933-17.598-10.402-42.042-19.557-72.651-27.21-59.995-14.997-139.344-23.258-223.434-23.258-84.088 0-163.438 8.261-223.432 23.259-30.61 7.653-55.053 16.806-72.653 27.21-24.362 14.398-36.715 31.87-36.715 51.931v25.6c0 134.691 81.574 255.944 204.795 307.288v102.222c-123.221 51.346-204.795 172.598-204.795 307.29v25.6c0 20.059 12.354 37.533 36.715 51.933 17.6 10.402 42.043 19.557 72.653 27.21 59.994 14.998 139.344 23.258 223.432 23.258 84.090 0 163.438-8.259 223.434-23.258 30.61-7.653 55.053-16.808 72.651-27.21 24.362-14.4 36.715-31.874 36.715-51.933v-25.6c0-134.691-81.573-255.944-204.794-307.29v-102.222c123.221-51.344 204.794-172.597 204.794-307.288zM287.322 121.309c54.56-12.194 125.261-18.909 199.078-18.909 73.819 0 144.52 6.715 199.080 18.909 58.867 13.157 76.701 27.336 81.366 32.291-4.666 4.955-22.499 19.134-81.366 32.291-54.56 12.194-125.261 18.909-199.080 18.909-73.818 0-144.518-6.715-199.078-18.909-58.869-13.157-76.702-27.336-81.37-32.291 4.667-4.955 22.501-19.134 81.37-32.291zM580.275 630.418c112.285 39.69 187.725 146.419 187.725 265.582v24.238c-2.141 2.909-16.598 18.92-82.52 33.653-54.56 12.194-125.261 18.909-199.080 18.909-73.818 0-144.52-6.715-199.078-18.907-65.915-14.731-80.378-30.741-82.522-33.653v-24.24c0-119.163 75.442-225.893 187.726-265.582 10.229-3.616 17.067-13.286 17.067-24.136v-137.363c0-10.85-6.838-20.522-17.069-24.136-101.195-35.768-172.453-125.992-185.544-230.693 15.342 6.923 34.075 13.174 55.986 18.653 59.995 14.997 139.346 23.258 223.434 23.258 84.090 0 163.438-8.261 223.434-23.259 21.91-5.477 40.642-11.73 55.986-18.653-13.093 104.699-84.35 194.923-185.544 230.693-10.23 3.616-17.069 13.288-17.069 24.136v137.363c0 10.851 6.838 20.522 17.069 24.138z' />
+            <path d='M699.734 846.264c-115.798-40.933-187.734-139.586-187.734-257.464v-154.872c30.741-3.022 60.315-11.496 88.202-25.355 12.661-6.293 17.824-21.658 11.531-34.318s-21.658-17.826-34.318-11.531c-28.408 14.118-59.030 21.277-91.014 21.277s-62.605-7.158-91.013-21.278c-12.659-6.29-28.026-1.13-34.318 11.531s-1.13 28.026 11.531 34.318c27.885 13.859 57.461 22.333 88.2 25.355v154.874c0 117.878-71.936 216.531-187.734 257.464-10.762 3.803-17.706 14.272-17.022 25.666 0.682 11.394 8.826 20.96 19.963 23.453 50.294 11.254 126.824 26.218 210.394 26.218s160.099-14.963 210.394-26.218c11.139-2.494 19.282-12.059 19.965-23.453 0.68-11.394-6.261-21.862-17.024-25.666zM486.4 870.4c-44.885 0-87.093-4.464-124.762-10.478 34.070-21.573 63.706-48.766 87.586-80.626 15.019-20.035 27.45-41.557 37.174-64.211 9.726 22.654 22.155 44.174 37.174 64.211 23.88 31.858 53.515 59.051 87.586 80.626-37.666 6.014-79.874 10.478-124.758 10.478z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream.js
new file mode 100644
index 00000000..b9e029e8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream.js
@@ -0,0 +1,12 @@
+// Icon: Linear.IceCream
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c0-95.298-65.429-175.602-153.72-198.352 0.066-2.15 0.12-4.301 0.12-6.448 0-112.928-91.528-204.8-204.032-204.8s-204.032 91.872-204.032 204.8c0 2.024 0.054 4.050 0.114 6.074-89.064 22.214-155.25 102.882-155.25 198.726 0 92.485 61.627 170.834 145.968 196.173l97.262 350.146c10.605 38.178 49.949 68.082 89.57 68.082h51.2c39.622 0 78.966-29.904 89.568-68.082l97.262-350.146c84.341-25.339 145.97-103.688 145.97-196.173zM611.635 820.541l-181.216 64.998-25.061-90.218 236.883-84.966-30.606 110.186zM537.6 972.8h-51.2c-16.613 0-35.79-14.578-40.237-30.584l-2.003-7.211 150.694-54.051-17.018 61.262c-4.446 16.008-23.624 30.584-40.237 30.584zM659.026 649.944l-267.406 95.912-36.528-131.499c1.102 0.018 2.202 0.042 3.309 0.042h307.2c1.106 0 2.206-0.026 3.309-0.042l-9.883 35.587zM665.6 563.2h-307.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6c40.437 0 78.61 15.582 107.488 43.875 10.099 9.896 26.306 9.73 36.202-0.37 9.894-10.099 9.73-26.307-0.37-36.202-38.139-37.366-88.438-58.093-141.782-58.485 0-0.006 0-0.013 0-0.019 0-84.696 68.56-153.6 152.832-153.6s152.83 68.904 152.83 153.6c-9.781 0-19.614 0.698-29.229 2.074-13.995 2.003-23.717 14.973-21.714 28.968 2.005 13.997 14.966 23.725 28.97 21.714 7.219-1.030 14.611-1.555 21.973-1.555 84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream2.js
new file mode 100644
index 00000000..5f9f4d11
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IceCream2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.IceCream2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 588.8c0-29.766-14.302-73.214-81.507-112.6 24.258-24.582 30.307-48.709 30.307-66.6 0-46.522-40.453-89.754-106.208-119.464 2.528-11.126 3.808-22.538 3.808-34.136 0-84.696-68.904-153.6-153.6-153.6-3.566 0-9.822-0.422-11.672-3.248-6.398-9.771-0.118-41.189 9.501-63.234 3.938-8.942 2.44-19.347-3.858-26.819-6.299-7.47-16.302-10.706-25.781-8.334-9.154 2.288-224.19 57.736-224.19 204.654 0 12.613 1.587 25.141 4.6 37.314-67.451 33.533-107 85.174-107 141.267 0 8.928 1.016 17.925 2.979 26.896-35.506 37.459-54.179 80.981-54.179 126.704 0 19.864 3.52 39.285 10.355 57.928l39.362 291.218c1.691 12.509 9.106 27.482 18.034 36.408 4.117 4.118 103.003 100.846 290.65 100.846s286.533-96.728 290.65-100.846c8.818-8.818 16.302-23.579 18.203-35.898l39.522-255.939c6.624-13.648 10.026-27.883 10.026-42.517zM230.546 463.378c6.882 10.418 15.067 20.51 24.494 30.101 31.413 31.952 74.906 56.416 122.467 68.885 2.176 0.571 4.36 0.843 6.509 0.843 11.357 0 21.731-7.614 24.746-19.114 3.586-13.677-4.595-27.67-18.27-31.254-38.766-10.165-73.904-29.787-98.941-55.254-22.925-23.318-35.55-49.451-35.55-73.584 0-35.448 28.021-69.682 76.037-94.149 3.118 4.882 6.485 9.622 10.149 14.16 22.57 27.957 53.83 47.098 88.021 53.898 1.686 0.334 3.365 0.496 5.021 0.496 11.963 0 22.659-8.43 25.082-20.611 2.758-13.867-6.248-27.344-20.115-30.102-46.63-9.274-81.794-53.242-81.794-102.272 0-73.36 86.232-118.746 141.083-140.192-3.166 20.768-2.544 43.954 9.155 61.89 7.882 12.082 23.744 26.483 54.562 26.483 56.464 0 102.4 45.936 102.4 102.4 0 5.432-0.435 10.795-1.266 16.074-22.216-6.686-46.269-12.040-71.802-15.8-13.989-2.070-26.997 7.61-29.056 21.597-2.061 13.989 7.61 26.997 21.597 29.058 112.989 16.64 182.926 66.251 182.926 102.672 0 16.942-15.419 32.133-29.341 42.394-41.965-16.616-91.714-28.822-146.621-35.826-14.016-1.781-26.843 8.13-28.634 22.155-1.789 14.026 8.13 26.845 22.155 28.634 133.198 16.989 233.64 69.37 233.64 121.843 0 29.706-32.606 60.717-89.458 85.082-64.578 27.677-150.998 42.918-243.342 42.918-77.058 0-149.16-19.776-203.024-55.685-50.67-33.781-78.576-77.646-78.576-123.515 0-25.75 8.811-50.958 25.746-74.222zM766.43 886.965c-1.55 1.493-23.642 22.403-64.645 42.998-38.907 19.541-103.414 42.837-189.786 42.837s-150.878-23.296-189.786-42.837c-40.861-20.523-62.942-41.362-64.629-42.982-1.242-1.416-3.213-5.408-3.531-7.094l-26.614-196.909c8.499 7.235 17.677 14.166 27.536 20.738 62.181 41.454 144.37 64.285 231.424 64.285 99.12 0 192.704-16.712 263.51-47.058 18.218-7.808 34.49-16.373 48.766-25.566l-28.411 183.99c-0.374 1.899-2.509 6.118-3.835 7.598z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons.js
new file mode 100644
index 00000000..b773f33f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Icons
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M128 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M844.8 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M128 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M844.8 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M128 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons2.js
new file mode 100644
index 00000000..47a5a7b4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Icons2.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Icons2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 972.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 768c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M537.6 972.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM435.2 768c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M896 972.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM793.6 768c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M179.2 614.4h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 409.6c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M537.6 614.4h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM435.2 409.6c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M896 614.4h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM793.6 409.6c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M179.2 256h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M537.6 256h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM435.2 51.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M896 256h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM793.6 51.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox.js
new file mode 100644
index 00000000..edac30f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Inbox
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1001.331 531.632l-138.157-315.786c-15.272-34.906-57.075-62.246-95.174-62.246h-512c-38.099 0-79.904 27.341-95.176 62.246l-138.157 315.786c-12.71 29.056-22.667 76.658-22.667 108.368v204.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-31.714-9.958-79.314-22.669-108.368zM207.733 236.368c7.227-16.522 30.234-31.568 48.267-31.568h512c18.034 0 41.038 15.046 48.269 31.568l138.157 315.786c1.557 3.558 3.082 7.59 4.547 11.95-3.84-0.595-7.77-0.904-11.773-0.904h-307.2c-14.139 0-25.6 11.461-25.6 25.6v25.6c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-25.6c0-14.139-11.462-25.6-25.6-25.6h-307.2c-4.002 0-7.933 0.309-11.771 0.902 1.466-4.36 2.992-8.392 4.547-11.95l138.157-315.784zM972.8 844.8c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h281.6c0 84.696 68.904 153.6 153.6 153.6s153.6-68.904 153.6-153.6h281.6c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox2.js
new file mode 100644
index 00000000..d2394969
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Inbox2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Inbox2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 480.357l-133.406-266.811c-16.808-33.614-59.413-59.946-96.994-59.946h-128c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h128c18.515 0 42.918 15.083 51.2 31.643l133.406 266.81c1.413 2.827 2.802 5.978 4.152 9.363-3.134-0.39-6.32-0.616-9.558-0.616h-256c-14.139 0-25.6 11.461-25.6 25.6 0 70.579-57.421 128-128 128s-128-57.421-128-128c0-14.139-11.462-25.6-25.6-25.6h-256c-3.237 0-6.422 0.226-9.557 0.616 1.349-3.384 2.738-6.536 4.152-9.363l133.405-266.81c8.28-16.56 32.685-31.643 51.2-31.643h128c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-128c-37.582 0-80.187 26.331-96.995 59.946l-133.405 266.811c-14.355 28.71-25.6 76.344-25.6 108.443v204.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-32.099-11.245-79.734-25.6-108.443zM921.6 793.6c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h232.224c12.459 86.728 87.256 153.6 177.376 153.6s164.917-66.872 177.376-153.6h232.224c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M606.901 340.298c-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.698v-219.795c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v219.795l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205-0.002-36.203z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentDecrease.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentDecrease.js
new file mode 100644
index 00000000..3b4228ee
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentDecrease.js
@@ -0,0 +1,17 @@
+// Icon: Linear.IndentDecrease
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 716.8h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.803 716.8c-5.44 0-10.846-1.731-15.363-5.12l-204.8-153.6c-6.446-4.834-10.24-12.422-10.24-20.48s3.794-15.645 10.24-20.48l204.8-153.6c7.758-5.819 18.136-6.757 26.808-2.418 8.674 4.336 14.152 13.2 14.152 22.898v307.2c0 9.698-5.478 18.562-14.152 22.898-3.621 1.81-7.542 2.702-11.445 2.702zM170.667 537.6l136.533 102.4v-204.8l-136.533 102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentIncrease.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentIncrease.js
new file mode 100644
index 00000000..d2947fe2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/IndentIncrease.js
@@ -0,0 +1,17 @@
+// Icon: Linear.IndentIncrease
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 716.8h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M127.997 716.8c-3.902 0-7.822-0.891-11.445-2.702-8.674-4.336-14.152-13.2-14.152-22.898v-307.2c0-9.698 5.478-18.562 14.152-22.898 8.67-4.336 19.053-3.403 26.808 2.418l204.8 153.6c6.446 4.834 10.24 12.422 10.24 20.48s-3.794 15.645-10.24 20.48l-204.8 153.6c-4.517 3.387-9.923 5.12-15.363 5.12zM153.6 435.2v204.8l136.533-102.4-136.533-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Intersect.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Intersect.js
new file mode 100644
index 00000000..ebc4f2f5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Intersect.js
@@ -0,0 +1,46 @@
+// Icon: Linear.Intersect
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M819.2 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M512 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 768h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 870.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 460.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 563.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 870.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 460.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 256h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 153.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 563.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 153.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 256h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M102.4 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M512 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M204.8 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M102.4 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M384 358.4c-42.347 0-76.8 34.453-76.8 76.8v281.6h281.6c42.349 0 76.8-34.451 76.8-76.8v-281.6h-281.6zM614.4 640c0 14.115-11.485 25.6-25.6 25.6h-230.4v-230.4c0-14.115 11.485-25.6 25.6-25.6h230.4v230.4z' />
+            <path d='M307.2 768h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M0 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 51.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 972.8h51.2v51.2h-51.2v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Italic.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Italic.js
new file mode 100644
index 00000000..ece74d55
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Italic.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Italic
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 102.4h-204.829c-0.070 0-0.142 0-0.213 0h-204.558c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h173.573l-143.362 716.8h-183.811c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.733c0.032 0 0.064 0.005 0.096 0.005 0.035 0 0.070-0.005 0.107-0.005h204.664c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-173.573l143.36-716.8h183.813c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Joystick.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Joystick.js
new file mode 100644
index 00000000..370727fc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Joystick.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Joystick
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 179.2c0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2c0 90.12 66.874 164.902 153.6 177.363v232.237c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-232.237c86.726-12.461 153.6-87.243 153.6-177.363zM486.4 307.2c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128z' />
+            <path d='M460.8 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M486.4 716.8c-32.854 0-64.026-9.806-87.768-27.614-25.568-19.176-40.232-46.434-40.232-74.786 0-26.635 12.515-51.789 35.242-70.829 10.837-9.080 26.982-7.656 36.064 3.182 9.080 10.838 7.654 26.984-3.184 36.064-7.72 6.469-16.922 17.197-16.922 31.582 0 27.754 35.17 51.2 76.8 51.2s76.8-23.446 76.8-51.2c0-14.384-9.203-25.114-16.922-31.581-10.837-9.082-12.262-25.227-3.182-36.064 9.080-10.838 25.226-12.262 36.064-3.182 22.725 19.040 35.24 44.194 35.24 70.827 0 28.352-14.664 55.61-40.232 74.786-23.742 17.808-54.914 27.614-87.768 27.614z' />
+            <path d='M912.853 568.606l-312.605-156.304c-12.645-6.322-28.024-1.195-34.346 11.45-6.323 12.645-1.198 28.022 11.448 34.346l312.606 156.302c4.387 2.194 8.666 5.526 12.592 9.573l-383.718 212.058c-16.97 9.379-47.886 9.379-64.859 0l-383.72-212.058c3.926-4.046 8.205-7.379 12.592-9.573l312.605-156.302c12.646-6.323 17.771-21.701 11.448-34.346-6.323-12.646-21.702-17.768-34.346-11.45l-312.606 156.304c-33.613 16.808-59.944 59.413-59.944 96.994v25.6c0 37.571 24.474 80.179 56.926 99.11l372.349 217.203c16.016 9.344 36.571 14.014 57.125 14.014s41.107-4.67 57.123-14.014l372.352-217.203c32.451-18.931 56.925-61.539 56.925-99.11v-25.6c0-37.581-26.331-80.187-59.947-96.994zM890.077 746.086l-372.352 217.203c-16.394 9.563-46.256 9.563-62.651 0l-372.349-217.203c-16.499-9.626-31.525-35.786-31.525-54.886v-19.256l378.005 208.899c16.302 9.010 36.749 13.514 57.195 13.514 20.445 0 40.893-4.504 57.195-13.514l378.005-208.899v19.256c0 19.101-15.026 45.261-31.523 54.886z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump.js
new file mode 100644
index 00000000..e2952c62
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Jump
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 204.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 51.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M486.392 1024.006c-3.166 0.002-6.381-0.59-9.501-1.837-13.126-5.25-19.512-20.149-14.261-33.277l96.131-240.326-141.664-141.664c-7.792-7.79-9.723-19.694-4.797-29.55l135.077-270.152h-155.627l-147.15 98.101c-11.765 7.842-27.659 4.662-35.501-7.101-7.842-11.765-4.664-27.658 7.101-35.501l153.6-102.4c4.205-2.803 9.146-4.299 14.2-4.299h204.8c8.872 0 17.112 4.594 21.776 12.141s5.090 16.971 1.12 24.907l-145.349 290.698 140.554 140.554c7.242 7.24 9.47 18.101 5.667 27.61l-102.4 256c-4.002 10.008-13.616 16.098-23.776 16.098z' />
+            <path d='M281.618 512c-7.568 0-15.062-3.341-20.114-9.742-8.758-11.099-6.861-27.197 4.238-35.955l102.4-80.8c1.803-1.424 3.79-2.597 5.907-3.49l51.2-21.6c13.024-5.498 28.042 0.608 33.538 13.635s-0.61 28.042-13.635 33.538l-48.011 20.254-99.682 78.656c-4.698 3.707-10.291 5.504-15.842 5.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump2.js
new file mode 100644
index 00000000..483adf46
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Jump2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Jump2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6c-14.139 0-25.6 11.461-25.6 25.6v135.758c-100.885-102.966-238.883-161.358-384-161.358-85.99 0-168.158 19.699-244.226 58.555-72.533 37.048-136.798 91.141-185.846 156.426-8.493 11.302-6.213 27.352 5.090 35.843 4.61 3.462 10.005 5.134 15.358 5.134 7.774 0 15.458-3.53 20.486-10.226 92.882-123.629 234.717-194.533 389.138-194.533 134.822 0 262.85 55.717 354.714 153.6h-149.914c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.461-25.6-25.6-25.6z' />
+            <path d='M460.8 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM460.8 614.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Key.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Key.js
new file mode 100644
index 00000000..ca41c621
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Key.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Key
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 0c-141.384 0-256 114.614-256 256 0 54.912 17.298 105.779 46.726 147.469l-551.229 551.23c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l58.698-58.698 84.298 84.299c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-84.299-84.298 40.597-40.597 84.299 84.299c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-84.298-84.298 376.965-376.965c45.842 43.246 107.637 69.765 175.632 69.765 141.384 0 256-114.614 256-256s-114.616-256-256-256zM912.816 400.816c-38.682 38.682-90.114 59.984-144.816 59.984s-106.134-21.302-144.816-59.984c-38.682-38.683-59.984-90.112-59.984-144.816s21.302-106.133 59.984-144.816c38.682-38.682 90.114-59.984 144.816-59.984s106.134 21.302 144.816 59.984c38.682 38.683 59.984 90.112 59.984 144.816s-21.302 106.133-59.984 144.816z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyHole.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyHole.js
new file mode 100644
index 00000000..09e7b18b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyHole.js
@@ -0,0 +1,12 @@
+// Icon: Linear.KeyHole
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024h-460.8c-8.061 0-15.651-3.797-20.486-10.248-4.834-6.45-6.347-14.802-4.085-22.538l147.118-502.986c-89.518-41.602-148.147-132.090-148.147-232.229 0-141.158 114.842-256 256-256 141.16 0 256 114.842 256 256 0 100.146-58.629 190.634-148.15 232.232l147.12 502.981c2.262 7.738 0.75 16.090-4.085 22.539-4.834 6.451-12.424 10.248-20.485 10.248zM315.76 972.8h392.478l-144.006-492.333c-3.816-13.043 3.227-26.795 16.038-31.323 81.662-28.866 136.53-106.483 136.53-193.144 0-112.928-91.874-204.8-204.8-204.8-112.928 0-204.8 91.872-204.8 204.8 0 86.656 54.866 164.274 136.526 193.142 12.811 4.53 19.853 18.28 16.037 31.323l-144.003 492.334z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Keyboard.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Keyboard.js
new file mode 100644
index 00000000..0721975a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Keyboard.js
@@ -0,0 +1,33 @@
+// Icon: Linear.Keyboard
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 819.2h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v409.6c0 42.349-34.451 76.8-76.8 76.8zM76.8 307.2c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M179.2 409.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 409.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 512h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 716.8h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 614.4h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h128v-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 614.4h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M307.2 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 384c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 486.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 588.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardDown.js
new file mode 100644
index 00000000..ff993873
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardDown.js
@@ -0,0 +1,34 @@
+// Icon: Linear.KeyboardDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 665.6h-307.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h307.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-819.2c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-307.2c-42.347 0-76.8-34.451-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v409.6c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M179.2 256h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 256h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 358.4h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 460.8h-153.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h128v-76.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 460.8h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 563.2h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M384 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 256c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M691.2 256c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 358.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 358.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M537.6 358.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 358.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 358.4c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M384 460.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 460.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 460.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M658.101 801.099c-9.997-9.997-26.206-9.997-36.203 0l-109.898 109.898v-270.997c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v270.997l-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardUp.js
new file mode 100644
index 00000000..56d0cd56
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/KeyboardUp.js
@@ -0,0 +1,34 @@
+// Icon: Linear.KeyboardUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 972.8h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h307.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-307.2c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-307.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h307.2c42.349 0 76.8 34.453 76.8 76.8v409.6c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M179.2 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M230.4 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 768h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h128v-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 768h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 870.4h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 870.4h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 870.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 563.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M384 563.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 563.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 563.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M691.2 563.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.346-7.502 18.098-7.502 6.736 0 13.344 2.736 18.096 7.502 4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 665.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 665.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096 0-6.752 2.736-13.344 7.502-18.098 4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M537.6 665.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.346 7.504 18.098 0 6.736-2.736 13.344-7.504 18.096-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 665.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.766-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 665.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.766-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M384 768c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M486.4 768c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 768c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M658.101 237.899l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203s26.206 9.998 36.203 0l109.899-109.899v270.997c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-270.997l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Knife.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Knife.js
new file mode 100644
index 00000000..f2eca91b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Knife.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Knife
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 870.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.768 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 870.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098 0 6.752-2.736 13.344-7.504 18.096-4.752 4.768-11.344 7.504-18.096 7.504z' />
+            <path d='M844.8 563.2h-393.056l81.482-174.738c65.622-140.726 4.518-308.603-136.206-374.227-3.203-1.494-6.558-2.267-9.882-2.389-5.816-0.211-11.534 1.581-16.182 5.018-1.328 0.982-2.568 2.098-3.698 3.341-1.13 1.242-2.149 2.611-3.035 4.098-0.443 0.742-0.853 1.515-1.226 2.317l-346.208 742.448c-0.062 0.134-0.106 0.274-0.166 0.408-10.656 22.914-16.622 48.434-16.622 75.325 0 98.811 80.389 179.2 179.2 179.2h665.6c98.811 0 179.2-80.389 179.2-179.2v-102.4c0-98.811-80.389-179.2-179.2-179.2zM844.8 614.4c61.877 0 113.632 44.134 125.456 102.574-32.35-31.754-76.651-51.374-125.456-51.374h-440.805l23.875-51.2h416.93zM486.824 366.826l-139.323 298.774h-168.301c-22.165 0-43.397 4.056-63.006 11.446l281.784-604.291c98.861 60.197 138.878 186.773 88.846 294.070zM844.8 972.8h-665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128h184.477c0.038 0 0.078 0.006 0.117 0.006 0.059 0 0.118-0.006 0.176-0.006h480.83c70.579 0 128 57.421 128 128s-57.421 128-128 128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Label.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Label.js
new file mode 100644
index 00000000..9981a460
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Label.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Label
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 870.4h-563.2c-42.347 0-76.8-34.451-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h563.2c36.024 0 80.581 20.869 103.643 48.544l190.445 228.534c26.038 31.245 26.038 80.198-0.002 111.443l-190.442 228.534c-23.064 27.675-67.621 48.544-103.645 48.544zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h563.2c20.52 0 51.173-14.358 64.312-30.122l190.443-228.534c10.187-12.222 10.187-33.666 0.002-45.888l-190.446-228.534c-13.138-15.765-43.79-30.122-64.31-30.122h-563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lamp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lamp.js
new file mode 100644
index 00000000..fa659744
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lamp.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Lamp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 1024h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M512 0c-169.39 0-307.2 137.81-307.2 307.2 0 108.246 51.898 195.986 54.106 199.667 13.629 22.715 33 62.859 42.301 87.662l40.845 108.918c6.192 16.51 18.083 31.379 32.843 42.68-10.315 13.077-16.494 29.562-16.494 47.472 0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2 0 42.349 34.453 76.8 76.8 76.8h153.6c42.349 0 76.8-34.451 76.8-76.8 0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.546 19.618-51.2 0-17.91-6.179-34.397-16.498-47.474 14.76-11.302 26.648-26.171 32.835-42.686l40.818-108.914c9.294-24.8 28.664-64.936 42.299-87.645 2.211-3.683 54.146-91.432 54.146-199.682 0-169.39-137.81-307.2-307.2-307.2zM588.8 921.6h-153.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6zM614.4 793.6c0 14.115-11.485 25.6-25.6 25.6h-153.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6zM721.158 480.526c-15.197 25.31-35.987 68.392-46.346 96.034l-40.818 108.914c-6.144 16.395-27.686 31.326-45.195 31.326h-153.6c-17.512 0-39.059-14.933-45.206-31.33l-40.845-108.918c-10.365-27.635-31.15-70.714-46.338-96.027-0.47-0.779-46.811-79.106-46.811-173.325 0-141.158 114.842-256 256-256 141.16 0 256 114.842 256 256 0 93.65-46.394 172.576-46.842 173.326z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lampshade.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lampshade.js
new file mode 100644
index 00000000..dc42fb9d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lampshade.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Lampshade
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M869.416 428.166l-101.666-355.829c-3.902-34.149-52.634-48.309-95.31-56.843-49.955-9.992-116.026-15.494-186.040-15.494s-136.085 5.502-186.040 15.494c-42.677 8.534-91.406 22.696-95.309 56.843l-101.666 355.829c-0.654 2.288-0.986 4.654-0.986 7.034 0 28.79 33.109 39.973 45.573 44.182 19.534 6.598 46.915 12.44 81.379 17.363 51.474 7.354 115.488 12.237 185.011 14.234-3.077 8.299-4.763 17.266-4.763 26.621 0 14.394 3.987 27.869 10.904 39.395-42.408 20.2-62.104 58.686-62.104 88.605 0 47.768 16.85 85.254 31.717 118.33 10.454 23.258 19.483 43.346 19.483 60.87 0 15.542-31.218 34.384-51.875 46.851-27.112 16.363-50.525 30.494-50.525 55.549 0 56.347 107.166 76.8 179.2 76.8s179.2-20.453 179.2-76.8c0-25.054-23.414-39.186-50.525-55.549-20.656-12.467-51.875-31.309-51.875-46.851 0-17.525 9.030-37.613 19.485-60.87 14.866-33.075 31.715-70.562 31.715-118.33 0-29.918-19.696-68.405-62.104-88.605 6.917-11.526 10.904-25.002 10.904-39.395 0-9.355-1.686-18.322-4.763-26.621 57.978-1.666 112.125-5.338 158.363-10.778v165.398c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-172.725c23.136-4.027 42.186-8.547 56.827-13.493 12.464-4.21 45.573-15.392 45.573-44.182 0-2.379-0.331-4.746-0.984-7.034zM535.984 762.938c-12.334 27.44-23.984 53.36-23.984 81.862 0 44.442 44.285 71.17 76.619 90.686 6.144 3.707 14.254 8.605 20.214 12.739-16.16 9.907-59.056 24.574-122.434 24.574-63.379 0-106.272-14.667-122.432-24.574 5.958-4.134 14.069-9.032 20.213-12.739 32.334-19.517 76.619-46.245 76.619-90.686 0-28.502-11.65-54.422-23.984-81.862-13.381-29.768-27.216-60.547-27.216-97.338 0-10.816 13.034-51.2 76.8-51.2s76.8 40.384 76.8 51.2c0 36.79-13.835 67.57-27.216 97.338zM512 537.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6zM715.986 448.733c-63.76 7.781-145.294 12.067-229.586 12.067s-165.826-4.286-229.586-12.067c-61.466-7.502-88.826-16.034-100.117-20.787l98.317-344.112c0.027-0.091 0.051-0.182 0.077-0.274 4.845-3.307 22.053-12.557 71.483-20.818 44.538-7.443 101.298-11.542 159.826-11.542 58.526 0 115.288 4.099 159.826 11.541 49.43 8.261 66.638 17.509 71.483 20.818 0.026 0.091 0.051 0.182 0.077 0.274l98.318 344.112c-11.293 4.755-38.653 13.286-100.118 20.789z' />
+            <path d='M768 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan.js
new file mode 100644
index 00000000..61af117b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Lan
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512h-435.2v-102.4h76.8c14.139 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.462-25.6 25.6v204.8c0 14.138 11.462 25.6 25.6 25.6h76.8v102.4h-435.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h179.2v102.4h-76.8c-14.138 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6h-76.8v-102.4h460.8v102.4h-76.8c-14.139 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.461-25.6-25.6-25.6h-76.8v-102.4h179.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM409.6 204.8h153.6v153.6h-153.6v-153.6zM307.2 870.4h-153.6v-153.6h153.6v153.6zM819.2 870.4h-153.6v-153.6h153.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan2.js
new file mode 100644
index 00000000..d70cb98b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lan2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Lan2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 512h-230.4v-281.6c0-42.347-34.453-76.8-76.8-76.8h-128v-128c0-14.138-11.461-25.6-25.6-25.6h-512c-14.138 0-25.6 11.462-25.6 25.6v358.4c0 14.138 11.462 25.6 25.6 25.6h173.994c-9.48 25.41-29.424 49.555-38.496 58.698-7.322 7.322-9.512 18.333-5.549 27.899 3.962 9.566 13.298 15.803 23.651 15.803h204.8c10.354 0 19.69-6.237 23.651-15.803 3.963-9.566 1.771-20.578-5.549-27.899-8.499-8.499-28.811-33.002-38.451-58.698h173.949c14.139 0 25.6-11.462 25.6-25.6v-179.2h128c14.115 0 25.6 11.485 25.6 25.6v281.6h-230.4c-14.138 0-25.6 11.461-25.6 25.6v358.4c0 14.139 11.462 25.6 25.6 25.6h173.994c-9.482 25.41-29.424 49.557-38.496 58.699-7.322 7.322-9.512 18.333-5.55 27.899s13.298 15.802 23.653 15.802h204.8c10.355 0 19.69-6.237 23.651-15.803s1.771-20.576-5.55-27.899c-8.499-8.499-28.811-33.003-38.45-58.699h173.949c14.139 0 25.6-11.461 25.6-25.6v-358.398c0-14.139-11.461-25.6-25.6-25.6zM512 51.2v204.8h-460.8v-204.8h460.8zM331.973 460.8h-100.747c9.035-14.798 17.442-32.366 21.754-51.2h57.238c4.314 18.834 12.72 36.402 21.755 51.2zM51.2 358.4v-51.2h460.8v51.2h-460.8zM972.8 563.2v204.8h-460.8v-204.8h460.8zM792.773 972.8h-100.747c9.035-14.798 17.442-32.366 21.755-51.2h57.237c4.314 18.834 12.72 36.402 21.755 51.2zM512 870.4v-51.2h460.8v51.2h-460.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Landscape.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Landscape.js
new file mode 100644
index 00000000..957bc9b8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Landscape.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Landscape
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.837 674.539l-120.282-140.326c-13.469-15.714-32.674-24.968-52.69-25.392-20.018-0.402-39.594 8.013-53.717 23.142l-104.080 111.514c-12.312-18.602-28.059-34.818-46.651-47.861-30.226-21.206-65.781-32.416-102.818-32.416-39.402 0-76.792 12.547-108.125 36.285-19.067 14.446-35.086 32.723-47.030 53.326l-99.483-118.136c-13.435-15.957-32.581-25.261-52.523-25.528-19.946-0.258-39.33 8.523-53.187 24.112l-170.784 192.133c-9.394 10.566-8.442 26.749 2.126 36.142 10.566 9.39 26.749 8.438 36.141-2.126l170.784-192.133c4.034-4.538 9.035-7.035 14.235-6.931 5.144 0.069 10.133 2.664 14.045 7.309l376.621 447.237c5.064 6.013 12.302 9.11 19.594 9.109 5.822 0 11.677-1.974 16.478-6.019 10.814-9.106 12.198-25.256 3.091-36.070l-103.565-122.981 141.085-151.163c1.998-1.586 3.72-3.448 5.139-5.506l126.339-135.365c4.258-4.56 9.685-7.032 15.205-6.888 5.549 0.117 10.84 2.789 14.899 7.525l120.28 140.326c9.202 10.733 25.362 11.978 36.099 2.776 10.731-9.198 11.973-25.358 2.773-36.094zM418.446 695.565c19.043-48.286 66.563-81.165 119.154-81.165 47.464 0 91.117 26.797 113.099 68.046l-127.901 137.034-104.352-123.915z' />
+            <path d='M537.6 512c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M665.6 563.2c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-51.2 51.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M409.6 563.2c-6.552 0-13.102-2.499-18.102-7.499l-51.2-51.2c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l51.2 51.2c9.997 9.997 9.997 26.206 0 36.203-5 5.002-11.55 7.501-18.102 7.501z' />
+            <path d='M742.040 102.611c-3.298 0-6.613-0.648-9.76-2.005-9.555-4.118-15.685-13.28-15.485-23.67-0.094-2.437-0.995-9.43-4.194-15.238-2.858-5.192-7.635-10.498-21.402-10.498-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c31.933 0 52.336 14.749 64.024 33.15 22.664-15.89 55.194-33.15 89.576-33.15 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-33.026 0-72.074 31.571-84.333 43.736-4.986 4.947-11.667 7.675-18.427 7.675z' />
+            <path d='M460.8 102.4c-2.901 0-5.786 0.133-8.654 0.373-21.027-59.79-78.056-102.773-144.946-102.773-49.506 0-95.808 24.253-124.397 63.546-16.95-8.034-35.64-12.346-54.803-12.346-70.579 0-128 57.421-128 128s57.421 128 128 128h332.8c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4zM460.8 256h-332.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c22.024 0 43.021 9.48 57.608 26.010 9.354 10.6 25.533 11.611 36.133 2.258 10.602-9.355 11.611-25.533 2.256-36.134-0.080-0.091-0.165-0.179-0.245-0.27 19.022-26.61 50.15-43.062 83.448-43.062 56.464 0 102.4 45.936 102.4 102.4 0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2z' />
+            <path d='M895.64 205.011c-3.298 0-6.613-0.648-9.76-2.005-9.555-4.118-15.685-13.28-15.485-23.67-0.094-2.437-0.995-9.43-4.194-15.238-2.858-5.192-7.635-10.498-21.402-10.498-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c31.933 0 52.336 14.749 64.024 33.15 22.664-15.89 55.194-33.15 89.576-33.15 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-33.026 0-72.074 31.571-84.333 43.736-4.986 4.947-11.667 7.675-18.427 7.675z' />
+            <path d='M742.040 358.611c-3.298 0-6.613-0.648-9.76-2.005-9.555-4.118-15.685-13.28-15.485-23.67-0.094-2.437-0.995-9.43-4.194-15.238-2.858-5.192-7.635-10.498-21.402-10.498-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c31.933 0 52.336 14.749 64.024 33.15 22.664-15.89 55.194-33.15 89.576-33.15 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-33.026 0-72.074 31.571-84.333 43.736-4.986 4.947-11.667 7.675-18.427 7.675z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laptop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laptop.js
new file mode 100644
index 00000000..4ae0fe3f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laptop.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Laptop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 716.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-409.6c0-42.347-34.451-76.8-76.8-76.8h-665.6c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.349 34.453 76.8 76.8 76.8zM153.6 230.4c0-14.115 11.485-25.6 25.6-25.6h665.6c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-409.6z' />
+            <path d='M998.4 768h-972.8c-14.138 0-25.6 11.461-25.6 25.6v51.2c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-51.2c0-14.139-11.461-25.6-25.6-25.6zM947.2 870.4h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-25.6h921.6v25.6c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LaptopPhone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LaptopPhone.js
new file mode 100644
index 00000000..2bd1cd18
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LaptopPhone.js
@@ -0,0 +1,15 @@
+// Icon: Linear.LaptopPhone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 716.8h-409.6c-42.347 0-76.8-34.451-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v51.2c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 921.6h-512c-42.347 0-76.8-34.453-76.8-76.8v-51.2c0-14.139 11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-537.6v25.6c0 14.115 11.485 25.6 25.6 25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 921.6h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h204.8c42.347 0 76.8 34.453 76.8 76.8v409.6c0 42.347-34.453 76.8-76.8 76.8zM742.4 409.6c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-204.8z' />
+            <path d='M844.8 819.2c-6.736 0-13.328-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.346 7.504 18.098 0 6.736-2.736 13.344-7.504 18.096-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LastCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LastCircle.js
new file mode 100644
index 00000000..15cee3ca
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LastCircle.js
@@ -0,0 +1,15 @@
+// Icon: Linear.LastCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936s50.595-252.067 142.464-343.936 214.014-142.464 343.936-142.464 252.069 50.595 343.938 142.464 142.462 214.013 142.462 343.936c0 129.922-50.594 252.067-142.462 343.936-91.869 91.87-214.016 142.464-343.938 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M486.397 768.002c-2.701 0-5.43-0.429-8.091-1.315-10.454-3.485-17.506-13.267-17.506-24.286v-409.6c0-11.019 7.051-20.802 17.504-24.286 10.451-3.488 21.963 0.11 28.574 8.926l153.6 204.8c6.829 9.101 6.829 21.618 0 30.718l-153.6 204.798c-4.926 6.574-12.578 10.245-20.482 10.245zM512 409.6v256l96-128-96-128z' />
+            <path d='M691.2 768c-14.139 0-25.6-11.461-25.6-25.6v-409.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M281.597 768.002c-2.701 0-5.43-0.429-8.091-1.315-10.454-3.485-17.506-13.267-17.506-24.286v-409.6c0-11.019 7.051-20.802 17.504-24.286 10.453-3.488 21.965 0.11 28.574 8.926l153.6 204.8c6.827 9.101 6.827 21.618 0 30.718l-153.6 204.798c-4.926 6.574-12.578 10.245-20.482 10.245zM307.2 409.6v256l96-128-96-128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Launch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Launch.js
new file mode 100644
index 00000000..9eab60f9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Launch.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Launch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 0h-256c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h196.27l-572.739 570.666c-10.016 9.979-10.045 26.187-0.067 36.203 5.002 5.021 11.568 7.531 18.134 7.531 6.536 0 13.074-2.488 18.069-7.466l570.733-568.664v192.13c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M844.8 1024h-768c-42.347 0-76.8-34.451-76.8-76.8v-768c0-42.347 34.453-76.8 76.8-76.8h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v768c0 14.115 11.485 25.6 25.6 25.6h768c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v512c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laundry.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laundry.js
new file mode 100644
index 00000000..06a894ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Laundry.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Laundry
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M486.4 921.6c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 409.6c-127.043 0-230.4 103.358-230.4 230.4s103.357 230.4 230.4 230.4c127.042 0 230.4-103.358 230.4-230.4s-103.358-230.4-230.4-230.4z' />
+            <path d='M486.4 819.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c70.579 0 128-57.421 128-128 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 98.811-80.389 179.2-179.2 179.2z' />
+            <path d='M793.6 51.2h-614.4c-70.579 0-128 57.421-128 128v768c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-768c0-70.579-57.421-128-128-128zM179.2 102.4h614.4c42.349 0 76.8 34.453 76.8 76.8v76.8h-768v-76.8c0-42.347 34.453-76.8 76.8-76.8zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-640h768v640z' />
+            <path d='M281.6 204.8h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Layers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Layers.js
new file mode 100644
index 00000000..fdd1688b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Layers.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Layers
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 614.4c-3.379 0-6.758-0.669-9.934-2.006l-486.4-204.8c-9.493-3.997-15.666-13.293-15.666-23.594s6.173-19.597 15.666-23.594l486.4-204.8c6.354-2.675 13.517-2.675 19.869 0l486.4 204.8c9.493 3.997 15.666 13.293 15.666 23.594s-6.173 19.597-15.666 23.594l-486.4 204.8c-3.176 1.338-6.555 2.006-9.934 2.006zM91.57 384l420.43 177.024 420.43-177.024-420.43-177.024-420.43 177.024z' />
+            <path d='M512 768c-3.379 0-6.758-0.669-9.934-2.006l-486.4-204.8c-13.030-5.486-19.146-20.498-13.659-33.528s20.498-19.146 33.528-13.659l476.466 200.618 476.466-200.618c13.029-5.483 28.042 0.63 33.528 13.659 5.488 13.032-0.63 28.042-13.659 33.528l-486.4 204.8c-3.176 1.338-6.555 2.006-9.934 2.006z' />
+            <path d='M512 921.6c-3.379 0-6.758-0.669-9.934-2.006l-486.4-204.8c-13.030-5.486-19.146-20.498-13.659-33.528s20.498-19.144 33.528-13.659l476.466 200.618 476.466-200.618c13.029-5.483 28.042 0.63 33.528 13.659 5.488 13.032-0.63 28.042-13.659 33.528l-486.4 204.8c-3.176 1.338-6.555 2.006-9.934 2.006z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LayersCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LayersCrossed.js
new file mode 100644
index 00000000..5ad6473e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LayersCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.LayersCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M988.466 667.606l-476.466 200.618-284.782-119.909 76.139-65.987 198.709 83.667c3.176 1.338 6.555 2.006 9.934 2.006s6.758-0.669 9.934-2.006l486.4-204.8c13.030-5.486 19.147-20.498 13.659-33.528-5.486-13.030-20.499-19.142-33.528-13.659l-476.466 200.616-165.502-69.686 76.139-65.987 79.429 33.443c3.176 1.338 6.555 2.006 9.934 2.006s6.758-0.669 9.934-2.006l486.4-204.8c9.493-3.997 15.666-13.293 15.666-23.594s-6.173-19.597-15.666-23.594l-224.475-94.515 77.706-67.346c10.685-9.259 11.838-25.427 2.579-36.112-9.261-10.686-25.429-11.84-36.11-2.579l-96.787 83.883-209.312-88.131c-6.352-2.675-13.515-2.675-19.869 0l-486.4 204.8c-9.493 3.997-15.666 13.293-15.666 23.594s6.173 19.597 15.666 23.594l354.358 149.203-76.139 65.987-258.35-108.778c-13.032-5.486-28.042 0.629-33.528 13.659s0.629 28.042 13.659 33.528l235.077 98.979-76.139 65.987-139.069-58.555c-13.032-5.485-28.042 0.629-33.528 13.659s0.629 28.042 13.659 33.528l115.797 48.757-71.429 61.904c-10.685 9.259-11.838 25.427-2.579 36.11 5.062 5.845 12.189 8.837 19.357 8.837 5.942 0 11.912-2.058 16.755-6.254l90.51-78.442 317.989 133.891c3.176 1.338 6.555 2.006 9.934 2.006s6.758-0.669 9.934-2.006l486.4-204.8c13.030-5.486 19.147-20.498 13.659-33.528-5.486-13.032-20.499-19.144-33.528-13.661zM932.43 384l-420.43 177.024-46.222-19.462 274.941-238.282 191.712 80.72zM91.57 384l420.43-177.024 176.104 74.15-274.939 238.282-321.595-135.408z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Leaf.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Leaf.js
new file mode 100644
index 00000000..309139f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Leaf.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Leaf
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1017.987 9.117c-4.862-5.779-12.030-9.115-19.582-9.117l-26.114-0.008c-258.027-0.091-461.854-0.163-611.93 35.728-80.627 19.283-142.987 48.411-190.643 89.051-51.387 43.819-86.445 101.243-107.178 175.549-13.771 49.363-20.213 138.478 6.96 227.178 10.043 32.787 25.696 63.682 46.584 92.093-62.246 97.517-116.085 226.014-116.085 378.81 0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-235.789 139.654-410.651 222.901-493.899 59.741-59.739 127.301-110.166 195.378-145.824 63.373-33.195 123.933-51.477 170.522-51.477 14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-55.506 0-122.686 19.822-194.278 57.323-72.603 38.030-144.467 91.621-207.822 154.976-26.726 26.726-58.899 62.346-90.824 105.994-12.403-19.496-21.998-40.173-28.619-61.79-25.597-83.555-16.19-164.038-6.597-198.422 73.206-262.397 351.32-263.072 855.925-262.89-60.16 321.93-172.331 530.309-333.613 619.571-149.582 82.786-298.008 37.613-354.877 14.346-12.005-4.912-24.051-10.949-35.802-17.944-12.147-7.227-27.858-3.243-35.091 8.904-7.232 12.149-3.245 27.859 8.902 35.093 13.923 8.288 28.256 15.464 42.602 21.334 31.843 13.027 83.144 29.706 146.704 35.184 14.034 1.21 27.928 1.814 41.672 1.814 75.189 0 145.893-18.077 210.682-53.934 82.37-45.587 153.675-119.736 211.938-220.384 68.315-118.018 119.699-274.534 152.723-465.205 1.29-7.443-0.774-15.074-5.637-20.853z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library.js
new file mode 100644
index 00000000..a7d81bd7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Library
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 0h-102.4c-42.347 0-76.8 34.453-76.8 76.8v30.003c-8.013-2.842-16.626-4.403-25.6-4.403h-256c-42.347 0-76.8 34.453-76.8 76.8v768c0 42.349 34.453 76.8 76.8 76.8h256c19.654 0 37.602-7.43 51.2-19.619 13.598 12.187 31.546 19.619 51.2 19.619h102.4c42.349 0 76.8-34.451 76.8-76.8v-870.4c0-42.347-34.451-76.8-76.8-76.8zM332.8 972.8h-256c-14.115 0-25.6-11.485-25.6-25.6v-768c0-14.115 11.485-25.6 25.6-25.6h256c14.115 0 25.6 11.485 25.6 25.6v768c0 14.115-11.485 25.6-25.6 25.6zM563.2 947.2c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-870.4c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v870.4z' />
+            <path d='M281.6 307.2h-146.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h146.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M952.856 1004.702l-152.456 18.717c-42.034 5.165-80.426-24.834-85.586-66.869l-99.837-813.090c-5.163-42.032 24.834-80.426 66.867-85.587l152.454-18.72c42.034-5.162 80.427 24.835 85.586 66.867l99.835 813.094c5.165 42.034-24.83 80.427-66.864 85.587zM688.085 108.693c-14.010 1.72-24.008 14.518-22.288 28.528l99.834 813.094c1.72 14.011 14.518 24.011 28.528 22.29l152.456-18.718c14.010-1.718 24.010-14.517 22.291-28.528l-99.835-813.096c-1.72-14.010-14.52-24.010-28.53-22.29l-152.456 18.72z' />
+            <path d='M808.442 248.667l-50.821 6.24c-14.034 1.723-26.806-8.258-28.53-22.29-1.722-14.032 8.256-26.805 22.291-28.528l50.819-6.24c14.034-1.723 26.806 8.256 28.53 22.29s-8.254 26.805-22.29 28.528z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library2.js
new file mode 100644
index 00000000..31de8f48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Library2.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Library2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 870.4h-25.6v-460.8h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v460.8h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM204.8 870.4h-51.2v-460.8h51.2v460.8z' />
+            <path d='M588.8 870.4h-25.6v-460.8h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-204.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v460.8h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM512 870.4h-51.2v-460.8h51.2v460.8z' />
+            <path d='M896 870.4h-25.6v-460.8h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h25.6v460.8h-25.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM819.2 870.4h-51.2v-460.8h51.2v460.8z' />
+            <path d='M947.2 1024h-921.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 307.2h-819.2c-11.421 0-21.459-7.565-24.608-18.542s1.355-22.714 11.040-28.766l409.6-256c8.301-5.189 18.834-5.189 27.136 0l409.6 256c9.685 6.053 14.187 17.789 11.038 28.766-3.147 10.978-13.186 18.542-24.606 18.542zM166.062 256h640.675l-320.338-200.211-320.338 200.211z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License.js
new file mode 100644
index 00000000..2784cb52
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License.js
@@ -0,0 +1,13 @@
+// Icon: Linear.License
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM179.2 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-665.6z' />
+            <path d='M816.277 283.843l-41.646-30.258-15.909-48.957h-51.475l-41.646-30.258-41.645 30.258h-51.475l-15.909 48.957-41.646 30.258 15.909 48.957-15.909 48.957 41.646 30.258 6.752 20.776c-0.077 0.794-0.123 1.597-0.123 2.41v409.6c0 10.355 6.237 19.69 15.803 23.651 9.568 3.965 20.578 1.77 27.899-5.55l58.698-58.698 58.699 58.699c4.898 4.899 11.443 7.501 18.107 7.499 3.298 0 6.624-0.637 9.79-1.949 9.566-3.963 15.803-13.298 15.803-23.653v-409.6c0-0.813-0.046-1.616-0.122-2.41l6.752-20.776 41.646-30.258-15.91-48.957 15.91-48.957zM575.114 303.4l25.010-18.17 9.554-29.4h30.912l25.011-18.173 25.011 18.171h30.912l9.554 29.4 25.010 18.17-9.554 29.402 9.554 29.4-25.010 18.17-9.554 29.4h-30.912l-25.011 18.173-25.011-18.171h-30.912l-9.554-29.4-25.010-18.17 9.554-29.402-9.554-29.4zM683.701 749.899c-9.997-9.997-26.206-9.997-36.203 0l-33.098 33.098v-322.026h9.555l41.645 30.258 41.645-30.258h9.555v322.026l-33.099-33.098z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License2.js
new file mode 100644
index 00000000..ce968cad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/License2.js
@@ -0,0 +1,18 @@
+// Icon: Linear.License2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v665.6c0 42.349-34.451 76.8-76.8 76.8zM76.8 153.6c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-665.6c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M486.4 307.2h-307.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 460.8h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 563.2h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 768h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M918.677 335.043l-41.646-30.258-15.909-48.957h-51.475l-41.646-30.258-41.645 30.258h-51.475l-15.909 48.957-41.646 30.258 15.909 48.957-15.909 48.957 41.646 30.259 6.752 20.774c-0.077 0.794-0.123 1.597-0.123 2.41v256c0 10.355 6.237 19.69 15.803 23.651 9.568 3.965 20.578 1.77 27.899-5.55l58.698-58.698 58.699 58.699c4.898 4.899 11.443 7.501 18.107 7.499 3.298 0 6.624-0.637 9.79-1.949 9.566-3.963 15.803-13.298 15.803-23.653v-256c0-0.813-0.046-1.616-0.122-2.41l6.752-20.774 41.646-30.259-15.91-48.957 15.91-48.957zM677.514 354.6l25.010-18.17 9.554-29.4h30.912l25.011-18.173 25.011 18.171h30.912l9.554 29.4 25.010 18.17-9.554 29.402 9.554 29.4-25.010 18.171-9.554 29.4h-30.912l-25.011 18.173-25.011-18.171h-30.912l-9.554-29.4-25.010-18.171 9.554-29.402-9.554-29.4zM786.101 647.499c-9.997-9.997-26.206-9.997-36.203 0l-33.098 33.098v-168.426h9.555l41.645 30.258 41.645-30.256h9.555v168.426l-33.099-33.099z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lifebuoy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lifebuoy.js
new file mode 100644
index 00000000..7167903a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lifebuoy.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Lifebuoy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962c-96.704 96.704-149.962 225.278-149.962 362.038s53.258 265.334 149.962 362.038c96.704 96.704 225.278 149.962 362.038 149.962s265.334-53.258 362.038-149.962c96.704-96.704 149.962-225.278 149.962-362.038s-53.258-265.334-149.962-362.038zM512 768c-141.158 0-256-114.84-256-256 0-141.158 114.842-256 256-256 141.16 0 256 114.842 256 256 0 141.16-114.84 256-256 256zM51.2 512c0-17.306 0.992-34.384 2.859-51.2h155.032c-2.806 16.658-4.291 33.757-4.291 51.2 0 17.445 1.485 34.549 4.291 51.208l-155.032-0.008c-1.867-16.818-2.859-33.894-2.859-51.2zM814.909 460.8h155.032c1.867 16.816 2.859 33.894 2.859 51.2s-0.992 34.381-2.859 51.197h-155.030c2.805-16.656 4.29-33.755 4.29-51.197 0-17.443-1.485-34.542-4.291-51.2zM961.315 409.6h-159.688c-30.902-87.149-100.082-156.326-187.23-187.23l0.006-159.685c172.021 39.187 307.728 174.896 346.912 346.915zM563.205 54.061l-0.006 155.030c-16.656-2.808-33.757-4.291-51.198-4.291-17.443 0-34.542 1.483-51.2 4.291v-155.032c16.816-1.867 33.894-2.859 51.2-2.859 17.307 0 34.387 0.992 51.205 2.861zM409.6 62.685v159.686c-87.149 30.904-156.325 100.080-187.229 187.229h-159.686c39.184-172.021 174.894-307.731 346.915-346.915zM62.685 614.4l159.69 0.008c30.904 87.146 100.080 156.318 187.226 187.221v159.688c-172.021-39.187-307.731-174.896-346.915-346.917zM460.8 969.941v-155.032c16.658 2.806 33.757 4.291 51.2 4.291 17.445 0 34.547-1.485 51.206-4.291v155.030c-16.819 1.869-33.898 2.861-51.206 2.861-17.306 0-34.384-0.992-51.2-2.859zM614.406 961.314v-159.688c87.147-30.904 156.322-100.083 187.224-187.23h159.686c-39.184 172.022-174.891 307.731-346.91 346.918z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ligature.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ligature.js
new file mode 100644
index 00000000..0f3d781f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ligature.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Ligature
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 1024c-56.464 0-102.4-45.936-102.4-102.4v-332.861c-21.406 16.104-48.011 25.661-76.8 25.661h-281.6v179.2c0 127.043-103.357 230.4-230.4 230.4s-230.4-103.357-230.4-230.4 103.357-230.4 230.4-230.4h179.2v-256c0-141.158 114.84-256 256-256 123.627 0 227.069 88.096 250.856 204.8h81.944c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v25.6c0 42.347-34.451 76.8-76.8 76.8s-76.8-34.453-76.8-76.8 34.451-76.8 76.8-76.8h19.122c-22.792-88.234-103.067-153.6-198.322-153.6-112.926 0-204.8 91.872-204.8 204.8v256h281.6c42.349 0 76.8-34.451 76.8-76.8 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v435.2c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-25.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v25.6c0 56.464-45.936 102.4-102.4 102.4zM230.4 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2v-179.2h-179.2zM844.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6v-25.6h-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lighter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lighter.js
new file mode 100644
index 00000000..de85ef0c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lighter.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Lighter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 460.8h-35.328l-43.786-88.186c-4.325-8.707-13.208-14.214-22.93-14.214h-205.157c-14.139 0-25.6 11.462-25.6 25.6v76.8h-62.021l-197.41-341.922c-7.069-12.243-22.725-16.443-34.97-9.37l-177.362 102.4c-12.245 7.069-16.44 22.726-9.37 34.97l204.8 354.723c4.742 8.213 13.346 12.805 22.194 12.805 4.342 0 8.746-1.107 12.776-3.434l138.962-80.23v416.458c0 14.139 11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6v-460.8c0-14.139-11.461-25.6-25.6-25.6zM870.4 768h-51.2v-153.6h51.2v153.6zM614.4 409.6h163.686l25.422 51.2h-189.109v-51.2zM318.408 553.832l-179.2-310.382 133.021-76.8 179.2 310.382-133.021 76.8zM512 921.6v-409.6h332.638c0.061 0 0.12 0.006 0.181 0.006 0.035 0 0.074-0.006 0.11-0.006h25.47v51.2h-76.8c-14.139 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.461 25.6 25.6 25.6h76.8v102.4h-358.4z' />
+            <path d='M793.6 307.2c-38.41 0-57.083-18.142-65.984-33.363-16.923-28.938-14.094-72.59 8.654-133.448 15.293-40.915 34.219-74.72 35.018-76.139 4.534-8.061 13.064-13.050 22.312-13.050s17.778 4.989 22.312 13.050c0.798 1.419 19.725 35.224 35.018 76.139 22.749 60.859 25.578 104.51 8.654 133.448-8.901 15.221-27.574 33.363-65.984 33.363zM793.602 135.144c-3.232 7.454-6.502 15.461-9.581 23.73-23.218 62.379-15.211 83.984-12.205 89.12 1.282 2.19 4.685 8.006 21.784 8.006 17.101 0 20.506-5.821 21.787-8.011 3.021-5.165 11.050-26.891-12.418-89.674-3.021-8.085-6.214-15.894-9.368-23.171z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LineSpacing.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LineSpacing.js
new file mode 100644
index 00000000..9674f3eb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LineSpacing.js
@@ -0,0 +1,16 @@
+// Icon: Linear.LineSpacing
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 460.8h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 665.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 870.4h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M263.498 698.699l-58.698 58.696v-439.592l58.698 58.698c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.698-58.698v439.592l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.206 0-36.203s-26.206-9.997-36.205 0.002z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Linearicons.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Linearicons.js
new file mode 100644
index 00000000..f3491e93
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Linearicons.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Linearicons
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 819.2h-25.6c-29.667 0-51.2 32.299-51.2 76.8 0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-51.2c0-14.139-11.461-25.6-25.6-25.6-7.074 0-13.475 2.869-18.109 7.504-10.027-4.806-21.248-7.504-33.091-7.504-42.349 0-76.8 34.451-76.8 76.8 0 8.974 1.563 17.587 4.403 25.6h-55.603c-20.762 0-52.194-14.162-65.949-29.71l-53.472-60.445 471.395-532.882c8.221-9.294 8.459-22.888 1.238-32.41l-153.533-204.714c-4.834-6.446-12.422-10.24-20.48-10.24h-665.6c-8.058 0-15.645 3.794-20.48 10.24l-153.539 204.718c-7.216 9.522-6.974 23.112 1.245 32.403l471.395 532.882-53.472 60.446c-14.802 16.733-40.723 29.71-53.149 29.71h-12.8v-25.6c0-42.349-34.453-76.8-76.8-76.8-14.413 0-27.906 3.998-39.442 10.931-6.52-6.925-14.97-10.931-24.558-10.931-15.762 0-27.496 12.459-35.957 23.314-7.773 9.97-15.813 22.981-22.638 36.634l-5.405 10.81v-45.157c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-153.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v153.6c0 42.347 34.453 76.8 76.8 76.8 14.413 0 27.906-3.998 39.442-10.933 6.518 6.926 14.97 10.933 24.558 10.933 15.762 0 27.496-12.459 35.957-23.314 7.773-9.97 15.813-22.981 22.638-36.634l5.405-10.81v45.157c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.462 25.6 25.6 25.6h38.4c28.467 0 67.803-20.2 91.498-46.986l49.302-55.733 49.301 55.731c23.696 26.787 68.534 46.987 104.299 46.987h128c19.654 0 37.602-7.43 51.2-19.618 13.598 12.187 31.546 19.618 51.2 19.618 42.349 0 76.8-34.451 76.8-76.8 0-12.749 3.099-21.594 5.278-25.6h20.322c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM58.6 280.267l133.4-177.867h640l133.4 177.867-453.4 512.539-453.4-512.539zM793.6 921.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M128 768c6.736 0 13.344-2.736 18.096-7.504 4.768-4.768 7.504-11.36 7.504-18.096s-2.736-13.328-7.504-18.098c-4.752-4.766-11.36-7.502-18.096-7.502s-13.328 2.736-18.096 7.502c-4.768 4.754-7.504 11.362-7.504 18.098s2.736 13.344 7.504 18.096c4.768 4.768 11.36 7.504 18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link.js
new file mode 100644
index 00000000..a0193ed4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Link
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 716.8c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l358.4-358.4c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-358.4 358.4c-4.998 4.998-11.549 7.498-18.101 7.498z' />
+            <path d='M716.8 563.2c-9.488 0-19.046-0.525-28.413-1.562-14.053-1.555-24.186-14.208-22.632-28.259 1.557-14.053 14.214-24.197 28.259-22.63 7.504 0.83 15.17 1.251 22.784 1.251 112.926 0 204.8-91.872 204.8-204.8s-91.872-204.8-204.798-204.8-204.8 91.872-204.8 204.8c0 7.608 0.421 15.274 1.251 22.789 1.554 14.053-8.581 26.704-22.634 28.258-14.059 1.55-26.704-8.581-28.258-22.634-1.035-9.374-1.56-18.934-1.56-28.413 0-141.158 114.84-256 256-256s256 114.842 256 256-114.84 256-256 256z' />
+            <path d='M307.2 972.8c-141.158 0-256-114.84-256-256s114.842-256 256-256c9.486 0 19.046 0.525 28.413 1.562 14.053 1.554 24.184 14.206 22.63 28.259-1.554 14.051-14.197 24.17-28.259 22.63-7.504-0.83-15.17-1.251-22.784-1.251-112.928 0-204.8 91.874-204.8 204.8s91.872 204.8 204.8 204.8 204.8-91.874 204.8-204.8c0-7.6-0.421-15.269-1.251-22.79-1.552-14.053 8.582-26.702 22.635-28.254 14.053-1.539 26.702 8.582 28.254 22.635 1.037 9.381 1.562 18.939 1.562 28.41 0 141.16-114.842 256-256 256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link2.js
new file mode 100644
index 00000000..73990e61
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Link2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Link2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M546.917 665.512c-48.275 0-96.55-18.376-133.301-55.128-9.998-9.997-9.998-26.206 0-36.203s26.205-9.997 36.203 0c53.539 53.541 140.656 53.541 194.197 0l186.166-186.166c53.539-53.539 53.539-140.656 0-194.197-53.541-53.539-140.656-53.538-194.197 0l-157.082 157.083c-9.998 9.997-26.206 9.997-36.203 0-9.998-9.998-9.998-26.206 0-36.205l157.083-157.083c73.502-73.501 193.101-73.501 266.603 0s73.502 193.101 0 266.603l-186.168 186.168c-36.752 36.752-85.027 55.128-133.302 55.128z' />
+            <path d='M239.717 972.712c-48.275 0-96.55-18.376-133.302-55.128-73.501-73.502-73.501-193.101 0-266.603l186.166-186.166c73.501-73.501 193.101-73.501 266.603 0 9.998 9.998 9.998 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0-53.541-53.541-140.656-53.541-194.197 0l-186.165 186.166c-53.539 53.541-53.539 140.656 0 194.197s140.656 53.541 194.195 0l157.083-157.083c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-157.083 157.083c-36.75 36.752-85.026 55.128-133.301 55.128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List.js
new file mode 100644
index 00000000..84b3dc28
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List.js
@@ -0,0 +1,17 @@
+// Icon: Linear.List
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 819.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 307.2h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M76.8 358.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M76.8 614.4c-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.453 76.8-76.8 76.8zM76.8 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M76.8 870.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 768c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List2.js
new file mode 100644
index 00000000..308c2f9b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List2.js
@@ -0,0 +1,17 @@
+// Icon: Linear.List2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 204.8h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 563.2h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 921.6h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M76.8 307.2c-14.138 0-25.6-11.462-25.6-25.6v-179.2h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M128 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6h-76.8v51.2h76.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M128 768h-102.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List3.js
new file mode 100644
index 00000000..bbefbe79
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List3.js
@@ -0,0 +1,17 @@
+// Icon: Linear.List3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M102.4 307.2c-6.552 0-13.102-2.499-18.101-7.499l-76.8-76.8c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l58.698 58.699 212.299-212.298c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-230.4 230.4c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M998.4 256h-614.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M102.4 665.6c-6.552 0-13.102-2.499-18.101-7.499l-76.8-76.8c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l58.698 58.699 212.299-212.299c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-230.4 230.4c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M998.4 614.4h-614.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M102.4 1024c-6.552 0-13.102-2.499-18.101-7.499l-76.8-76.8c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l58.698 58.699 212.299-212.299c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-230.4 230.4c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M998.4 972.8h-614.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List4.js
new file mode 100644
index 00000000..af3ea912
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/List4.js
@@ -0,0 +1,17 @@
+// Icon: Linear.List4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 358.4h-614.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.453 76.8 76.8s-34.451 76.8-76.8 76.8zM332.8 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M947.2 614.4h-614.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM332.8 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M947.2 870.4h-614.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM332.8 768c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M76.8 358.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M76.8 614.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M76.8 870.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM76.8 768c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading.js
new file mode 100644
index 00000000..549c2303
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Loading
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M180.198 512c-0.653 0-1.309-0.026-1.97-0.075-14.098-1.072-24.656-13.371-23.584-27.469 6.475-85.12 43.386-165.339 103.93-225.883s140.765-97.453 225.883-103.93c14.123-1.058 26.397 9.488 27.469 23.584 1.072 14.098-9.486 26.397-23.584 27.469-149.742 11.392-271.253 132.902-282.645 282.645-1.024 13.437-12.243 23.659-25.499 23.659z' />
+            <path d='M512 768c-141.158 0-256-114.84-256-256 0-141.158 114.842-256 256-256 141.16 0 256 114.842 256 256 0 141.16-114.84 256-256 256zM512 307.2c-112.928 0-204.8 91.872-204.8 204.8 0 112.926 91.872 204.8 204.8 204.8 112.926 0 204.8-91.874 204.8-204.8 0-112.928-91.874-204.8-204.8-204.8z' />
+            <path d='M512 972.8c-123.085 0-238.802-47.931-325.835-134.966-87.034-87.032-134.965-202.749-134.965-325.834s47.931-238.802 134.965-325.835 202.75-134.965 325.835-134.965c123.085 0 238.802 47.931 325.834 134.965 87.035 87.034 134.966 202.75 134.966 325.835s-47.931 238.802-134.966 325.834c-87.032 87.035-202.749 134.966-325.834 134.966zM512 102.4c-225.854 0-409.6 183.746-409.6 409.6s183.746 409.6 409.6 409.6 409.6-183.746 409.6-409.6-183.746-409.6-409.6-409.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading2.js
new file mode 100644
index 00000000..f1a0cdaf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Loading2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962-149.962 225.278-149.962 362.038c0 136.76 53.258 265.334 149.962 362.038s225.278 149.962 362.038 149.962c136.76 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038zM512 51.2c254.086 0 460.8 206.714 460.8 460.8 0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2c0-109.408-42.606-212.267-119.968-289.632-77.363-77.362-180.224-119.968-289.632-119.968-100.083 0-203.613 35.675-288.606 98.702 84.306-92.069 205.426-149.902 339.806-149.902zM512 972.8c-254.086 0-460.8-206.714-460.8-460.8 0-201.843 220.184-358.4 409.6-358.4 197.622 0 358.4 160.778 358.4 358.4 0 56.464 45.936 102.4 102.4 102.4 14.83 0 28.92-3.195 41.656-8.891-43.334 209.405-229.2 367.291-451.256 367.291z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading3.js
new file mode 100644
index 00000000..146f27ea
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loading3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Loading3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962-149.962 225.278-149.962 362.038c0 136.76 53.258 265.334 149.962 362.038s225.278 149.962 362.038 149.962c136.76 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038zM102.4 409.6c-11.917 0-23.355 2.067-34.002 5.827 55.333-153.074 234.538-261.827 392.402-261.827 197.622 0 358.4 160.778 358.4 358.4 0 56.464 45.936 102.4 102.4 102.4 11.917 0 23.355-2.067 34.002-5.829-55.333 153.074-234.539 261.829-392.402 261.829-197.622 0-358.4-160.778-358.4-358.4 0-56.464-45.936-102.4-102.4-102.4zM512 51.2c254.086 0 460.8 206.714 460.8 460.8 0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2c0-109.408-42.606-212.267-119.968-289.632-77.363-77.362-180.224-119.968-289.632-119.968-100.083 0-203.613 35.675-288.606 98.702 84.306-92.069 205.426-149.902 339.806-149.902zM512 972.8c-254.086 0-460.8-206.714-460.8-460.8 0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 109.408 42.605 212.269 119.968 289.632s180.224 119.968 289.632 119.968c100.082 0 203.613-35.675 288.605-98.701-84.307 92.069-205.426 149.901-339.805 149.901z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Location.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Location.js
new file mode 100644
index 00000000..794f64b2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Location.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Location
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.202 1024.002c-2.205 0-4.435-0.285-6.642-0.878-11.186-3.003-18.96-13.142-18.96-24.723v-384h-384c-11.581 0-21.72-7.774-24.723-18.96-3.005-11.184 1.874-22.994 11.898-28.795l972.8-563.2c10.037-5.811 22.726-4.147 30.928 4.053 8.202 8.202 9.864 20.891 4.053 30.93l-563.2 972.8c-4.658 8.045-13.186 12.774-22.154 12.774zM120.912 563.2h314.288c14.138 0 25.6 11.461 25.6 25.6v314.288l467.346-807.234-807.234 467.346z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lock.js
new file mode 100644
index 00000000..57e484ce
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lock.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Lock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 409.6h-25.6v-76.8c0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4v76.8h-25.6c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8v-409.6c0-42.347-34.453-76.8-76.8-76.8zM307.2 332.8c0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2v76.8h-358.4v-76.8zM768 896c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v409.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lollipop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lollipop.js
new file mode 100644
index 00000000..4f4ba8aa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lollipop.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Lollipop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-333.774c-171.59-13.115-307.2-156.931-307.2-331.826 0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8c0 174.894-135.61 318.71-307.2 331.826v333.774c0 14.139-11.462 25.6-25.6 25.6zM486.4 256c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2c155.275 0 281.6-126.325 281.6-281.6s-126.325-281.6-281.6-281.6-281.6 126.325-281.6 281.6c0 67.848 24.117 130.166 64.232 178.835-8.442-23.931-13.032-49.653-13.032-76.435 0-127.043 103.357-230.4 230.4-230.4 84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lotus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lotus.js
new file mode 100644
index 00000000..5758c86e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Lotus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Lotus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M952.915 571.106c-7.483-12.96-17.040-24.25-28.2-33.56 36.166-30.264 53.675-79.826 40.688-128.296-12.994-48.498-52.979-82.675-99.467-90.776 16.229-44.31 6.622-96.027-28.883-131.533-35.482-35.48-87.155-45.098-131.448-28.91-2.483-14.32-7.482-28.242-14.965-41.203-16.694-28.912-43.645-49.594-75.894-58.234-48.499-12.994-98.086 4.544-128.346 40.755-30.259-36.211-79.851-53.75-128.349-40.75-48.498 12.995-82.675 52.978-90.776 99.466-44.31-16.227-96.027-6.621-131.53 28.883-35.482 35.482-45.099 87.155-28.91 131.446-14.32 2.483-28.242 7.482-41.203 14.966-28.912 16.693-49.594 43.646-58.234 75.893-8.64 32.248-4.206 65.93 12.486 94.84 7.483 12.96 17.042 24.251 28.2 33.56-36.166 30.264-53.675 79.826-40.686 128.296 12.995 48.499 52.971 82.694 99.461 90.794-16.221 44.306-6.611 96.016 28.89 131.514 23.606 23.608 54.994 36.608 88.378 36.606 14.936 0 29.464-2.621 43.083-7.611 2.488 14.291 7.483 28.182 14.952 41.118 16.693 28.912 43.646 49.594 75.893 58.234 10.768 2.885 21.694 4.312 32.552 4.312 21.656 0 43.032-5.682 62.29-16.8 12.958-7.482 24.246-17.037 33.555-28.194 23.525 28.11 58.704 44.955 95.979 44.954 10.677-0.002 21.53-1.382 32.32-4.274 48.499-12.995 82.677-52.979 90.776-99.467 13.901 5.091 28.52 7.667 43.15 7.667 32.006 0 64.014-12.182 88.379-36.55 23.608-23.606 36.608-54.992 36.608-88.378 0-14.933-2.621-29.459-7.61-43.075 14.29-2.49 28.181-7.491 41.115-14.96 28.912-16.694 49.594-43.645 58.234-75.894 8.64-32.245 4.206-65.925-12.488-94.838zM915.947 422.502c5.101 19.037 2.485 38.922-7.37 55.99-9.331 16.163-24.094 27.968-41.797 33.507h-151.41c-2.608-23.47-8.754-45.888-17.893-66.706l131.088-75.685c38.346-8.6 77.118 14.589 87.381 52.893zM486.4 716.8c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM800.85 223.147c28.029 28.029 28.75 73.182 2.166 102.093l-131.203 75.752c-13.741-18.598-30.205-35.064-48.805-48.803l75.722-131.157c28.912-26.622 74.082-25.923 102.12 2.115zM545.507 115.422c17.066-9.854 36.952-12.47 55.989-7.371 19.037 5.101 34.949 17.31 44.803 34.379 9.331 16.163 12.174 34.848 8.12 52.949l-75.714 131.142c-20.819-9.139-43.234-15.285-66.706-17.893v-151.363c5.533-17.723 17.333-32.506 33.507-41.843zM371.302 108.053c19.037-5.102 38.923-2.483 55.99 7.37 16.163 9.331 27.968 24.093 33.507 41.797v151.41c-23.47 2.606-45.886 8.752-66.704 17.893l-75.688-131.093c-8.597-38.344 14.592-77.114 52.894-87.376zM171.949 223.15c28.027-28.030 73.182-28.75 102.093-2.166l75.752 131.203c-18.6 13.739-35.064 30.205-48.803 48.803l-131.158-75.722c-26.619-28.909-25.923-74.078 2.117-102.118zM56.853 422.504c5.101-19.037 17.31-34.949 34.379-44.803 16.163-9.333 34.85-12.174 52.95-8.12l131.141 75.712c-9.139 20.819-15.286 43.235-17.893 66.707h-151.362c-17.723-5.533-32.506-17.333-41.845-33.507-9.854-17.067-12.472-36.952-7.371-55.989zM56.853 652.699c-5.101-19.038-2.483-38.923 7.37-55.992 9.333-16.163 24.094-27.968 41.798-33.507h151.41c2.606 23.472 8.752 45.888 17.893 66.706l-131.083 75.683c-38.355 8.603-77.123-14.587-87.387-52.89zM171.95 852.053c-28.029-28.030-28.75-73.182-2.166-102.094l131.205-75.75c13.739 18.598 30.205 35.062 48.803 48.803l-75.723 131.158c-28.91 26.618-74.080 25.923-102.118-2.117zM427.293 959.778c-17.067 9.854-36.952 12.472-55.989 7.37-19.037-5.101-34.949-17.309-44.803-34.378-9.333-16.163-12.174-34.848-8.12-52.95l75.714-131.142c20.819 9.139 43.234 15.285 66.706 17.893v151.363c-5.533 17.722-17.333 32.506-33.507 41.845zM601.499 967.147c-19.040 5.101-38.923 2.486-55.992-7.37-16.163-9.331-27.966-24.094-33.506-41.797v-151.41c23.472-2.608 45.888-8.754 66.706-17.893l75.685 131.093c8.597 38.344-14.592 77.114-52.893 87.376zM800.851 852.050c-28.029 28.029-73.182 28.752-102.093 2.166l-75.75-131.205c18.598-13.739 35.062-30.203 48.802-48.802l131.158 75.72c26.619 28.909 25.923 74.080-2.117 102.12zM915.947 652.698c-5.101 19.037-17.309 34.949-34.378 44.803-16.162 9.331-34.846 12.173-52.95 8.12l-131.141-75.712c9.139-20.821 15.285-43.235 17.893-66.707h151.362c17.722 5.533 32.506 17.333 41.845 33.507 9.853 17.066 12.47 36.95 7.37 55.989z' />
+            <path d='M486.4 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loudspeaker.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loudspeaker.js
new file mode 100644
index 00000000..1727f2fa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loudspeaker.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Loudspeaker
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 1024h-563.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h563.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM230.4 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h563.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-563.2z' />
+            <path d='M512 358.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 204.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M512 921.6c-141.158 0-256-114.84-256-256s114.842-256 256-256c141.16 0 256 114.84 256 256s-114.84 256-256 256zM512 460.8c-112.928 0-204.8 91.874-204.8 204.8s91.872 204.8 204.8 204.8c112.926 0 204.8-91.874 204.8-204.8s-91.874-204.8-204.8-204.8z' />
+            <path d='M512 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 614.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loupe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loupe.js
new file mode 100644
index 00000000..33863b99
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Loupe.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Loupe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-409.6c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936v409.6c0 42.349-34.451 76.8-76.8 76.8zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2h409.6c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-239.97-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8s149.294-332.8 332.8-332.8 332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8zM486.4 256c-155.275 0-281.6 126.325-281.6 281.6s126.325 281.6 281.6 281.6 281.6-126.325 281.6-281.6-126.325-281.6-281.6-281.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomIn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomIn.js
new file mode 100644
index 00000000..0ea720c4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomIn.js
@@ -0,0 +1,14 @@
+// Icon: Linear.LoupeZoomIn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-409.6c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936v409.6c0 42.349-34.451 76.8-76.8 76.8zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2h409.6c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-239.97-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8s149.294-332.8 332.8-332.8 332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8zM486.4 256c-155.275 0-281.6 126.325-281.6 281.6s126.325 281.6 281.6 281.6 281.6-126.325 281.6-281.6-126.325-281.6-281.6-281.6z' />
+            <path d='M640 512h-128v-128c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-128c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h128v128c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h128c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomOut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomOut.js
new file mode 100644
index 00000000..86b9f0d9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LoupeZoomOut.js
@@ -0,0 +1,14 @@
+// Icon: Linear.LoupeZoomOut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-409.6c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936v409.6c0 42.349-34.451 76.8-76.8 76.8zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2h409.6c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-239.97-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8s149.294-332.8 332.8-332.8 332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8zM486.4 256c-155.275 0-281.6 126.325-281.6 281.6s126.325 281.6 281.6 281.6 281.6-126.325 281.6-281.6-126.325-281.6-281.6-281.6z' />
+            <path d='M640 563.2h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LuggageWeight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LuggageWeight.js
new file mode 100644
index 00000000..9d642025
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/LuggageWeight.js
@@ -0,0 +1,16 @@
+// Icon: Linear.LuggageWeight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.824 204.803c-8.846 0-17.451-4.59-22.194-12.803-7.069-12.245-2.874-27.901 9.37-34.97l88.682-51.2c12.243-7.067 27.901-2.875 34.97 9.37s2.874 27.901-9.37 34.97l-88.682 51.2c-4.032 2.328-8.434 3.434-12.776 3.434z' />
+            <path d='M947.2 870.4h-76.8v-513.837c86.726-12.461 153.6-87.243 153.6-177.363 0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2c0 90.12 66.874 164.902 153.6 177.363v513.837h-742.4c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8s-34.451-76.8-76.8-76.8zM716.8 179.2c0-70.579 57.421-128 128-128s128 57.421 128 128-57.421 128-128 128-128-57.421-128-128zM947.2 972.8h-870.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+            <path d='M588.8 409.6h-76.8v-25.6c0-42.347-34.453-76.8-76.8-76.8h-102.4c-42.347 0-76.8 34.453-76.8 76.8v25.6h-76.8c-42.347 0-76.8 34.453-76.8 76.8v256c0 42.347 34.453 76.8 76.8 76.8h409.6c42.347 0 76.8-34.453 76.8-76.8v-256c0-42.347-34.453-76.8-76.8-76.8zM307.2 384c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v25.6h-153.6v-25.6zM614.4 742.4c0 14.115-11.485 25.6-25.6 25.6h-409.6c-14.115 0-25.6-11.485-25.6-25.6v-256c0-14.115 11.485-25.6 25.6-25.6h409.6c14.115 0 25.6 11.485 25.6 25.6v256z' />
+            <path d='M230.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 716.8c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mad.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mad.js
new file mode 100644
index 00000000..9256798a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mad.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Mad
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M281.562 768.002c-5.352 0-10.747-1.672-15.355-5.133-11.304-8.491-13.586-24.539-5.094-35.843 25.685-34.197 59.344-62.531 97.338-81.941 39.858-20.362 82.906-30.685 127.95-30.685 45.043 0 88.091 10.323 127.949 30.685 37.992 19.408 71.653 47.742 97.339 81.938 8.491 11.304 6.211 27.352-5.094 35.843-11.307 8.493-27.352 6.21-35.843-5.094-44-58.576-111.194-92.171-184.35-92.171-73.158 0-140.35 33.597-184.35 92.174-5.030 6.696-12.714 10.227-20.488 10.227z' />
+            <path d='M677.562 317.048l25.104-12.55c12.646-6.323 17.773-21.699 11.451-34.346s-21.699-17.774-34.346-11.451l-102.419 51.2c-12.646 6.323-17.773 21.699-11.451 34.346 1.267 2.534 2.907 4.755 4.808 6.654-4.808 10.029-7.509 21.254-7.509 33.099 0 42.347 34.451 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-28.709-15.845-53.774-39.238-66.952zM640 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M402.091 350.901c1.901-1.899 3.541-4.12 4.808-6.654 6.322-12.646 1.195-28.024-11.451-34.346l-102.419-51.2c-12.646-6.32-28.022-1.197-34.346 11.451-6.322 12.646-1.195 28.024 11.451 34.346l25.106 12.55c-23.395 13.178-39.24 38.243-39.24 66.952 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-11.845-2.699-23.070-7.509-33.099zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MagicWand.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MagicWand.js
new file mode 100644
index 00000000..da78e9f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MagicWand.js
@@ -0,0 +1,16 @@
+// Icon: Linear.MagicWand
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 358.4c-14.139 0-25.6-11.462-25.6-25.6 0-70.579-57.421-128-128-128-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c70.579 0 128-57.421 128-128 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 70.579 57.421 128 128 128 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-70.579 0-128 57.421-128 128 0 14.138-11.461 25.6-25.6 25.6zM527.426 179.2c25.11 15.136 46.238 36.264 61.374 61.376 15.136-25.112 36.264-46.24 61.376-61.376-25.112-15.136-46.24-36.264-61.376-61.376-15.136 25.112-36.264 46.24-61.374 61.376z' />
+            <path d='M76.8 512c-14.138 0-25.6-11.462-25.6-25.6 0-14.115-11.485-25.6-25.6-25.6-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c14.115 0 25.6-11.485 25.6-25.6 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6 14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6 0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M929.101 816.096l-541.995-541.994c-14.466-14.466-33.752-22.432-54.306-22.432s-39.84 7.966-54.306 22.432l-29.992 29.992c-14.466 14.466-22.432 33.752-22.432 54.306s7.966 39.84 22.432 54.306l541.994 541.992c14.464 14.466 33.75 22.434 54.304 22.434s39.84-7.965 54.306-22.434l29.994-29.992c14.466-14.464 22.432-33.752 22.432-54.304s-7.965-39.842-22.43-54.306zM284.706 340.298l29.992-29.992c4.795-4.795 11.224-7.435 18.102-7.435s13.307 2.64 18.102 7.435l73.691 73.693-66.197 66.197-73.691-73.691c-9.982-9.984-9.982-26.224 0-36.206zM892.894 888.502l-29.994 29.992c-4.794 4.794-11.224 7.434-18.099 7.434s-13.306-2.64-18.099-7.434l-432.102-432.099 66.197-66.195 432.098 432.099c9.981 9.981 9.981 26.222 0 36.203z' />
+            <path d='M179.2 256c-14.138 0-25.6-11.462-25.6-25.6 0-42.347-34.453-76.8-76.8-76.8-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c42.347 0 76.8-34.453 76.8-76.8 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 42.347 34.453 76.8 76.8 76.8 14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6zM153.52 128c9.725 7.304 18.376 15.957 25.68 25.68 7.304-9.725 15.957-18.376 25.68-25.68-9.725-7.304-18.376-15.957-25.68-25.68-7.304 9.723-15.957 18.376-25.68 25.68z' />
+            <path d='M179.2 768c-14.138 0-25.6-11.461-25.6-25.6 0-42.347-34.453-76.8-76.8-76.8-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c42.347 0 76.8-34.453 76.8-76.8 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 42.347 34.453 76.8 76.8 76.8 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6c-42.347 0-76.8 34.453-76.8 76.8 0 14.139-11.462 25.6-25.6 25.6zM153.52 640c9.725 7.302 18.376 15.957 25.68 25.68 7.304-9.723 15.957-18.374 25.68-25.68-9.725-7.302-18.376-15.957-25.68-25.68-7.304 9.723-15.957 18.378-25.68 25.68z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnet.js
new file mode 100644
index 00000000..0b11eba0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnet.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Magnet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M869.987 72.221c-2.214-12.173-12.816-21.021-25.187-21.021h-204.8c-7.379 0-14.4 3.184-19.261 8.736s-7.090 12.933-6.114 20.246c0.509 3.824 50.974 383.478 50.974 483.018 0 86.131-67.469 153.6-153.6 153.6-84.696 0-153.6-68.904-153.6-153.6 0-96.163 50.469-479.189 50.979-483.046 0.966-7.31-1.267-14.683-6.128-20.229-4.861-5.544-11.877-8.725-19.251-8.725h-204.8c-12.371 0-22.974 8.848-25.187 21.021-2.107 11.59-51.613 286.226-51.613 490.979 0 53.622 10.842 106.254 32.226 156.435 20.686 48.544 50.168 92.398 87.627 130.349 78.176 79.198 181.077 122.816 289.747 122.816 108.672 0 211.573-43.618 289.749-122.816 37.458-37.95 66.941-81.805 87.627-130.349 21.382-50.181 32.224-102.813 32.224-156.435 0-204.754-49.504-479.389-51.613-490.979zM823.256 102.4c4.886 28.896 13.974 85.096 22.878 153.013l-157.771 0.512c-7.61-63.666-14.901-120.651-19.178-153.526h154.070zM200.742 102.4h154.104c-4.234 32.79-11.45 89.576-19.002 152.992l-158.043 0.514c8.923-68.139 18.045-124.539 22.941-153.506zM512 921.6c-194.272 0-358.4-164.126-358.4-358.4 0-80.307 8.101-173.312 17.832-256.074l158.418-0.514c-11.762 102.413-22.65 209.834-22.65 256.587 0 112.926 91.872 204.8 204.8 204.8 114.84 0 204.8-89.96 204.8-204.8 0-48.053-10.754-154.574-22.432-256.093l158.138-0.514c9.758 82.894 17.894 176.125 17.894 256.606 0 194.274-164.126 358.4-358.4 358.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnifier.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnifier.js
new file mode 100644
index 00000000..6ab40f0f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Magnifier.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Magnifier
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M966.070 981.101l-304.302-331.965c68.573-71.754 106.232-165.549 106.232-265.136 0-102.57-39.942-199-112.47-271.53s-168.96-112.47-271.53-112.47-199 39.942-271.53 112.47-112.47 168.96-112.47 271.53 39.942 199.002 112.47 271.53 168.96 112.47 271.53 112.47c88.362 0 172.152-29.667 240.043-84.248l304.285 331.947c5.050 5.507 11.954 8.301 18.878 8.301 6.179 0 12.378-2.226 17.293-6.728 10.421-9.555 11.126-25.749 1.571-36.171zM51.2 384c0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8-332.8-149.294-332.8-332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxEmpty.js
new file mode 100644
index 00000000..7fbd7bb8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxEmpty.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MailboxEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.314 355.568c-18.123-46.88-41.89-83.37-70.637-108.458-32.173-28.075-70.659-42.31-114.392-42.31h-638.685v-25.6c0-14.138-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v563.2c0 14.139 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h256v281.6c0 14.139 11.462 25.6 25.6 25.6h153.6c14.139 0 25.6-11.461 25.6-25.6v-281.6h384c14.139 0 25.6-11.461 25.6-25.6 0-142.574-15.707-255.498-46.686-335.632zM102.4 716.8h-51.2v-512h51.2v512zM563.2 972.8h-102.4v-256h102.4v256zM153.6 665.6v-409.6h638.685c142.834 0 177.629 216.899 180.338 409.6h-819.022z' />
+            <path d='M691.2 358.4h-286.003c-10.568-29.797-39.024-51.2-72.397-51.2-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c33.373 0 61.829-21.403 72.397-51.2h158.003v179.2c0 14.139 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM665.6 563.2h-51.2v-153.6h51.2v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxFull.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxFull.js
new file mode 100644
index 00000000..5f318f4e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MailboxFull.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MailboxFull
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 0h-204.8c-14.138 0-25.6 11.462-25.6 25.6v286.003c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-33.373-21.403-61.829-51.2-72.397v-158.003h179.2c14.139 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6zM332.8 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM512 102.4h-153.6v-51.2h153.6v51.2z' />
+            <path d='M977.314 355.568c-18.123-46.88-41.891-83.37-70.637-108.458-32.173-28.075-70.659-42.31-114.392-42.31h-357.085c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h357.085c142.834 0 177.63 216.899 180.338 409.6h-819.022v-409.6h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-25.6c0-14.138-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v563.2c0 14.139 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h256v281.6c0 14.139 11.462 25.6 25.6 25.6h153.6c14.139 0 25.6-11.461 25.6-25.6v-281.6h384c14.139 0 25.6-11.461 25.6-25.6 0-142.574-15.707-255.498-46.686-335.632zM102.4 716.8h-51.2v-512h51.2v512zM563.2 972.8h-102.4v-256h102.4v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man.js
new file mode 100644
index 00000000..bd665b88
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Man
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M889.333 812.814c-57.011-44.41-142.061-69.016-217.741-87.229-13.16-3.166-30.88-23.512-37.757-52.080-3.621-15.037-8.642-52.926 22.83-79.901 22.469-19.259 38.418-42.917 49.379-68.568 40.4-49.946 65.907-102.592 75.818-156.544 8.547-46.534 5.672-95.362-8.546-145.125-16.234-56.819-56.267-103.845-115.773-135.994-50.31-27.182-111.976-41.456-169.17-39.13-37.941 1.534-71.874 10.286-98.128 25.304-24.358 13.934-41.739 32.952-51.106 55.686-41.942 5.539-73.946 29.573-91.237 69.061-19.038 43.477-19.97 104.405-2.621 171.56 15.627 60.488 43.792 116.658 77.674 155.19 8.206 25.435 21.79 49.198 44.378 68.56 31.182 26.73 24.062 68.456 21.136 80.608-6.83 28.37-23.698 48.4-36.059 51.374-75.68 18.211-160.731 42.818-217.742 87.227-56.166 43.75-83.469 104.454-83.469 185.584 0 14.139 11.462 25.6 25.6 25.6h870.4c14.139 0 25.6-11.461 25.6-25.6 0-81.13-27.302-141.834-83.467-185.586zM294.802 218.834c11.842-27.040 32.050-39.634 63.598-39.634 12.203 0 22.709-8.613 25.102-20.579 8.16-40.8 60.592-57.342 106.941-59.218 93.069-3.773 206.586 43.33 233.642 138.030 14.536 50.872 15.096 99.309 1.56 146.118-2.674-33.669-9.501-63.373-16.92-83.426-7.006-18.942-19.101-44.126-43.125-44.126-131.467 0-237.358-17.563-263.498-43.701-7.322-7.323-18.333-9.512-27.899-5.55s-15.803 13.296-15.803 23.651c0 69.79-23.2 121.026-38.878 133.677-6.179 4.986-9.694 12.555-9.518 20.493 0.142 6.41 0.195 12.955 0.234 19.766-26.264-66.069-34.792-141.299-15.435-185.502zM103.485 972.8c4.662-52.366 24.517-89.893 62.648-119.595 39.23-30.56 98.523-53.837 198.258-77.838 33.784-8.13 62.774-43.131 73.858-89.17 12.4-51.51-1.653-100.656-37.592-131.462-38.602-33.090-38.902-90.59-39.194-146.198-0.024-4.624-0.048-9.336-0.098-14.029 19.834-22.57 38.872-64.909 45.64-120.525 29.798 12.222 71.117 21.035 124.717 26.677 37.936 3.994 80.784 6.23 124.485 6.51 8.856 16.882 22.728 68.915 18.749 126.288-2.592 37.366-13.65 88.736-51.61 121.272-36.73 31.485-51.418 80.366-39.286 130.76 10.958 45.518 41.32 81.637 75.557 89.875 99.733 24.002 159.024 47.282 198.254 77.84 38.13 29.702 57.984 67.229 62.646 119.595h-817.032z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man2.js
new file mode 100644
index 00000000..aa7bcb3e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Man2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Man2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M640 307.2h-307.2c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8 8.974 0 17.587-1.562 25.6-4.403v286.003c0 42.349 34.453 76.8 76.8 76.8 19.654 0 37.602-7.43 51.2-19.619 13.598 12.189 31.546 19.619 51.2 19.619 42.349 0 76.8-34.451 76.8-76.8v-286.003c8.013 2.842 16.626 4.403 25.6 4.403 42.349 0 76.8-34.451 76.8-76.8v-204.8c0-42.347-34.451-76.8-76.8-76.8zM665.6 588.8c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-307.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-512c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ManWoman.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ManWoman.js
new file mode 100644
index 00000000..a0b1a79d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ManWoman.js
@@ -0,0 +1,15 @@
+// Icon: Linear.ManWoman
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M849.696 578.701c15.101 15.099 35.538 23.758 56.072 23.758 18.56-0.002 35.725-6.946 48.334-19.557 27.627-27.627 25.742-74.464-4.203-104.408l-127.594-127.592c-24.915-24.915-70.272-43.702-105.506-43.702h-153.6c-35.232 0-80.59 18.787-105.506 43.702l-127.592 127.592c-14.051 14.048-22.438 32.336-23.619 51.496-1.235 20.053 5.842 39.339 19.414 52.912 12.611 12.613 29.778 19.557 48.336 19.557 20.534-0.002 40.971-8.661 56.070-23.76l93.427-93.426 11.117 44.474-158.347 158.349c-24.395 24.394-19.371 45.517-16.078 53.466s14.677 26.438 49.178 26.438h102.4v179.2c0 42.349 34.451 76.8 76.8 76.8 19.654 0 37.602-7.43 51.2-19.618 13.598 12.187 31.546 19.618 51.2 19.618 42.349 0 76.8-34.451 76.8-76.8v-179.2h102.4c34.499 0 45.883-18.49 49.176-26.438s8.317-29.072-16.078-53.466l-158.347-158.349 11.117-44.474 93.429 93.427zM588.8 972.8c-14.115 0-25.6-11.485-25.6-25.6v-179.2h51.2v179.2c0 14.115-11.485 25.6-25.6 25.6zM716.8 947.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-179.2h51.2v179.2zM698.699 555.701l161.096 161.099h-439.592l161.098-161.099c6.36-6.358 8.915-15.586 6.734-24.31l-25.6-102.4c-2.237-8.947-9.114-16-18.003-18.462s-18.414 0.048-24.934 6.568l-125.397 125.397c-5.57 5.568-12.813 8.763-19.87 8.765-3.453 0-8.362-0.79-12.13-4.56-4.386-4.386-4.712-10.378-4.517-13.56 0.406-6.584 3.584-13.304 8.718-18.44l127.592-127.592c15.027-15.022 48.061-28.706 69.306-28.706h153.6c21.245 0 54.278 13.682 69.301 28.706l127.594 127.592c9.813 9.813 11.736 24.467 4.203 32.002-3.768 3.766-8.678 4.56-12.133 4.56-7.056 0-14.299-3.194-19.867-8.763l-125.397-125.398c-6.52-6.522-16.050-9.030-24.934-6.568-8.89 2.462-15.766 9.515-18.003 18.462l-25.6 102.4c-2.181 8.723 0.376 17.952 6.736 24.309z' />
+            <path d='M281.6 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM281.6 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M384 819.2c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-307.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-512c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h256c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-256c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8 8.974 0 17.587-1.562 25.6-4.403v286.003c0 42.349 34.453 76.8 76.8 76.8 19.656 0 37.602-7.43 51.2-19.619 13.598 12.189 31.546 19.619 51.2 19.619 42.347 0 76.8-34.453 76.8-76.8v-102.4c0-14.139-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map.js
new file mode 100644
index 00000000..10d1dfa1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Map
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 358.4c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 665.6c-7.474 0-14.573-3.266-19.437-8.939-1.634-1.904-40.434-47.435-79.589-115.96-53.202-93.098-80.174-180.272-80.174-259.101 0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2c0 78.829-26.973 166.003-80.173 259.101-39.157 68.523-77.957 114.054-79.589 115.96-4.866 5.674-11.965 8.939-19.438 8.939zM742.4 153.6c-70.579 0-128 57.421-128 128 0 130.226 87.925 263.128 127.982 316.912 40.046-53.853 128.018-186.955 128.018-316.912 0-70.579-57.421-128-128-128z' />
+            <path d='M947.2 0h-870.4c-42.347 0-76.8 34.453-76.8 76.8v870.4c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-870.4c0-42.347-34.451-76.8-76.8-76.8zM332.8 921.6c-14.138 0-25.6 11.461-25.6 25.6v25.6h-102.4v-921.6h102.4v25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6h102.4v921.6h-102.4v-25.6c0-14.139-11.462-25.6-25.6-25.6zM153.6 819.2h-102.4v-51.2h102.4v51.2zM512 768h460.8v51.2h-460.8v-51.2zM972.8 76.8v640h-460.8v-665.6h435.2c14.115 0 25.6 11.485 25.6 25.6zM76.8 51.2h76.8v665.6h-102.4v-640c0-14.115 11.485-25.6 25.6-25.6zM51.2 947.2v-76.8h102.4v102.4h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM947.2 972.8h-435.2v-102.4h460.8v76.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M332.8 256c14.138 0 25.6-11.462 25.6-25.6v-51.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v51.2c0 14.138 11.462 25.6 25.6 25.6z' />
+            <path d='M332.8 409.6c14.138 0 25.6-11.462 25.6-25.6v-51.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v51.2c0 14.138 11.462 25.6 25.6 25.6z' />
+            <path d='M332.8 563.2c14.138 0 25.6-11.461 25.6-25.6v-51.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v51.2c0 14.139 11.462 25.6 25.6 25.6z' />
+            <path d='M332.8 716.8c14.138 0 25.6-11.461 25.6-25.6v-51.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v51.2c0 14.139 11.462 25.6 25.6 25.6z' />
+            <path d='M358.4 793.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v51.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map2.js
new file mode 100644
index 00000000..a756a555
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Map2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Map2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M960.659 55.024c-7.549-4.664-16.971-5.088-24.907-1.122l-295.752 147.875-295.752-147.875c-7.206-3.603-15.691-3.603-22.898 0l-307.2 153.6c-8.672 4.336-14.15 13.2-14.15 22.898v768c0 8.872 4.594 17.112 12.141 21.776 4.11 2.541 8.779 3.824 13.461 3.824 3.912 0 7.834-0.898 11.446-2.702l295.752-147.875 295.752 147.875c7.206 3.603 15.693 3.603 22.899 0l307.2-153.6c8.674-4.336 14.152-13.2 14.152-22.898v-768c-0.003-8.872-4.597-17.112-12.144-21.776zM307.2 828.978l-256 128v-710.755l256-128v710.755zM358.4 118.222l256 128v710.757l-256-128v-710.757zM921.6 828.978l-256 128v-710.755l256-128v710.755z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarker.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarker.js
new file mode 100644
index 00000000..29b72d2a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarker.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MapMarker
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-7.856 0-15.277-3.606-20.13-9.784-2.931-3.73-72.587-92.864-143.229-224.51-41.581-77.491-74.742-153.568-98.565-226.118-30.043-91.499-45.277-177.758-45.277-256.387 0-169.39 137.81-307.2 307.2-307.2s307.2 137.81 307.2 307.2c0 78.629-15.234 164.888-45.278 256.386-23.822 72.55-56.984 148.629-98.565 226.118-70.64 131.646-140.298 220.781-143.229 224.51-4.851 6.179-12.272 9.786-20.128 9.786zM512 51.2c-141.158 0-256 114.842-256 256 0 166.597 74.914 341.176 137.758 458.296 46.186 86.074 92.634 154.306 118.237 189.938 25.709-35.789 72.429-104.432 118.688-190.76 62.643-116.902 137.317-291.163 137.317-457.474 0-141.158-114.84-256-256-256z' />
+            <path d='M512 460.8c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 204.8c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCheck.js
new file mode 100644
index 00000000..4515547c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MapMarkerCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-7.856 0-15.277-3.606-20.13-9.784-2.931-3.73-72.587-92.864-143.229-224.51-41.579-77.491-74.742-153.568-98.565-226.118-30.043-91.499-45.277-177.758-45.277-256.387 0-169.39 137.81-307.2 307.2-307.2 63.68 0 124.771 19.315 176.672 55.858 11.562 8.139 14.334 24.109 6.194 35.67-8.138 11.56-24.109 14.334-35.669 6.194-43.227-30.435-94.126-46.522-147.197-46.522-141.158 0-256 114.842-256 256 0 166.597 74.914 341.176 137.758 458.296 46.186 86.074 92.634 154.307 118.237 189.939 24.728-34.421 68.891-99.23 113.365-180.906 61.053-112.123 135.267-279.963 142.118-442.805 0.595-14.128 12.52-25.112 26.654-24.501 14.125 0.595 25.096 12.528 24.499 26.653-3.227 76.702-20.414 160.334-51.086 248.571-24.339 70.022-57.202 143.166-97.675 217.4-68.787 126.165-134.96 210.827-137.742 214.368-4.851 6.178-12.272 9.784-20.128 9.784z' />
+            <path d='M512 460.8c-6.552 0-13.102-2.499-18.101-7.499l-128-128c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l109.898 109.899 263.499-263.498c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-281.6 281.6c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCrossed.js
new file mode 100644
index 00000000..c1417d60
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MapMarkerCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M912.144 56.931c-10.974-8.917-27.099-7.246-36.013 3.726l-89.144 109.715c-50.413-100.906-154.731-170.373-274.987-170.373-169.39 0-307.2 137.81-307.2 307.2 0 78.629 15.234 164.888 45.278 256.386 18.794 57.237 43.426 116.677 73.394 177.267l-112.941 139.003c-8.915 10.973-7.248 27.098 3.726 36.013 4.746 3.856 10.454 5.733 16.128 5.733 7.443 0 14.826-3.232 19.885-9.458l98.816-121.619c70.49 131.194 139.862 219.968 142.786 223.691 4.851 6.178 12.272 9.784 20.128 9.784s15.277-3.606 20.13-9.784c2.931-3.73 72.587-92.864 143.229-224.51 41.579-77.491 74.742-153.568 98.565-226.118 30.043-91.499 45.277-177.758 45.277-256.387 0-28.275-3.859-55.664-11.045-81.686l107.714-132.571c8.915-10.973 7.246-27.096-3.725-36.011zM256 307.2c0-141.158 114.842-256 256-256 108.642 0 201.682 68.034 238.787 163.726l-85.768 105.562c0.378-4.381 0.581-8.811 0.581-13.288 0-84.696-68.904-153.6-153.6-153.6s-153.6 68.904-153.6 153.6 68.904 153.6 153.6 153.6c15.403 0 30.28-2.29 44.318-6.528l-197.194 242.699c-52.773-111.251-103.125-253.19-103.125-389.771zM512 409.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM768 307.2c0 166.31-74.674 340.571-137.317 457.474-46.259 86.328-92.979 154.97-118.688 190.76-25.603-35.632-72.051-103.864-118.237-189.938-3.168-5.904-6.368-11.965-9.589-18.154l382.054-470.221c1.16 9.869 1.776 19.902 1.776 30.078z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerDown.js
new file mode 100644
index 00000000..8412a9ad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerDown.js
@@ -0,0 +1,14 @@
+// Icon: Linear.MapMarkerDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 460.8c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 204.8c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+            <path d='M512 1024c-7.856 0-15.277-3.606-20.13-9.784-2.931-3.73-72.587-92.864-143.229-224.51-41.581-77.491-74.742-153.568-98.565-226.118-30.043-91.499-45.277-177.758-45.277-256.387 0-169.39 137.81-307.2 307.2-307.2s307.2 137.81 307.2 307.2c0 78.629-15.234 164.888-45.278 256.386-23.822 72.55-56.984 148.629-98.565 226.118-70.64 131.646-140.298 220.781-143.229 224.51-4.851 6.179-12.272 9.786-20.128 9.786zM512 51.2c-141.158 0-256 114.842-256 256 0 166.597 74.914 341.176 137.758 458.296 46.186 86.074 92.634 154.306 118.237 189.938 25.709-35.789 72.429-104.432 118.688-190.76 62.643-116.902 137.317-291.163 137.317-457.474 0-141.158-114.84-256-256-256z' />
+            <path d='M248.502 852.299c-9.998-9.997-26.206-9.997-36.205 0l-58.698 58.696v-270.995c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v270.995l-58.698-58.698c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerUser.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerUser.js
new file mode 100644
index 00000000..0dfa1f26
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MapMarkerUser.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MapMarkerUser
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-7.856 0-15.277-3.606-20.13-9.784-2.931-3.73-72.587-92.864-143.229-224.51-41.581-77.491-74.742-153.568-98.565-226.118-30.043-91.499-45.277-177.758-45.277-256.387 0-169.39 137.81-307.2 307.2-307.2s307.2 137.81 307.2 307.2c0 78.629-15.234 164.888-45.278 256.386-23.822 72.55-56.984 148.629-98.565 226.118-70.64 131.646-140.298 220.781-143.229 224.51-4.851 6.179-12.272 9.786-20.128 9.786zM512 51.2c-141.158 0-256 114.842-256 256 0 166.597 74.914 341.176 137.758 458.296 46.186 86.074 92.634 154.306 118.237 189.938 25.709-35.789 72.429-104.432 118.688-190.76 62.643-116.902 137.317-291.163 137.317-457.474 0-141.158-114.84-256-256-256z' />
+            <path d='M665.576 484.706c-0.192-8.499-1.95-46.563-17.946-84.952-10.963-26.309-26.317-47.488-45.638-62.944-4.936-3.949-10.114-7.488-15.506-10.651 17.285-18.342 27.914-43.026 27.914-70.158 0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4c0 27.133 10.627 51.816 27.914 70.158-5.392 3.165-10.57 6.702-15.506 10.651-19.322 15.456-34.677 36.634-45.638 62.944-17.766 42.637-17.97 84.87-17.97 86.646 0 14.138 11.462 25.6 25.6 25.6h256c0.011 0 0.024 0.002 0.032 0 14.139 0 25.6-11.462 25.6-25.6 0-0.57-0.018-1.134-0.056-1.694zM460.8 256c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2c-28.232 0-51.2-22.968-51.2-51.2zM412.152 460.8c1.955-11.966 5.402-26.77 11.478-41.354 17.117-41.078 46.022-61.046 88.37-61.046 73.144 0 94.045 64.946 100.016 102.4h-199.864z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalEmpty.js
new file mode 100644
index 00000000..bca54f31
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalEmpty.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MedalEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M757.517 244.709l-74.934-54.443-28.622-88.091h-92.626l-74.934-54.445-74.934 54.445h-92.626l-28.622 88.091-74.934 54.443 28.621 88.091-28.622 88.091 74.934 54.445 16.984 52.267v470.797c0 9.44 5.197 18.115 13.52 22.57 8.325 4.456 18.426 3.966 26.28-1.27l139.4-92.933 139.4 92.933c4.285 2.856 9.234 4.301 14.202 4.301 4.141 0 8.294-1.003 12.078-3.030 8.323-4.454 13.52-13.13 13.52-22.57v-470.795l16.982-52.269 74.934-54.445-28.621-88.091 28.621-88.091zM500.6 874.701c-8.598-5.734-19.802-5.734-28.4 0l-113.8 75.866v-387.139h53.066l74.934 54.443 74.936-54.443h53.064v387.139l-113.8-75.866zM697.328 401.334l-58.299 42.358-22.195 68.307h-2.434v0.227h-69.699l-58.301 42.355-58.299-42.357h-72.062l-22.267-68.534-58.299-42.358 22.267-68.533-22.267-68.534 58.299-42.357 22.267-68.534h72.062l58.299-42.358 58.299 42.357h72.062l22.269 68.534 58.299 42.357-22.269 68.536 22.267 68.534z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalFirst.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalFirst.js
new file mode 100644
index 00000000..23054478
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalFirst.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MedalFirst
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M757.517 244.709l-74.934-54.443-28.622-88.091h-92.626l-74.934-54.445-74.934 54.445h-92.626l-28.622 88.091-74.934 54.443 28.621 88.091-28.622 88.091 74.934 54.445 16.984 52.267v470.797c0 9.44 5.197 18.115 13.52 22.57 8.325 4.456 18.426 3.966 26.28-1.27l139.4-92.933 139.4 92.933c4.285 2.856 9.234 4.301 14.202 4.301 4.141 0 8.294-1.003 12.078-3.030 8.323-4.454 13.52-13.13 13.52-22.57v-470.795l16.982-52.269 74.934-54.445-28.621-88.091 28.621-88.091zM500.6 874.701c-8.598-5.734-19.802-5.734-28.4 0l-113.8 75.866v-387.139h53.066l74.934 54.443 74.936-54.443h53.064v387.139l-113.8-75.866zM697.328 401.334l-58.299 42.358-22.195 68.307h-2.434v0.227h-69.699l-58.301 42.355-58.299-42.357h-72.062l-22.267-68.534-58.299-42.358 22.267-68.533-22.267-68.534 58.299-42.357 22.267-68.534h72.062l58.299-42.358 58.299 42.357h72.062l22.269 68.534 58.299 42.357-22.269 68.536 22.267 68.534z' />
+            <path d='M486.4 460.8c-14.138 0-25.6-11.462-25.6-25.6v-179.2h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalSecond.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalSecond.js
new file mode 100644
index 00000000..8e9ef4f0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalSecond.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MedalSecond
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M757.517 244.709l-74.934-54.443-28.622-88.091h-92.626l-74.934-54.445-74.934 54.445h-92.626l-28.622 88.091-74.934 54.443 28.621 88.091-28.622 88.091 74.934 54.445 16.984 52.267v470.797c0 9.44 5.197 18.115 13.52 22.57 8.325 4.456 18.426 3.966 26.28-1.27l139.4-92.933 139.4 92.933c4.285 2.856 9.234 4.301 14.202 4.301 4.141 0 8.294-1.003 12.078-3.030 8.323-4.454 13.52-13.13 13.52-22.57v-470.795l16.982-52.269 74.934-54.445-28.621-88.091 28.621-88.091zM500.6 874.701c-8.598-5.734-19.802-5.734-28.4 0l-113.8 75.866v-387.139h53.066l74.934 54.443 74.936-54.443h53.064v387.139l-113.8-75.866zM697.328 401.334l-58.299 42.358-22.195 68.307h-2.434v0.227h-69.699l-58.301 42.355-58.299-42.357h-72.062l-22.267-68.534-58.299-42.358 22.267-68.533-22.267-68.534 58.299-42.357 22.267-68.534h72.062l58.299-42.358 58.299 42.357h72.062l22.269 68.534 58.299 42.357-22.269 68.536 22.267 68.534z' />
+            <path d='M537.6 460.8h-102.4c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalThird.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalThird.js
new file mode 100644
index 00000000..59c33c89
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MedalThird.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MedalThird
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M757.517 244.709l-74.934-54.443-28.622-88.091h-92.626l-74.934-54.445-74.934 54.445h-92.626l-28.622 88.091-74.934 54.443 28.621 88.091-28.622 88.091 74.934 54.445 16.984 52.267v470.797c0 9.44 5.197 18.115 13.52 22.57 8.325 4.456 18.426 3.966 26.28-1.27l139.4-92.933 139.4 92.933c4.285 2.856 9.234 4.301 14.202 4.301 4.141 0 8.294-1.003 12.078-3.030 8.323-4.454 13.52-13.13 13.52-22.57v-470.795l16.982-52.269 74.934-54.445-28.621-88.091 28.621-88.091zM500.6 874.701c-8.598-5.734-19.802-5.734-28.4 0l-113.8 75.866v-387.139h53.066l74.934 54.443 74.936-54.443h53.064v387.139l-113.8-75.866zM697.328 401.334l-58.299 42.358-22.195 68.307h-2.434v0.227h-69.699l-58.301 42.355-58.299-42.357h-72.062l-22.267-68.534-58.299-42.358 22.267-68.533-22.267-68.534 58.299-42.357 22.267-68.534h72.062l58.299-42.358 58.299 42.357h72.062l22.269 68.534 58.299 42.357-22.269 68.536 22.267 68.534z' />
+            <path d='M537.6 204.8h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Media.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Media.js
new file mode 100644
index 00000000..49052a43
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Media.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Media
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1014.629 569.003c-5.931-4.866-13.733-6.806-21.248-5.306l-256 51.2c-11.966 2.394-20.581 12.899-20.581 25.102v137.994c-14.981-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-183.811l204.8-40.963v106.766c-14.981-6.366-32.418-9.994-51.2-9.994-57.421 0-102.4 33.734-102.4 76.8s44.979 76.8 102.4 76.8 102.4-33.734 102.4-76.8v-204.798c0-7.67-3.438-14.934-9.371-19.797zM665.6 870.4c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6zM921.6 819.2c-31.254 0-51.2-15.163-51.2-25.6s19.946-25.6 51.2-25.6 51.2 15.163 51.2 25.6-19.946 25.6-51.2 25.6z' />
+            <path d='M691.2 563.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M844.8 307.2h-230.4v-179.2c0-14.138-11.461-25.6-25.6-25.6h-563.2c-14.138 0-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6h230.4v179.2c0 14.139 11.462 25.6 25.6 25.6h358.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-39.702l-163.15-183.541c-13.939-15.685-33.299-24.352-53.216-23.867-19.878 0.517-38.8 10.211-51.907 26.597l-24.824 31.030v-106.219h512v153.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-179.2c0-14.138-11.461-25.6-25.6-25.6zM512 256h51.2v51.2h-51.2v-51.2zM563.2 204.8h-51.2v-51.2h51.2v51.2zM51.2 256h51.2v51.2h-51.2v-51.2zM102.4 153.6v51.2h-51.2v-51.2h51.2zM51.2 358.4h51.2v51.2h-51.2v-51.2zM372.005 465.571c3.717-4.643 8.424-7.272 13.256-7.397 4.818-0.138 9.669 2.253 13.621 6.701l132.91 149.525h-224.592v-67.822l64.805-81.006zM281.6 307.2c-14.138 0-25.6 11.462-25.6 25.6v76.8h-102.4v-256h307.2v153.6h-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu.js
new file mode 100644
index 00000000..45e62355
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Menu
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 307.2h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 819.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu2.js
new file mode 100644
index 00000000..d36fbf7d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Menu2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 358.4h-870.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h870.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM76.8 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M947.2 614.4h-870.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h870.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM76.8 512c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M947.2 870.4h-870.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h870.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8zM76.8 768c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6h-870.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu3.js
new file mode 100644
index 00000000..5b7ba6b0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Menu3.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Menu3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 281.6c-6.552 0-13.102-2.499-18.101-7.498l-102.4-102.4c-9.998-9.998-9.998-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203 0l84.298 84.299 84.299-84.299c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-102.4 102.4c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M947.2 0h-870.4c-42.347 0-76.8 34.453-76.8 76.8v256c0 42.347 34.453 76.8 76.8 76.8h128v537.6c0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8v-870.4c0-42.347-34.451-76.8-76.8-76.8zM51.2 332.8v-256c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v256c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6zM947.2 972.8h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-537.6h691.2c8.974 0 17.587-1.562 25.6-4.403v542.003c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M844.8 563.2h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 716.8h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 870.4h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuCircle.js
new file mode 100644
index 00000000..93ec801d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuCircle.js
@@ -0,0 +1,15 @@
+// Icon: Linear.MenuCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M742.4 409.6h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 563.2h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuSquare.js
new file mode 100644
index 00000000..01751575
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MenuSquare.js
@@ -0,0 +1,15 @@
+// Icon: Linear.MenuSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M742.4 409.6h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 716.8h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 563.2h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic.js
new file mode 100644
index 00000000..8877c840
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Mic
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 716.8c-98.811 0-179.2-80.389-179.2-179.2v-307.2c0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2v307.2c0 98.811-80.389 179.2-179.2 179.2zM486.4 102.4c-70.579 0-128 57.421-128 128v307.2c0 70.579 57.421 128 128 128s128-57.421 128-128v-307.2c0-70.579-57.421-128-128-128z' />
+            <path d='M819.2 537.6c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 155.275-126.325 281.6-281.6 281.6s-281.6-126.325-281.6-281.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 174.894 135.608 318.71 307.2 331.826v103.374h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-103.374c171.59-13.115 307.2-156.931 307.2-331.826z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic2.js
new file mode 100644
index 00000000..d9c5f675
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mic2.js
@@ -0,0 +1,24 @@
+// Icon: Linear.Mic2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 153.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M128 358.4c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 153.6c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 460.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 358.4c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 358.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 256c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 153.6c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M128 460.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M1018.39 828.808l-404.411-505.514c0.277-5.331 0.421-10.696 0.421-16.094 0-169.39-137.81-307.2-307.2-307.2s-307.2 137.81-307.2 307.2c0 101.483 49.475 191.614 125.56 247.584 1.28 1.152 2.683 2.16 4.171 3.034 50.154 35.619 111.408 56.582 177.469 56.582 5.398 0 10.763-0.144 16.094-0.421l505.514 404.411c4.589 3.67 10.242 5.61 15.994 5.61 2.13 0 4.272-0.266 6.379-0.808 39.744-10.23 77.285-32.168 108.563-63.448 31.28-31.278 53.221-68.821 63.448-108.563 2.006-7.798 0.229-16.085-4.802-22.373zM51.2 307.2c0-141.158 114.842-256 256-256 82.022 0 155.149 38.781 202.034 98.963-21.846 188.275-170.976 337.253-359.064 359.075-60.186-46.883-98.97-120.013-98.97-202.038zM220.221 547.976c159.834-42.114 285.619-167.794 327.762-327.741 9.842 27.165 15.218 56.446 15.218 86.965 0 141.158-114.842 256-256 256-30.523 0-59.813-5.379-86.979-15.224zM850.341 970.048l-459.149-367.318c101.989-29.027 182.51-109.549 211.538-211.538l367.318 459.15c-18.464 54.326-65.378 101.24-119.707 119.706z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MicMute.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MicMute.js
new file mode 100644
index 00000000..0dd79398
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MicMute.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MicMute
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 537.6c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 155.275-126.325 281.6-281.6 281.6-63.019 0-121.269-20.81-168.242-55.917l64.003-80.005c29.389 21.088 65.387 33.522 104.238 33.522 98.811 0 179.2-80.389 179.2-179.2v-208.619l147.99-184.989c8.832-11.040 7.042-27.15-3.998-35.982-11.037-8.829-27.15-7.043-35.982 3.998l-108.010 135.011v-16.619c0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2v307.2c0 41.458 14.157 79.669 37.883 110.066l-65.051 81.314c-46.656-50.274-75.232-117.546-75.232-191.379 0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 89.997 35.925 171.749 94.166 231.712l-88.557 110.696c-8.832 11.040-7.042 27.15 3.998 35.982 4.72 3.776 10.366 5.611 15.976 5.611 7.509 0 14.95-3.29 20.006-9.61l86.989-108.736c49.36 37.294 109.384 61.182 174.621 66.168v103.376h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-103.374c171.59-13.115 307.2-156.931 307.2-331.826zM614.4 537.6c0 70.579-57.421 128-128 128-26.766 0-51.63-8.272-72.197-22.373l200.197-250.246v144.619zM358.4 537.6v-307.2c0-70.579 57.421-128 128-128s128 57.421 128 128v80.619l-236.054 295.067c-12.608-19.821-19.946-43.306-19.946-68.486z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Microscope.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Microscope.js
new file mode 100644
index 00000000..704cf862
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Microscope.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Microscope
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 665.6h-261.075c-0.072 0-0.144 0-0.218 0h-97.107c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h63.685c-32.051 90.624-118.898 153.6-217.285 153.6-127.043 0-230.4-103.358-230.4-230.4 0-115.261 83.838-211.506 196.65-227.946l107.445 107.445c14.466 14.466 33.75 22.432 54.306 22.432s39.84-7.966 54.304-22.432l29.995-29.994c29.941-29.944 29.941-78.667-0.002-108.611l-285.992-285.994c-14.466-14.466-33.752-22.432-54.306-22.432-5.922 0-11.731 0.682-17.358 1.97l-66.941-66.939c-9.997-9.998-26.206-9.998-36.203 0l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203l66.941 66.941c-1.288 5.627-1.97 11.435-1.97 17.358 0 20.554 7.966 39.84 22.432 54.306l17.312 17.312c-65.198 32.653-121.077 81.094-163.053 141.717-50.478 72.902-77.16 158.475-77.16 247.464 0 129.571 57.749 250.949 154.76 332.8h-77.96c-14.138 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6l159.662 0.002c0.090 0 0.179 0.008 0.269 0.008 0.085 0 0.168-0.008 0.253-0.008l396.405 0.002c0.090 0.002 0.179 0.010 0.269 0.010 0.096 0 0.19-0.008 0.286-0.010l159.656 0.002c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-78.019c77.158-65.173 130.125-155.864 148.037-256.005h83.582c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM325.301 131.106l285.992 285.992c9.981 9.981 9.981 26.224 0.002 36.203l-29.994 29.994c-4.795 4.795-11.224 7.435-18.101 7.435s-13.306-2.64-18.101-7.435l-242.174-242.173c-0.064-0.066-0.13-0.13-0.195-0.195l-43.624-43.624c-4.795-4.795-7.435-11.224-7.435-18.101s2.64-13.306 7.435-18.101l29.994-29.994c4.795-4.795 11.224-7.435 18.101-7.435 6.877-0.003 13.307 2.638 18.101 7.434zM204.8 61.803l40.597 40.597-14.997 14.997-40.597-40.597 14.997-14.997zM626.816 972.803l-383.328-0.002c-118.779-68.566-192.288-195.475-192.288-332.802 0-153.067 88.73-288.968 227.446-350.749l79.771 79.771c-50.28 14.221-95.91 42.299-131.659 81.63-47.176 51.907-73.158 119.152-73.158 189.347 0 155.275 126.325 281.6 281.6 281.6 65.339 0 129.016-22.89 179.299-64.448 44.139-36.483 76.171-85.742 91.669-140.352h105.298c-21.827 107.010-89.166 200.898-184.65 256.003z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Minus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Minus.js
new file mode 100644
index 00000000..c91efc37
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Minus.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Minus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 563.2h-921.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MinusSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MinusSquare.js
new file mode 100644
index 00000000..77da856b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MinusSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MinusSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M742.4 563.2h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Moon.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Moon.js
new file mode 100644
index 00000000..ee9431ab
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Moon.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Moon
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M529.363 1024c-141.402 0-274.341-55.066-374.325-155.054-99.978-99.981-155.038-232.914-155.038-374.309s55.061-274.325 155.038-374.306c52.005-52.008 112.88-91.899 180.934-118.563 10.115-3.965 21.635-1.118 28.739 7.098s8.248 20.018 2.854 29.443c-48.413 84.603-68.294 184.77-55.986 282.048 12.701 100.368 57.323 191.331 129.042 263.053 85.534 85.536 199.256 132.643 320.219 132.643 78.954 0 156.688-20.605 224.8-59.584 9.432-5.398 21.243-4.261 29.472 2.832 8.229 7.094 11.082 18.603 7.122 28.715-26.666 68.050-66.55 128.923-118.554 180.931-99.982 99.987-232.918 155.053-374.318 155.053zM291.178 79.88c-36.315 20.861-69.75 46.496-99.893 76.638-90.309 90.315-140.043 210.394-140.043 338.118 0 127.726 49.734 247.806 140.045 338.12 90.304 90.309 210.368 140.043 338.077 140.043 127.702 0 247.768-49.734 338.072-140.042 30.131-30.133 55.76-63.558 76.616-99.861-58.099 22.602-120.309 34.355-183.206 34.355-134.656 0-261.254-52.438-356.467-147.656-79.824-79.827-129.491-181.082-143.63-292.818-10.568-83.51 0.202-168.958 30.43-246.899z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mouse.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mouse.js
new file mode 100644
index 00000000..9cbcebff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mouse.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Mouse
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.187 257.467c-13.325-4.71-27.957 2.274-32.667 15.605-18.042 51.037-66.554 85.328-120.72 85.328-69.899 0-117.474-66.494-128.344-132.179-9.566-57.811-35.331-112.254-72.546-153.299-43.251-47.706-97.718-72.922-157.51-72.922-118.754 0-216.8 90.312-229.091 205.859-143.944 12.358-257.309 133.45-257.309 280.541v256c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6v-256c0-146.082-111.813-266.525-254.349-280.277 11.885-87.37 86.971-154.923 177.549-154.923 97.949 0 164.462 92.251 179.544 183.379 7.437 44.947 27.354 87.085 56.077 118.65 33.557 36.878 76.013 56.371 122.779 56.371 75.822 0 143.734-48.008 168.992-119.464 4.712-13.33-2.274-27.955-15.605-32.669zM256 257.43v203.37h-203.37c11.842-106.63 96.739-191.528 203.37-203.37zM281.6 972.8c-127.043 0-230.4-103.357-230.4-230.4v-230.4h460.8v230.4c0 127.043-103.357 230.4-230.4 230.4zM510.57 460.8h-203.37v-203.37c106.63 11.842 191.528 96.739 203.37 203.37z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseBoth.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseBoth.js
new file mode 100644
index 00000000..f393b8f9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseBoth.js
@@ -0,0 +1,18 @@
+// Icon: Linear.MouseBoth
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 204.8c-155.275 0-281.6 126.325-281.6 281.6v256c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6v-256c0-155.275-126.325-281.6-281.6-281.6zM715.37 460.8h-203.37v-203.37c106.632 11.842 191.528 96.739 203.37 203.37zM460.8 257.43v203.37h-203.37c11.842-106.63 96.739-191.528 203.37-203.37zM486.4 972.8c-127.043 0-230.4-103.357-230.4-230.4v-230.4h460.8v230.4c0 127.043-103.357 230.4-230.4 230.4z' />
+            <path d='M281.6 153.6c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M128 307.2h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 204.8c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M691.2 153.6c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 307.2h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 204.8c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseLeft.js
new file mode 100644
index 00000000..bcd3f09d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseLeft.js
@@ -0,0 +1,15 @@
+// Icon: Linear.MouseLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 204.8c-155.275 0-281.6 126.325-281.6 281.6v256c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6v-256c0-155.275-126.325-281.6-281.6-281.6zM715.37 460.8h-203.37v-203.37c106.632 11.842 191.528 96.739 203.37 203.37zM460.8 257.43v203.37h-203.37c11.842-106.63 96.739-191.528 203.37-203.37zM486.4 972.8c-127.043 0-230.4-103.357-230.4-230.4v-230.4h460.8v230.4c0 127.043-103.357 230.4-230.4 230.4z' />
+            <path d='M281.6 153.6c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M128 307.2h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 204.8c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseRight.js
new file mode 100644
index 00000000..a2015d2f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MouseRight.js
@@ -0,0 +1,15 @@
+// Icon: Linear.MouseRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 204.8c-155.275 0-281.6 126.325-281.6 281.6v256c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6v-256c0-155.275-126.325-281.6-281.6-281.6zM715.37 460.8h-203.37v-203.37c106.632 11.842 191.528 96.739 203.37 203.37zM460.8 257.43v203.37h-203.37c11.842-106.63 96.739-191.528 203.37-203.37zM486.4 972.8c-127.043 0-230.4-103.357-230.4-230.4v-230.4h460.8v230.4c0 127.043-103.357 230.4-230.4 230.4z' />
+            <path d='M691.2 153.6c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 307.2h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 204.8c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Move.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Move.js
new file mode 100644
index 00000000..0b4c6c45
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Move.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Move
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M939.701 519.499l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-347.797v-347.797l109.899 109.898c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l109.899-109.898v347.797h-347.797l109.898-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898h347.797v347.797l-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-109.898 109.899v-347.797h347.797l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote.js
new file mode 100644
index 00000000..4a68a8ed
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MusicNote
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 256c-70.579 0-128-57.421-128-128 0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v634.832c-6.986-4.722-14.629-9.182-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.806 23.902-74.136 57.749-74.136 95.304s26.33 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.808-23.902 74.136-57.749 74.136-95.304v-591.506c32.55 33.246 77.906 53.906 128 53.906 70.579 0 128 57.421 128 128 0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-98.811-80.389-179.2-179.2-179.2zM332.8 921.6c-102.563 0-179.2-40.547-179.2-76.8s76.637-76.8 179.2-76.8 179.2 40.547 179.2 76.8-76.637 76.8-179.2 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote2.js
new file mode 100644
index 00000000..7602c7bc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MusicNote2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1014.803 57.146c-5.826-4.864-13.509-6.891-20.982-5.533l-563.2 102.4c-12.173 2.213-21.021 12.816-21.021 25.187v583.632c-6.986-4.722-14.629-9.181-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.806 23.902-74.136 57.749-74.136 95.304s26.33 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.806-23.902 74.136-57.749 74.136-95.304v-644.235l512-93.091v552.958c-6.984-4.722-14.629-9.182-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.808 23.902-74.136 57.749-74.136 95.304s26.328 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.808-23.902 74.136-57.749 74.136-95.304v-665.6c0-7.59-3.368-14.79-9.197-19.654zM230.4 921.6c-102.563 0-179.2-40.547-179.2-76.8s76.637-76.8 179.2-76.8 179.2 40.547 179.2 76.8-76.637 76.8-179.2 76.8zM793.6 819.2c-102.565 0-179.2-40.547-179.2-76.8s76.635-76.8 179.2-76.8c102.566 0 179.2 40.547 179.2 76.8s-76.634 76.8-179.2 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote3.js
new file mode 100644
index 00000000..49cd5d5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MusicNote3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.MusicNote3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1014.803 57.146c-5.826-4.864-13.509-6.891-20.982-5.533l-563.2 102.4c-12.173 2.213-21.021 12.816-21.021 25.187v583.632c-6.986-4.722-14.629-9.181-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.806 23.902-74.136 57.749-74.136 95.304s26.33 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.806-23.902 74.136-57.749 74.136-95.304v-516.294l512-94.549v426.475c-6.984-4.722-14.629-9.182-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.808 23.902-74.136 57.749-74.136 95.304s26.328 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.808-23.902 74.136-57.749 74.136-95.304v-665.6c0-7.59-3.368-14.79-9.197-19.654zM230.4 921.6c-102.563 0-179.2-40.547-179.2-76.8s76.637-76.8 179.2-76.8 179.2 40.547 179.2 76.8-76.637 76.8-179.2 76.8zM460.8 276.438v-75.874l512-93.091v74.416l-512 94.549zM793.6 819.2c-102.565 0-179.2-40.547-179.2-76.8s76.635-76.8 179.2-76.8c102.566 0 179.2 40.547 179.2 76.8s-76.634 76.8-179.2 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache.js
new file mode 100644
index 00000000..9dbe6b38
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Mustache
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M815.258 626.352c-5.658-8.979-16.27-13.53-26.678-11.454-9.582 1.917-18.819 2.888-27.454 2.888-0.002 0-0.006 0-0.010 0-44.645-0.003-71.763-25.77-100.47-53.053-27.28-25.925-55.49-52.733-97.445-52.733-30.563 0-58.021 13.475-76.8 34.776-18.779-21.301-46.237-34.776-76.8-34.776-41.954 0-70.163 26.808-97.443 52.733-28.709 27.283-55.826 53.051-100.47 53.051-8.643 0-17.883-0.97-27.466-2.888-10.402-2.083-21.019 2.475-26.678 11.454-5.659 8.978-5.19 20.517 1.178 29.008 59.243 78.992 135.293 95.573 188.658 95.573 31.79 0 57.109-5.984 69.373-9.552 27.166-7.902 52.106-27.757 69.648-52.627 17.542 24.87 42.482 44.723 69.648 52.627 12.266 3.566 37.587 9.554 69.374 9.552 53.366-0.002 129.416-16.584 188.656-95.573 6.371-8.49 6.84-20.029 1.181-29.006zM402.45 692.219c-9.646 2.806-29.63 7.514-55.070 7.514-29.939 0-69.050-6.722-105.958-33.501 47.877-9.141 79.642-39.328 106.006-64.384 25.213-23.962 41.706-38.648 62.173-38.648 28.232 0 51.2 22.968 51.2 51.2 0 31.275-28.358 69.094-58.35 77.819zM625.422 699.733c-25.437 0.002-45.424-4.706-55.070-7.514-29.994-8.725-58.352-46.544-58.352-77.819 0-28.232 22.968-51.2 51.2-51.2 20.469 0 36.962 14.686 62.176 38.646 26.365 25.053 58.13 55.238 106.005 64.382-36.907 26.781-76.019 33.504-105.958 33.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache2.js
new file mode 100644
index 00000000..04f9b823
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mustache2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Mustache2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.126 522.853c-6.094-8.646-16.875-12.65-27.136-10.090-19.781 4.946-38.254 7.453-54.912 7.453-0.003 0-0.010 0-0.014 0-65.402-0.006-99.11-38.634-134.798-79.53-33.658-38.57-71.808-82.286-136.866-82.286-53.368 0-100.459 27.366-128 68.795-27.539-41.429-74.632-68.795-128-68.795-65.058 0-103.206 43.718-136.864 82.29-35.688 40.899-69.397 79.528-134.798 79.528-16.667 0-35.147-2.507-54.93-7.453-10.258-2.565-21.042 1.443-27.134 10.090s-6.242 20.147-0.374 28.947c98.427 147.64 231.651 163.579 284.362 163.579 28.206 0 55.206-4.168 78.083-12.056 51.947-17.909 94.346-53.982 119.656-98.17 25.31 44.187 67.707 80.261 119.656 98.17 22.878 7.888 49.878 12.056 78.085 12.056 52.709-0.002 185.936-15.942 284.36-163.579 5.866-8.802 5.718-20.302-0.374-28.949zM350.056 654.92c-17.571 6.058-38.802 9.259-61.395 9.259-38.088 0-126.133-10.061-203.84-92.77 0.64 0.005 1.28 0.008 1.917 0.008 88.675 0 135.638-53.819 173.374-97.064 35.034-40.147 58.523-64.754 98.288-64.754 56.464 0 102.4 45.936 102.4 102.4 0 60.691-46.574 120.797-110.744 142.92zM684.139 664.179c-22.594 0-43.824-3.202-61.395-9.259-64.17-22.123-110.744-82.229-110.744-142.92 0-56.464 45.936-102.4 102.4-102.4 39.766 0 63.254 24.605 98.29 64.752 37.734 43.242 84.698 97.058 173.37 97.066 0.008 0 0.013 0 0.019 0 0.632 0 1.266-0.003 1.901-0.008-77.707 82.707-165.752 92.768-203.84 92.77z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MustacheGlasses.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MustacheGlasses.js
new file mode 100644
index 00000000..f47fe7b3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/MustacheGlasses.js
@@ -0,0 +1,13 @@
+// Icon: Linear.MustacheGlasses
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M940.99 768.765c-19.781 4.946-38.254 7.453-54.912 7.453-0.003 0-0.010 0-0.014 0-65.402-0.006-99.11-38.634-134.798-79.53-33.658-38.571-71.808-82.288-136.866-82.288-53.368 0-100.459 27.366-128 68.795-27.539-41.429-74.632-68.795-128-68.795-65.058 0-103.206 43.718-136.864 82.29-35.688 40.899-69.397 79.528-134.798 79.528-16.667 0-35.147-2.507-54.93-7.453-10.258-2.565-21.042 1.443-27.134 10.090s-6.242 20.147-0.374 28.947c98.427 147.64 231.651 163.579 284.362 163.579 28.206 0 55.206-4.168 78.083-12.056 51.947-17.91 94.346-53.984 119.656-98.171 25.31 44.187 67.707 80.261 119.656 98.171 22.878 7.888 49.878 12.056 78.085 12.056 52.709-0.002 185.936-15.942 284.36-163.579 5.867-8.8 5.718-20.301-0.373-28.947-6.096-8.648-16.875-12.651-27.138-10.090zM350.056 910.92c-17.571 6.058-38.802 9.259-61.395 9.259-38.088 0-126.133-10.061-203.84-92.77 0.64 0.005 1.28 0.008 1.917 0.008 88.675 0 135.638-53.819 173.374-97.064 35.034-40.147 58.523-64.754 98.288-64.754 56.464 0 102.4 45.936 102.4 102.4 0 60.69-46.574 120.795-110.744 142.92zM684.139 920.179c-22.594 0-43.824-3.202-61.395-9.259-64.17-22.125-110.744-82.23-110.744-142.92 0-56.464 45.936-102.4 102.4-102.4 39.766 0 63.254 24.605 98.29 64.752 37.734 43.242 84.698 97.058 173.37 97.066 0.008 0 0.013 0 0.019 0 0.632 0 1.266-0.003 1.901-0.008-77.707 82.707-165.752 92.768-203.84 92.77z' />
+            <path d='M25.6 307.2h25.6c0 112.928 91.872 204.8 204.8 204.8s204.8-91.872 204.8-204.8v-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v25.6c0 112.928 91.874 204.8 204.8 204.8s204.8-91.872 204.8-204.8h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-32.080c-22.792-88.234-103.067-153.6-198.32-153.6-81.613 0-152.219 47.99-185.106 117.23-12.71-9.314-28.366-14.83-45.294-14.83s-32.584 5.517-45.293 14.83c-32.888-69.24-103.494-117.23-185.107-117.23-95.254 0-175.528 65.366-198.32 153.6h-32.080c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6zM716.8 153.6c84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6 68.904-153.6 153.6-153.6zM256 153.6c84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6 68.904-153.6 153.6-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mute.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mute.js
new file mode 100644
index 00000000..9e21df1f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Mute.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Mute
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M554.725 262.571c-10.507-9.459-26.694-8.606-36.154 1.902l-57.771 64.192v-111.066c0-36.877-21.853-53.384-43.509-53.384-12.64 0-25.318 5.33-37.682 15.838l-209.819 178.346h-92.99c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h34.68l-53.707 59.675c-9.459 10.509-8.606 26.696 1.902 36.154 4.893 4.403 11.016 6.571 17.117 6.571 7.005 0 13.982-2.858 19.037-8.475l79.95-88.834 203.83 173.254c12.363 10.509 25.040 15.838 37.68 15.838 0 0 0 0 0.002 0 13.931 0 26.429-6.762 34.288-18.55 6.118-9.178 9.221-20.898 9.221-34.834v-452.398l95.829-106.475c9.458-10.51 8.605-26.696-1.904-36.155zM409.6 221.76v163.795l-204.8 227.554v-217.27l204.8-174.078zM51.2 640v-204.8c0-14.115 11.485-25.6 25.6-25.6h76.8v256h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM409.6 853.442l-199.557-169.622 199.557-221.728v391.35z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Network.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Network.js
new file mode 100644
index 00000000..9184c185
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Network.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Network
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 193.664c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936s-50.594-252.067-142.464-343.936zM767.614 512c-1.614-54.861-8.397-108.077-19.944-157.834 18.349 7.445 35.786 15.712 52.131 24.792 67.035 37.242 108.341 83.742 119.011 133.042h-151.198zM716.387 512h-204.387v-204.387c62.846 1.954 123.118 11.086 177.706 26.682 15.595 54.587 24.728 114.859 26.682 177.706zM512 256.386v-151.2c49.299 10.672 95.798 51.976 133.040 119.011 9.082 16.346 17.349 33.784 24.792 52.131-49.755-11.546-102.971-18.328-157.832-19.942zM460.8 105.187v151.2c-54.861 1.613-108.077 8.397-157.834 19.942 7.445-18.347 15.712-35.786 24.792-52.131 37.242-67.035 83.742-108.341 133.042-119.011zM460.8 307.613v204.387h-204.387c1.954-62.846 11.086-123.118 26.682-177.706 54.587-15.597 114.859-24.728 177.706-26.682zM205.186 512h-151.2c10.67-49.299 51.976-95.8 119.011-133.042 16.346-9.080 33.784-17.347 52.131-24.792-11.546 49.757-18.328 102.973-19.942 157.834zM205.186 563.2c1.613 54.861 8.397 108.077 19.942 157.834-18.347-7.443-35.786-15.71-52.131-24.792-67.034-37.243-108.338-83.742-119.010-133.042h151.198zM256.413 563.2h204.387v204.387c-62.846-1.954-123.118-11.086-177.706-26.682-15.597-54.587-24.728-114.861-26.682-177.706zM460.8 818.814v151.198c-49.299-10.67-95.8-51.973-133.042-119.010-9.082-16.346-17.349-33.784-24.794-52.133 49.758 11.547 102.974 18.33 157.835 19.944zM512 970.013v-151.198c54.861-1.614 108.077-8.397 157.834-19.944-7.443 18.349-15.71 35.787-24.792 52.133-37.243 67.035-83.742 108.339-133.042 119.010zM512 767.587v-204.387h204.387c-1.954 62.845-11.086 123.118-26.682 177.706-54.587 15.595-114.859 24.728-177.706 26.682zM767.614 563.2h151.198c-10.67 49.299-51.974 95.798-119.011 133.040-16.346 9.082-33.782 17.349-52.13 24.792 11.546-49.755 18.328-102.971 19.942-157.832zM892.512 381.195c-19.362-16.886-42.019-32.645-67.845-46.994-28.654-15.92-60.242-29.574-94.053-40.818-11.242-33.81-24.899-65.397-40.818-94.051-14.349-25.827-30.106-48.485-46.994-67.846 114.358 44.194 205.517 135.352 249.709 249.709zM329.995 131.488c-16.886 19.36-32.645 42.019-46.994 67.845-15.92 28.654-29.574 60.242-40.818 94.051-33.81 11.243-65.397 24.899-94.051 40.818-25.826 14.347-48.485 30.107-67.845 46.994 44.192-114.357 135.35-205.515 249.707-249.707zM80.286 694.003c19.362 16.888 42.019 32.645 67.846 46.994 28.654 15.918 60.242 29.574 94.051 40.818 11.243 33.811 24.899 65.398 40.818 94.053 14.347 25.827 30.107 48.485 46.994 67.845-114.357-44.192-205.515-135.35-249.709-249.709zM642.803 943.712c16.888-19.36 32.645-42.019 46.994-67.845 15.92-28.654 29.574-60.242 40.819-94.053 33.81-11.242 65.397-24.899 94.051-40.818 25.827-14.349 48.486-30.106 67.845-46.994-44.192 114.358-135.35 205.517-249.709 249.709z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NetworkLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NetworkLock.js
new file mode 100644
index 00000000..002fe8cc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NetworkLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.NetworkLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 193.664c-91.869-91.869-214.014-142.464-343.936-142.464-14.138 0-25.6 11.462-25.6 25.6v435.2h-435.2c-14.138 0-25.6 11.461-25.6 25.6 0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936s-50.594-252.067-142.464-343.936zM327.758 851.002c-9.080-16.346-17.347-33.782-24.792-52.13 49.757 11.546 102.973 18.328 157.834 19.942v151.198c-49.299-10.67-95.8-51.976-133.042-119.011zM512 970.013v-151.198c54.861-1.614 108.077-8.397 157.834-19.944-7.443 18.349-15.71 35.786-24.792 52.131-37.243 67.035-83.742 108.341-133.042 119.011zM512 767.587v-204.387h204.387c-1.954 62.846-11.086 123.118-26.682 177.706-54.587 15.595-114.859 24.728-177.706 26.682zM767.614 512c-1.614-54.861-8.397-108.077-19.942-157.834 18.347 7.445 35.784 15.712 52.13 24.792 67.035 37.242 108.341 83.742 119.011 133.042h-151.198zM767.614 563.2h151.198c-10.67 49.299-51.974 95.798-119.011 133.040-16.346 9.082-33.782 17.349-52.131 24.792 11.547-49.755 18.33-102.971 19.944-157.832zM892.512 381.195c-19.362-16.886-42.019-32.645-67.845-46.994-28.654-15.92-60.242-29.574-94.053-40.818-11.242-33.81-24.899-65.397-40.818-94.051-14.349-25.827-30.106-48.485-46.994-67.846 114.358 44.194 205.517 135.352 249.709 249.709zM645.040 224.198c9.082 16.346 17.349 33.784 24.792 52.131-49.757-11.546-102.971-18.33-157.834-19.942v-151.2c49.301 10.672 95.8 51.976 133.042 119.011zM512 307.613c62.846 1.954 123.118 11.086 177.706 26.682 15.595 54.587 24.728 114.861 26.682 177.706h-204.387v-204.387zM460.8 767.587c-62.846-1.954-123.118-11.086-177.706-26.682-15.595-54.587-24.728-114.859-26.682-177.706h204.387v204.387zM225.128 721.034c-18.347-7.443-35.786-15.71-52.131-24.792-67.034-37.243-108.338-83.742-119.010-133.042h151.2c1.613 54.861 8.395 108.077 19.941 157.834zM80.286 694.003c19.362 16.888 42.019 32.645 67.846 46.994 28.654 15.918 60.242 29.574 94.051 40.818 11.243 33.811 24.899 65.398 40.818 94.053 14.347 25.827 30.107 48.485 46.994 67.845-114.357-44.192-205.515-135.35-249.709-249.709zM642.803 943.712c16.888-19.36 32.645-42.019 46.994-67.845 15.918-28.654 29.574-60.242 40.818-94.053 33.811-11.242 65.398-24.899 94.053-40.818 25.827-14.349 48.486-30.106 67.845-46.994-44.192 114.358-135.35 205.517-249.709 249.709z' />
+            <path d='M358.4 158.003v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.347 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.453 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM230.4 51.2c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM358.4 384c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Neutral.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Neutral.js
new file mode 100644
index 00000000..628f3bbe
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Neutral.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Neutral
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M691.2 665.6h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NewTab.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NewTab.js
new file mode 100644
index 00000000..30dafbf4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NewTab.js
@@ -0,0 +1,16 @@
+// Icon: Linear.NewTab
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M153.6 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M947.2 51.2h-870.4c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-435.2h384c42.347 0 76.8-34.453 76.8-76.8 0-14.115 11.485-25.6 25.6-25.6h256c14.115 0 25.6 11.485 25.6 25.6 0 42.347 34.451 76.8 76.8 76.8h76.8v588.8c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h716.8c42.349 0 76.8-34.451 76.8-76.8v-768c0-42.347-34.451-76.8-76.8-76.8zM896 256c-14.115 0-25.6-11.485-25.6-25.6 0-42.347-34.451-76.8-76.8-76.8h-256c-42.347 0-76.8 34.453-76.8 76.8 0 14.115-11.485 25.6-25.6 25.6h-384v-128c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v128h-76.8z' />
+            <path d='M384 563.2h-153.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-263.498 263.499c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l263.499-263.498v91.797c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.139-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/News.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/News.js
new file mode 100644
index 00000000..096362f8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/News.js
@@ -0,0 +1,17 @@
+// Icon: Linear.News
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 716.8h-307.2c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6v204.8c0 14.139-11.461 25.6-25.6 25.6zM460.8 665.6h256v-153.6h-256v153.6z' />
+            <path d='M332.8 512h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 614.4h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 716.8h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M998.4 307.2c-14.139 0-25.6 11.462-25.6 25.6v460.8c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h768c14.115 0 25.6 11.485 25.6 25.6v460.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-460.8c0-42.347-34.451-76.8-76.8-76.8h-768c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M742.4 409.6h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NextCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NextCircle.js
new file mode 100644
index 00000000..6b27889f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NextCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.NextCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M332.795 819.2c-3.683 0-7.389-0.794-10.854-2.418-8.995-4.213-14.741-13.25-14.741-23.182v-512c0-9.933 5.746-18.97 14.741-23.182 8.997-4.214 19.616-2.842 27.246 3.517l307.2 256c5.838 4.862 9.213 12.069 9.213 19.666s-3.374 14.803-9.211 19.666l-307.2 256c-4.691 3.91-10.514 5.934-16.394 5.934zM358.4 336.258v402.686l241.611-201.344-241.611-201.342z' />
+            <path d='M691.2 768c-14.139 0-25.6-11.461-25.6-25.6v-409.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Notification.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Notification.js
new file mode 100644
index 00000000..fb694cbd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Notification.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Notification
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1007.142c-5.28 0-10.562-1.63-15.048-4.89l-109.966-79.898h-135.928c-11.091 0-20.92-7.141-24.347-17.69l-42.003-129.274-109.968-79.898c-8.971-6.518-12.726-18.074-9.299-28.622l42.003-129.272-42.003-129.275c-3.427-10.547 0.328-22.102 9.299-28.622l109.968-79.896 42.003-129.275c3.427-10.547 13.256-17.69 24.347-17.69h135.928l109.966-79.896c8.973-6.518 21.122-6.518 30.096 0l109.966 79.896h135.928c11.091 0 20.92 7.141 24.347 17.69l42.005 129.275 109.966 79.896c8.973 6.518 12.726 18.074 9.299 28.622l-42.002 129.275 42.003 129.275c3.427 10.549-0.326 22.102-9.299 28.622l-109.966 79.898-42.005 129.274c-3.427 10.549-13.256 17.69-24.347 17.69h-135.926l-109.968 79.898c-4.488 3.256-9.77 4.886-15.050 4.886zM244.056 871.157h125.646c5.406 0 10.674 1.71 15.048 4.89l101.65 73.853 101.65-73.853c4.373-3.178 9.64-4.89 15.046-4.89h125.645l38.829-119.496c1.67-5.142 4.926-9.622 9.299-12.8l101.65-73.853-38.827-119.498c-1.67-5.142-1.67-10.68 0-15.822l38.827-119.496-101.65-73.853c-4.373-3.178-7.63-7.659-9.299-12.8l-38.829-119.498h-125.645c-5.406 0-10.674-1.712-15.046-4.89l-101.65-73.851-101.65 73.853c-4.374 3.178-9.642 4.89-15.048 4.89h-125.646l-38.827 119.498c-1.67 5.141-4.926 9.622-9.299 12.8l-101.65 73.851 38.827 119.498c1.67 5.142 1.67 10.68 0 15.822l-38.827 119.496 101.65 73.853c4.373 3.178 7.629 7.658 9.299 12.8l38.827 119.496z' />
+            <path d='M486.4 614.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 768c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NotificationCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NotificationCircle.js
new file mode 100644
index 00000000..ce8a7ed6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/NotificationCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.NotificationCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M486.4 921.6c-0.002 0 0 0 0 0-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6v0c14.139 0 25.6 11.462 25.6 25.6v51.2c0 14.138-11.464 25.6-25.6 25.6z' />
+            <path d='M486.4 768c-14.138 0-25.6-11.461-25.6-25.6v-512c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v512c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/OilPressure.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/OilPressure.js
new file mode 100644
index 00000000..9f709680
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/OilPressure.js
@@ -0,0 +1,13 @@
+// Icon: Linear.OilPressure
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M965.301 365.899l-51.2-51.2c-0.010-0.010-0.019-0.019-0.029-0.029-0.005-0.005-0.010-0.008-0.014-0.013s-0.010-0.010-0.014-0.014c-3.592-3.57-8.051-5.901-12.778-6.894-0.010-0.002-0.021-0.003-0.032-0.006-1.147-0.238-2.312-0.4-3.49-0.482-0.010 0-0.014-0.002-0.022-0.002-4-0.269-8.082 0.395-11.901 2.051-0.005 0.002-0.008 0.003-0.013 0.005-0.006 0.003-0.014 0.006-0.022 0.010-0.445 0.194-0.885 0.4-1.317 0.618l-290.619 145.309-38.154-38.152c-4.8-4.802-11.312-7.499-18.101-7.499h-76.8v-51.2h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-153.6v-25.6c0-11.43-7.578-21.475-18.566-24.614l-179.2-51.2c-7.013-2.003-14.546-0.92-20.71 2.974-6.165 3.898-10.374 10.237-11.573 17.432l-25.6 153.6c-2.195 13.165 6.094 25.806 19.043 29.045l185.411 46.35v133.613c0 14.139 11.462 25.6 25.6 25.6h460.8c9.187 0 17.669-4.922 22.227-12.899l188.171-329.299 27.501 27.501c9.997 9.998 26.206 9.998 36.203 0 4.998-5 7.498-11.55 7.498-18.102s-2.499-13.102-7.499-18.101zM54.736 467.296l17-102.003 133.064 38.018v101.501l-150.064-37.515zM676.344 665.6h-420.344v-204.8h270.997l43.701 43.701c7.792 7.792 19.696 9.723 29.55 4.797l231.574-115.789-155.478 272.091z' />
+            <path d='M947.2 665.6c-42.349 0-76.8-34.451-76.8-76.8 0-22.358 15.045-44.522 30.973-67.987 7.21-10.621 19.24-28.346 20.229-34.742 0.178-13.987 11.57-25.27 25.598-25.27s25.421 11.283 25.598 25.269c0.987 6.398 13.019 24.123 20.229 34.742 15.928 23.467 30.973 45.63 30.973 67.989 0 42.349-34.451 76.8-76.8 76.8zM947.2 544.454c-1.146 1.698-2.301 3.402-3.464 5.112-8.15 12.008-21.792 32.102-22.138 39.288 0.002 14.061 11.486 25.546 25.602 25.546s25.6-11.485 25.6-25.6c-0.344-7.13-13.986-27.226-22.136-39.234-1.163-1.71-2.318-3.414-3.464-5.112z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outbox.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outbox.js
new file mode 100644
index 00000000..a9e31460
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outbox.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Outbox
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 480.357l-133.406-266.811c-16.808-33.614-59.413-59.946-96.994-59.946h-128c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h128c18.515 0 42.918 15.083 51.2 31.643l133.406 266.81c1.413 2.827 2.802 5.978 4.152 9.363-3.134-0.39-6.32-0.616-9.558-0.616h-256c-14.139 0-25.6 11.461-25.6 25.6 0 70.579-57.421 128-128 128s-128-57.421-128-128c0-14.139-11.462-25.6-25.6-25.6h-256c-3.237 0-6.422 0.226-9.557 0.616 1.349-3.384 2.738-6.536 4.152-9.363l133.405-266.81c8.28-16.56 32.685-31.643 51.2-31.643h128c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-128c-37.582 0-80.187 26.331-96.995 59.946l-133.405 266.811c-14.355 28.71-25.6 76.344-25.6 108.443v204.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-32.099-11.245-79.734-25.6-108.443zM921.6 793.6c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h232.224c12.459 86.728 87.256 153.6 177.376 153.6s164.917-66.872 177.376-153.6h232.224c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+            <path d='M606.901 289.098l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.998-9.997 26.206 0 36.205 9.998 9.997 26.206 9.997 36.205 0l58.699-58.699v219.797c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-219.797l58.699 58.699c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.498c9.998-9.998 9.998-26.206 0-36.205z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outlet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outlet.js
new file mode 100644
index 00000000..143078c7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Outlet.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Outlet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 512c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M691.2 460.8c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M247.954 921.606c-5.862 0-11.546-2.013-16.102-5.699-114.806-92.896-180.651-230.784-180.651-378.307 0-147.522 65.843-285.41 180.646-378.306 4.557-3.688 10.242-5.699 16.102-5.699l528.098-0.002c5.862 0 11.547 2.011 16.102 5.699 114.808 92.896 180.651 230.782 180.651 378.307 0 147.52-65.843 285.408-180.646 378.304-4.557 3.688-10.24 5.699-16.102 5.699l-528.098 0.003zM257.154 204.795c-98.472 83.013-154.754 203.79-154.754 332.805s56.283 249.792 154.757 332.806l509.691-0.003c98.469-83.013 154.752-203.79 154.752-332.803 0-129.016-56.283-249.795-154.757-332.806l-509.69 0.002z' />
+            <path d='M588.8 768h-153.6c-14.138 0-25.6-11.461-25.6-25.6v-76.8c0-56.464 45.936-102.4 102.4-102.4s102.4 45.936 102.4 102.4v76.8c0 14.139-11.461 25.6-25.6 25.6zM460.8 716.8h102.4v-51.2c0-28.232-22.968-51.2-51.2-51.2s-51.2 22.968-51.2 51.2v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak.js
new file mode 100644
index 00000000..5d239c2a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak.js
@@ -0,0 +1,20 @@
+// Icon: Linear.PageBreak
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 460.8h-768c-42.347 0-76.8-34.453-76.8-76.8v-307.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h768c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 42.347-34.451 76.8-76.8 76.8z' />
+            <path d='M76.8 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 563.2h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M998.4 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 1024c-14.139 0-25.6-11.461-25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-768c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-307.2c0-42.349 34.453-76.8 76.8-76.8h768c42.349 0 76.8 34.451 76.8 76.8v307.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak2.js
new file mode 100644
index 00000000..0d48085b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PageBreak2.js
@@ -0,0 +1,25 @@
+// Icon: Linear.PageBreak2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 563.2c-14.139 0-25.6-11.461-25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-409.6c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v409.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M742.4 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 358.4h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 460.8h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 768h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 870.4h-358.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 563.2h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 665.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 665.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 665.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 665.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M51.2 768c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l84.299-84.298-84.299-84.299c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l102.4 102.4c9.997 9.997 9.997 26.206 0 36.203l-102.4 102.4c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaintRoller.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaintRoller.js
new file mode 100644
index 00000000..78ecff83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaintRoller.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PaintRoller
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 204.8h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-716.8c-42.347 0-76.8 34.453-76.8 76.8v102.4c0 42.347 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.453 76.8-76.8v-25.6h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-409.6c-42.347 0-76.8 34.453-76.8 76.8v81.203c-29.797 10.568-51.2 39.026-51.2 72.397v256c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8v-256c0-33.371-21.403-61.829-51.2-72.397v-81.203c0-14.115 11.485-25.6 25.6-25.6h409.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8zM819.2 281.6c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h716.8c14.115 0 25.6 11.485 25.6 25.6v102.4zM460.8 896c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-256c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Palette.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Palette.js
new file mode 100644
index 00000000..e5c3cf64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Palette.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Palette
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M179.2 563.2c-42.347 0-76.8-34.451-76.8-76.8 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.453 76.8-76.8 76.8zM179.2 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M537.6 358.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.453 76.8 76.8s-34.451 76.8-76.8 76.8zM537.6 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M512 972.8c-135.947 0-263.949-44.744-360.427-125.987-47.341-39.866-84.562-86.392-110.627-138.288-27.17-54.094-40.946-111.603-40.946-170.925s13.776-116.83 40.947-170.925c26.066-51.896 63.286-98.422 110.627-138.288 96.477-81.245 224.478-125.987 360.426-125.987s263.949 44.742 360.427 125.987c47.341 39.866 84.562 86.392 110.627 138.288 27.17 54.094 40.946 111.603 40.946 170.925 0 94.829-42.234 128.618-81.758 128.618-33.035 0-67.040-23.126-93.296-63.448-16.571-25.461-34.080-39.48-49.301-39.48-5.082 0-10.088 1.518-15.306 4.642-28.771 17.226-11.758 63.736 0.946 89.928 41.061 84.669 44.467 158.632 9.85 213.891-42.002 67.051-137.262 101.050-283.134 101.050zM512 153.6c-254.086 0-460.8 172.262-460.8 384s206.714 384 460.8 384c69.928 0 126.646-8.144 168.578-24.203 33.24-12.731 57.184-30.504 71.166-52.827 31.298-49.963 10.461-116.962-12.53-164.368-49.166-101.374-3.214-143.006 18.826-156.202 13.206-7.902 27.203-11.91 41.605-11.91 23.435 0 58.456 10.886 92.211 62.747 19.309 29.656 39.211 40.181 50.386 40.181 18.277 0 30.558-31.114 30.558-77.418 0-211.738-206.714-384-460.8-384z' />
+            <path d='M563.2 819.2c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM563.2 665.6c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Panorama.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Panorama.js
new file mode 100644
index 00000000..11702636
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Panorama.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Panorama
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 409.6c-42.349 0-76.802-34.453-76.802-76.8s34.453-76.8 76.802-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM793.6 307.2c-14.117 0-25.602 11.485-25.602 25.6s11.485 25.6 25.602 25.6c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6z' />
+            <path d='M865.87 164.39c-94.941-39.974-220.614-61.99-353.87-61.99s-258.93 22.016-353.87 61.99c-101.971 42.936-158.13 102.744-158.13 168.41v409.6c0 65.666 56.158 125.474 158.13 168.41 94.941 39.974 220.614 61.99 353.87 61.99s258.93-22.016 353.87-61.99c101.971-42.936 158.13-102.744 158.13-168.41v-409.6c0-65.666-56.158-125.474-158.13-168.41zM177.998 211.579c88.795-37.389 207.413-57.979 334.002-57.979s245.206 20.59 334.003 57.979c80.581 33.928 126.797 78.112 126.797 121.221s-46.216 87.293-126.797 121.221c-22.691 9.554-47.341 18.003-73.562 25.301l-232.862-254.074c-14.034-15.31-33.53-23.888-53.526-23.485-19.984 0.386-39.147 9.693-52.578 25.533l-92.099 108.626-6.629-7.458c-13.859-15.595-33.213-24.398-53.187-24.107-19.941 0.274-39.077 9.59-52.502 25.56l-89.086 105.965c-56.904-30.784-88.771-67.301-88.771-103.082 0-43.109 46.216-87.293 126.798-121.221zM426.514 508.79c-89.312-6.773-171.64-24.149-238.376-50.637l80.11-95.29c3.904-4.645 8.883-7.242 14.016-7.312 5.158-0.029 10.182 2.389 14.213 6.925l130.037 146.314zM497.779 511.902l-122.051-137.33 96.8-114.166c3.987-4.702 9.141-7.35 14.514-7.453 5.376-0.086 10.626 2.342 14.792 6.888l213.579 233.034c-62.605 12.515-131.728 19.125-203.413 19.125-4.754 0-9.491-0.038-14.221-0.098zM846.003 863.622c-88.797 37.387-207.414 57.978-334.003 57.978s-245.206-20.59-334.002-57.978c-80.582-33.93-126.798-78.114-126.798-121.222v-101.71c20.994 19.539 48.118 37.493 80.906 53.517 78.050 38.146 185.085 63.432 301.387 71.2 0.581 0.037 1.158 0.058 1.733 0.058 13.36 0 24.614-10.37 25.517-23.896 0.942-14.107-9.73-26.307-23.837-27.25-109.832-7.334-210.094-30.814-282.317-66.112-66.672-32.584-103.389-71.866-103.389-110.606v-101.765c26.232 24.421 62.163 46.525 106.93 65.373 94.941 39.976 220.614 61.992 353.87 61.992s258.93-22.016 353.87-61.99c44.766-18.848 80.699-40.952 106.93-65.373v101.763c0 41.466-43.33 84.403-118.877 117.805-83.17 36.77-195.707 58.477-316.883 61.123-12.438 0.272-22.882 9.446-24.75 21.749s5.376 24.165 17.174 28.118l153.6 51.478c2.699 0.904 5.44 1.334 8.138 1.333 10.702 0 20.682-6.765 24.27-17.472 4.493-13.405-2.733-27.914-16.139-32.408l-34.15-11.445c78.766-10.709 150.674-29.667 209.44-55.65 40.714-18 73.662-38.845 98.174-61.704v101.872c0.003 43.109-46.213 87.293-126.794 121.222z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pants.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pants.js
new file mode 100644
index 00000000..fc493e9d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pants.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pants
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M972.451 942.992l-153.6-921.6c-2.058-12.344-12.738-21.392-25.251-21.392h-614.4c-12.514 0-23.195 9.048-25.251 21.392l-153.6 921.6c-2.272 13.629 6.682 26.602 20.232 29.31l256 51.2c12.882 2.571 25.626-5.019 29.488-17.574l180.331-586.078 180.333 586.078c3.357 10.912 13.418 18.075 24.448 18.075 1.664 0 3.352-0.163 5.038-0.499l256-51.2c13.549-2.71 22.504-15.683 20.232-29.312zM805.947 255.4c-4.093 0.392-8.211 0.6-12.347 0.6-61.814 0-113.531-44.045-125.426-102.4h120.806l16.966 101.8zM780.446 102.4h-217.246v-51.2h208.714l8.533 51.2zM460.8 102.4v-51.2h51.2v51.2h-51.2zM409.6 51.2v51.2h-217.246l8.533-51.2h208.714zM183.821 153.6h120.803c-11.893 58.355-63.61 102.4-125.424 102.4-4.136 0-8.254-0.208-12.347-0.6l16.968-101.8zM708.864 968.76l-197.997-643.488c-3.304-10.742-13.229-18.072-24.467-18.072s-21.163 7.33-24.467 18.070l-197.997 643.488-209.008-41.802 103.498-620.979c6.875 0.797 13.81 1.222 20.774 1.222 90.12 0 164.902-66.874 177.363-153.6h259.672c12.461 86.726 87.243 153.6 177.365 153.6 6.965 0 13.899-0.426 20.776-1.221l103.498 620.979-209.010 41.802z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaperPlane.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaperPlane.js
new file mode 100644
index 00000000..5ceb3377
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PaperPlane.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PaperPlane
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1015.456 57.709c-7.371-6.587-17.877-8.341-26.99-4.502l-972.8 409.6c-9.822 4.136-16.056 13.925-15.646 24.576 0.41 10.65 7.374 19.933 17.486 23.302l289.694 96.566v288.749c0 10.835 6.822 20.499 17.034 24.125 2.805 0.995 5.698 1.477 8.562 1.477 7.562 0 14.917-3.358 19.874-9.458l141.472-174.12 230.27 227.392c4.851 4.79 11.339 7.384 17.989 7.384 2.133 0 4.283-0.267 6.402-0.814 8.72-2.253 15.616-8.922 18.157-17.563l256-870.4c2.792-9.483-0.13-19.726-7.502-26.314zM825.862 177.224l-497.882 382.986-229.79-76.597 727.672-306.389zM358.4 601.405l482.062-370.816-368.346 453.347c-0.011 0.013-0.022 0.027-0.034 0.040l-113.683 139.92v-222.491zM729.922 898.899l-203.342-200.8 411.28-506.192-207.938 706.992z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paperclip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paperclip.js
new file mode 100644
index 00000000..6b3366ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paperclip.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Paperclip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-127.043 0-230.4-103.357-230.4-230.4v-614.4c0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2v563.2c0 70.579-57.421 128-128 128s-128-57.421-128-128v-307.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8v-563.2c0-70.579-57.421-128-128-128s-128 57.421-128 128v614.4c0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2v-358.4c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v358.4c0 127.043-103.357 230.4-230.4 230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Papers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Papers.js
new file mode 100644
index 00000000..0eb3f6f6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Papers.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Papers
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 460.8h-153.6c-14.138 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.461 25.6-25.6 25.6zM409.6 409.6h102.4v-153.6h-102.4v153.6z' />
+            <path d='M281.6 256h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 358.4h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 460.8h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 563.2h-358.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 665.6h-358.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 256h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-563.2c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 42.349 34.453 76.8 76.8 76.8h25.6v25.6c0 42.349 34.453 76.8 76.8 76.8h25.6v25.6c0 42.349 34.453 76.8 76.8 76.8h563.2c42.349 0 76.8-34.451 76.8-76.8v-614.4c0-42.347-34.451-76.8-76.8-76.8zM51.2 742.4v-614.4c0-14.115 11.485-25.6 25.6-25.6h563.2c14.115 0 25.6 11.485 25.6 25.6v614.4c0 14.115-11.485 25.6-25.6 25.6h-563.2c-14.115 0-25.6-11.485-25.6-25.6zM153.6 844.8v-25.6h486.4c42.349 0 76.8-34.451 76.8-76.8v-537.6h25.6c14.115 0 25.6 11.485 25.6 25.6v614.4c0 14.115-11.485 25.6-25.6 25.6h-563.2c-14.115 0-25.6-11.485-25.6-25.6zM870.4 947.2c0 14.115-11.485 25.6-25.6 25.6h-563.2c-14.115 0-25.6-11.485-25.6-25.6v-25.6h486.4c42.349 0 76.8-34.451 76.8-76.8v-537.6h25.6c14.115 0 25.6 11.485 25.6 25.6v614.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Parking.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Parking.js
new file mode 100644
index 00000000..33e5c510
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Parking.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Parking
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M889.032 627.304c-6.091-6.47-13.005-12.371-20.787-17.736-6.659-40.634-28.302-164.531-51.747-211.418-24.736-49.47-107.541-71.659-172.648-81.562-13.986-2.133-27.034 7.482-29.16 21.459-2.125 13.978 7.483 27.032 21.459 29.158 85.89 13.064 125.822 36.379 134.555 53.842 14.715 29.432 31.022 107.291 41.139 162.955-2.44-0.715-4.917-1.411-7.446-2.082-64.906-17.19-155.32-18.627-266.774-18.715-0.008 0-0.013 0-0.021 0-14.128 0-25.589 11.448-25.6 25.579-0.011 14.139 11.44 25.61 25.579 25.621 107.69 0.086 194.75 1.394 253.706 17.010 56.194 14.883 79.114 39.619 79.114 85.384v128c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-15.746 2.693-28.702 8.23-39.614 6.398-12.606 1.366-28.014-11.242-34.414-12.608-6.395-28.014-1.366-34.414 11.242-9.141 18.008-13.774 39.133-13.774 62.787v128c0 33.371 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.568 51.2-39.024 51.2-72.397v-128c0-36.424-10.958-66.534-32.568-89.496zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2z' />
+            <path d='M230.4 512c-14.138 0-25.6-11.462-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6h76.8c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4h-51.2v76.8c0 14.138-11.462 25.6-25.6 25.6zM256 358.4h51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-51.2v102.4z' />
+            <path d='M281.6 614.4c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM281.6 102.4c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4 230.4-103.357 230.4-230.4-103.357-230.4-230.4-230.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paste.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paste.js
new file mode 100644
index 00000000..fb2aee8b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paste.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Paste
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 153.6c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M793.6 358.4h-25.6v-128c0-42.347-34.453-76.8-76.8-76.8h-48.426c-10.68-14.824-24.949-26.909-42.526-35.698-14.091-7.045-27.994-10.891-39.134-12.99-10.898-59.6-63.213-104.912-125.914-104.912s-115.014 45.312-125.914 104.912c-11.141 2.099-25.043 5.944-39.134 12.99-17.579 8.789-31.848 20.874-42.528 35.698h-48.424c-42.347 0-76.8 34.453-76.8 76.8v563.2c0 42.347 34.453 76.8 76.8 76.8h128v76.8c0 42.347 34.453 76.8 76.8 76.8h409.6c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8zM291.749 164.362c19.898-10.402 40.982-10.76 41.051-10.762 14.138 0 25.6-11.462 25.6-25.6 0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.138 11.32 25.6 25.458 25.6 0.211 0.002 21.298 0.362 41.194 10.763 16.942 8.858 27.754 22.195 32.666 40.438h-352.234c4.912-18.245 15.722-31.582 32.666-40.44zM179.2 819.2c-14.115 0-25.6-11.485-25.6-25.6v-563.2c0-14.115 11.485-25.6 25.6-25.6h27.672c-1.363 8.166-2.072 16.707-2.072 25.6 0 14.138 11.462 25.6 25.6 25.6h409.6c0.011 0.002 0.024 0 0.032 0 14.139 0 25.6-11.462 25.6-25.6 0-0.47-0.013-0.938-0.037-1.402-0.069-8.39-0.771-16.461-2.062-24.198h27.667c14.115 0 25.6 11.485 25.6 25.6v128h-256c-6.79 0-13.301 2.698-18.102 7.498l-128 128c-4.8 4.802-7.498 11.312-7.498 18.102v307.2h-128zM460.8 420.203v66.197c0 14.115-11.485 25.6-25.6 25.6h-66.195l91.795-91.797zM819.2 947.2c0 14.115-11.485 25.6-25.6 25.6h-409.6c-14.115 0-25.6-11.485-25.6-25.6v-384h76.8c42.347 0 76.8-34.451 76.8-76.8v-76.8h281.6c14.115 0 25.6 11.485 25.6 25.6v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PauseCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PauseCircle.js
new file mode 100644
index 00000000..4e76c17a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PauseCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.PauseCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M384 768h-51.2c-42.347 0-76.8-34.451-76.8-76.8v-307.2c0-42.347 34.453-76.8 76.8-76.8h51.2c42.347 0 76.8 34.453 76.8 76.8v307.2c0 42.349-34.453 76.8-76.8 76.8zM332.8 358.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2z' />
+            <path d='M640 768h-51.2c-42.349 0-76.8-34.451-76.8-76.8v-307.2c0-42.347 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.453 76.8 76.8v307.2c0 42.349-34.451 76.8-76.8 76.8zM588.8 358.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paw.js
new file mode 100644
index 00000000..00e5df87
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Paw.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Paw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M153.6 614.4c-57.421 0-102.4-67.712-102.4-154.155s44.979-154.155 102.4-154.155 102.4 67.712 102.4 154.155-44.979 154.155-102.4 154.155zM153.6 357.291c-24.168 0-51.2 44.030-51.2 102.955s27.032 102.954 51.2 102.954 51.2-44.030 51.2-102.955-27.032-102.954-51.2-102.954z' />
+            <path d='M358.299 409.6c-57.365 0-102.299-67.469-102.299-153.6s44.934-153.6 102.299-153.6 102.299 67.469 102.299 153.6-44.934 153.6-102.299 153.6zM358.299 153.6c-24.122 0-51.099 43.792-51.099 102.4s26.978 102.4 51.099 102.4 51.099-43.792 51.099-102.4-26.978-102.4-51.099-102.4z' />
+            <path d='M614.4 409.6c-57.421 0-102.4-67.469-102.4-153.6s44.979-153.6 102.4-153.6 102.4 67.469 102.4 153.6-44.979 153.6-102.4 153.6zM614.4 153.6c-24.168 0-51.2 43.792-51.2 102.4s27.032 102.4 51.2 102.4 51.2-43.792 51.2-102.4-27.032-102.4-51.2-102.4z' />
+            <path d='M819.2 614.4c-57.421 0-102.4-67.712-102.4-154.155s44.979-154.155 102.4-154.155 102.4 67.712 102.4 154.155-44.979 154.155-102.4 154.155zM819.2 357.291c-24.168 0-51.2 44.030-51.2 102.955s27.032 102.954 51.2 102.954 51.2-44.030 51.2-102.955-27.032-102.954-51.2-102.954z' />
+            <path d='M665.6 921.6c-44.434 0-74.482-15.032-100.99-28.293-24.573-12.291-45.792-22.907-78.21-22.907-32.298 0-53.52 10.606-78.093 22.888-26.555 13.27-56.654 28.312-101.107 28.312-28.446 0-55.258-15.501-73.557-42.53-32.104-47.421-32.619-119.362-1.413-197.378 56.152-140.381 148.794-220.893 254.17-220.893s198.018 80.512 254.168 220.893c31.206 78.018 30.693 149.958-1.413 197.378-18.298 27.029-45.109 42.53-73.555 42.53zM486.4 819.2c44.507 0 74.582 15.043 101.115 28.317 24.546 12.278 45.742 22.883 78.085 22.883 11.182 0 22.539-7.301 31.16-20.034 22.096-32.635 20.701-88.582-3.728-149.658-47.971-119.928-123.285-188.709-206.632-188.709-83.346 0-158.661 68.781-206.632 188.707-24.43 61.075-25.824 117.022-3.728 149.658 8.621 12.734 19.978 20.035 31.16 20.035 32.371 0 53.618-10.618 78.218-22.912 26.533-13.259 56.605-28.288 100.982-28.288z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen.js
new file mode 100644
index 00000000..a2679dae
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.101 21.898c-14.312-14.314-33.55-21.57-57.178-21.57-38.552 0-90.39 20.173-154.691 60.096-20.602-21.781-59.752-55.149-109.102-59.157-39.395-3.197-76.557 12.355-110.432 46.23-71.957 71.957-107.366 159.792-130.798 217.914-7.962 19.75-17.87 44.333-22.802 49.395-1.678 1.678-6.768 6.766-15.546-0.642-10.034-9.461-25.837-9.282-35.654 0.533-9.998 9.998-9.998 26.206 0 36.203 4.194 4.195 14.976 12.326 28.786 16.2 5.552 1.558 11.064 2.328 16.469 2.328 6.491 0 12.826-1.125 18.893-3.314-7.027 7.202-14.042 14.453-21.035 21.757-180.053 188.078-381.962 446.123-408.661 606.318-1.36 8.157 1.304 16.466 7.149 22.31 4.84 4.842 11.37 7.499 18.102 7.499 1.398 0 2.806-0.114 4.21-0.349 66.966-11.162 155.259-53.531 262.421-125.934 94.797-64.046 199.966-148.87 304.139-245.298 101.602-94.045 194.278-191.611 268.010-282.152 55.093-67.65 125.874-164.242 150.224-240.221 15.402-48.064 11.195-84.451-12.502-108.149zM606.901 83.701c23.026-23.026 45.891-33.309 69.89-31.418 28.702 2.251 53.931 21.411 69.893 36.875-12.624 8.782-25.642 18.197-39.067 28.269-72.926 54.71-155.656 127.411-238.080 208.931 5.494-11.168 11.082-25.010 17.853-41.803 21.877-54.267 54.936-136.277 119.512-200.854zM155.434 780.437l88.171 88.171c-69.91 45.646-132.29 78.139-182.782 94.581 16.483-50.515 49.075-112.971 94.611-182.752zM561.589 614.846c-96.040 88.899-189.934 165.266-274.792 224.547l-102.163-102.165c67.64-96.896 157.245-205.195 261.362-313.95 120.925-126.312 240.387-230.635 335.994-296.29l114.899 114.902c-73.266 106.797-193.818 241.995-335.299 372.955zM965.843 114.422c-7.579 23.651-21.382 51.859-40.506 83.512l-99.403-99.403c50.074-30.282 91.147-47.003 118.989-47.003 14.4 0 19.349 4.949 20.974 6.574 11.858 11.856 5.056 40.376-0.054 56.32z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen2.js
new file mode 100644
index 00000000..0db8b2e6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pen2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M814.080 624.64c-133.638-178.182-211.768-433.933-224.056-491.733 15.328-14.37 24.376-34.67 24.376-56.107 0-42.347-34.451-76.8-76.8-76.8-15.266 0-35.298 1.49-51.2 11.826-15.902-10.336-35.933-11.826-51.2-11.826-42.347 0-76.8 34.453-76.8 76.8 0 21.437 9.050 41.741 24.379 56.11-12.288 57.798-90.421 313.546-224.059 491.73-7.645 10.19-6.63 24.453 2.378 33.461 37.253 37.253 128.971 142.838 143.99 218.182-20.869 8.778-42.019 27.357-63.168 55.557-20.352 27.134-33.853 53.981-34.418 55.11-3.966 7.936-3.544 17.36 1.122 24.907 4.664 7.547 12.904 12.141 21.776 12.141h512c8.872 0 17.112-4.594 21.776-12.141 4.664-7.549 5.090-16.971 1.12-24.907-0.565-1.13-14.066-27.976-34.418-55.11-21.149-28.198-42.298-46.774-63.165-55.555 15.037-75.251 106.741-180.899 143.986-218.184 9.011-9.006 10.024-23.269 2.381-33.461zM486.4 614.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM697.331 972.8h-421.862c18.768-27.090 41.574-51.2 57.331-51.2h307.2c15.758 0 38.566 24.114 57.331 51.2zM696.32 714.24c-45.142 60.187-71.803 112.565-79.547 156.16h-260.747c-7.742-43.595-34.405-95.971-79.546-156.16-24.547-32.73-48.883-60.165-63.974-76.427 74.946-105.171 130.011-228.986 163.626-316.445 17.467-45.451 33.438-92.486 44.966-132.44 16.798-58.211 15.011-66.963 13.942-72.192-1.536-7.528-6.138-13.997-12.622-17.747-7.906-4.573-12.818-13.075-12.818-22.189 0-14.115 11.485-25.6 25.6-25.6 19.445 0 23.709 3.906 23.736 3.946 1.864 2.698 1.864 14.106 1.864 21.654v490.803c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8 0-33.373-21.403-61.83-51.2-72.397v-490.803c0-7.549 0-18.957 1.864-21.654 0.027-0.040 4.291-3.946 23.736-3.946 14.115 0 25.6 11.485 25.6 25.6 0 9.112-4.91 17.614-12.818 22.19-6.485 3.754-11.085 10.222-12.621 17.749-1.067 5.229-2.853 13.981 13.944 72.19 11.528 39.955 27.499 86.99 44.966 132.44 33.613 87.459 88.677 211.272 163.622 316.445-15.091 16.262-39.427 43.696-63.974 76.426z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen3.js
new file mode 100644
index 00000000..14dfe56e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pen3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pen3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M990.901 314.699l-307.2-307.2c-8.429-8.432-21.56-9.925-31.67-3.606l-409.6 256c-7.485 4.678-12.032 12.798-12.032 21.626-0.003 0.504-0.658 51.741-28.995 160.781-26.147 100.619-81.888 272.434-198.939 519.541-4.632 9.778-2.616 21.411 5.034 29.061 4.91 4.912 11.461 7.499 18.109 7.499 3.709 0 7.45-0.806 10.952-2.464 247.109-117.051 418.923-172.792 519.544-198.941 109.042-28.338 160.277-28.992 160.698-28.995 8.827 0 17.032-4.547 21.709-12.032l256-409.6c6.318-10.109 4.822-23.24-3.608-31.669zM702.171 717.502c-49.29 3.731-223.314 27.166-558.454 173.382l343.746-343.746c16.59 10.179 36.088 16.061 56.938 16.061 60.213 0 109.2-48.987 109.2-109.2s-48.987-109.2-109.2-109.2c-60.213 0-109.2 48.987-109.2 109.2 0 20.85 5.882 40.347 16.061 56.936l-343.747 343.747c146.218-335.141 169.651-509.165 173.382-558.454l381.003-238.126 278.4 278.4-238.128 381zM486.4 454c0-31.981 26.019-58 58-58s58 26.019 58 58-26.019 58-58 58-58-26.019-58-58z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenAdd.js
new file mode 100644
index 00000000..c053fff2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenAdd.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PenAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M660.48 624.64c-133.638-178.182-211.768-433.933-224.056-491.733 15.326-14.368 24.376-34.672 24.376-56.107 0-42.347-34.453-76.8-76.8-76.8-15.267 0-35.298 1.49-51.2 11.826-15.902-10.336-35.933-11.826-51.2-11.826-42.347 0-76.8 34.453-76.8 76.8 0 21.438 9.050 41.742 24.379 56.11-12.288 57.798-90.419 313.542-224.059 491.73-7.645 10.19-6.63 24.453 2.378 33.461 37.253 37.253 128.971 142.838 143.99 218.182-20.869 8.778-42.019 27.357-63.168 55.557-20.352 27.134-33.853 53.981-34.418 55.11-3.966 7.936-3.544 17.36 1.122 24.907 4.664 7.549 12.904 12.142 21.776 12.142h512c8.872 0 17.112-4.594 21.776-12.141 4.664-7.549 5.090-16.971 1.12-24.907-0.565-1.13-14.066-27.976-34.418-55.11-21.149-28.198-42.298-46.774-63.165-55.555 15.037-75.251 106.741-180.899 143.986-218.184 9.011-9.008 10.024-23.27 2.381-33.462zM332.8 614.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM543.731 972.8h-421.862c18.768-27.090 41.574-51.2 57.331-51.2h307.2c15.758 0 38.566 24.114 57.331 51.2zM542.72 714.24c-45.141 60.187-71.803 112.565-79.546 156.16h-260.749c-7.742-43.595-34.405-95.971-79.546-156.16-24.547-32.73-48.883-60.165-63.974-76.427 74.946-105.171 130.011-228.986 163.626-316.445 17.469-45.451 33.438-92.486 44.968-132.44 16.798-58.211 15.010-66.963 13.942-72.192-1.536-7.528-6.139-13.997-12.624-17.747-7.907-4.573-12.818-13.075-12.818-22.189 0-14.115 11.485-25.6 25.6-25.6 19.445 0 23.709 3.906 23.736 3.946 1.864 2.698 1.864 14.106 1.864 21.654v490.803c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-33.373-21.403-61.829-51.2-72.397v-490.803c0-7.549 0-18.957 1.864-21.654 0.027-0.040 4.291-3.946 23.736-3.946 14.115 0 25.6 11.485 25.6 25.6 0 9.112-4.91 17.614-12.816 22.19-6.485 3.754-11.085 10.222-12.621 17.749-1.067 5.229-2.853 13.981 13.944 72.19 11.53 39.955 27.499 86.99 44.966 132.44 33.613 87.459 88.677 211.272 163.622 316.445-15.093 16.262-39.429 43.696-63.976 76.426z' />
+            <path d='M947.2 204.8h-128v-128c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-128c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h128v128c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-128h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenRemove.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenRemove.js
new file mode 100644
index 00000000..1dbdf013
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PenRemove.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PenRemove
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M660.48 624.64c-133.638-178.182-211.768-433.933-224.056-491.733 15.326-14.368 24.376-34.672 24.376-56.107 0-42.347-34.453-76.8-76.8-76.8-15.267 0-35.298 1.49-51.2 11.826-15.902-10.336-35.933-11.826-51.2-11.826-42.347 0-76.8 34.453-76.8 76.8 0 21.438 9.050 41.742 24.379 56.11-12.288 57.798-90.419 313.542-224.059 491.73-7.645 10.19-6.63 24.453 2.378 33.461 37.253 37.253 128.971 142.838 143.99 218.182-20.869 8.778-42.019 27.357-63.168 55.557-20.352 27.134-33.853 53.981-34.418 55.11-3.966 7.936-3.544 17.36 1.122 24.907 4.664 7.549 12.904 12.142 21.776 12.142h512c8.872 0 17.112-4.594 21.776-12.141 4.664-7.549 5.090-16.971 1.12-24.907-0.565-1.13-14.066-27.976-34.418-55.11-21.149-28.198-42.298-46.774-63.165-55.555 15.037-75.251 106.741-180.899 143.986-218.184 9.011-9.008 10.024-23.27 2.381-33.462zM332.8 614.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6 11.485-25.6 25.6-25.6zM543.731 972.8h-421.862c18.768-27.090 41.574-51.2 57.331-51.2h307.2c15.758 0 38.566 24.114 57.331 51.2zM542.72 714.24c-45.141 60.187-71.803 112.565-79.546 156.16h-260.749c-7.742-43.595-34.405-95.971-79.546-156.16-24.547-32.73-48.883-60.165-63.974-76.427 74.946-105.171 130.011-228.986 163.626-316.445 17.469-45.451 33.438-92.486 44.968-132.44 16.798-58.211 15.010-66.963 13.942-72.192-1.536-7.528-6.139-13.997-12.624-17.747-7.907-4.573-12.818-13.075-12.818-22.189 0-14.115 11.485-25.6 25.6-25.6 19.445 0 23.709 3.906 23.736 3.946 1.864 2.698 1.864 14.106 1.864 21.654v490.803c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-33.373-21.403-61.829-51.2-72.397v-490.803c0-7.549 0-18.957 1.864-21.654 0.027-0.040 4.291-3.946 23.736-3.946 14.115 0 25.6 11.485 25.6 25.6 0 9.112-4.91 17.614-12.816 22.19-6.485 3.754-11.085 10.222-12.621 17.749-1.067 5.229-2.853 13.981 13.944 72.19 11.53 39.955 27.499 86.99 44.966 132.44 33.613 87.459 88.677 211.272 163.622 316.445-15.093 16.262-39.429 43.696-63.976 76.426z' />
+            <path d='M947.2 256h-307.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil.js
new file mode 100644
index 00000000..489958ea
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pencil
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M978.101 45.898c-28.77-28.768-67.018-44.611-107.701-44.611-40.685 0-78.933 15.843-107.701 44.611l-652.8 652.8c-2.645 2.645-4.678 5.837-5.957 9.354l-102.4 281.6c-3.4 9.347-1.077 19.818 5.957 26.85 4.885 4.888 11.43 7.499 18.104 7.499 2.933 0 5.891-0.502 8.744-1.541l281.6-102.4c3.515-1.28 6.709-3.312 9.354-5.958l652.8-652.8c28.768-28.768 44.613-67.018 44.613-107.702s-15.843-78.933-44.613-107.701zM293.114 873.883l-224.709 81.71 81.712-224.707 566.683-566.683 142.997 142.997-566.683 566.683zM941.899 225.098l-45.899 45.899-142.997-142.997 45.899-45.899c19.098-19.098 44.49-29.614 71.498-29.614s52.4 10.518 71.499 29.616c19.098 19.098 29.616 44.49 29.616 71.498s-10.52 52.4-29.616 71.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil2.js
new file mode 100644
index 00000000..b08f7faf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pencil2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.603 1024c-6.675 0-13.219-2.611-18.106-7.499-7.034-7.034-9.355-17.502-5.957-26.85l102.4-281.6c1.278-3.515 3.312-6.707 5.957-9.354l691.2-691.2c9.997-9.997 26.206-9.997 36.203 0l179.2 179.2c9.998 9.998 9.998 26.206 0 36.205l-691.2 691.2c-2.645 2.645-5.838 4.678-9.354 5.958l-281.6 102.4c-2.851 1.037-5.811 1.539-8.744 1.539zM150.118 730.886l-81.712 224.707 224.709-81.71 669.080-669.083-142.995-142.997-669.082 669.083z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil3.js
new file mode 100644
index 00000000..2725c9ec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pencil3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 307.2c0-141.158-114.84-256-256-256-38.574 0-75.664 8.374-110.234 24.89-2.701 1.29-5.048 3.010-7.050 5.013l-0.016-0.016-540.803 540.813c-3.917 3.917-6.458 8.998-7.24 14.482l-51.2 358.4c-1.139 7.976 1.542 16.026 7.242 21.722 4.834 4.834 11.362 7.499 18.099 7.499 1.203 0 2.413-0.085 3.622-0.258l358.4-51.2c5.483-0.782 10.565-3.323 14.482-7.24l540.413-540.4c0.014-0.013 0.027-0.027 0.038-0.038l0.357-0.357-0.005-0.005c2.002-2.002 3.71-4.362 5.002-7.061 16.518-34.576 24.893-71.666 24.893-110.243zM947.2 307.2c0 29.456-6.104 57.8-18.122 84.328l-58.89 58.89c-5.36-147.034-123.971-265.646-271.006-271.006l58.891-58.891c26.528-12.016 54.874-18.12 84.326-18.12 112.926 0 204.8 91.872 204.8 204.8zM102.659 819.206l21.68-151.766c9.675-1.222 19.464-1.84 29.261-1.84 127.043 0 230.4 103.357 230.4 230.4 0 9.797-0.624 19.584-1.846 29.261l-151.76 21.68c-0.141-70.374-57.36-127.594-127.734-127.734zM543.8 234.797c14.741-2.915 29.842-4.397 45-4.397 54.318 0 104.298 18.906 143.73 50.467l-398.83 398.83c-46.368-38.674-105.312-62.736-169.709-65.086l379.81-379.814zM369.904 715.901l398.829-398.83c31.562 39.432 50.467 89.411 50.467 143.73 0 15.155-1.483 30.258-4.397 45.002l-379.814 379.806c-2.349-64.395-26.413-123.339-65.085-169.707zM95.298 870.736c2.354-0.214 4.722-0.336 7.102-0.336 42.347 0 76.8 34.451 76.8 76.8 0 2.381-0.122 4.749-0.336 7.101l-97.494 13.928 13.928-97.493z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil4.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil4.js
new file mode 100644
index 00000000..19f0af04
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil4.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Pencil4
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.203 870.4c-6.675 0-13.219-2.613-18.106-7.501-7.034-7.034-9.357-17.501-5.957-26.848l102.4-281.6c1.278-3.515 3.312-6.707 5.957-9.355l537.6-537.6c9.997-9.998 26.208-9.998 36.203 0l179.2 179.2c10 9.997 10 26.206 0 36.203l-537.6 537.6c-2.645 2.645-5.837 4.68-9.354 5.96l-281.6 102.4c-2.851 1.038-5.811 1.541-8.744 1.541zM303.718 577.288l-81.712 224.706 224.709-81.71 515.482-515.483-142.997-142.997-515.482 515.485z' />
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v512c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil5.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil5.js
new file mode 100644
index 00000000..e1bea086
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pencil5.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Pencil5
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M978.099 45.898c-28.768-28.768-67.016-44.611-107.699-44.611-40.685 0-78.933 15.843-107.699 44.611l-499.2 499.2c-2.645 2.645-4.678 5.837-5.957 9.357l-102.4 281.6c-3.4 9.347-1.077 19.818 5.957 26.848 4.885 4.89 11.43 7.501 18.104 7.501 2.933 0 5.891-0.501 8.744-1.541l281.6-102.4c3.515-1.28 6.709-3.312 9.354-5.96l499.2-499.2c28.766-28.768 44.614-67.018 44.614-107.702-0.003-40.686-15.846-78.934-44.618-107.702zM446.714 720.283l-224.709 81.71 81.712-224.706 413.083-413.085 142.997 142.997-413.083 413.083zM941.901 225.098l-45.901 45.899-142.997-142.997 45.901-45.899c19.096-19.098 44.488-29.614 71.496-29.614s52.4 10.518 71.501 29.616c19.096 19.098 29.614 44.49 29.614 71.498s-10.52 52.4-29.614 71.498z' />
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-512c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v512c0 42.349-34.451 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilLine.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilLine.js
new file mode 100644
index 00000000..ffca0f53
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilLine.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PencilLine
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128.002 870.4c-6.696 0-13.235-2.63-18.102-7.499-6.574-6.573-9.067-16.195-6.514-25.134l51.2-179.2c1.195-4.182 3.437-7.992 6.514-11.069l563.2-563.2c9.997-9.998 26.206-9.998 36.203 0l128 128c9.998 9.997 9.998 26.206 0 36.203l-563.2 563.2c-3.075 3.077-6.886 5.318-11.069 6.514l-179.2 51.2c-2.32 0.664-4.686 0.986-7.032 0.986zM201.994 679.011l-36.718 128.515 128.515-36.718 540.406-540.408-91.797-91.797-540.406 540.408z' />
+            <path d='M896 972.8h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler.js
new file mode 100644
index 00000000..69c9536e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PencilRuler
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M990.901 929.099l-365.898-365.899 329.696-329.694c29.944-29.944 29.944-78.667 0-108.611l-55.595-55.592c-14.464-14.466-33.75-22.432-54.304-22.432s-39.84 7.966-54.304 22.432l-329.696 329.694-365.899-365.898c-16.656-16.659-40.005-21.624-60.931-12.957-20.954 8.68-33.97 28.73-33.97 52.326v874.731c0 42.349 34.453 76.8 76.8 76.8h874.731c23.597 0 43.646-13.018 52.325-33.97 8.669-20.926 3.706-44.274-12.955-60.931zM332.8 716.8h128c6.79 0 13.301-2.698 18.102-7.499l7.498-7.499 117.397 117.398h-373.397c-14.115 0-25.6-11.485-25.6-25.6v-373.397l117.397 117.397-7.499 7.499c-4.8 4.8-7.498 11.312-7.498 18.101v128c0 14.139 11.462 25.6 25.6 25.6zM450.197 665.6h-91.797v-91.795l409.6-409.602 91.797 91.797-409.6 409.6zM844.8 98.070c6.878 0 13.306 2.64 18.101 7.435l55.594 55.592c9.981 9.982 9.981 26.222 0 36.203l-22.494 22.496-91.797-91.797 22.496-22.494c4.795-4.795 11.222-7.435 18.101-7.435zM956.555 970.435c-0.81 1.955-3.178 2.365-5.024 2.365h-874.731c-14.115 0-25.6-11.485-25.6-25.6v-76.8h25.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-102.4h25.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-102.4h25.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-102.4h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-285.931c0-1.845 0.41-4.216 2.363-5.024 1.918-0.794 3.85 0.571 5.134 1.856l365.899 365.899-66.197 66.197-124.894-124.894c-24.395-24.394-45.518-19.37-53.467-16.078-7.949 3.293-26.438 14.675-26.438 49.176v384c0 42.347 34.453 76.8 76.8 76.8h384c34.499 0 45.883-18.49 49.176-26.438s8.317-29.072-16.078-53.466l-124.894-124.896 66.197-66.197 365.899 365.899c1.283 1.285 2.65 3.218 1.856 5.133z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler2.js
new file mode 100644
index 00000000..c84b7457
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PencilRuler2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PencilRuler2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 307.2c0-141.158-114.84-256-256-256-38.574 0-75.664 8.374-110.234 24.89-2.701 1.29-5.048 3.010-7.050 5.013l-0.016-0.016-540.803 540.813c-3.917 3.917-6.458 8.998-7.24 14.482l-51.2 358.4c-1.139 7.976 1.542 16.026 7.242 21.722 4.834 4.834 11.362 7.499 18.099 7.499 1.203 0 2.413-0.085 3.622-0.258l358.4-51.2c5.483-0.782 10.565-3.323 14.482-7.24l540.413-540.4c0.014-0.013 0.027-0.027 0.038-0.038l0.357-0.357-0.005-0.005c2.002-2.002 3.71-4.362 5.002-7.061 16.518-34.576 24.893-71.666 24.893-110.243zM947.2 307.2c0 29.456-6.104 57.8-18.122 84.328l-58.89 58.89c-5.36-147.034-123.971-265.646-271.006-271.006l58.891-58.891c26.528-12.016 54.874-18.12 84.326-18.12 112.926 0 204.8 91.872 204.8 204.8zM102.659 819.206l21.68-151.766c9.675-1.222 19.464-1.84 29.261-1.84 127.043 0 230.4 103.357 230.4 230.4 0 9.797-0.624 19.584-1.846 29.261l-151.76 21.68c-0.141-70.374-57.36-127.594-127.734-127.734zM543.8 234.797c14.741-2.915 29.842-4.397 45-4.397 54.318 0 104.298 18.906 143.73 50.467l-398.83 398.83c-46.368-38.674-105.312-62.736-169.709-65.086l379.81-379.814zM369.904 715.901l398.829-398.83c31.562 39.432 50.467 89.411 50.467 143.73 0 15.155-1.483 30.258-4.397 45.002l-379.814 379.806c-2.349-64.395-26.413-123.339-65.085-169.707zM95.298 870.736c2.354-0.214 4.722-0.336 7.102-0.336 42.347 0 76.8 34.451 76.8 76.8 0 2.381-0.122 4.749-0.336 7.101l-97.494 13.928 13.928-97.493z' />
+            <path d='M332.8 0h-256c-42.347 0-76.8 34.453-76.8 76.8v512c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-51.2h76.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8v-51.2h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6v-25.6c0-14.115 11.485-25.6 25.6-25.6h256c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-102.4c0-42.347-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Percent.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Percent.js
new file mode 100644
index 00000000..be07a7ab
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Percent.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Percent
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M51.2 1024c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l921.6-921.6c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-921.6 921.6c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M256 460.8c-112.928 0-204.8-91.872-204.8-204.8s91.872-204.8 204.8-204.8 204.8 91.872 204.8 204.8-91.872 204.8-204.8 204.8zM256 102.4c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6z' />
+            <path d='M768 1024c-112.926 0-204.8-91.874-204.8-204.8s91.874-204.8 204.8-204.8 204.8 91.874 204.8 204.8-91.874 204.8-204.8 204.8zM768 665.6c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentCircle.js
new file mode 100644
index 00000000..63ac74f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentCircle.js
@@ -0,0 +1,15 @@
+// Icon: Linear.PercentCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M256.010 768c-7.059 0-14.085-2.901-19.142-8.592-9.394-10.566-8.442-26.749 2.126-36.142l460.8-409.6c10.566-9.395 26.749-8.442 36.142 2.126 9.392 10.566 8.44 26.749-2.126 36.141l-460.8 409.6c-4.878 4.336-10.952 6.467-17 6.467z' />
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM332.8 307.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M640 819.2c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 614.4c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentSquare.js
new file mode 100644
index 00000000..d0263829
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PercentSquare.js
@@ -0,0 +1,15 @@
+// Icon: Linear.PercentSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M255.992 819.2c-6.101 0-12.224-2.168-17.117-6.571-10.509-9.458-11.362-25.643-1.902-36.154l460.8-512c9.459-10.507 25.645-11.362 36.154-1.902 10.509 9.458 11.362 25.645 1.902 36.154l-460.8 512c-5.056 5.616-12.032 8.474-19.037 8.474z' />
+            <path d='M332.8 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM332.8 307.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M640 819.2c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 614.4c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Phone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Phone.js
new file mode 100644
index 00000000..2e800026
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Phone.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Phone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 1024h-409.6c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h409.6c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM281.6 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h409.6c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-409.6z' />
+            <path d='M537.6 153.6h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M358.4 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M486.4 921.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 819.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneBubble.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneBubble.js
new file mode 100644
index 00000000..fccb2c1d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneBubble.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneBubble
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M652.211 972.8c-72.448 0-149.419-20.485-228.771-60.886-72.96-37.147-145.021-90.317-208.394-153.762-63.36-63.432-116.461-135.558-153.56-208.581-40.338-79.397-60.79-156.387-60.79-228.838 0-46.784 39.821-90.438 63.558-112.296 28.75-26.475 70.894-54.765 102.954-54.765 16.861 0 35.274 10.088 59.704 32.707 17.406 16.117 36.942 37.925 56.494 63.062 16.672 21.435 71.070 94.301 71.070 131.917 0 33.226-35.389 54.976-72.854 78.003-12.755 7.84-25.942 15.946-35.878 23.547-8.539 6.534-12.003 10.677-13.347 12.664 38.485 93.256 151.717 206.49 244.976 244.973 1.987-1.344 6.13-4.808 12.662-13.346 7.602-9.934 15.707-23.122 23.547-35.877 23.027-37.466 44.778-72.854 78.005-72.854 37.619 0 110.483 54.397 131.918 71.070 25.138 19.552 46.944 39.086 63.061 56.494 22.621 24.43 32.707 42.843 32.707 59.704 0 32.062-28.269 74.325-54.725 103.184-21.867 23.859-65.541 63.878-112.338 63.878zM166.33 204.907c-10.618 0.782-39.002 15.050-67.394 41.194-28.576 26.314-47.040 55.608-47.040 74.632 0 126.258 74.533 276.253 199.374 401.237 124.861 125.002 274.746 199.63 400.941 199.63 18.99 0 48.272-18.555 74.595-47.272 26.17-28.549 40.451-57.058 41.234-67.709-2.656-8.286-24.632-37.21-78.99-79-49.562-38.099-85.946-55.845-96.419-57.786-8.842 5.045-26.040 33.029-35.43 48.302-23.453 38.16-45.605 74.202-79.68 74.202-5.691 0-11.307-1.093-16.693-3.246-107.238-42.896-234.077-169.733-276.973-276.971-5.731-14.328-6.819-36.611 20.547-61.402 13.696-12.408 32.36-23.88 50.408-34.973 15.275-9.389 43.256-26.587 48.304-35.43-1.942-10.475-19.69-46.859-57.787-96.414-41.79-54.362-70.712-76.336-78.997-78.994z' />
+            <path d='M486.4 512c-10.354 0-19.69-6.237-23.651-15.803s-1.771-20.576 5.549-27.899c41.83-41.83 55.125-67.462 59.346-79.336-43.23-36.862-66.843-83.592-66.843-132.962 0-56.461 30.507-108.91 85.901-147.686 52.614-36.83 122.115-57.114 195.699-57.114s143.085 20.283 195.699 57.114c55.395 38.776 85.901 91.226 85.901 147.686s-30.506 108.91-85.901 147.686c-52.614 36.83-122.115 57.114-195.699 57.114-30.813 0-60.949-3.536-89.768-10.522-26.243 17.888-97.565 61.722-166.232 61.722zM742.4 102.4c-63.176 0-122.25 16.997-166.339 47.859-41.309 28.917-64.061 66.47-64.061 105.741 0 37.243 20.712 73.314 58.322 101.568 4.619 3.469 7.928 8.4 9.39 13.99 2.547 9.738 3.23 32.867-24.48 73.446 33.962-13.784 63.869-33.074 76.851-42.91 6.378-4.83 14.643-6.4 22.349-4.25 27.92 7.8 57.517 11.755 87.968 11.755 63.176 0 122.25-16.997 166.339-47.859 41.309-28.917 64.061-66.47 64.061-105.741s-22.752-76.824-64.061-105.741c-44.090-30.862-103.163-47.859-166.339-47.859z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneError.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneError.js
new file mode 100644
index 00000000..9376cf48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneError.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneError
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.176-1.662-9.728-28.57-47.565-102.232-104.283-63.322-48.763-114.701-74.888-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.419-31.366 47.426-28.683 46.666-55.773 90.744-95.12 90.744-6.338 0-12.597-1.219-18.61-3.626-134.374-53.75-293.309-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.661-94.554-100.57-104.282-102.232z' />
+            <path d='M829.803 256l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-109.899 109.899-109.899-109.899c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.899-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l109.899-109.898 109.899 109.899c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneInOut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneInOut.js
new file mode 100644
index 00000000..6efe81f2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneInOut.js
@@ -0,0 +1,14 @@
+// Icon: Linear.PhoneInOut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.176-1.662-9.728-28.57-47.565-102.232-104.283-63.322-48.763-114.701-74.888-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.419-31.366 47.426-28.683 46.666-55.773 90.744-95.12 90.744-6.338 0-12.597-1.219-18.61-3.626-134.374-53.75-293.309-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.661-94.554-100.57-104.282-102.232z' />
+            <path d='M844.8 0h-153.6c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h91.797l-212.298 212.299c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l212.299-212.298v91.797c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M1016.501 161.099c-9.997-9.998-26.206-9.998-36.203 0l-212.298 212.298v-91.797c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v153.6c0 14.138 11.461 25.6 25.6 25.6h153.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-91.797l212.299-212.299c9.997-9.997 9.997-26.205-0.002-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneIncoming.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneIncoming.js
new file mode 100644
index 00000000..31ec929e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneIncoming.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneIncoming
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.176-1.662-9.728-28.57-47.565-102.232-104.283-63.322-48.763-114.701-74.888-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.419-31.366 47.426-28.683 46.666-55.773 90.744-95.12 90.744-6.338 0-12.597-1.219-18.61-3.626-134.374-53.75-293.309-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.661-94.554-100.57-104.282-102.232z' />
+            <path d='M914.101 109.899c-9.997-9.998-26.206-9.998-36.203 0l-263.498 263.498v-142.997c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v204.8c0 14.138 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-142.997l263.498-263.499c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneLock.js
new file mode 100644
index 00000000..db77149f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 158.003v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.347 34.451 76.8 76.8 76.8h204.8c42.349 0 76.8-34.453 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM742.4 51.2c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM870.4 384c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.174-1.662-9.728-28.57-47.566-102.232-104.283-63.322-48.765-114.701-74.89-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.421-31.366 47.427-28.683 46.666-55.771 90.744-95.118 90.744-6.339 0-12.597-1.219-18.611-3.626-134.373-53.752-293.307-212.685-347.061-347.062-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.662-94.554-100.571-104.282-102.234z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneMinus.js
new file mode 100644
index 00000000..dfe85e50
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneMinus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.173-1.662-9.728-28.57-47.566-102.232-104.283-63.322-48.766-114.701-74.891-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.422-31.366 47.429-28.683 46.666-55.77 90.744-95.117 90.744-6.341 0-12.597-1.219-18.613-3.626-134.371-53.754-293.306-212.685-347.061-347.064-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.664-94.554-100.573-104.282-102.235z' />
+            <path d='M947.2 256h-307.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneOutgoing.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneOutgoing.js
new file mode 100644
index 00000000..5bc123a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneOutgoing.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhoneOutgoing
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.176-1.662-9.728-28.57-47.565-102.232-104.283-63.322-48.763-114.701-74.888-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.419-31.366 47.426-28.683 46.666-55.773 90.744-95.12 90.744-6.338 0-12.597-1.219-18.61-3.626-134.374-53.75-293.309-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.661-94.554-100.57-104.282-102.232z' />
+            <path d='M896 102.4h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h142.997l-263.498 263.499c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l263.499-263.498v142.997c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePause.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePause.js
new file mode 100644
index 00000000..782dfa00
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePause.js
@@ -0,0 +1,14 @@
+// Icon: Linear.PhonePause
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.174-1.662-9.728-28.57-47.566-102.232-104.283-63.322-48.765-114.701-74.89-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.421-31.366 47.427-28.683 46.666-55.771 90.744-95.118 90.744-6.339 0-12.597-1.219-18.611-3.626-134.373-53.752-293.307-212.685-347.061-347.062-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.662-94.554-100.571-104.282-102.234z' />
+            <path d='M947.2 460.8h-51.2c-42.349 0-76.8-34.453-76.8-76.8v-307.2c0-42.347 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.453 76.8 76.8v307.2c0 42.347-34.451 76.8-76.8 76.8zM896 51.2c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2z' />
+            <path d='M691.2 460.8h-51.2c-42.349 0-76.8-34.453-76.8-76.8v-307.2c0-42.347 34.451-76.8 76.8-76.8h51.2c42.349 0 76.8 34.453 76.8 76.8v307.2c0 42.347-34.451 76.8-76.8 76.8zM640 51.2c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePlus.js
new file mode 100644
index 00000000..458dcfd8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhonePlus.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PhonePlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.173-1.662-9.728-28.57-47.566-102.232-104.283-63.322-48.766-114.701-74.891-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.422-31.366 47.429-28.683 46.666-55.77 90.744-95.117 90.744-6.341 0-12.597-1.219-18.613-3.626-134.371-53.754-293.306-212.685-347.061-347.064-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.664-94.554-100.573-104.282-102.235z' />
+            <path d='M947.2 204.8h-128v-128c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-128c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h128v128c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-128h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneSip.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneSip.js
new file mode 100644
index 00000000..49e69411
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneSip.js
@@ -0,0 +1,15 @@
+// Icon: Linear.PhoneSip
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.176-1.662-9.728-28.57-47.565-102.232-104.283-63.322-48.763-114.701-74.888-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.419-31.366 47.426-28.683 46.666-55.773 90.744-95.12 90.744-6.338 0-12.597-1.219-18.61-3.626-134.374-53.75-293.309-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.661-94.554-100.57-104.282-102.232z' />
+            <path d='M691.2 307.2h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 307.2c-14.139 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 307.2c-14.139 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6h-76.8v76.8c0 14.138-11.461 25.6-25.6 25.6zM921.6 153.6h51.2v-51.2h-51.2v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneWave.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneWave.js
new file mode 100644
index 00000000..7b299658
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PhoneWave.js
@@ -0,0 +1,15 @@
+// Icon: Linear.PhoneWave
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.174-1.662-9.728-28.57-47.566-102.232-104.283-63.322-48.765-114.701-74.89-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.834-20.912 30.421-31.366 47.427-28.683 46.666-55.771 90.744-95.118 90.744-6.339 0-12.597-1.219-18.611-3.626-134.373-53.752-293.307-212.685-347.061-347.062-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.662-94.554-100.571-104.282-102.234z' />
+            <path d='M998.4 460.8c-14.139 0-25.6-11.462-25.6-25.6 0-211.738-172.261-384-384-384-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c116.245 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 460.8c-14.139 0-25.6-11.462-25.6-25.6 0-127.043-103.357-230.4-230.4-230.4-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c155.275 0 281.6 126.325 281.6 281.6 0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 460.8c-14.139 0-25.6-11.462-25.6-25.6 0-42.347-34.451-76.8-76.8-76.8-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c70.579 0 128 57.421 128 128 0 14.138-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pickaxe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pickaxe.js
new file mode 100644
index 00000000..f591b19e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pickaxe.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pickaxe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1022.51 853.786c-0.578-13.6-6.986-26.525-17.581-35.459l-124.054-104.595c-10.291-8.677-27.178-23.846-36.88-33.126l-276.611-264.586 13.917-13.917c4.802-4.8 7.499-11.312 7.499-18.101s-2.698-13.301-7.499-18.102l-18.374-18.374c254.315-236.158 393.003-297.806 394.358-298.395 11.171-4.789 17.435-16.771 14.992-28.677s-12.922-20.453-25.077-20.453c-104.99 0-208.141 17.069-306.587 50.733-88.15 30.144-171.069 73.046-246.805 127.67l-17.306-17.306c-9.997-9.998-26.206-9.998-36.203 0l-19.274 19.274-28.83-27.576c-20.176-19.299-52.654-18.941-72.398 0.803l-66.197 66.198c-19.744 19.742-20.104 52.221-0.805 72.398l27.576 28.83-19.272 19.272c-9.998 9.997-9.998 26.206 0 36.203l17.306 17.306c-54.626 75.734-97.528 158.654-127.67 246.805-33.666 98.448-50.734 201.598-50.734 306.589 0 12.133 8.53 22.574 20.408 25.040 1.739 0.362 3.478 0.534 5.2 0.534 10.035 0 19.378-5.936 23.499-15.438 0.61-1.405 62.258-140.094 298.414-394.41l18.374 18.374c4.802 4.802 11.312 7.499 18.102 7.499s13.301-2.698 18.101-7.499l13.917-13.917 264.586 276.611c9.28 9.701 24.45 26.589 33.125 36.878l104.598 124.058c8.933 10.594 21.858 17.002 35.458 17.579 0.674 0.029 1.346 0.042 2.018 0.042 12.901 0 25.486-5.238 34.8-14.554l117.4-117.395c9.798-9.798 15.088-23.218 14.51-36.818zM189.795 256.805c-0.112-0.118-0.106-0.69 0.010-0.803l66.195-66.198c0.117-0.117 0.686-0.12 0.803-0.008l28.008 26.789-68.229 68.229-26.787-28.008zM365.010 508.005c-4.896-4.896-11.568-7.648-18.486-7.496-6.922 0.102-13.506 3.006-18.253 8.045-140.349 149.022-223.666 260.718-270.936 332.686 18.422-157.739 78.051-306.269 175.166-434.49 7.72-10.192 6.736-24.517-2.306-33.558l-14.792-14.792 142.997-142.997 14.794 14.792c9.040 9.040 23.365 10.026 33.558 2.306 128.221-97.115 276.75-156.744 434.49-175.166-71.968 47.269-183.664 130.587-332.686 270.936-5.038 4.746-7.942 11.331-8.045 18.253-0.104 6.922 2.6 13.59 7.496 18.486l18.989 18.99-142.995 142.995-18.99-18.99zM856.006 970.19l-103.134-122.322c-9.395-11.142-25.218-28.757-35.267-39.264l-265.373-277.434 78.939-78.939 277.434 265.373c10.507 10.050 28.122 25.872 39.266 35.269l122.32 103.133-114.184 114.184z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture.js
new file mode 100644
index 00000000..5a1c22ec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Picture
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 460.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM691.2 256c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M947.2 0h-870.4c-42.347 0-76.8 34.453-76.8 76.8v870.4c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-870.4c0-42.347-34.451-76.8-76.8-76.8zM51.2 947.2v-246.102l214.902-236.392c4.333-4.766 10.051-7.434 16.101-7.51 6.022-0.029 11.835 2.443 16.288 7.099l486.397 508.506h-708.088c-14.115 0-25.6-11.485-25.6-25.6zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-91.461l-520.25-543.896c-14.376-15.029-33.534-23.146-53.936-22.904-20.405 0.259-39.347 8.877-53.336 24.266l-177.018 194.717v-548.182c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v870.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture2.js
new file mode 100644
index 00000000..4ee370db
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Picture2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M665.6 460.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 307.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M896 102.4h-768c-14.138 0-25.6 11.462-25.6 25.6v614.4c0 14.139 11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6v-614.4c0-14.138-11.461-25.6-25.6-25.6zM153.6 598.533l164.318-184.858c4.203-4.728 9.694-7.371 15.462-7.44 5.725-0.090 11.322 2.438 15.638 7.062l283.27 303.502h-478.69v-118.267zM870.4 716.8h-168.075l-315.875-338.437c-14.269-15.288-33.312-23.605-53.691-23.325-20.354 0.246-39.214 8.992-53.107 24.621l-126.051 141.808v-367.867h716.8v563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture3.js
new file mode 100644
index 00000000..942a2ab5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Picture3.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Picture3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M665.6 460.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 307.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M896 921.6h-358.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 102.4h-768c-14.138 0-25.6 11.462-25.6 25.6v614.4c0 14.139 11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6v-614.4c0-14.138-11.461-25.6-25.6-25.6zM153.6 598.533l164.318-184.858c4.203-4.728 9.694-7.371 15.462-7.44 5.725-0.090 11.322 2.438 15.638 7.062l283.27 303.502h-478.69v-118.267zM870.4 716.8h-168.075l-315.875-338.437c-14.269-15.288-33.312-23.605-53.691-23.325-20.354 0.246-39.214 8.992-53.107 24.621l-126.051 141.808v-367.867h716.8v563.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pictures.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pictures.js
new file mode 100644
index 00000000..86a43423
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pictures.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Pictures
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.453 76.8 76.8v665.6c0 42.349-34.451 76.8-76.8 76.8zM128 256c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h716.8c14.115 0 25.6-11.485 25.6-25.6v-665.6c0-14.115-11.485-25.6-25.6-25.6h-716.8z' />
+            <path d='M844.8 153.6h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 51.2h-614.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h614.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 665.6c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM588.8 563.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 409.6h-512c-14.138 0-25.6 11.462-25.6 25.6v358.4c0 14.139 11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6v-358.4c0-14.138-11.461-25.6-25.6-25.6zM256 700.179l64.806-81.006c3.715-4.645 8.422-7.272 13.254-7.397 4.806-0.133 9.67 2.254 13.621 6.699l132.91 149.525h-224.592v-67.821zM716.8 768h-167.702l-163.149-183.541c-13.941-15.685-33.349-24.36-53.218-23.866-19.88 0.517-38.798 10.211-51.906 26.595l-24.826 31.032v-157.421h460.8v307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart.js
new file mode 100644
index 00000000..d99fbdf0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PieChart
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 1024c-116.246 0-225.534-45.269-307.733-127.467s-127.467-191.488-127.467-307.733c0-116.246 45.269-225.534 127.467-307.733s191.486-127.467 307.733-127.467c14.138 0 25.6 11.462 25.6 25.6v384h384c14.139 0 25.6 11.461 25.6 25.6 0 116.245-45.269 225.534-127.467 307.733s-191.488 127.467-307.733 127.467zM409.6 205.643c-199.842 13.226-358.4 180.026-358.4 383.157 0 211.739 172.262 384 384 384 203.131 0 369.931-158.558 383.157-358.4h-383.157c-14.138 0-25.6-11.461-25.6-25.6v-383.157z' />
+            <path d='M947.2 512h-409.6c-14.139 0-25.6-11.462-25.6-25.6v-409.6c0-14.138 11.461-25.6 25.6-25.6 116.245 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733c0 14.138-11.461 25.6-25.6 25.6zM563.2 460.8h357.557c-12.664-191.374-166.184-344.891-357.557-357.557v357.557z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart2.js
new file mode 100644
index 00000000..abd77942
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PieChart2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PieChart2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 1024c-116.246 0-225.534-45.269-307.733-127.467s-127.467-191.488-127.467-307.733c0-116.246 45.269-225.534 127.467-307.733s191.486-127.467 307.733-127.467c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-211.738 0-384 172.262-384 384 0 211.739 172.262 384 384 384 211.739 0 384-172.261 384-384 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 116.245-45.269 225.534-127.467 307.733s-191.488 127.467-307.733 127.467z' />
+            <path d='M947.2 512h-409.6c-14.139 0-25.6-11.462-25.6-25.6v-409.6c0-14.138 11.461-25.6 25.6-25.6 116.245 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733c0 14.138-11.461 25.6-25.6 25.6zM563.2 460.8h357.557c-12.664-191.374-166.184-344.891-357.557-357.557v357.557z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pilcrow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pilcrow.js
new file mode 100644
index 00000000..d3d1d2e1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pilcrow.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pilcrow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 102.4h-435.2c-112.928 0-204.8 91.872-204.8 204.8s91.872 204.8 204.8 204.8h51.2v384c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-742.4h153.6v742.4c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-742.4h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM409.6 460.8h-51.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6h51.2v307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pills.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pills.js
new file mode 100644
index 00000000..736d55ab
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pills.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Pills
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M936.59 611.835c-52.274-31.362-121.237-48.635-194.19-48.635s-141.917 17.274-194.19 48.635c-56.366 33.821-87.41 80.19-87.41 130.565v102.4c0 50.374 31.043 96.744 87.41 130.565 52.274 31.362 121.237 48.635 194.19 48.635s141.917-17.274 194.19-48.635c56.368-33.821 87.41-80.19 87.41-130.565v-102.4c0-50.374-31.042-96.744-87.41-130.565zM742.4 614.4c124.89 0 230.4 58.618 230.4 128s-105.51 128-230.4 128-230.4-58.618-230.4-128 105.51-128 230.4-128zM742.4 972.8c-123.862 0-228.645-57.659-230.36-126.294 10.546 9.462 22.618 18.326 36.168 26.458 52.275 31.363 121.238 48.637 194.192 48.637s141.917-17.274 194.19-48.635c13.552-8.131 25.624-16.995 36.168-26.458-1.714 68.634-106.496 126.293-230.358 126.293z' />
+            <path d='M691.2 819.2c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M664.314 52.485c-33.845-33.848-78.846-52.486-126.714-52.486s-92.867 18.64-126.714 52.486l-358.4 358.4c-33.846 33.846-52.486 78.848-52.486 126.714 0 47.867 18.64 92.869 52.486 126.714 33.846 33.848 78.846 52.488 126.714 52.488s92.867-18.64 126.714-52.488l358.4-358.4c69.87-69.87 69.87-183.557 0-253.427zM269.709 628.109c-24.176 24.176-56.318 37.491-90.509 37.491s-66.333-13.315-90.509-37.491c-24.178-24.176-37.491-56.32-37.491-90.51s13.314-66.334 37.491-90.51l186.69-186.69c90.894 18.030 162.992 90.128 181.021 181.021l-186.693 186.69zM628.11 269.709l-129.75 129.749c-13.558-42.048-36.891-80.232-68.845-112.186-31.952-31.95-70.131-55.278-112.176-68.835l129.75-129.75c24.176-24.176 56.32-37.49 90.509-37.49 34.19 0 66.334 13.314 90.51 37.49 49.91 49.909 49.91 131.115 0.002 181.022z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PineTree.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PineTree.js
new file mode 100644
index 00000000..0a683be4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PineTree.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PineTree
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M915.134 776.592l-166.168-186.941c28.678-9.362 49.368-20.581 62.736-33.95 9.459-9.459 10.040-24.605 1.336-34.763l-159.091-185.605c22.885-9.776 41.422-21.699 55.355-35.634 9.224-9.224 10.037-23.907 1.89-34.094l-204.8-256c-4.859-6.070-12.216-9.605-19.992-9.605s-15.133 3.534-19.99 9.608l-204.8 256c-8.149 10.186-7.336 24.87 1.888 34.094 13.933 13.933 32.47 25.856 55.355 35.634l-159.090 185.603c-8.706 10.157-8.125 25.302 1.334 34.763 13.366 13.368 34.059 24.589 62.736 33.95l-166.166 186.939c-4.934 5.552-7.216 12.974-6.248 20.341 0.966 7.365 5.085 13.947 11.286 18.037 42.426 27.982 199.806 48.213 346.896 53.72v129.71c0 14.139 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-129.571c64.478-2.262 128.846-7.299 186.763-14.75 57.363-7.381 131.725-20.168 160.237-39.178 6.163-4.107 10.243-10.685 11.19-18.030 0.944-7.347-1.338-14.742-6.258-20.278zM512 972.8h-51.2v-102.789c8.629 0.118 17.171 0.182 25.59 0.186h0.742c0.011 0 0.010 0 0.021 0 8.243 0 16.536-0.066 24.846-0.165v102.768zM743.43 803.298c-78.696 10.125-169.709 15.699-256.28 15.699-0.005 0-0.011 0-0.016 0h-0.725c-159.346-0.059-303.272-18.8-366.123-35.786l169.376-190.549c6.037-6.79 8.021-16.274 5.214-24.914-2.806-8.642-9.982-15.149-18.858-17.099-27.933-6.134-46.419-12.694-58.547-18.365l164.642-192.082c5.686-6.634 7.597-15.71 5.067-24.074s-9.15-14.858-17.562-17.227c-20.682-5.827-38.222-13.12-51.875-21.501l168.656-210.822 168.658 210.822c-13.654 8.382-31.195 15.675-51.877 21.501-8.41 2.368-15.032 8.864-17.562 17.227s-0.621 17.438 5.066 24.074l164.643 192.083c-12.13 5.67-30.613 12.23-58.547 18.365-8.875 1.95-16.051 8.456-18.858 17.099-2.806 8.64-0.822 18.123 5.214 24.914l169.458 190.64c-22.896 6.32-58.611 13.488-109.165 19.994z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PingPong.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PingPong.js
new file mode 100644
index 00000000..d7529b94
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PingPong.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PingPong
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M978.101 839.499c-29.824-29.826-64.93-56.955-98.878-83.19-99.48-76.877-185.392-143.27-135.226-259.234 25.494-58.93 30.174-114.67 14.315-170.411-16.861-59.261-57.49-120.312-124.206-186.645-44.080-43.824-92.717-78.294-144.563-102.451-53.494-24.93-107.664-37.568-161.002-37.568-86.515 0-166.206 34-230.458 98.325-38.064 38.109-65.504 81.549-81.557 129.112-15.189 45-19.947 92.84-14.142 142.19 10.982 93.376 59.782 187.602 137.408 265.322 90.346 90.448 170 132.574 250.678 132.574 34.656 0 69.518-7.77 106.578-23.752 23.106-9.966 45.166-15.018 65.571-15.018 77.424 0 133.88 73.064 193.653 150.419 26.246 33.966 53.387 69.093 83.227 98.93 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.202zM134.309 134.507c54.437-54.501 121.602-83.307 194.232-83.307 91.267 0 189.485 45.606 269.467 125.126 52.874 52.568 84.467 97.691 101.629 137.434l-386.053 386.053c-42.85-18.098-87.907-51.331-137.566-101.048-121.714-121.858-186.682-319.115-41.709-464.258zM858.096 923.299c-21.141-23.448-41.491-49.784-61.309-75.434-64.701-83.731-131.603-170.312-234.166-170.312-27.418 0-56.301 6.459-85.846 19.202-30.53 13.166-58.76 19.566-86.302 19.566-6.595 0-13.211-0.387-19.854-1.134l344.874-344.874c4.944 40.192-4.717 74.613-18.482 106.432-29.779 68.837-25.294 130.966 13.712 189.936 32.635 49.336 85.79 90.414 137.195 130.139 25.634 19.81 51.949 40.147 75.384 61.275l-65.205 65.203z' />
+            <path d='M128 1024c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 819.2c-42.349 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pipe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pipe.js
new file mode 100644
index 00000000..917eba44
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pipe.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Pipe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 468.298c-6.006-6.008-60.43-58.698-120.501-58.698-141.331 0-276.726 100.395-420.072 206.685-37.283 27.643-75.557 56.016-114.176 82.69-1.096-4.278-2.328-8.573-3.698-12.875-2.067-17.152-14.536-36.282-39.731-61.126-17.037-16.8-33.862-30.112-34.57-30.67-11.099-8.757-27.186-6.853-35.944 4.237-8.76 11.096-6.866 27.19 4.226 35.954 1.362 1.075 2.722 2.171 4.078 3.28-0.064 0.736-0.112 1.477-0.112 2.229 0 0.886-2.754 6.763-15.84 13.306-15.629 7.811-37.846 12.293-60.962 12.293s-45.333-4.482-60.96-12.294c-13.086-6.544-15.84-12.421-15.84-13.306 0-0.8-0.048-1.589-0.12-2.37 1.2-0.934 2.402-1.861 3.606-2.768 11.299-8.498 13.573-24.546 5.077-35.845-8.498-11.301-24.546-13.571-35.846-5.077-0.714 0.538-17.696 13.347-34.867 29.965-27.459 26.568-40.25 47.952-40.25 67.294v1.861c-0.003 52.653-0.008 132.221 23.85 199.816 13.885 39.336 34.458 70.333 61.15 92.128 31.688 25.875 71.995 38.995 119.8 38.995 52.829 0 106.107-22.291 167.674-70.149 52.165-40.552 104.032-94.509 158.946-151.637 130.76-136.032 278.968-290.214 466.981-290.214 10.355 0 19.69-6.237 23.651-15.803 3.963-9.566 1.773-20.578-5.55-27.899zM179.2 716.8c31.25 0 61.030-6.286 83.856-17.699 13.597-6.798 24.266-15.141 31.712-24.6 6.616 7.523 11.182 13.867 12.416 17.693-0.506 15.97-13.104 33.963-33.922 48.342-25.267 17.454-59.552 27.464-94.062 27.464s-68.795-10.010-94.062-27.464c-21.014-14.515-33.654-32.714-33.933-48.795 0.918-3.875 5.355-10.282 11.97-17.829 7.464 9.701 18.291 18.25 32.168 25.189 22.827 11.413 52.608 17.699 83.858 17.699zM494.507 766.733c-101.866 105.971-198.082 206.067-289.707 206.067-67.165 0-109.32-30.811-132.669-96.965-10.418-29.514-15.648-62.733-18.277-94.718 0.725 0.517 1.446 1.037 2.184 1.547 34.109 23.562 77.85 36.536 123.162 36.536s89.053-12.974 123.162-36.536c5.786-3.997 11.163-8.227 16.125-12.646-0.76 37.939-9.84 66.283-9.971 66.688-4.47 13.413 2.778 27.91 16.19 32.381 2.686 0.896 5.414 1.32 8.099 1.32 10.718 0 20.707-6.784 24.282-17.51 0.811-2.435 14.296-43.84 12.536-97.366 46.59-31.269 92.395-65.19 136.8-98.115 136.36-101.114 265.158-196.614 389.578-196.614 9.536 0 19.576 2.634 29.326 6.669-173.874 31.947-309.467 173.019-430.819 299.264z' />
+            <path d='M179.2 614.4c-14.138 0-25.6-11.461-25.6-25.6 0-47.299-20.757-76-44.789-109.235-21.955-30.362-46.84-64.773-57.114-116.144-13.814-69.077 22.701-114.429 54.917-154.443 37.333-46.366 72.594-90.163 47.971-176.344-3.885-13.595 3.987-27.765 17.582-31.648 13.595-3.89 27.765 3.989 31.648 17.582 31.912 111.691-17.565 173.142-57.32 222.52-30.008 37.269-53.709 66.707-44.592 112.293 8.088 40.442 27.667 67.517 48.397 96.182 26.794 37.053 54.499 75.366 54.499 139.237 0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pizza.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pizza.js
new file mode 100644
index 00000000..638bff1b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pizza.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Pizza
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1021.442 477.818c-2.282-6.398-7.011-11.629-13.149-14.539l-138.794-65.818c-0.003-0.002-0.006-0.003-0.010-0.005s-0.006-0.002-0.011-0.005l-832.91-394.982c-9.776-4.635-21.418-2.622-29.069 5.029-7.653 7.653-9.667 19.293-5.030 29.070l394.976 832.912c0.002 0.005 0.003 0.010 0.005 0.014 0.003 0.006 0.006 0.013 0.010 0.019l65.813 138.784c2.91 6.138 8.141 10.867 14.539 13.149 2.784 0.99 5.691 1.485 8.59 1.485 3.765 0 7.52-0.832 10.986-2.477 228.67-108.634 414.432-294.39 523.061-523.059 2.918-6.136 3.274-13.179 0.994-19.578zM716.8 409.6c0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2 22.968-51.2 51.2-51.2c0.624 0 1.234-0.050 1.845-0.093l36.382 17.254c8.386 9.378 12.973 21.322 12.973 34.038zM603.715 328.085c-24.598 18.72-40.515 48.288-40.515 81.515 0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4c0-1.205-0.114-2.462-0.318-3.76l56.366 26.73c-85.827 168.002-223.482 305.654-391.482 391.48l-100.478-211.888c8.605 1.475 17.392 2.238 26.312 2.238 84.696 0 153.6-68.902 153.6-153.6 0-84.696-68.904-153.6-153.6-153.6-40.333 0-78.435 15.514-107.293 43.685-10.579 10.33-19.472 21.949-26.563 34.499l-145.058-305.898 524.229 248.598zM256.342 452.435c4.218-53.171 47.998-94.035 102.058-94.035 56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4c-21.040 0-41.005-6.246-58.112-18.094l-43.946-92.67zM498.424 962.93l-43.912-92.6c178.63-90.899 324.915-237.182 415.814-415.813l92.6 43.912c-101.054 199.886-264.614 363.445-464.502 464.501z' />
+            <path d='M230.4 256h51.2c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6z' />
+            <path d='M588.8 665.6c14.139 0 25.6-11.461 25.6-25.6v-51.2c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plane.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plane.js
new file mode 100644
index 00000000..fa696ca3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plane.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Plane
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.198 1024c-2.072 0-4.155-0.251-6.208-0.765l-198.59-49.648-198.592 49.648c-7.646 1.91-15.749 0.194-21.963-4.658-6.213-4.851-9.845-12.294-9.845-20.178v-102.4c0-8.91 4.634-17.179 12.234-21.834l111.734-68.41-17.515-175.16-324.152 185.23c-7.925 4.53-17.658 4.498-25.55-0.085s-12.75-13.018-12.75-22.142v-102.4c0-7.474 3.266-14.573 8.939-19.437l349.491-299.563c0.658-125.832 11.896-220.506 33.429-281.52 26.453-74.947 66.011-90.68 94.541-90.68 28.528 0 68.090 15.733 94.541 90.68 21.534 61.013 32.771 155.688 33.429 281.52l349.493 299.563c5.674 4.864 8.939 11.965 8.939 19.437v102.4c0 9.125-4.858 17.562-12.75 22.142s-17.626 4.614-25.552 0.085l-324.15-185.229-17.517 175.16 111.736 68.41c7.6 4.653 12.234 12.922 12.234 21.834v102.4c0 7.883-3.632 15.326-9.845 20.178-4.549 3.549-10.107 5.421-15.758 5.421zM486.4 921.6c2.085 0 4.17 0.254 6.208 0.765l172.992 43.248v-55.269l-113.208-69.31c-8.379-5.13-13.083-14.603-12.106-24.379l23.040-230.4c0.864-8.629 6.035-16.234 13.744-20.208 7.706-3.97 16.902-3.774 24.432 0.528l320.098 182.912v-46.51l-349.461-299.539c-5.674-4.864-8.939-11.963-8.939-19.437 0-245.64-41.371-332.8-76.8-332.8s-76.8 87.16-76.8 332.8c0 7.474-3.266 14.573-8.939 19.437l-349.461 299.538v46.51l320.099-182.912c7.53-4.301 16.725-4.501 24.432-0.528s12.88 11.579 13.742 20.208l23.040 230.4c0.978 9.776-3.726 19.25-12.106 24.379l-113.208 69.312v55.269l172.992-43.248c2.038-0.51 4.123-0.765 6.208-0.765z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaneCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaneCrossed.js
new file mode 100644
index 00000000..71cffb02
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaneCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PlaneCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M963.861 671.763l-337.578-289.352 238.278-289.338c8.989-10.914 7.427-27.048-3.488-36.035-10.912-8.987-27.046-7.427-36.034 3.488l-211.688 257.048c-3.256-98.902-14.114-175.056-32.411-226.896-26.451-74.946-66.013-90.678-94.541-90.678-28.53 0-68.088 15.733-94.541 90.68-21.533 61.013-32.771 155.688-33.429 281.52l-349.491 299.563c-5.674 4.864-8.939 11.963-8.939 19.437v102.4c0 9.125 4.858 17.562 12.75 22.142s17.627 4.614 25.55 0.085l311.146-177.797-241.208 292.896c-8.987 10.912-7.427 27.046 3.488 36.034 4.768 3.926 10.531 5.838 16.259 5.838 7.386 0 14.715-3.179 19.776-9.326l221.126-268.51 11.080 110.795-111.734 68.41c-7.6 4.654-12.234 12.923-12.234 21.834v102.4c0 7.883 3.632 15.326 9.845 20.178 6.214 4.851 14.317 6.568 21.963 4.658l198.592-49.648 198.59 49.648c2.053 0.512 4.136 0.765 6.208 0.765 5.651 0 11.21-1.872 15.757-5.422 6.213-4.851 9.845-12.294 9.845-20.178v-102.4c0-8.91-4.634-17.179-12.234-21.834l-111.736-68.41 17.517-175.16 324.15 185.229c7.926 4.53 17.659 4.498 25.552-0.085s12.75-13.016 12.75-22.141v-102.4c0-7.474-3.266-14.573-8.939-19.437zM395.731 566.045c-7.707-3.973-16.902-3.773-24.432 0.528l-320.099 182.914v-46.51l349.461-299.538c5.674-4.864 8.939-11.963 8.939-19.437 0-245.64 41.371-332.8 76.8-332.8 35.162 0 76.168 85.877 76.786 327.291l-159.618 193.818c-2.144-2.546-4.789-4.693-7.837-6.266zM921.6 749.486l-320.099-182.912c-7.528-4.302-16.725-4.499-24.432-0.528-7.707 3.973-12.88 11.579-13.744 20.208l-23.040 230.4c-0.976 9.776 3.726 19.25 12.106 24.379l113.21 69.31v55.269l-172.992-43.248c-2.038-0.509-4.123-0.765-6.208-0.765s-4.17 0.254-6.208 0.765l-172.992 43.248v-55.269l113.206-69.31c8.379-5.13 13.083-14.603 12.106-24.379l-17.741-177.406 178.957-217.306 327.872 281.032v46.512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Planet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Planet.js
new file mode 100644
index 00000000..b45d117a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Planet.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Planet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1007.382 225.994c-20.317-35.198-59.25-58.418-112.589-67.147-45.23-7.405-99.898-4.826-162.597 7.629-65.168-41.712-140.962-64.075-220.197-64.075-109.408 0-212.267 42.606-289.632 119.968-77.362 77.365-119.968 180.224-119.968 289.632 0 5.949 0.15 11.875 0.4 17.781-42.197 48.12-71.806 94.219-88.029 137.136-19.114 50.563-18.475 95.896 1.846 131.098 27.019 46.789 85.194 71.203 167.010 71.202 22.933 0 47.726-1.918 74.208-5.8 11.136-1.632 22.475-3.603 33.984-5.88 65.165 41.704 140.952 64.064 220.181 64.064 109.408 0 212.269-42.606 289.632-119.968s119.968-180.224 119.968-289.632c0-5.944-0.15-11.864-0.4-17.765 7.774-8.878 15.198-17.766 22.221-26.645 75.832-95.891 98.547-181.693 63.962-241.597zM512 153.6c185.518 0 338.562 141.69 356.611 322.538-66.051 71.213-156.85 141.566-260.896 201.637-103.974 60.032-210.229 103.469-304.877 125.082-90.323-65.138-149.238-171.238-149.238-290.856 0-197.622 160.778-358.4 358.4-358.4zM60.958 772.413c-22.050-38.194-3.037-100.832 50.837-172.634 16.49 75.902 54.338 145.619 110.573 201.853 4.466 4.464 9.024 8.8 13.654 13.032-89.746 10.805-153.173-4.341-175.064-42.251zM512 870.4c-52.021 0-101.48-11.154-146.133-31.171 85.674-25.16 177.579-65.226 267.45-117.112 89.89-51.898 170.55-111.472 235.181-173.101-18.584 180.294-171.373 321.384-356.498 321.384zM801.632 222.368c-4.47-4.47-9.034-8.811-13.672-13.048 89.208-10.797 153.022 4.054 175.082 42.269 21.877 37.891 3.317 100.342-50.84 172.606-16.496-75.891-54.341-145.597-110.57-201.827z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Platter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Platter.js
new file mode 100644
index 00000000..cd19fa7f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Platter.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Platter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 870.4h-921.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M921.598 741.070c-0.347-115.747-45.582-224.52-127.466-306.403-76.134-76.134-175.515-120.557-282.133-126.701v-51.966h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.966c-106.618 6.144-205.998 50.566-282.133 126.701-82.198 82.198-127.467 191.488-127.467 307.733 0 14.139 11.462 25.6 25.6 25.6h819.2c0.013 0 0.024 0 0.032 0 14.139 0 25.6-11.461 25.6-25.6 0-0.446-0.011-0.891-0.034-1.33zM103.243 716.8c13.226-199.842 180.026-358.4 383.157-358.4s369.931 158.558 383.157 358.4h-766.314z' />
+            <path d='M236.834 588.798c-5.179 0-10.403-1.566-14.93-4.821-11.477-8.256-14.088-24.254-5.832-35.731 25.246-35.094 56.578-64.565 93.123-87.595 37.346-23.533 78.314-39.163 121.768-46.453 13.95-2.347 27.144 7.067 29.483 21.011s-7.067 27.144-21.011 29.483c-73.47 12.326-138.035 52.618-181.8 113.453-5.002 6.955-12.845 10.653-20.802 10.653z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Play.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Play.js
new file mode 100644
index 00000000..22cf2462
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Play.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Play
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M332.798 819.2c-4.080 0-8.171-0.973-11.915-2.944-8.416-4.424-13.683-13.15-13.683-22.656v-563.2c0-9.507 5.267-18.23 13.682-22.656 8.414-4.427 18.589-3.826 26.421 1.562l409.6 281.6c6.947 4.774 11.098 12.664 11.098 21.094s-4.15 16.32-11.098 21.096l-409.6 281.6c-4.347 2.989-9.416 4.504-14.504 4.504zM358.4 279.067v465.867l338.813-232.934-338.813-232.933z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlayCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlayCircle.js
new file mode 100644
index 00000000..99b328fc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlayCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PlayCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 819.2c-4.269 0-8.542-1.066-12.41-3.21-8.141-4.51-13.19-13.085-13.19-22.39v-512c0-9.306 5.050-17.88 13.19-22.39 8.139-4.51 18.086-4.251 25.978 0.682l409.6 256c7.485 4.678 12.032 12.885 12.032 21.709s-4.547 17.032-12.032 21.709l-409.6 256c-4.142 2.592-8.853 3.891-13.568 3.891zM358.4 327.789v419.622l335.699-209.811-335.699-209.811z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Playlist.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Playlist.js
new file mode 100644
index 00000000..e7d09c84
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Playlist.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Playlist
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 307.2c-70.579 0-128-57.421-128-128 0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v634.832c-6.984-4.722-14.629-9.182-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.806 23.902-74.136 57.749-74.136 95.304s26.33 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.808-23.902 74.136-57.749 74.136-95.304v-591.525c32.55 33.253 77.902 53.925 128 53.925 70.579 0 128 57.421 128 128 0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-98.811-80.389-179.2-179.2-179.2zM486.4 972.8c-102.563 0-179.2-40.547-179.2-76.8s76.637-76.8 179.2-76.8c102.565 0 179.2 40.547 179.2 76.8s-76.635 76.8-179.2 76.8z' />
+            <path d='M537.6 665.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 512h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 358.4h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 204.8h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaylistAdd.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaylistAdd.js
new file mode 100644
index 00000000..4edc898d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlaylistAdd.js
@@ -0,0 +1,15 @@
+// Icon: Linear.PlaylistAdd
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 307.2c-70.579 0-128-57.421-128-128 0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v634.832c-6.984-4.722-14.629-9.182-22.936-13.336-42.166-21.085-97.662-32.696-156.264-32.696s-114.098 11.611-156.264 32.696c-47.806 23.902-74.136 57.749-74.136 95.304s26.33 71.402 74.136 95.304c42.166 21.085 97.662 32.696 156.264 32.696s114.098-11.611 156.264-32.696c47.808-23.902 74.136-57.749 74.136-95.304v-591.525c32.55 33.253 77.902 53.925 128 53.925 70.579 0 128 57.421 128 128 0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-98.811-80.389-179.2-179.2-179.2zM486.4 972.8c-102.563 0-179.2-40.547-179.2-76.8s76.637-76.8 179.2-76.8c102.565 0 179.2 40.547 179.2 76.8s-76.635 76.8-179.2 76.8z' />
+            <path d='M537.6 665.6h-512c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 512h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 0h-512c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h230.4v245.397l-109.899-109.898c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-109.898 109.899v-245.397h230.4c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plus.js
new file mode 100644
index 00000000..6c5b8975
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Plus.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Plus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512h-435.2v-435.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v435.2h-435.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h435.2v435.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-435.2h435.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusCircle.js
new file mode 100644
index 00000000..9e3e5045
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PlusCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M793.6 512h-281.6v-281.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v281.6h-281.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h281.6v281.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-281.6h281.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusSquare.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusSquare.js
new file mode 100644
index 00000000..aee319c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PlusSquare.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PlusSquare
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+            <path d='M742.4 512h-230.4v-230.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v230.4h-230.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h230.4v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-230.4h230.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Podium.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Podium.js
new file mode 100644
index 00000000..674c95d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Podium.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Podium
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 409.6h-281.6v-230.4c0-14.138-11.461-25.6-25.6-25.6h-307.2c-14.138 0-25.6 11.462-25.6 25.6v128h-281.6c-14.138 0-25.6 11.462-25.6 25.6v512c0 14.139 11.462 25.6 25.6 25.6h921.6c14.139 0 25.6-11.461 25.6-25.6v-409.6c0-14.139-11.461-25.6-25.6-25.6zM358.4 204.8h256v614.4h-256v-614.4zM51.2 358.4h256v460.8h-256v-460.8zM921.6 819.2h-256v-358.4h256v358.4z' />
+            <path d='M486.4 512c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6h-76.8v51.2h76.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 512h-102.4c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v51.2h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v51.2h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown.js
new file mode 100644
index 00000000..0fce466f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PointerDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 614.4c-21.072 0-40.674-6.403-56.973-17.358-14.008 39.88-52.021 68.558-96.627 68.558-21.072 0-40.674-6.403-56.973-17.358-14.008 39.88-52.021 68.558-96.627 68.558-18.645 0-36.125-5.034-51.2-13.776v167.376c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-377.52l-68.909 119.446c-13.366 24.326-35.163 41.645-61.405 48.782-25.56 6.949-52.146 3.272-74.858-10.357-46.461-27.877-64.138-90.819-39.442-140.37 1.514-3.101 34.213-70.024 136.17-273.938 48.010-96.021 100.704-164.653 156.619-203.994 43.896-30.886 74.195-32.451 79.824-32.451h256c43.41 0 83.571 12.566 119.371 37.352 34.603 23.957 64.469 58.984 88.768 104.11 48.059 89.251 73.461 217.381 73.461 370.538 0 56.464-45.936 102.4-102.4 102.4zM854.259 165.738c-28.134-52.251-79.262-114.538-163.059-114.538h-255.49c-2.016 0.173-23.546 2.565-56.067 26.894-32.41 24.246-82.155 75.373-135.091 181.246-103.789 207.579-135.685 272.947-135.995 273.584-0.037 0.077-0.075 0.154-0.114 0.23-12.87 25.742-3.744 59.49 19.928 73.694 10.645 6.387 23.102 8.11 35.080 4.853 12.766-3.47 23.438-12.059 30.051-24.182 0.098-0.179 0.198-0.357 0.301-0.534l79.899-138.498c16.349-29.842 34.723-42.405 54.622-37.328 19.955 5.088 30.075 25.019 30.075 59.24v400c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-332.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v76.8c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-76.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v25.6c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v25.6c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2c0-144.712-23.286-264.448-67.341-346.262z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown2.js
new file mode 100644
index 00000000..b204b98e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerDown2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PointerDown2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 230.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6z' />
+            <path d='M819.2 588.8c0 42.347-34.451 76.8-76.8 76.8-9.995 0-19.541-1.939-28.306-5.429-8.883 32.59-38.726 56.629-74.094 56.629-9.995 0-19.541-1.939-28.306-5.429-8.885 32.59-38.728 56.629-74.094 56.629-8.971 0-17.589-1.547-25.6-4.387v132.387c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8v-305.483l-71.968 56.976c-15.587 12.339-35.56 18.498-56.232 17.358-20.723-1.149-39.866-9.512-53.902-23.549-29.768-29.768-29.83-78.451-0.139-108.525l178.106-180.371c-27.624-11.643-47.064-38.997-47.064-70.806v-102.4c0-42.349 34.453-76.8 76.8-76.8h358.4c42.349 0 76.8 34.451 76.8 76.8v102.4c0 27.699-14.744 52.018-36.794 65.53 16.768 32.579 36.794 92.078 36.794 190.47v51.2zM212.501 605.099c10.592 10.589 30.288 11.643 42.15 2.251l113.458-89.822c7.698-6.093 18.2-7.25 27.038-2.973 8.838 4.275 14.453 13.227 14.453 23.045v358.4c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-51.2c0-107.634-26.406-160.736-38.31-179.2h-309.389l-207.709 210.352c-9.813 9.938-9.854 26.582-0.091 36.347zM768 179.2c0-14.115-11.485-25.6-25.6-25.6h-358.4c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h358.4c14.115 0 25.6-11.485 25.6-25.6v-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft.js
new file mode 100644
index 00000000..91875760
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PointerLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 870.4c0-21.072 6.403-40.674 17.358-56.973-39.88-14.008-68.558-52.021-68.558-96.627 0-21.072 6.403-40.674 17.358-56.973-39.88-14.008-68.558-52.021-68.558-96.627 0-18.645 5.034-36.125 13.776-51.2h-167.376c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4h377.52l-119.446-68.909c-24.326-13.366-41.645-35.163-48.782-61.405-6.949-25.56-3.272-52.146 10.357-74.858 27.877-46.461 90.819-64.138 140.37-39.442 3.101 1.514 70.024 34.213 273.938 136.17 96.021 48.010 164.653 100.704 203.994 156.619 30.886 43.896 32.451 74.195 32.451 79.824v256c0 43.41-12.566 83.571-37.352 119.371-23.957 34.603-58.984 64.469-104.11 88.768-89.251 48.059-217.381 73.461-370.538 73.461-56.464 0-102.4-45.936-102.4-102.4zM858.262 854.259c52.251-28.134 114.538-79.262 114.538-163.059v-255.49c-0.173-2.016-2.565-23.546-26.894-56.067-24.246-32.41-75.373-82.155-181.246-135.091-207.579-103.789-272.947-135.685-273.584-135.995-0.077-0.037-0.154-0.075-0.23-0.114-25.742-12.87-59.49-3.744-73.694 19.928-6.387 10.645-8.11 23.102-4.853 35.080 3.47 12.766 12.059 23.438 24.182 30.051 0.179 0.098 0.357 0.198 0.534 0.301l138.498 79.899c29.842 16.349 42.405 34.723 37.328 54.622-5.088 19.955-25.019 30.075-59.24 30.075h-400c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2h332.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-76.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2h76.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-25.6c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2h76.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-25.6c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c144.712 0 264.448-23.286 346.262-67.341z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft2.js
new file mode 100644
index 00000000..ba7f62a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerLeft2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PointerLeft2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 768c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6z' />
+            <path d='M435.2 870.4c-42.347 0-76.8-34.451-76.8-76.8 0-9.995 1.939-19.541 5.429-28.306-32.59-8.883-56.629-38.726-56.629-74.094 0-9.995 1.939-19.541 5.429-28.306-32.59-8.885-56.629-38.728-56.629-74.094 0-8.971 1.547-17.589 4.387-25.6h-132.387c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8h305.483l-56.976-71.968c-12.339-15.587-18.498-35.56-17.358-56.232 1.149-20.723 9.512-39.866 23.549-53.902 29.768-29.768 78.451-29.83 108.525-0.139l180.371 178.106c11.643-27.624 38.997-47.064 70.806-47.064h102.4c42.349 0 76.8 34.453 76.8 76.8v358.4c0 42.349-34.451 76.8-76.8 76.8h-102.4c-27.699 0-52.018-14.744-65.53-36.794-32.579 16.768-92.078 36.794-190.47 36.794h-51.2zM418.901 263.701c-10.589 10.592-11.643 30.288-2.251 42.15l89.822 113.458c6.093 7.698 7.25 18.2 2.973 27.038-4.275 8.838-13.227 14.453-23.045 14.453h-358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h256c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-51.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h51.2c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h51.2c107.634 0 160.736-26.406 179.2-38.31v-309.389l-210.352-207.709c-9.938-9.813-26.582-9.854-36.347-0.091zM844.8 819.2c14.115 0 25.6-11.485 25.6-25.6v-358.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6v358.4c0 14.115 11.485 25.6 25.6 25.6h102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight.js
new file mode 100644
index 00000000..a19ba8e7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PointerRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M614.4 870.4c0-21.072-6.403-40.674-17.358-56.973 39.88-14.008 68.558-52.021 68.558-96.627 0-21.072-6.403-40.674-17.358-56.973 39.88-14.008 68.558-52.021 68.558-96.627 0-18.645-5.034-36.125-13.776-51.2h167.376c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4h-377.52l119.446-68.909c24.326-13.366 41.645-35.163 48.782-61.405 6.949-25.56 3.272-52.146-10.357-74.858-27.877-46.461-90.819-64.138-140.37-39.442-3.101 1.514-70.024 34.213-273.938 136.17-96.021 48.010-164.653 100.704-203.994 156.619-30.886 43.896-32.451 74.195-32.451 79.824v256c0 43.41 12.566 83.571 37.352 119.371 23.957 34.603 58.984 64.469 104.11 88.768 89.251 48.059 217.381 73.461 370.538 73.461 56.464 0 102.4-45.936 102.4-102.4zM165.738 854.259c-52.251-28.134-114.538-79.262-114.538-163.059v-255.49c0.173-2.016 2.565-23.546 26.894-56.067 24.246-32.41 75.373-82.155 181.246-135.091 207.579-103.789 272.947-135.685 273.584-135.995 0.077-0.037 0.154-0.075 0.23-0.114 25.742-12.87 59.49-3.744 73.694 19.928 6.387 10.645 8.11 23.102 4.853 35.080-3.47 12.766-12.059 23.438-24.182 30.051-0.179 0.098-0.357 0.198-0.534 0.301l-138.498 79.899c-29.842 16.349-42.405 34.723-37.328 54.622 5.088 19.955 25.019 30.075 59.24 30.075h400c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-332.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h25.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2c-144.712 0-264.448-23.286-346.262-67.341z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight2.js
new file mode 100644
index 00000000..17c55918
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerRight2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PointerRight2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 870.4c42.347 0 76.8-34.451 76.8-76.8 0-9.995-1.939-19.541-5.429-28.306 32.59-8.883 56.629-38.726 56.629-74.094 0-9.995-1.939-19.541-5.429-28.306 32.59-8.885 56.629-38.728 56.629-74.094 0-8.971-1.547-17.589-4.387-25.6h132.387c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8h-305.483l56.976-71.968c12.339-15.587 18.498-35.56 17.358-56.232-1.149-20.723-9.512-39.866-23.549-53.902-29.768-29.768-78.451-29.83-108.525-0.139l-180.371 178.106c-11.643-27.624-38.997-47.064-70.806-47.064h-102.4c-42.349 0-76.8 34.453-76.8 76.8v358.4c0 42.349 34.451 76.8 76.8 76.8h102.4c27.699 0 52.018-14.744 65.53-36.794 32.579 16.768 92.078 36.794 190.47 36.794h51.2zM553.899 263.701c10.589 10.592 11.643 30.288 2.251 42.15l-89.822 113.458c-6.093 7.698-7.25 18.2-2.973 27.038 4.275 8.838 13.227 14.453 23.045 14.453h358.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-256c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-51.2c-107.634 0-160.736-26.406-179.2-38.31v-309.389l210.352-207.709c9.938-9.813 26.582-9.854 36.347-0.091zM128 819.2c-14.115 0-25.6-11.485-25.6-25.6v-358.4c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v358.4c0 14.115-11.485 25.6-25.6 25.6h-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp.js
new file mode 100644
index 00000000..79f351bf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PointerUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.125 5.034-51.2 13.776v-167.376c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.56-6.949-52.146-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 858.262c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.349 29.842 34.723 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp2.js
new file mode 100644
index 00000000..4f128806
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PointerUp2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PointerUp2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M819.2 537.6c0-42.347-34.451-76.8-76.8-76.8-9.995 0-19.541 1.939-28.306 5.429-8.883-32.59-38.726-56.629-74.094-56.629-9.995 0-19.541 1.939-28.306 5.429-8.885-32.59-38.728-56.629-74.094-56.629-8.971 0-17.589 1.547-25.6 4.387v-132.387c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v305.483l-71.968-56.976c-15.587-12.339-35.56-18.498-56.232-17.358-20.723 1.149-39.866 9.512-53.902 23.549-29.768 29.768-29.83 78.451-0.139 108.525l178.106 180.371c-27.624 11.643-47.064 38.997-47.064 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53 16.768-32.579 36.794-92.078 36.794-190.47v-51.2zM212.501 521.301c10.592-10.589 30.288-11.643 42.15-2.251l113.458 89.822c7.698 6.093 18.2 7.25 27.038 2.973 8.838-4.275 14.453-13.227 14.453-23.045v-358.4c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.709-210.352c-9.813-9.938-9.854-26.582-0.091-36.347zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Poop.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Poop.js
new file mode 100644
index 00000000..24309b94
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Poop.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Poop
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M917.133 646.995c36.555-32.968 55.667-70.261 55.667-109.395 0-52.158-34.739-104.203-97.818-146.55-17.387-11.672-36.75-22.467-57.68-32.261 1.248-8.579 1.898-17.264 1.898-25.989 0-66.926-29.933-179.2-230.4-179.2-35.035 0-76.8-8.883-76.8-51.2 0-23.198 29.574-48.541 39.872-55.547 9.354-6.28 13.501-17.936 10.218-28.712s-13.224-18.141-24.49-18.141c-80.245 0-162.696 26.368-226.211 72.346-32.41 23.461-58.131 50.595-76.45 80.65-19.998 32.814-30.139 67.47-30.139 103.005 0 14.744 1.243 29.392 3.608 43.798-43.469 20.992-80.192 48.71-107.018 80.933-32.835 39.435-50.19 84.829-50.19 131.269 0 28.728 6.627 58.021 19.198 86.28-46.139 43.122-70.398 92.614-70.398 144.12 0 78.347 55.451 150.68 156.141 203.674 95.478 50.251 221.859 77.926 355.859 77.926 133.256 0 258.93-22.016 353.87-61.99 101.971-42.936 158.13-102.744 158.13-168.41 0-53.282-37.872-105.101-106.867-146.605zM846.003 914.822c-88.797 37.387-207.414 57.978-334.003 57.978-125.843 0-243.755-25.582-332.013-72.034-83.050-43.712-128.787-99.954-128.787-158.366 0-40.016 21.634-73.466 45.56-98.232 5.555 7.786 11.587 15.406 18.083 22.822 40.771 46.536 97.469 82.053 159.65 100.005 2.371 0.685 4.762 1.011 7.112 1.011 11.114 0 21.347-7.294 24.584-18.504 3.922-13.584-3.91-27.774-17.494-31.698-106.206-30.662-186.294-119.141-186.294-205.805 0-62.675 45.038-122.827 119.269-161.555 26.826 73.859 83.445 135.219 153.798 160.091 2.822 0.998 5.701 1.47 8.533 1.47 10.546 0 20.421-6.566 24.136-17.074 4.712-13.331-2.274-27.957-15.603-32.669-77.837-27.517-136.533-116.192-136.533-206.264 0-51.818 30.333-102.312 85.411-142.179 38.090-27.571 84.11-46.995 131.971-56.328-7.397 13.192-12.582 28.349-12.582 44.907 0 49.502 33.626 102.4 128 102.4 65.453 0 113.637 13.026 143.213 38.715 23.88 20.742 35.987 50.782 35.987 89.285 0 1.928-0.059 3.85-0.144 5.77-38.312-13.624-80.181-24.194-123.883-31.059-13.978-2.198-27.069 7.352-29.262 21.317-2.195 13.966 7.349 27.067 21.315 29.262 82.502 12.962 157.232 39.763 210.419 75.469 48.464 32.536 75.155 69.485 75.155 104.042 0 34.813-27.136 63.741-53.894 83.802-63.056-28.181-141.078-48.445-224.792-58.035-14.054-1.594-26.738 8.474-28.349 22.52-1.608 14.046 8.475 26.739 22.52 28.349 96.546 11.058 184.218 36.858 246.866 72.645 57.296 32.728 88.85 70.629 88.85 106.72 0 43.109-46.216 87.293-126.797 121.222z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait.js
new file mode 100644
index 00000000..0ac74f75
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Portrait
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M896 102.4h-768c-14.138 0-25.6 11.462-25.6 25.6v614.4c0 14.139 11.462 25.6 25.6 25.6h552.654c0.054 0 0.109 0.006 0.165 0.006 0.046 0 0.096-0.006 0.144-0.006h215.037c14.139 0 25.6-11.461 25.6-25.6v-614.4c0-14.138-11.461-25.6-25.6-25.6zM385.832 716.8c25.882-34 68.134-51.2 126.168-51.2s100.288 17.202 126.168 51.2h-252.336zM870.4 716.8h-172.683c-21.411-44.25-71.323-102.4-185.717-102.4-114.395 0-164.307 58.15-185.717 102.4h-172.683v-563.2h716.8v563.2z' />
+            <path d='M512 563.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 307.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait2.js
new file mode 100644
index 00000000..ebf2dd5f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Portrait2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Portrait2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M896 102.4h-768c-14.138 0-25.6 11.462-25.6 25.6v614.4c0 14.139 11.462 25.6 25.6 25.6h552.654c0.054 0 0.109 0.006 0.165 0.006 0.046 0 0.096-0.006 0.144-0.006h215.037c14.139 0 25.6-11.461 25.6-25.6v-614.4c0-14.138-11.461-25.6-25.6-25.6zM385.832 716.8c25.882-34 68.134-51.2 126.168-51.2s100.288 17.202 126.168 51.2h-252.336zM870.4 716.8h-172.683c-21.411-44.25-71.323-102.4-185.717-102.4-114.395 0-164.307 58.15-185.717 102.4h-172.683v-563.2h716.8v563.2z' />
+            <path d='M512 563.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 307.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+            <path d='M896 921.6h-358.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Power.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Power.js
new file mode 100644
index 00000000..7eead94d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Power.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Power
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.592 1024c-5.030 0-10.088-1.478-14.485-4.498-10.168-6.984-13.91-20.229-8.901-31.501l166.046-373.602h-245.053c-10.355 0-19.69-6.237-23.651-15.803s-1.771-20.576 5.55-27.899l512-512c8.725-8.725 22.427-9.984 32.595-3s13.909 20.227 8.899 31.499l-166.045 373.603h245.051c10.355 0 19.69 6.237 23.651 15.803 3.963 9.566 1.771 20.578-5.55 27.899l-512 512c-4.95 4.95-11.506 7.498-18.109 7.498zM241.003 563.2h222.64c8.666 0 16.742 4.384 21.466 11.65 4.722 7.267 5.448 16.429 1.928 24.347l-126.050 283.611 370.81-370.808h-222.642c-8.666 0-16.742-4.384-21.466-11.65-4.722-7.267-5.448-16.429-1.928-24.347l126.050-283.61-370.808 370.806z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerCrossed.js
new file mode 100644
index 00000000..cc9745da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.PowerCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M967.408 163.483c-8.682-11.162-24.765-13.166-35.925-4.491l-380.24 295.742 163.35-367.538c5.010-11.272 1.269-24.515-8.899-31.499-10.168-6.982-23.87-5.725-32.595 3l-512 512c-7.322 7.322-9.512 18.333-5.55 27.899s13.296 15.803 23.651 15.803h166.758l-336.075 261.392c-11.16 8.682-13.17 24.765-4.491 35.925 5.046 6.49 12.597 9.885 20.226 9.885 5.493 0 11.027-1.762 15.699-5.394l380.238-295.742-163.349 367.538c-5.010 11.272-1.267 24.515 8.901 31.501 4.397 3.019 9.454 4.498 14.485 4.498 6.603 0 13.16-2.547 18.11-7.499l512-512c7.322-7.322 9.512-18.333 5.55-27.899-3.963-9.566-13.298-15.803-23.653-15.803h-166.758l336.075-261.392c11.16-8.68 13.171-24.765 4.491-35.925zM241.003 563.2l370.806-370.806-126.050 283.61c-3.52 7.918-2.794 17.080 1.928 24.347 0.552 0.848 1.154 1.654 1.792 2.422l-77.693 60.427h-170.784zM731.797 512l-370.808 370.808 126.050-283.611c3.52-7.918 2.794-17.080-1.928-24.347-0.552-0.848-1.154-1.653-1.792-2.422l77.694-60.427h170.784z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerSwitch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerSwitch.js
new file mode 100644
index 00000000..6f5eb1c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PowerSwitch.js
@@ -0,0 +1,13 @@
+// Icon: Linear.PowerSwitch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 614.4c-14.138 0-25.6-11.461-25.6-25.6v-460.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v460.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 972.8c-102.57 0-199-39.944-271.53-112.47-72.528-72.528-112.47-168.96-112.47-271.53 0-84.395 26.859-164.478 77.674-231.594 49.15-64.915 118.979-113.394 196.624-136.501 13.55-4.034 27.805 3.683 31.838 17.234s-3.683 27.805-17.234 31.838c-139.955 41.654-237.702 172.84-237.702 319.022 0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8c0-146.187-97.75-277.374-237.71-319.024-13.552-4.034-21.267-18.288-17.234-31.838 4.032-13.552 18.29-21.267 31.837-17.235 77.646 23.106 147.48 71.582 196.632 136.499 50.816 67.115 77.675 147.202 77.675 231.598 0 102.57-39.942 199.002-112.47 271.53-72.528 72.526-168.96 112.47-271.53 112.47z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Presentation.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Presentation.js
new file mode 100644
index 00000000..d48c46f7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Presentation.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Presentation
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 0h-921.6c-14.138 0-25.6 11.462-25.6 25.6v768c0 14.139 11.462 25.6 25.6 25.6h398.997l-161.099 161.099c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l161.098-161.096v142.995c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-142.997l161.099 161.099c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-161.098-161.098h398.997c14.139 0 25.6-11.461 25.6-25.6v-768c0-14.138-11.461-25.6-25.6-25.6zM51.2 51.2h870.4v614.4h-870.4v-614.4zM921.6 768h-870.4v-51.2h870.4v51.2z' />
+            <path d='M654.682 337.427l-256-179.2c-7.822-5.475-18.037-6.142-26.502-1.734s-13.779 13.162-13.779 22.707v358.4c0 9.546 5.31 18.299 13.778 22.706 3.72 1.938 7.778 2.894 11.821 2.894 5.16 0 10.299-1.558 14.683-4.629l256-179.2c6.842-4.789 10.918-12.618 10.918-20.971s-4.077-16.182-10.918-20.973zM409.6 488.432v-260.064l185.76 130.032-185.76 130.032z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PreviousCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PreviousCircle.js
new file mode 100644
index 00000000..2daa307f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/PreviousCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.PreviousCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M640.005 819.2c-5.88 0-11.699-2.024-16.394-5.934l-307.2-256c-5.837-4.862-9.211-12.069-9.211-19.666s3.374-14.803 9.211-19.666l307.2-256c7.634-6.358 18.253-7.731 27.246-3.517 8.995 4.213 14.742 13.25 14.742 23.182v512c0 9.933-5.747 18.97-14.742 23.182-3.464 1.624-7.17 2.418-10.853 2.418zM372.789 537.6l241.611 201.344v-402.686l-241.611 201.342z' />
+            <path d='M281.6 768c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Printer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Printer.js
new file mode 100644
index 00000000..69a88664
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Printer.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Printer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 204.8h-76.8v-128c0-42.347-34.453-76.8-76.8-76.8h-563.2c-42.347 0-76.8 34.453-76.8 76.8v128h-76.8c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 42.349 34.453 76.8 76.8 76.8h76.8v128c0 42.347 34.453 76.8 76.8 76.8h563.2c42.347 0 76.8-34.453 76.8-76.8v-128h76.8c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-42.347-34.451-76.8-76.8-76.8zM204.8 76.8c0-14.115 11.485-25.6 25.6-25.6h563.2c14.115 0 25.6 11.485 25.6 25.6v128h-614.4v-128zM793.6 972.8h-563.2c-14.115 0-25.6-11.485-25.6-25.6v-332.8h614.4v332.8c0 14.115-11.485 25.6-25.6 25.6zM972.8 742.4c0 14.115-11.485 25.6-25.6 25.6h-76.8v-153.6h25.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v153.6h-76.8c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v460.8z' />
+            <path d='M742.4 716.8h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 819.2h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 921.6h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 460.8c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM844.8 358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Profile.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Profile.js
new file mode 100644
index 00000000..74e155bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Profile.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Profile
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 870.4h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-563.2c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v563.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 204.8c-14.115 0-25.6 11.485-25.6 25.6v563.2c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-563.2c0-14.115-11.485-25.6-25.6-25.6h-870.4z' />
+            <path d='M435.232 716.8c-0.011-0.002-0.022-0.002-0.032 0h-256c-14.138 0-25.6-11.461-25.6-25.6 0-3.371 0.558-33.834 19.891-64.768 18.029-28.846 55.861-63.232 133.709-63.232s115.68 34.386 133.709 63.232c17.301 27.683 19.566 54.989 19.851 62.838 0.048 0.637 0.072 1.282 0.072 1.93 0 14.139-11.462 25.6-25.6 25.6zM210.786 665.6h192.83c-1.797-4.419-4.133-9.067-7.166-13.654-16.483-24.914-46.509-37.546-89.25-37.546s-72.766 12.632-89.248 37.546c-3.035 4.587-5.37 9.235-7.166 13.654z' />
+            <path d='M844.8 409.6h-256c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h256c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 512h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 614.4h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M307.2 512c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4c0 56.464-45.936 102.4-102.4 102.4zM307.2 358.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M844.8 716.8h-256c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h256c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Prohibited.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Prohibited.js
new file mode 100644
index 00000000..6f544222
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Prohibited.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Prohibited
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962-149.962 225.278-149.962 362.038c0 136.76 53.258 265.334 149.962 362.038s225.278 149.962 362.038 149.962c136.76 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038zM512 51.2c129.637 0 246.922 53.832 330.733 140.29l-695.024 602.354c-60.461-77.966-96.509-175.768-96.509-281.843 0-254.086 206.714-460.8 460.8-460.8zM512 972.8c-129.637 0-246.922-53.832-330.733-140.29l695.024-602.354c60.462 77.968 96.509 175.77 96.509 281.843 0 254.086-206.714 460.8-460.8 460.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pulse.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pulse.js
new file mode 100644
index 00000000..8a76fd5c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pulse.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pulse
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M639.8 866.547c-5.678 0-19.402-1.902-28.267-18.891-2.955-5.664-5.341-12.846-7.293-21.957l-120.827-563.858-112.445 412.298c-9.051 33.19-27.904 39.147-38.336 39.744-10.44 0.57-29.84-3.173-42.618-35.114l-59.614-149.040-8.414 21.038c-14.274 35.682-55.557 63.632-93.986 63.632h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c17.725 0 39.864-14.987 46.446-31.445l13.168-32.923c12.427-31.064 32.139-35.702 42.786-35.702s30.358 4.638 42.784 35.701l55.016 137.541 120.030-440.112c8.966-32.882 25.622-39.387 38.069-39.034 12.418 0.342 28.717 7.746 35.859 41.074l116.976 545.886 68.12-340.6c6.798-33.995 25.149-40.992 35.482-42.138 10.339-1.147 29.771 1.662 43.85 33.344l60.813 136.824c7.349 16.53 30.512 31.584 48.602 31.584h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-102.4c-38.040 0-79.939-27.23-95.387-61.99l-48.901-110.027-76.566 382.832c-1.827 9.136-4.114 16.35-6.992 22.054-8.718 17.285-22.611 19.238-28.178 19.277-0.059 0-0.117 0.002-0.176 0.002z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin.js
new file mode 100644
index 00000000..2f841ddd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Pushpin
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 347.797l-270.997-270.997c-9.65-9.65-22.507-14.965-36.203-14.965s-26.554 5.314-36.203 14.965l-14.997 14.997c-14.834 14.834-25.6 40.826-25.6 61.803v51.2c0 7.288-5.45 20.446-10.603 25.6l-142.997 142.997c-5.152 5.154-18.312 10.603-25.6 10.603h-51.2c-20.978 0-46.97 10.766-61.803 25.6l-14.997 14.997c-19.963 19.963-19.963 52.443 0 72.406l79.534 79.534-253.426 329.453c-7.84 10.192-6.902 24.619 2.189 33.71 4.966 4.966 11.522 7.499 18.109 7.499 5.477 0 10.974-1.75 15.602-5.309l329.453-253.426 79.536 79.534c9.65 9.651 22.507 14.966 36.203 14.966s26.554-5.314 36.203-14.966l14.997-14.997c14.834-14.834 25.6-40.826 25.6-61.803v-51.2c0-7.288 5.45-20.446 10.603-25.6l142.997-142.997c5.154-5.154 18.312-10.603 25.6-10.603h51.2c20.976 0 46.968-10.766 61.803-25.6l14.997-14.997c9.65-9.65 14.966-22.507 14.966-36.203s-5.317-26.554-14.966-36.203zM216.757 781.642l129.688-168.594 38.906 38.906-168.594 129.688zM870.4 398.997c-5.154 5.154-18.312 10.603-25.6 10.603h-51.2c-20.976 0-46.968 10.766-61.803 25.6l-142.997 142.997c-14.834 14.834-25.6 40.826-25.6 61.803v51.2c0 7.288-5.45 20.446-10.603 25.6l-14.93 14.958c-0.006 0.003-0.032 0.008-0.067 0.008v0.032l-270.997-270.998 14.998-14.998c5.152-5.154 18.312-10.603 25.6-10.603h51.2c20.978 0 46.97-10.766 61.803-25.6l142.995-142.995c14.834-14.834 25.6-40.826 25.6-61.803v-51.2c0-7.288 5.45-20.446 10.603-25.6l14.997-14.997 270.997 270.997-14.997 14.997z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin2.js
new file mode 100644
index 00000000..4113ffd2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Pushpin2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Pushpin2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 230.4c0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4c0 100.125 64.205 185.522 153.6 217.222v550.778c0 11.282 7.384 21.234 18.181 24.501 2.453 0.742 4.949 1.101 7.418 1.101 8.4 0 16.466-4.147 21.302-11.402l102.4-153.6c2.805-4.205 4.301-9.146 4.301-14.2v-397.178c89.394-31.701 153.598-117.098 153.598-217.222zM512 837.048l-51.2 76.8v-454.478c8.408 0.933 16.947 1.43 25.6 1.43s17.192-0.496 25.6-1.43v377.678zM486.4 409.6c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2z' />
+            <path d='M384 256c-14.138 0-25.6-11.462-25.6-25.6 0-70.579 57.421-128 128-128 14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-42.347 0-76.8 34.453-76.8 76.8 0 14.138-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Puzzle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Puzzle.js
new file mode 100644
index 00000000..69d84514
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Puzzle.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Puzzle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M960.662 259.829c-7.544-4.664-16.966-5.091-24.904-1.13-0.416 0.208-42.11 20.928-90.368 36.667-80.672 26.31-109.544 16.682-118.214 11.323-3.106-1.922-10.376-6.418-10.376-25.090 0-16.13 8.067-30.043 18.282-47.659 14.666-25.296 32.918-56.776 32.918-105.941 0-34.266-23.707-67.955-65.043-92.429-38.744-22.938-88.378-35.571-139.757-35.571s-101.013 12.634-139.755 35.571c-41.338 24.474-65.045 58.163-65.045 92.429 0 49.165 18.253 80.645 32.92 105.941 10.213 17.616 18.28 31.53 18.28 47.659 0 13.746-5.051 18.968-9.992 22.264-10.181 6.79-44.954 19.635-147.755-7.658-60.418-16.040-113.483-38.019-114.006-38.237-6.883-2.869-14.675-2.594-21.338 0.755-6.664 3.347-11.536 9.434-13.344 16.667-0.635 2.542-15.69 63.070-25.867 131.205-19.586 131.096-3.27 170.056 10.706 187.955 9.992 12.8 24.197 19.848 39.997 19.848 34.741 0 57.691-26.613 79.886-52.35 22.197-25.739 43.162-50.050 73.714-50.050 30.574 0 76.8 61.262 76.8 153.6s-46.226 153.6-76.8 153.6c-30.552 0-51.517-24.31-73.714-50.050-22.195-25.738-45.146-52.35-79.886-52.35-17.235 0-32.389 7.608-42.667 21.424-12.672 17.034-27.216 52.23-7.298 160.789 10.242 55.822 24.829 104.691 25.443 106.744 3.25 10.827 13.216 18.243 24.522 18.243h716.8c70.579 0 128-57.421 128-128v-614.4c0-8.869-4.595-17.106-12.138-21.771zM921.6 896c0 42.347-34.453 76.8-76.8 76.8h-697.403c-5.472-20.274-14.197-54.946-20.44-91.102-16.406-95.026-1.102-112.467 0.078-113.626 0.147-0.029 0.453-0.072 0.965-0.072 11.286 0 26.45 17.582 41.112 34.587 26.054 30.213 58.482 67.813 112.488 67.813 34.266 0 67.955-23.707 92.429-65.043 22.938-38.744 35.571-88.378 35.571-139.757s-12.634-101.013-35.571-139.757c-24.474-41.336-58.163-65.043-92.429-65.043-54.006 0-86.434 37.6-112.488 67.813-14.458 16.766-29.402 34.094-40.635 34.576-2.768-3.349-17.902-27.571-1.579-141.931 5.79-40.571 13.798-79.802 19.378-105.106 22.242 8.232 55.504 19.709 91.901 29.398 91.947 24.477 154.040 24.779 189.827 0.918 14.962-9.974 32.797-29.326 32.797-64.869 0-29.899-12.805-51.982-25.187-73.339-13.378-23.074-26.013-44.866-26.013-80.261 0-30.574 61.262-76.8 153.6-76.8s153.6 46.226 153.6 76.8c0 35.395-12.635 57.187-26.013 80.261-12.382 21.357-25.187 43.44-25.187 73.339 0 39.030 18.85 58.872 34.664 68.646 33.093 20.451 85.949 18.36 161.594-6.398 22.402-7.331 43.205-15.518 59.742-22.52v574.672z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Question.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Question.js
new file mode 100644
index 00000000..e64a7beb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Question.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Question
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 870.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6 155.275 0 281.6-126.325 281.6-281.6s-126.325-281.6-281.6-281.6-281.6 126.325-281.6 281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8c0 174.894-135.61 318.71-307.2 331.826v128.974c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuestionCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuestionCircle.js
new file mode 100644
index 00000000..d8c3cab3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuestionCircle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.QuestionCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.338 193.664c-91.869-91.869-214.016-142.464-343.938-142.464s-252.067 50.595-343.936 142.464-142.464 214.014-142.464 343.936 50.595 252.069 142.464 343.938 214.014 142.462 343.936 142.462 252.069-50.594 343.938-142.462 142.462-214.016 142.462-343.938-50.594-252.067-142.462-343.936zM486.4 972.8c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2z' />
+            <path d='M486.4 768c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6 98.811 0 179.2-80.389 179.2-179.2s-80.389-179.2-179.2-179.2-179.2 80.389-179.2 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-127.043 103.357-230.4 230.4-230.4 127.042 0 230.4 103.357 230.4 230.4 0 118.389-89.763 216.211-204.8 228.987v78.213c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 921.6c-0.002 0 0 0 0 0-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.139 0 25.6 11.462 25.6 25.6v51.2c0 14.138-11.464 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteClose.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteClose.js
new file mode 100644
index 00000000..14a1f312
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteClose.js
@@ -0,0 +1,13 @@
+// Icon: Linear.QuoteClose
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.4 665.6c47.301 0 91.314-14.336 127.936-38.88-66.426 114.957-190.696 192.48-332.736 192.48-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6c116.245 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733c0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4 103.357 230.4 230.4 230.4zM230.4 256c98.811 0 179.2 80.389 179.2 179.2 0 1.546-0.040 3.080-0.059 4.621-2.459 96.683-81.875 174.579-179.141 174.579-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2z' />
+            <path d='M588.8 819.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6c116.246 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733c0-127.043-103.357-230.4-230.4-230.4s-230.4 103.357-230.4 230.4 103.357 230.4 230.4 230.4c47.301 0 91.312-14.336 127.936-38.88-66.426 114.955-190.696 192.48-332.736 192.48zM793.6 614.4c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2c0 1.546-0.040 3.080-0.059 4.621-2.459 96.683-81.875 174.579-179.141 174.579z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteOpen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteOpen.js
new file mode 100644
index 00000000..65eaa888
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/QuoteOpen.js
@@ -0,0 +1,13 @@
+// Icon: Linear.QuoteOpen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.4 409.6c-47.301 0-91.314 14.336-127.936 38.88 66.426-114.955 190.696-192.48 332.736-192.48 14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.488-127.467 307.733c0 127.043 103.357 230.4 230.4 230.4s230.4-103.357 230.4-230.4-103.357-230.4-230.4-230.4zM230.4 819.2c-98.811 0-179.2-80.389-179.2-179.2 0-1.546 0.040-3.080 0.059-4.621 2.459-96.683 81.874-174.579 179.141-174.579 98.811 0 179.2 80.389 179.2 179.2s-80.389 179.2-179.2 179.2z' />
+            <path d='M793.6 409.6c-47.301 0-91.314 14.336-127.936 38.88 66.426-114.957 190.696-192.48 332.736-192.48 14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-116.245 0-225.534 45.269-307.733 127.467s-127.467 191.488-127.467 307.733c0 127.043 103.357 230.4 230.4 230.4s230.4-103.357 230.4-230.4-103.357-230.4-230.4-230.4zM793.6 819.2c-98.811 0-179.2-80.389-179.2-179.2 0-1.546 0.040-3.080 0.059-4.621 2.459-96.683 81.875-174.579 179.141-174.579 98.811 0 179.2 80.389 179.2 179.2s-80.389 179.2-179.2 179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radar.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radar.js
new file mode 100644
index 00000000..d36109ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radar.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Radar
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464s-142.464-214.014-142.464-343.936c0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464s142.464 214.014 142.464 343.936-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M486.4 870.4c-79.187 0-155.912-28.288-216.045-79.65-59.454-50.786-99.285-121.003-112.155-197.715-2.339-13.944 7.067-27.144 21.011-29.483 13.942-2.338 27.144 7.069 29.482 21.011 22.81 135.957 139.602 234.637 277.707 234.637 155.275 0 281.6-126.325 281.6-281.6 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 183.506-149.294 332.8-332.8 332.8z' />
+            <path d='M537.606 708.062c-10.546 0-20.422-6.565-24.136-17.074-4.712-13.331 2.274-27.958 15.605-32.669 51.035-18.040 85.325-66.554 85.325-120.72 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 75.822-48.008 143.734-119.462 168.992-2.821 0.997-5.701 1.47-8.531 1.47z' />
+            <path d='M651.448 207.502c-12.645-6.323-28.024-1.195-34.346 11.45l-5.178 10.355c-39.752-16.254-81.856-24.507-125.525-24.507-79.186 0-155.912 28.288-216.043 79.651-59.454 50.784-99.285 121-112.155 197.712-2.339 13.944 7.067 27.144 21.011 29.483 1.434 0.24 2.859 0.357 4.267 0.357 12.277 0 23.118-8.859 25.216-21.368 22.808-135.957 139.6-234.635 277.704-234.635 35.629 0 70.016 6.47 102.557 19.243l-46.106 92.214c-18.083-6.016-36.982-9.058-56.451-9.058-98.811 0-179.2 80.389-179.2 179.2 0 75.822 48.006 143.734 119.459 168.992 2.821 0.998 5.701 1.47 8.533 1.47 10.546 0 20.422-6.566 24.136-17.074 4.712-13.331-2.274-27.957-15.603-32.669-51.037-18.040-85.325-66.554-85.325-120.72 0-70.579 57.421-128 128-128 11.384 0 22.488 1.451 33.216 4.328l-23.739 47.478c-3.109-0.386-6.267-0.606-9.477-0.606-42.347 0-76.8 34.453-76.8 76.8 0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8 0-20.669-8.222-39.442-21.549-53.262l36.322-72.643c0.008-0.016 0.018-0.029 0.026-0.043 0.008-0.016 0.013-0.032 0.021-0.048l68.662-137.325c0.008-0.014 0.016-0.027 0.024-0.040s0.013-0.030 0.019-0.045l16.173-32.346c6.323-12.645 1.197-28.022-11.45-34.346zM486.4 563.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radio.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radio.js
new file mode 100644
index 00000000..659f5b50
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Radio.js
@@ -0,0 +1,26 @@
+// Icon: Linear.Radio
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 921.6c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM691.2 512c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M256 665.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4c0 56.464-45.936 102.4-102.4 102.4zM256 512c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M896 409.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 409.6h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 870.4c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 768c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M896 256h-578.926l536.915-206.506c13.197-5.075 19.779-19.888 14.704-33.083-5.074-13.195-19.883-19.779-33.083-14.704l-661.163 254.293h-46.446c-70.579 0-128 57.421-128 128v512c0 70.579 57.421 128 128 128h768c70.579 0 128-57.421 128-128v-512c0-70.579-57.421-128-128-128zM972.8 896c0 42.349-34.451 76.8-76.8 76.8h-768c-42.347 0-76.8-34.451-76.8-76.8v-512c0-42.347 34.453-76.8 76.8-76.8h51.019c0.062 0 0.123 0.006 0.186 0.006 0.051 0 0.104-0.006 0.155-0.006h716.64c42.349 0 76.8 34.453 76.8 76.8v512z' />
+            <path d='M691.2 716.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M691.2 614.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.346-7.502 18.098-7.502 6.736 0 13.344 2.736 18.096 7.502 4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 716.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096 0-6.752 2.736-13.344 7.502-18.098 4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M691.2 819.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M793.6 716.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 614.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M793.6 614.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M588.8 819.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M793.6 819.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RadioButton.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RadioButton.js
new file mode 100644
index 00000000..32514fc2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RadioButton.js
@@ -0,0 +1,13 @@
+// Icon: Linear.RadioButton
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-136.76 0-265.334-53.258-362.038-149.962s-149.962-225.278-149.962-362.038c0-136.76 53.258-265.334 149.962-362.038s225.278-149.962 362.038-149.962c136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962zM512 51.2c-254.086 0-460.8 206.714-460.8 460.8s206.714 460.8 460.8 460.8 460.8-206.714 460.8-460.8-206.714-460.8-460.8-460.8z' />
+            <path d='M512 819.2c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2 307.2 137.81 307.2 307.2-137.81 307.2-307.2 307.2zM512 256c-141.158 0-256 114.842-256 256 0 141.16 114.842 256 256 256 141.16 0 256-114.84 256-256 0-141.158-114.84-256-256-256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rain.js
new file mode 100644
index 00000000..e853f8da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rain.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Rain
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 460.8c0 0 0.002 0 0 0-34.19 0-66.334-13.314-90.51-37.49-49.907-49.907-49.906-131.112 0-181.018 28.354-28.355 89.974-53.8 161.325-83.262 41.453-17.118 84.318-34.818 122.536-53.928 9.858-4.93 21.76-2.997 29.55 4.797 7.792 7.792 9.723 19.694 4.795 29.55-19.109 38.219-36.81 81.085-53.928 122.541-29.462 71.349-54.906 132.968-83.259 161.32-24.174 24.174-56.32 37.49-90.509 37.49zM280.514 180.286c-20.651 8.928-41.576 17.568-62.157 26.067-60.731 25.078-123.531 51.010-144.662 72.142-29.944 29.944-29.944 78.667 0 108.611 14.506 14.504 33.792 22.493 54.306 22.493s39.8-7.989 54.306-22.494c21.131-21.131 47.062-83.928 72.139-144.659 8.499-20.582 17.139-41.506 26.069-62.16z' />
+            <path d='M793.6 921.6c-0.002 0 0.002 0 0 0-34.19 0-66.334-13.314-90.509-37.491-49.906-49.906-49.906-131.11 0.002-181.018 28.352-28.355 89.973-53.8 161.323-83.264 41.453-17.117 84.318-34.818 122.536-53.925 9.854-4.926 21.76-2.995 29.55 4.795 7.792 7.79 9.723 19.696 4.795 29.55-19.109 38.219-36.81 81.086-53.928 122.541-29.462 71.349-54.906 132.968-83.259 161.32-24.176 24.176-56.323 37.491-90.51 37.491zM946.112 641.088c-20.65 8.926-41.573 17.566-62.155 26.066-60.731 25.078-123.531 51.011-144.661 72.142-29.946 29.946-29.947 78.667-0.003 108.611 14.507 14.504 33.794 22.493 54.307 22.493s39.8-7.989 54.306-22.494c21.13-21.131 47.061-83.928 72.139-144.659 8.501-20.584 17.139-41.504 26.067-62.158z' />
+            <path d='M691.2 358.4c-0.002 0 0.002 0 0 0-34.19 0-66.334-13.314-90.509-37.491-49.906-49.906-49.906-131.11 0.002-181.018 28.352-28.355 89.971-53.8 161.323-83.264 41.453-17.117 84.318-34.818 122.536-53.926 9.856-4.928 21.758-2.997 29.55 4.797 7.792 7.792 9.723 19.694 4.795 29.55-19.109 38.219-36.81 81.085-53.928 122.541-29.462 71.349-54.906 132.968-83.259 161.32-24.176 24.176-56.323 37.491-90.51 37.491zM843.712 77.886c-20.651 8.928-41.573 17.568-62.155 26.067-60.731 25.078-123.531 51.010-144.661 72.141-29.946 29.946-29.947 78.667-0.003 108.611 14.507 14.506 33.794 22.494 54.307 22.494s39.8-7.989 54.306-22.494c21.13-21.131 47.061-83.928 72.139-144.659 8.501-20.582 17.139-41.506 26.067-62.16z' />
+            <path d='M230.4 1024c0 0 0.002 0 0 0-34.19 0-66.334-13.314-90.51-37.491-49.907-49.906-49.906-131.11 0-181.018 28.352-28.355 89.973-53.8 161.325-83.262 41.453-17.117 84.318-34.819 122.536-53.926 9.858-4.93 21.76-2.995 29.55 4.795 7.792 7.79 9.723 19.696 4.795 29.55-19.109 38.219-36.81 81.086-53.928 122.541-29.462 71.349-54.906 132.968-83.259 161.32-24.174 24.176-56.32 37.491-90.509 37.491zM382.914 743.488c-20.651 8.926-41.574 17.566-62.157 26.066-60.731 25.078-123.531 51.011-144.662 72.142-29.944 29.946-29.946 78.667-0.002 108.611 14.507 14.504 33.794 22.493 54.307 22.493s39.8-7.989 54.306-22.494c21.131-21.131 47.062-83.928 72.139-144.659 8.499-20.584 17.139-41.504 26.069-62.158z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank.js
new file mode 100644
index 00000000..a56a4232
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Rank
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.176 819.205c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.091-448.366 249.091c-12.362 6.867-27.946 2.414-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.298 17.133-4.298 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank2.js
new file mode 100644
index 00000000..e4ebb60d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Rank2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.176 819.205c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.091-448.366 249.091c-12.362 6.867-27.946 2.414-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.298 17.133-4.298 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+            <path d='M947.176 665.605c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.091-448.366 249.091c-12.362 6.867-27.946 2.413-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.298 17.133-4.298 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank3.js
new file mode 100644
index 00000000..b26267ff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rank3.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Rank3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.176 819.205c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.091-448.366 249.091c-12.362 6.867-27.946 2.414-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.298 17.133-4.298 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+            <path d='M947.176 665.605c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.091-448.366 249.091c-12.362 6.867-27.946 2.413-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.298 17.133-4.298 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+            <path d='M947.176 512.005c-4.206 0-8.472-1.038-12.41-3.227l-448.366-249.093-448.366 249.093c-12.362 6.866-27.946 2.413-34.811-9.946-6.867-12.36-2.413-27.946 9.946-34.811l460.8-256c7.733-4.296 17.133-4.296 24.866 0l460.8 256c12.36 6.866 16.813 22.451 9.946 34.811-4.68 8.422-13.406 13.173-22.403 13.173z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reading.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reading.js
new file mode 100644
index 00000000..9cccf821
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reading.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Reading
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256c-2.502 0-62.336 0.302-151.274 26.654-77.562 22.982-192.728 70.968-309.526 169.856-116.8-98.888-231.963-146.874-309.528-169.856-88.938-26.352-148.77-26.654-151.272-26.654-14.138 0-25.6 11.462-25.6 25.6v512c0 6.789 2.698 13.301 7.499 18.101 4.8 4.802 11.312 7.499 18.101 7.499 2.206 0 223.219 2.269 443.792 198.334 4.85 4.31 10.93 6.466 17.008 6.466s12.158-2.155 17.008-6.466c114.723-101.976 229.166-150.454 304.973-173.166 82.366-24.675 138.312-25.166 138.819-25.168 14.139 0 25.6-11.461 25.6-25.6v-512c0-14.138-11.461-25.6-25.6-25.6zM51.2 460.8h25.6c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-25.6v-153.6zM51.2 769.494v-103.894h25.6c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.453-76.8-76.8-76.8h-25.6v-100.619c63.528 6.691 235.813 38.461 409.6 189.016v445.643c-107.851-84.875-212.040-127.686-283.928-148.986-55.525-16.451-99.704-22.75-125.672-25.16zM795.926 794.654c-71.886 21.301-176.077 64.112-283.926 148.986v-445.621c111.822-96.842 222.467-143.507 296.381-165.651 49.256-14.757 89.066-20.866 113.219-23.39v100.622h-25.6c-42.347 0-76.8 34.453-76.8 76.8v102.4c0 42.347 34.453 76.8 76.8 76.8h25.6v103.894c-25.968 2.41-70.147 8.709-125.674 25.16zM921.6 460.8v153.6h-25.6c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h25.6z' />
+            <path d='M486.4 358.4c98.811 0 179.2-80.389 179.2-179.2s-80.389-179.2-179.2-179.2-179.2 80.389-179.2 179.2 80.389 179.2 179.2 179.2zM486.4 51.2c70.579 0 128 57.421 128 128s-57.421 128-128 128-128-57.421-128-128 57.421-128 128-128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Receipt.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Receipt.js
new file mode 100644
index 00000000..8699de4f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Receipt.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Receipt
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M895.998 1024c-3.912 0-7.834-0.896-11.446-2.702l-90.952-45.475-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-90.952 45.475c-7.934 3.966-17.36 3.544-24.907-1.12-7.547-4.666-12.141-12.906-12.141-21.778v-921.6c0-9.698 5.478-18.562 14.152-22.898l102.4-51.2c7.206-3.603 15.691-3.603 22.898 0l90.95 45.475 90.952-45.475c7.206-3.603 15.691-3.603 22.898 0l90.95 45.475 90.952-45.475c7.206-3.603 15.691-3.603 22.898 0l90.95 45.475 90.952-45.475c7.206-3.603 15.691-3.603 22.898 0l102.4 51.2c8.672 4.336 14.15 13.2 14.15 22.898v921.6c0 8.872-4.594 17.112-12.141 21.776-4.11 2.541-8.779 3.824-13.461 3.824zM588.8 921.6c3.922 0 7.845 0.901 11.448 2.702l90.952 45.475 90.952-45.475c7.206-3.603 15.691-3.603 22.898 0l65.35 32.675v-864.355l-76.8-38.4-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-90.952 45.475c-7.206 3.603-15.691 3.603-22.898 0l-90.95-45.475-76.8 38.4v864.357l65.352-32.675c7.206-3.603 15.691-3.603 22.898 0l90.95 45.474 90.952-45.475c7.206-3.603 15.691-3.603 22.898 0l90.95 45.475 90.952-45.475c3.603-1.802 7.526-2.702 11.448-2.702z' />
+            <path d='M588.8 665.6h-179.2v-51.2h179.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-25.6c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v25.6h-76.8c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h179.2v51.2h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v25.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6h76.8c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6z' />
+            <path d='M640 256h-307.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 358.4h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 460.8h-512c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Record.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Record.js
new file mode 100644
index 00000000..14371550
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Record.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Record
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 870.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-179.2v-76.8c0-14.115 11.485-25.6 25.6-25.6h153.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-153.6c-42.347 0-76.8 34.451-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h153.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-153.6c-14.115 0-25.6-11.485-25.6-25.6v-76.8h179.2z' />
+            <path d='M947.2 1024h-153.6c-42.349 0-76.8-34.451-76.8-76.8v-204.8c0-42.349 34.451-76.8 76.8-76.8h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-153.6c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M250.067 982.011l-93.010-111.611h22.142c42.347 0 76.8-34.451 76.8-76.8v-51.2c0-42.349-34.453-76.8-76.8-76.8h-102.4c-42.347 0-76.8 34.451-76.8 76.8v256c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h39.21l120.325 144.389c5.064 6.075 12.344 9.211 19.68 9.211 5.778 0 11.589-1.946 16.374-5.933 10.861-9.051 12.33-25.194 3.278-36.056zM51.2 742.4c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-76.901c-0.022 0-0.043 0-0.066 0h-51.034v-76.8z' />
+            <path d='M486.4 512c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.043 0 230.4 103.357 230.4 230.4s-103.357 230.4-230.4 230.4zM486.4 102.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Recycle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Recycle.js
new file mode 100644
index 00000000..d67c950f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Recycle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Recycle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.621 972.806c-9.392 0-18.434-5.186-22.917-14.158l-51.2-102.4c-3.966-7.936-3.544-17.36 1.122-24.907 4.664-7.547 12.904-12.141 21.776-12.141h204.8c72.277 0 125.928-23.534 151.072-66.267s19.661-101.061-15.438-164.24l-49.926-89.867c-6.867-12.36-2.414-27.946 9.946-34.811 12.36-6.867 27.947-2.414 34.811 9.946l49.926 89.867c21.886 39.394 34.283 78.061 36.848 114.925 2.587 37.203-4.827 70.898-22.037 100.147s-43.064 52.094-76.842 67.899c-33.474 15.661-73.296 23.602-118.362 23.602h-163.378l32.675 65.352c6.323 12.645 1.197 28.024-11.448 34.346-3.677 1.837-7.582 2.707-11.429 2.709z' />
+            <path d='M742.398 409.6c-9.283 0-17.854-5.029-22.376-13.166l-106.811-192.259c-34.968-62.942-80.003-97.606-126.811-97.606s-91.843 34.664-126.811 97.606l-49.922 89.858c-6.866 12.36-22.45 16.816-34.81 9.946-12.36-6.866-16.813-22.451-9.946-34.81l49.922-89.859c44.398-79.92 105.336-123.941 171.566-123.941 0.005 0-0.003 0 0 0 66.235 0 127.165 44.016 171.566 123.941l83.24 149.832 29.496-58.989c6.322-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.448 34.346l-51.2 102.4c-4.246 8.494-12.846 13.939-22.341 14.146-0.186 0.005-0.373 0.006-0.557 0.006z' />
+            <path d='M384 870.4h-102.4c-45.066 0-84.886-7.941-118.358-23.603-33.778-15.805-59.63-38.648-76.842-67.898-17.21-29.25-24.624-62.944-22.037-100.147 2.565-36.864 14.962-75.53 36.848-114.925l85.682-154.227h-58.893c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c9.070 0 17.464 4.8 22.064 12.618s4.72 17.486 0.314 25.416l-106.811 192.259c-35.101 63.179-40.582 121.509-15.438 164.24 25.144 42.733 78.797 66.267 151.072 66.267h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo.js
new file mode 100644
index 00000000..d31d41e4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Redo
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 409.6c-14.139 0-25.6 11.461-25.6 25.6v135.758c-100.885-102.966-238.883-161.358-384-161.358-85.99 0-168.16 19.699-244.226 58.555-72.533 37.048-136.797 91.141-185.845 156.426-8.493 11.302-6.213 27.352 5.091 35.843 4.608 3.462 10.005 5.134 15.357 5.134 7.774 0 15.458-3.53 20.486-10.226 92.88-123.629 234.715-194.533 389.136-194.533 134.822 0 262.85 55.717 354.714 153.6h-149.914c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.139-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo2.js
new file mode 100644
index 00000000..f7d12a56
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Redo2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Redo2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M127.467 229.867c82.198-82.198 191.488-127.467 307.733-127.467 116.246 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733v66.197l109.899-109.899c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-5 5-11.55 7.499-18.102 7.499s-13.102-2.499-18.101-7.499l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l109.898 109.899v-66.197c0-211.738-172.262-384-384-384-211.739 0-384 172.262-384 384 0 211.739 172.261 384 384 384 14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6c-116.245 0-225.534-45.269-307.733-127.467s-127.467-191.488-127.467-307.733c0-116.246 45.269-225.534 127.467-307.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh.js
new file mode 100644
index 00000000..222be9de
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Refresh
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 442.698c-9.997-9.997-26.206-9.997-36.203 0l-58.832 58.832c-2.63-105.486-44.947-204.27-119.835-279.16-77.362-77.365-180.222-119.97-289.63-119.97s-212.267 42.605-289.632 119.968-119.968 180.224-119.968 289.632 42.605 212.269 119.968 289.632 180.224 119.968 289.632 119.968c152.28 0 291.12-83.699 362.342-218.435 6.608-12.499 1.83-27.989-10.669-34.597-12.502-6.603-27.99-1.832-34.597 10.669-62.328 117.914-183.826 191.163-317.077 191.163-197.622 0-358.4-160.778-358.4-358.4s160.778-358.4 358.4-358.4c194.014 0 352.501 154.966 358.224 347.619l-58.522-58.522c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l102.4 102.4c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.203z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh2.js
new file mode 100644
index 00000000..07d9a97c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refresh2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Refresh2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 921.6c-109.408 0-212.267-42.606-289.632-119.968-77.362-77.363-119.968-180.224-119.968-289.632s42.606-212.267 119.968-289.632c77.365-77.362 180.224-119.968 289.632-119.968s212.269 42.606 289.632 119.968c74.89 74.89 117.208 173.674 119.838 279.158l58.829-58.829c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-7.32 7.32-18.331 9.514-27.899 5.55-9.566-3.962-15.803-13.296-15.803-23.651v-51.2c0-197.622-160.778-358.4-358.4-358.4s-358.4 160.778-358.4 358.4c0 197.622 160.778 358.4 358.4 358.4 133.251 0 254.749-73.25 317.077-191.165 6.606-12.499 22.094-17.277 34.597-10.669 12.499 6.608 17.275 22.098 10.669 34.597-71.222 134.738-210.062 218.437-362.342 218.437z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refund.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refund.js
new file mode 100644
index 00000000..175f1260
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Refund.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Refund
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-187.909 0-360.411-102.666-450.19-267.933-6.749-12.424-2.149-27.966 10.275-34.715 12.424-6.746 27.966-2.149 34.715 10.275 80.811 148.76 236.075 241.173 405.2 241.173 254.086 0 460.8-206.714 460.8-460.8s-206.714-460.8-460.8-460.8c-169.778 0-325.325 92.936-405.938 242.541-6.051 11.229-19.446 16.293-31.411 11.869-11.966-4.422-18.85-16.979-16.142-29.445l44.475-204.798c3-13.818 16.634-22.586 30.45-19.584s22.584 16.634 19.584 30.45l-18.088 83.291c95.717-104.208 231.691-165.523 377.070-165.523 136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962z' />
+            <path d='M230.4 665.6c-14.138 0-25.6-11.461-25.6-25.6v-230.4h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM358.4 614.4h51.2v-204.8h-51.2v204.8z' />
+            <path d='M640 665.6h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v256c0 14.139-11.461 25.6-25.6 25.6zM563.2 614.4h51.2v-204.8h-51.2v204.8z' />
+            <path d='M742.392 665.606c-3.166 0-6.381-0.59-9.501-1.837-13.126-5.25-19.512-20.149-14.261-33.277l102.4-256c5.25-13.128 20.147-19.515 33.277-14.261 13.126 5.251 19.512 20.149 14.261 33.277l-102.4 256c-4.002 10.008-13.616 16.098-23.776 16.098z' />
+            <path d='M742.4 409.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 665.6c-6.736 0-13.328-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.098c4.754-4.766 11.362-7.502 18.098-7.502 6.752 0 13.344 2.736 18.096 7.502 4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Register.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Register.js
new file mode 100644
index 00000000..3cfa4de6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Register.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Register
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v102.4c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M537.6 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 358.4h-460.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 460.8h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 563.2h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 870.4c-6.87 0-13.554-2.768-18.438-7.84-6.331-6.573-8.683-16.019-6.176-24.792l51.2-179.2c1.195-4.182 3.437-7.992 6.512-11.069l384-384c9.997-9.997 26.206-9.997 36.203 0l128 128c9.933 9.933 10.006 26.011 0.166 36.035l-384 391.2c-3.331 3.395-7.544 5.794-12.165 6.928l-179.2 44c-2.021 0.496-4.069 0.738-6.102 0.738zM509.194 679.011l-37.261 130.41 129.296-31.747 361.136-367.906-91.965-91.965-361.206 361.208z' />
+            <path d='M332.8 870.4h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder.js
new file mode 100644
index 00000000..c71f21b8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Reminder
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M482.029 102.402c-10.546 0-20.421-6.566-24.136-17.074-7.218-20.413-26.624-34.128-48.293-34.128-21.667 0-41.075 13.715-48.293 34.128-4.712 13.33-19.341 20.315-32.669 15.603-13.331-4.712-20.315-19.339-15.603-32.669 14.435-40.83 53.242-68.262 96.565-68.262 43.325 0 82.131 27.432 96.565 68.262 4.712 13.331-2.274 27.957-15.603 32.669-2.822 0.997-5.702 1.47-8.533 1.47z' />
+            <path d='M870.4 460.8c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.125 5.034-51.2 13.776v-90.576c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v256c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 142.475-22.339 249.822-66.398 319.056-38.234 60.080-93.411 90.544-164.002 90.544h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.349 29.842 34.723 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-272c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v249.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.56-6.949-52.146-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.261 0 82.605-9.373 116.938-27.859 35.614-19.178 65.982-48.245 90.261-86.397 49.368-77.581 74.402-194.176 74.402-346.544 0-56.464-45.936-102.4-102.4-102.4z' />
+            <path d='M640 51.2c-10.254 0-41.461 0-147.978 53.963-34.656 17.558-65.686 34.91-82.422 44.47-16.736-9.558-47.766-26.912-82.422-44.469-106.517-53.965-137.723-53.965-147.978-53.965-70.579 0-128 57.421-128 128s57.421 128 128 128c10.254 0 41.461 0 147.978-53.963 34.656-17.558 65.686-34.91 82.422-44.469 16.736 9.558 47.766 26.912 82.422 44.469 106.517 53.963 137.723 53.963 147.978 53.963 70.579 0 128-57.421 128-128s-57.421-128-128-128zM303.813 207.677c-86.125 43.614-115.837 48.323-124.613 48.323-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c8.776 0 38.488 4.709 124.613 48.323 19.691 9.971 38.4 20.006 53.794 28.477-15.392 8.47-34.102 18.506-53.794 28.477zM640 256c-8.776 0-38.49-4.709-124.613-48.323-19.693-9.971-38.402-20.006-53.794-28.477 15.392-8.47 34.101-18.506 53.794-28.477 86.123-43.614 115.837-48.323 124.613-48.323 42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder2.js
new file mode 100644
index 00000000..68148954
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reminder2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Reminder2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M486.4 204.8c-14.138 0-25.6-11.462-25.6-25.6 0-14.115-11.485-25.6-25.6-25.6s-25.6 11.485-25.6 25.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M782.406 779.27c16.768-32.579 36.794-92.078 36.794-190.47 0-42.349-34.451-76.8-76.8-76.8-9.987 0-19.534 1.915-28.296 5.4-8.89-32.579-38.744-56.6-74.104-56.6-9.987 0-19.534 1.915-28.296 5.4-8.89-32.579-38.744-56.6-74.104-56.6-8.971 0-17.589 1.547-25.6 4.387v-29.987c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6v51.2c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6c0 107.634-26.406 160.736-38.31 179.2h-309.389l-207.71-210.354c-9.811-9.938-9.853-26.581-0.088-36.346 10.59-10.589 30.286-11.643 42.15-2.25l113.458 89.821c7.698 6.093 18.2 7.25 27.038 2.973 8.837-4.275 14.451-13.227 14.451-23.045v-204.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v151.883l-71.966-56.974c-15.587-12.339-35.56-18.501-56.234-17.358-20.722 1.149-39.866 9.512-53.901 23.549-29.768 29.766-29.832 78.45-0.141 108.522l178.104 180.373c-27.622 11.645-47.062 38.997-47.062 70.806v102.4c0 42.349 34.453 76.8 76.8 76.8h358.4c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-27.699-14.744-52.018-36.794-65.53zM768 947.2c0 14.115-11.485 25.6-25.6 25.6h-358.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h358.4c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+            <path d='M588.8 204.8c-28.168 0-115.306 33.766-153.6 49.176-38.294-15.41-125.432-49.176-153.6-49.176-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c28.168 0 115.306-33.766 153.6-49.176 38.294 15.41 125.432 49.176 153.6 49.176 42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8zM281.59 307.2c-14.11-0.005-25.59-11.488-25.59-25.6 0-14.115 11.485-25.6 25.584-25.6 9.8 0.136 44.16 11.277 82.954 25.6-38.787 14.32-73.141 25.459-82.947 25.6zM588.81 307.2c-9.806-0.141-44.162-11.28-82.947-25.6 38.794-14.323 73.149-25.464 82.938-25.6 14.115 0 25.6 11.485 25.6 25.6 0 14.112-11.48 25.595-25.59 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RemoteControl.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RemoteControl.js
new file mode 100644
index 00000000..554e57e4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RemoteControl.js
@@ -0,0 +1,16 @@
+// Icon: Linear.RemoteControl
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 1024h-204.8c-42.347 0-76.8-34.451-76.8-76.8v-358.4c0-42.349 34.453-76.8 76.8-76.8h204.8c42.349 0 76.8 34.451 76.8 76.8v358.4c0 42.349-34.451 76.8-76.8 76.8zM384 563.2c-14.115 0-25.6 11.485-25.6 25.6v358.4c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-358.4c0-14.115-11.485-25.6-25.6-25.6h-204.8z' />
+            <path d='M486.4 768c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 665.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M602.49 411.403c-7.165 0-14.288-2.99-19.35-8.827-24.352-28.075-59.611-44.176-96.739-44.176-37.126 0-72.386 16.101-96.738 44.176-9.264 10.68-25.432 11.827-36.114 2.563-10.68-9.264-11.827-25.434-2.563-36.114 34.082-39.291 83.44-61.826 135.414-61.826 51.978 0 101.334 22.536 135.418 61.829 9.264 10.68 8.115 26.85-2.566 36.114-4.842 4.2-10.818 6.261-16.762 6.261z' />
+            <path d='M254.238 310.803c-5.947 0-11.918-2.061-16.763-6.262-10.68-9.264-11.829-25.432-2.565-36.112 63.299-72.976 154.963-114.829 251.49-114.829 96.523 0 188.186 41.851 251.485 114.822 9.266 10.68 8.117 26.848-2.563 36.114s-26.846 8.115-36.112-2.563c-53.57-61.755-131.136-97.173-212.81-97.173-81.677 0-159.243 35.419-212.813 97.178-5.061 5.835-12.187 8.826-19.349 8.826z' />
+            <path d='M138.163 210.202c-5.947 0-11.918-2.059-16.765-6.262-10.68-9.264-11.827-25.434-2.563-36.114 92.517-106.656 226.49-167.826 367.565-167.826 141.072 0 275.042 61.168 367.558 167.821 9.266 10.68 8.117 26.848-2.563 36.114s-26.848 8.117-36.112-2.563c-82.787-95.437-202.659-150.171-328.883-150.171-126.227 0-246.101 54.736-328.888 150.176-5.062 5.835-12.187 8.826-19.349 8.826z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Repeat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Repeat.js
new file mode 100644
index 00000000..f2d464d8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Repeat.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Repeat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M888.501 161.099l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-680.597c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h680.597l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M896 307.2c-14.139 0-25.6 11.462-25.6 25.6v460.8c0 14.115-11.485 25.6-25.6 25.6h-680.597l109.898-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898h680.597c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-14.138-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne.js
new file mode 100644
index 00000000..0e1a55c8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne.js
@@ -0,0 +1,14 @@
+// Icon: Linear.RepeatOne
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M888.501 161.099l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-680.597c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h680.597l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M896 307.2c-14.139 0-25.6 11.462-25.6 25.6v460.8c0 14.115-11.485 25.6-25.6 25.6h-680.597l109.898-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898h680.597c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M486.4 665.6c-14.138 0-25.6-11.461-25.6-25.6v-230.4h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne2.js
new file mode 100644
index 00000000..2c3dd4d9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.RepeatOne2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 442.698c-9.997-9.997-26.206-9.997-36.203 0l-58.832 58.832c-2.63-105.486-44.947-204.27-119.835-279.16-77.362-77.365-180.222-119.97-289.63-119.97-152.28 0-291.122 83.699-362.342 218.435-6.606 12.499-1.83 27.989 10.669 34.597 12.498 6.606 27.989 1.83 34.597-10.669 62.33-117.914 183.826-191.163 317.077-191.163 194.014 0 352.501 154.966 358.224 347.619l-58.522-58.522c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l102.4 102.4c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.203z' />
+            <path d='M863.674 668.566c-12.502-6.603-27.99-1.832-34.597 10.669-62.328 117.915-183.826 191.165-317.077 191.165-194.016 0-352.502-154.966-358.224-347.621l58.522 58.522c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.83-58.832c2.63 105.488 44.946 204.272 119.835 279.162 77.365 77.363 180.224 119.97 289.632 119.97 152.28 0 291.12-83.699 362.342-218.435 6.608-12.501 1.829-27.99-10.669-34.598z' />
+            <path d='M537.6 665.6c-14.139 0-25.6-11.461-25.6-25.6v-230.4h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6v256c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne3.js
new file mode 100644
index 00000000..2abee39e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RepeatOne3.js
@@ -0,0 +1,14 @@
+// Icon: Linear.RepeatOne3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M895.994 588.8c-3.298 0.002-6.624-0.635-9.79-1.949-9.566-3.962-15.803-13.296-15.803-23.651v-51.2c0-197.622-160.778-358.4-358.4-358.4-133.251 0-254.747 73.25-317.077 191.163-6.608 12.499-22.101 17.274-34.597 10.669-12.499-6.608-17.277-22.098-10.669-34.597 71.221-134.736 210.062-218.435 362.342-218.435 109.408 0 212.269 42.606 289.632 119.968 74.89 74.89 117.208 173.672 119.838 279.158l58.829-58.829c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-4.898 4.898-11.446 7.499-18.109 7.499z' />
+            <path d='M512 921.6c-109.408 0-212.267-42.606-289.632-119.968-74.89-74.89-117.208-173.674-119.838-279.158l-58.829 58.829c-9.998 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c7.322-7.323 18.331-9.512 27.899-5.55 9.566 3.962 15.803 13.296 15.803 23.651v51.2c0 197.622 160.778 358.4 358.4 358.4 133.251 0 254.749-73.25 317.077-191.165 6.606-12.499 22.094-17.277 34.597-10.669 12.499 6.608 17.277 22.098 10.669 34.597-71.222 134.738-210.062 218.437-362.342 218.437z' />
+            <path d='M537.6 665.6c-14.139 0-25.6-11.461-25.6-25.6v-230.4h-25.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6v256c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reply.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reply.js
new file mode 100644
index 00000000..94e9217d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Reply.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Reply
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M875.318 718.005c-29.656-70.117-72.107-133.083-126.174-187.149s-117.032-96.518-187.149-126.174c-72.606-30.71-149.718-46.282-229.195-46.282h-168.597l212.299-212.298c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-256 256c-9.997 9.998-9.997 26.206 0 36.205l256 256c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-212.299-212.298h168.597c296.434 0 537.6 241.166 537.6 537.6 0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-79.477-15.571-156.589-46.282-229.195z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ReplyAll.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ReplyAll.js
new file mode 100644
index 00000000..09fb660c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ReplyAll.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ReplyAll
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M977.718 718.005c-29.656-70.117-72.107-133.083-126.174-187.149s-117.032-96.518-187.149-126.174c-72.606-30.71-149.718-46.282-229.195-46.282h-168.597l212.299-212.298c9.997-9.998 9.997-26.206 0-36.205-9.998-9.997-26.206-9.997-36.205 0l-256 256c-9.997 9.998-9.997 26.206 0 36.205l256 256c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-212.299-212.298h168.597c296.434 0 537.6 241.166 537.6 537.6 0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-79.477-15.571-156.589-46.282-229.195z' />
+            <path d='M307.2 665.6c-6.552 0-13.102-2.499-18.102-7.499l-256-256c-9.997-9.998-9.997-26.206 0-36.205l256-256c9.998-9.997 26.206-9.997 36.205 0 9.997 9.998 9.997 26.206 0 36.205l-237.899 237.899 237.899 237.899c9.997 9.997 9.997 26.206 0 36.203-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ResizeHandle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ResizeHandle.js
new file mode 100644
index 00000000..e67bb86f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ResizeHandle.js
@@ -0,0 +1,17 @@
+// Icon: Linear.ResizeHandle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M844.8 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M844.8 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM844.8 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M486.4 614.4c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 409.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M128 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 768c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return.js
new file mode 100644
index 00000000..a393592e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Return
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 1024c-187.907 0-360.411-102.666-450.19-267.933-6.749-12.424-2.149-27.966 10.275-34.715 12.426-6.749 27.966-2.149 34.715 10.275 80.813 148.76 236.075 241.173 405.2 241.173 254.086 0 460.8-206.714 460.8-460.8s-206.714-460.8-460.8-460.8c-169.778 0-325.325 92.936-405.939 242.541-6.051 11.229-19.445 16.293-31.413 11.869-11.965-4.422-18.848-16.979-16.141-29.445l44.477-204.798c3-13.818 16.634-22.586 30.45-19.584s22.584 16.634 19.584 30.45l-18.088 83.29c95.717-104.206 231.691-165.522 377.070-165.522 136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038s-225.278 149.962-362.038 149.962z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return2.js
new file mode 100644
index 00000000..a93fc561
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Return2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Return2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962-158.432 0-305.912 72.984-402.094 194.938v-66.938c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v152.154c0 11.71 7.946 21.928 19.296 24.811 4.941 1.256 9.979 0.979 14.557-0.581v0.003l69.277-23.594c0.005-0.002 0.011-0.003 0.018-0.005l76.8-26.155c13.384-4.558 20.538-19.102 15.981-32.486-4.558-13.384-19.101-20.534-32.486-15.981l-76.302 25.986c86.442-113.062 221.205-180.952 366.155-180.952 254.086 0 460.8 206.714 460.8 460.8s-206.714 460.8-460.8 460.8c-169.776 0-325.323-92.936-405.939-242.541-6.706-12.446-22.235-17.099-34.68-10.392-12.446 6.706-17.099 22.234-10.392 34.68 89.56 166.205 262.378 269.453 451.011 269.453 136.76 0 265.334-53.258 362.038-149.962s149.962-225.278 149.962-362.038c0-136.76-53.258-265.334-149.962-362.038z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Road.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Road.js
new file mode 100644
index 00000000..ff2ca750
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Road.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Road
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.626 1024.005c-1.747 0-3.522-0.179-5.299-0.554-13.835-2.914-22.69-16.491-19.778-30.325l204.8-972.8c2.912-13.834 16.49-22.686 30.325-19.778 13.835 2.912 22.69 16.49 19.778 30.325l-204.8 972.8c-2.539 12.058-13.176 20.331-25.026 20.331z' />
+            <path d='M947.174 1024.005c-11.85 0-22.488-8.274-25.027-20.331l-204.8-972.8c-2.912-13.834 5.942-27.411 19.778-30.325 13.824-2.912 27.413 5.942 30.325 19.778l204.8 972.8c2.912 13.834-5.942 27.411-19.778 30.325-1.774 0.374-3.55 0.554-5.298 0.554z' />
+            <path d='M486.4 153.6c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 512c-14.138 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RoadSign.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RoadSign.js
new file mode 100644
index 00000000..9d2960bb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RoadSign.js
@@ -0,0 +1,12 @@
+// Icon: Linear.RoadSign
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M961.4 260.299l-153.6-102.4c-4.205-2.803-9.146-4.299-14.2-4.299h-230.4v-76.8c0-42.347-34.453-76.8-76.8-76.8h-102.4c-42.347 0-76.8 34.453-76.8 76.8v76.8h-281.6c-14.138 0-25.6 11.462-25.6 25.6v204.8c0 14.138 11.462 25.6 25.6 25.6h281.6v51.2h-76.8c-5.054 0-9.995 1.496-14.2 4.299l-153.6 102.4c-7.122 4.747-11.4 12.741-11.4 21.301s4.278 16.554 11.4 21.299l153.6 102.4c4.205 2.805 9.146 4.301 14.2 4.301h76.8v281.6c0 14.139 11.462 25.6 25.6 25.6h204.8c14.139 0 25.6-11.461 25.6-25.6v-281.6h179.2c14.139 0 25.6-11.461 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6h-179.2v-51.2h230.4c5.054 0 9.995-1.496 14.2-4.299l153.6-102.4c7.122-4.749 11.4-12.741 11.4-21.301s-4.278-16.552-11.4-21.301zM358.4 76.8c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v76.8h-153.6v-76.8zM512 972.8h-153.6v-256h153.6v256zM716.8 665.6h-478.65l-115.2-76.8 115.2-76.8h478.65v153.6zM512 460.8h-153.6v-51.2h153.6v51.2zM785.848 358.4h-734.648v-153.6h734.648l115.2 76.8-115.2 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rocket.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rocket.js
new file mode 100644
index 00000000..3c1d8ea4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rocket.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Rocket
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 460.8c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM691.2 256c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+            <path d='M25.603 1024c-6.675 0-13.219-2.613-18.106-7.499-7.034-7.034-9.355-17.502-5.957-26.85 78.781-216.648 161.613-326.499 246.195-326.499 27.883 0 53.979 11.96 77.566 35.546 37.283 37.283 38.611 74.394 33.162 98.96-17.125 77.187-126.171 152.822-324.115 224.802-2.853 1.038-5.813 1.541-8.746 1.541zM247.736 714.354c-25.354 0-55.19 22.214-86.282 64.237-30.578 41.33-61.274 100.205-91.525 175.477 68.352-27.478 123.302-55.379 163.806-83.205 54.648-37.542 70.808-66.562 74.742-84.294 3.944-17.779-2.395-34.682-19.382-51.667-13.826-13.826-27.354-20.547-41.36-20.547z' />
+            <path d='M998.4 0c-132.848 0-251.256 22.534-351.939 66.981-82.997 36.638-154.075 88.075-211.258 152.882-10.674 12.098-20.552 24.334-29.691 36.586-44.142 2.942-89.275 20.47-134.362 52.221-38.13 26.851-76.459 64.014-113.923 110.458-62.965 78.054-101.706 154.987-103.325 158.226-5.605 11.211-2.25 24.814 7.904 32.166 4.501 3.258 9.758 4.856 14.992 4.856 6.573 0 13.109-2.52 18.064-7.434 0.243-0.24 24.714-24.299 66.469-47.926 34.41-19.474 87.461-42.336 151.613-46.384 16.219 41.541 62.662 91.181 84.954 113.47 22.291 22.291 71.931 68.734 113.472 84.955-4.046 64.152-26.91 117.202-46.382 151.611-23.629 41.757-47.686 66.227-47.89 66.432-8.878 8.878-10.006 22.885-2.666 33.070 4.952 6.87 12.77 10.634 20.782 10.634 3.867 0 7.779-0.877 11.434-2.704 3.237-1.619 80.17-40.36 158.226-103.325 46.443-37.464 83.606-75.794 110.458-113.922 31.75-45.088 49.278-90.221 52.221-134.363 12.251-9.139 24.49-19.019 36.586-29.693 64.806-57.181 116.243-128.259 152.883-211.258 44.443-100.682 66.979-219.091 66.979-351.939v-25.6h-25.6zM159.102 502.187c48.797-70.8 123.384-158.595 207.446-186.232-33.222 58.203-50.422 111.691-56.611 145.555-59.323 3.626-110.467 20.89-150.835 40.677zM521.87 864.781c19.762-40.35 36.995-91.453 40.619-150.718 33.859-6.187 87.336-23.384 145.528-56.597-27.658 83.92-115.381 158.49-186.147 207.315zM770.262 550.405c-106.48 93.952-216.794 115.195-232.662 115.195-0.102 0-10.581-0.23-38.867-20.136-19.728-13.883-42.682-33.618-64.63-55.566-21.95-21.95-41.683-44.902-55.566-64.632-19.906-28.285-20.136-38.763-20.136-38.866 0-15.869 21.243-126.182 115.197-232.662 112.416-127.406 284.533-197.059 498.894-202.227-5.17 214.358-74.822 386.477-202.229 498.894z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RotationLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RotationLock.js
new file mode 100644
index 00000000..1601367d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/RotationLock.js
@@ -0,0 +1,13 @@
+// Icon: Linear.RotationLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 465.203v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM537.6 358.4c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM665.6 691.2c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+            <path d='M537.6 1024c-90.928 0-179.613-25.254-256.467-73.035-74.717-46.45-135.536-112.259-175.882-190.312-6.493-12.56-1.573-28.005 10.986-34.498 12.557-6.49 28.005-1.573 34.498 10.987 75.136 145.358 223.374 235.658 386.866 235.658 239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2-435.2 195.23-435.2 435.2c0 12.93-9.64 23.829-22.472 25.408-12.832 1.578-24.827-6.656-27.965-19.198l-51.2-204.8c-3.429-13.715 4.91-27.614 18.627-31.045 13.718-3.422 27.616 4.91 31.045 18.627l19.301 77.202c22.368-78.646 64.518-150.722 123.926-210.131 91.87-91.867 214.016-142.462 343.938-142.462s252.067 50.595 343.936 142.464c91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ruler.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ruler.js
new file mode 100644
index 00000000..04b57e05
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ruler.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Ruler
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 358.4h-819.2c-42.347 0-76.8 34.451-76.8 76.8v153.6c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-42.349-34.451-76.8-76.8-76.8zM921.6 588.8c0 14.115-11.485 25.6-25.6 25.6h-76.8v-76.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-102.4v-128c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v128h-102.4v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-102.4v-128c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v128h-102.4v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rulers.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rulers.js
new file mode 100644
index 00000000..4a898b3d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Rulers.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Rulers
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 153.6h-435.2v-25.6c0-42.347-34.453-76.8-76.8-76.8h-102.4c-42.347 0-76.8 34.453-76.8 76.8v25.6h-128c-42.347 0-76.8 34.453-76.8 76.8v102.4c0 42.347 34.453 76.8 76.8 76.8h128v537.6c0 42.347 34.453 76.8 76.8 76.8h102.4c42.347 0 76.8-34.453 76.8-76.8v-537.6h435.2c42.349 0 76.8-34.453 76.8-76.8v-102.4c0-42.347-34.451-76.8-76.8-76.8zM256 128c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v25.6h-153.6v-25.6zM409.6 512h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v102.4h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v102.4h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v76.8c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-537.6h153.6v102.4zM921.6 332.8c0 14.115-11.485 25.6-25.6 25.6h-76.8v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-102.4v-25.6c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-102.4v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-102.4v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-102.4v-25.6c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-76.8c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Run.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Run.js
new file mode 100644
index 00000000..f04d0a2f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Run.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Run
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 204.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 51.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M486.392 1024.006c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l96.131-240.326-141.664-141.664c-7.792-7.79-9.723-19.694-4.797-29.55l135.077-270.152h-155.627l-147.15 98.101c-11.765 7.842-27.658 4.662-35.501-7.101-7.842-11.765-4.664-27.658 7.101-35.501l153.6-102.4c4.205-2.803 9.146-4.299 14.2-4.299h204.8c8.872 0 17.112 4.594 21.776 12.141s5.090 16.971 1.12 24.907l-145.347 290.698 140.552 140.554c7.242 7.24 9.47 18.101 5.667 27.61l-102.4 256c-4.002 10.008-13.616 16.098-23.776 16.098z' />
+            <path d='M307.2 819.2h-230.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h217.6l69.12-92.16c8.483-11.312 24.528-13.605 35.84-5.12 11.31 8.483 13.603 24.528 5.12 35.838l-76.8 102.4c-4.835 6.448-12.422 10.242-20.48 10.242z' />
+            <path d='M896 512h-204.8c-9.698 0-18.562-5.478-22.898-14.152l-51.2-102.4c-6.323-12.645-1.197-28.022 11.448-34.346 12.648-6.32 28.026-1.197 34.346 11.45l44.126 88.248h188.978c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sad.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sad.js
new file mode 100644
index 00000000..9deec88b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sad.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Sad
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M281.562 768.002c-5.352 0-10.747-1.672-15.355-5.133-11.304-8.491-13.586-24.539-5.094-35.843 25.686-34.195 59.344-62.531 97.338-81.941 39.858-20.362 82.907-30.685 127.95-30.685s88.091 10.323 127.949 30.685c37.992 19.408 71.653 47.742 97.339 81.938 8.491 11.304 6.211 27.352-5.094 35.843-11.307 8.493-27.352 6.21-35.843-5.094-44-58.576-111.194-92.171-184.35-92.171s-140.35 33.597-184.35 92.174c-5.029 6.696-12.712 10.227-20.488 10.227z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite.js
new file mode 100644
index 00000000..b48b6f64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Satellite
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 772.33c-20.554 0-39.84-7.966-54.306-22.43l-132.394-132.395c-14.466-14.464-22.432-33.75-22.432-54.304s7.966-39.84 22.434-54.306l234.794-234.792c14.464-14.466 33.75-22.432 54.304-22.432s39.84 7.966 54.304 22.432l132.394 132.392c29.942 29.946 29.942 78.667 0.002 108.611l-234.795 234.794c-14.466 14.466-33.75 22.43-54.304 22.43zM588.8 302.87c-6.878 0-13.306 2.64-18.101 7.435l-234.794 234.794c-4.795 4.795-7.435 11.224-7.435 18.101s2.64 13.306 7.435 18.099l132.394 132.395c4.795 4.794 11.224 7.434 18.101 7.434s13.306-2.64 18.101-7.434l234.795-234.792c9.979-9.981 9.979-26.224-0.002-36.205l-132.392-132.39c-4.797-4.797-11.224-7.437-18.102-7.437z' />
+            <path d='M281.6 486.4c-6.552 0-13.102-2.499-18.101-7.499l-204.8-204.8c-9.998-9.997-9.998-26.206 0-36.203l204.8-204.8c9.997-9.998 26.206-9.998 36.203 0l204.8 204.8c9.998 9.997 9.998 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0l-186.699-186.698-168.597 168.597 186.698 186.699c9.998 9.997 9.998 26.206 0 36.203-4.998 4.998-11.549 7.498-18.101 7.498z' />
+            <path d='M793.6 998.4c-6.552 0-13.102-2.499-18.101-7.499l-204.8-204.8c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l186.698 186.699 168.597-168.597-186.698-186.699c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l204.8 204.8c9.998 9.997 9.998 26.206 0 36.203l-204.8 204.8c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M870.4 358.4h-76.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h66.197l-142.997-142.995v66.195c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-76.8c0-34.501 18.49-45.883 26.438-49.176 7.946-3.293 29.070-8.32 53.466 16.078l157.994 157.992c24.395 24.397 19.37 45.518 16.078 53.467-3.293 7.949-14.677 26.438-49.176 26.438z' />
+            <path d='M358.4 819.2c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M307.2 921.6c-6.552 0-13.102-2.499-18.101-7.499l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l153.6 153.6c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M256 1024c-6.552 0-13.102-2.499-18.102-7.499l-204.8-204.8c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l204.8 204.8c9.997 9.997 9.997 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite2.js
new file mode 100644
index 00000000..f06addcb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Satellite2.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Satellite2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.781 1024.006c-3.848 0-7.754-0.872-11.429-2.709-12.646-6.322-17.771-21.699-11.45-34.346l102.4-204.8c6.322-12.646 21.699-17.77 34.346-11.448s17.771 21.699 11.45 34.346l-102.4 204.8c-4.485 8.97-13.528 14.157-22.917 14.157z' />
+            <path d='M76.776 921.603c-4.88 0-9.811-1.392-14.176-4.302-11.765-7.842-14.942-23.736-7.101-35.501l102.4-153.6c7.843-11.766 23.736-14.946 35.501-7.101 11.765 7.842 14.942 23.736 7.101 35.501l-102.4 153.6c-4.933 7.4-13.053 11.403-21.325 11.403z' />
+            <path d='M921.6 128c0-42.347-34.451-76.8-76.8-76.8-41.102 0-74.762 32.456-76.706 73.085l-442.65 132.795c-13.542 4.062-21.227 18.334-17.165 31.877 3.326 11.090 13.498 18.251 24.51 18.251 2.435 0 4.914-0.35 7.366-1.086l442.69-132.806c0.17 0.234 0.334 0.474 0.509 0.706l-267.054 400.579c-7.843 11.765-4.664 27.658 7.101 35.501 4.365 2.91 9.298 4.302 14.176 4.302 8.272 0 16.39-4.003 21.323-11.403l231.179-346.768-72.67 327.016c-3.067 13.802 5.635 27.477 19.437 30.544 1.87 0.416 3.738 0.616 5.576 0.616 11.734 0 22.315-8.122 24.966-20.053l86.698-390.134c37.982-4.605 67.514-37.019 67.514-76.221zM844.8 153.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M595.331 281.592c9.184 8.322 18.354 16.859 27.49 25.605z' />
+            <path d='M622.818 332.797c-6.366 0-12.739-2.358-17.699-7.107-8.875-8.496-17.952-16.949-26.976-25.126-10.478-9.494-11.275-25.683-1.781-36.16 9.494-10.478 25.682-11.274 36.16-1.782 9.37 8.491 18.79 17.266 28.002 26.083 10.214 9.776 10.568 25.982 0.79 36.195-5.027 5.253-11.757 7.898-18.496 7.898z' />
+            <path d='M866.366 576.794c-6.629-12.486-22.126-17.237-34.616-10.606-12.488 6.63-17.235 22.128-10.606 34.616 50.043 94.258 62.458 171.485 32.4 201.544-26.446 26.446-90.040 20.173-170.115-16.784-90.242-41.65-191.677-116.323-285.618-210.264-93.941-93.942-168.614-195.378-210.264-285.618-36.955-80.074-43.23-143.669-16.781-170.117 20.837-20.838 59.694-17.856 88.619-11.683 45.965 9.806 102.059 34.939 162.219 72.68 11.979 7.514 27.778 3.896 35.291-8.082 7.514-11.976 3.896-27.776-8.082-35.29-65.178-40.888-126.987-68.338-178.744-79.381-74.901-15.979-115.030 5.075-135.507 25.552-35.57 35.57-59.965 80.806-72.502 134.453-11.891 50.877-12.536 106.75-1.915 166.067 21.782 121.648 88.234 243.098 187.109 341.976 22.349 22.349 46.216 43.35 70.938 62.421 4.658 3.592 10.158 5.331 15.618 5.331 7.664 0 15.245-3.429 20.288-9.966 8.635-11.194 6.562-27.27-4.634-35.906-22.994-17.736-45.2-37.278-66.005-58.083-91.549-91.552-152.957-203.349-172.914-314.798-9.296-51.91-8.634-100.864 1.275-144.008 6.291 24.858 16.045 51.694 29.242 80.29 44.117 95.587 122.442 202.259 220.547 300.366 98.104 98.104 204.776 176.43 300.366 220.549 29.003 13.386 56.202 23.232 81.357 29.512-64.429 15.106-141.578 8.894-222.829-19.68-13.339-4.691-27.952 2.318-32.642 15.658-4.691 13.338 2.32 27.952 15.658 32.642 30.136 10.598 60.304 18.426 89.966 23.469l21.614 90.685c2.803 11.758 13.299 19.67 24.882 19.67 1.966 0 3.963-0.229 5.958-0.702 13.754-3.278 22.243-17.085 18.966-30.838l-17.33-72.706c7.813 0.421 15.568 0.656 23.245 0.656 15.674 0 31.050-0.882 46.022-2.654 69.531-8.234 129.322-35.624 172.907-79.21 48.685-48.693 40.382-141.653-23.386-261.76z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sausage.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sausage.js
new file mode 100644
index 00000000..8dd482df
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sausage.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Sausage
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M877.464 156.594c15.211-30.955 52.595-77.614 87.835-112.891 7.322-7.322 9.512-18.333 5.552-27.899-3.962-9.566-13.296-15.803-23.651-15.803h-204.8c-10.352 0-19.683 6.237-23.646 15.8s-1.774 20.574 5.541 27.898c35.246 35.28 72.634 81.941 87.842 112.896-83.267 15.398-146.536 88.549-146.536 176.206 0 183.506-149.294 332.8-332.8 332.8-87.658 0-160.808 63.269-176.206 146.536-30.955-15.211-77.614-52.595-112.891-87.837-7.323-7.322-18.334-9.506-27.899-5.55-9.566 3.962-15.803 13.296-15.803 23.651v204.8c0 10.352 6.237 19.683 15.8 23.646 3.168 1.31 6.496 1.952 9.795 1.952 6.659 0 13.206-2.6 18.102-7.493 35.28-35.246 81.941-72.634 112.896-87.842 15.398 83.267 88.549 146.536 176.206 146.536 93.299 0 183.824-18.278 269.053-54.328 82.309-34.816 156.229-84.65 219.699-148.12s113.304-137.387 148.12-219.699c36.050-85.227 54.328-175.754 54.328-269.053 0-87.658-63.269-160.808-146.536-176.206zM889.21 51.2c-4.309 5.080-8.749 10.443-13.2 16.008-12.488 15.61-22.878 30.027-31.21 43.33-8.331-13.302-18.722-27.72-31.21-43.33-4.451-5.565-8.891-10.928-13.2-16.008h88.819zM67.208 876.010c-5.565 4.451-10.928 8.891-16.008 13.2v-88.819c5.080 4.309 10.443 8.749 16.008 13.2 15.61 12.488 30.027 22.878 43.33 31.21-13.302 8.331-27.72 18.722-43.33 31.21zM332.8 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128c38.55 0 76.234-5.645 112.106-16.539l17.275 50.434c3.64 10.63 13.578 17.31 24.216 17.31 2.752 0 5.55-0.446 8.298-1.387 13.376-4.579 20.504-19.139 15.923-32.512l-17.822-52.032c33.398-15.32 64.634-35.523 92.824-60.251l36.278 36.278c5 5 11.552 7.501 18.102 7.501s13.102-2.499 18.099-7.501c10-9.995 10-26.206 0-36.203l-36.278-36.278c24.728-28.187 44.931-59.426 60.251-92.824l52.032 17.822c2.749 0.941 5.546 1.389 8.298 1.389 10.638 0 20.576-6.685 24.218-17.312 4.581-13.374-2.547-27.933-15.923-32.514l-50.434-17.275c10.893-35.872 16.538-73.555 16.538-112.106 0-70.579 57.421-128 128-128s128 57.421 128 128c0 352.898-287.102 640-640 640z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Saw.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Saw.js
new file mode 100644
index 00000000..1470762e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Saw.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Saw
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M1016.010 25.637c-10.051-16.266-28.715-25.594-51.21-25.594h-0.411c-143.941 0-239.034 0-315.782 23.536-79.626 24.418-135.634 73.024-193.267 167.733l-441.632 698.93c-22.44 35.51-14.144 82.101 18.493 103.858l38.4 25.6c4.205 2.803 9.146 4.301 14.2 4.301h145.6c14.138 0 25.6-11.461 25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6v-76.8h76.8c14.138 0 25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.462 25.6-25.6v-230.4c0-56.464 45.936-102.4 102.4-102.4h43.2c37.581 0 80.189-26.328 97-59.936l5.39-10.778c10.062-20.118 10.069-40.984 0.019-57.25zM640 460.8c-14.139 0-25.6 11.462-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6v76.8h-112.25l-31.95-21.299c-9.549-6.366-11.2-21.894-3.61-33.907l428.595-678.299 231.214 133.866v87.64h-76.8zM970.2 59.981l-5.39 10.778c-8.283 16.56-32.693 31.642-51.21 31.642h-43.2c-84.696 0-153.6 68.904-153.6 153.6v57.998l-203.826-118.006c95.702-144.742 184.789-144.747 451.414-144.747h0.411c4.291 0 6.685 0.867 7.558 1.366 0.058 1.005-0.24 3.534-2.158 7.37z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale.js
new file mode 100644
index 00000000..70802803
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Scale
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 414.003v-81.203c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v81.203c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8 0-33.373-21.403-61.829-51.2-72.397zM486.4 512c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M486.4 256c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.043 0 230.4-103.357 230.4-230.4s-103.357-230.4-230.4-230.4zM512 663.765v-23.765c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v23.765c-78.363-11.259-140.504-73.402-151.763-151.765h23.763c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-23.763c12.461-86.726 87.243-153.6 177.363-153.6s164.902 66.874 177.365 153.6h-23.765c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h23.765c-11.261 78.363-73.402 140.504-151.765 151.765z' />
+            <path d='M691.2 153.6h-76.8v-25.6c0-70.579-57.421-128-128-128s-128 57.421-128 128v25.6h-76.8c-70.579 0-128 57.421-128 128v409.6c0 70.579 57.421 128 128 128h179.2v76.8c0 14.139 11.462 25.6 25.6 25.6 14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-33.376-21.4-61.846-51.2-72.413v-55.587h179.2c70.579 0 128-57.421 128-128v-409.6c0-70.579-57.421-128-128-128zM409.6 128c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8v25.6h-153.6v-25.6zM768 691.2c0 42.347-34.453 76.8-76.8 76.8h-409.6c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h409.6c42.347 0 76.8 34.453 76.8 76.8v409.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale2.js
new file mode 100644
index 00000000..2dd76aa2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scale2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Scale2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 567.603v-81.203c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v81.203c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8 42.349 0 76.8-34.451 76.8-76.8 0-33.373-21.403-61.83-51.2-72.397zM486.4 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M486.4 409.6c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.043 0 230.4-103.357 230.4-230.4s-103.357-230.4-230.4-230.4zM512 817.365v-23.765c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v23.765c-78.363-11.259-140.504-73.402-151.763-151.765h23.763c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-23.763c12.461-86.726 87.243-153.6 177.363-153.6s164.902 66.874 177.365 153.6h-23.765c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h23.765c-11.261 78.363-73.402 140.504-151.765 151.765z' />
+            <path d='M896 0h-819.2c-14.138 0-25.6 11.462-25.6 25.6v51.2c0 70.579 57.421 128 128 128h230.4v58.85c-73.288 14.798-140.654 50.747-194.73 104.822-72.528 72.528-112.47 168.958-112.47 271.528v307.2c0 42.349 34.453 76.8 76.8 76.8h614.4c42.349 0 76.8-34.451 76.8-76.8v-307.2c0-102.57-39.942-199-112.47-271.53-54.078-54.078-121.45-90.029-194.744-104.826l-0.035-58.845h230.45c70.579 0 128-57.421 128-128v-51.2c0-14.138-11.461-25.6-25.6-25.6zM819.2 640v307.2c0 14.115-11.485 25.6-25.6 25.6h-614.4c-14.115 0-25.6-11.485-25.6-25.6v-307.2c0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8zM511.982 256.859c-8.48-0.555-17.008-0.859-25.582-0.859-8.581 0-17.115 0.304-25.6 0.859v-52.059h51.149l0.034 52.059zM870.4 76.8c0 42.347-34.451 76.8-76.8 76.8h-614.4c-42.347 0-76.8-34.453-76.8-76.8v-25.6h768v25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ScaleTruck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ScaleTruck.js
new file mode 100644
index 00000000..73f90ead
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ScaleTruck.js
@@ -0,0 +1,14 @@
+// Icon: Linear.ScaleTruck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.824 204.803c-8.846 0-17.451-4.59-22.194-12.803-7.069-12.245-2.874-27.901 9.37-34.97l88.682-51.2c12.243-7.067 27.901-2.875 34.97 9.37s2.874 27.901-9.37 34.97l-88.682 51.2c-4.032 2.328-8.434 3.434-12.776 3.434z' />
+            <path d='M947.2 870.4h-76.8v-513.837c86.726-12.461 153.6-87.243 153.6-177.363 0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2c0 90.12 66.874 164.902 153.6 177.363v513.837h-742.4c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8s-34.451-76.8-76.8-76.8zM716.8 179.2c0-70.579 57.421-128 128-128s128 57.421 128 128-57.421 128-128 128-128-57.421-128-128zM947.2 972.8h-870.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+            <path d='M707.39 556.419l-35.010-105.027c-7.939-23.826-32.867-41.792-57.981-41.792h-153.6c0-28.232-22.968-51.2-51.2-51.2h-358.4c-28.232 0-51.2 22.968-51.2 51.2v307.2c0 28.232 22.968 51.2 51.2 51.2h55.603c10.568 29.797 39.024 51.2 72.397 51.2s61.829-21.403 72.397-51.2h158.003c9.323 0 18.062-2.517 25.6-6.888 7.538 4.37 16.277 6.888 25.6 6.888h55.603c10.566 29.797 39.024 51.2 72.397 51.2s61.83-21.403 72.397-51.2h4.403c28.232 0 51.2-22.968 51.2-51.2v-102.4c0-16.96-4.045-41.885-9.41-57.981zM623.81 467.581l14.806 44.419h-75.416v-51.2h51.2c3.074 0 8.437 3.866 9.41 6.781zM179.2 768c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM251.597 716.8c-10.568-29.797-39.024-51.2-72.397-51.2s-61.829 21.403-72.397 51.2h-55.603v-307.2h358.4v307.2h-158.003zM588.8 768c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM661.197 716.8c-10.566-29.797-39.024-51.2-72.397-51.2s-61.83 21.403-72.397 51.2h-55.603v-256h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6h118.082l3.136 9.408c3.614 10.84 6.782 30.37 6.782 41.792h-25.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h25.6v51.2h-4.403z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scissors.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scissors.js
new file mode 100644
index 00000000..7086dd68
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Scissors.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Scissors
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M435.2 614.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.766-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.752-4.766 11.36-7.502 18.096-7.502s13.344 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M988.842 763.646c-38.309-60.595-99.638-98.237-160.056-98.237-24.998 0-48.907 6.763-69.147 19.555-32.355 20.454-53.416 54.16-60.11 95.706l-66.971-103.24c-0.141-0.226-0.285-0.445-0.434-0.666l-431.446-665.098c-4.72-7.277-12.805-11.667-21.477-11.667-0.024 0-0.048 0-0.074 0-8.699 0.026-16.79 4.466-21.483 11.79l-37.979 59.288c-20.136 31.43-23.138 80.507-6.981 114.158l226.080 470.888c16.334 34.024 58.696 60.675 96.466 60.675l161.723-0.174 132.018 203.51c1.122 1.885 2.261 3.765 3.438 5.627 38.306 60.59 99.634 98.234 160.054 98.237 0.005 0 0.008 0 0.013 0 24.99 0 48.898-6.762 69.134-19.554 35.325-22.333 57.202-60.454 61.6-107.341 4.165-44.414-8.040-91.81-34.368-133.459zM435.2 665.6c-18.366 0-42.333-15.080-50.282-31.635l-226.080-470.888c-8.365-17.421-6.488-48.106 3.936-64.378l16.56-25.85 384.427 592.613-128.562 0.138zM972.234 892.325c-2.883 30.733-16.371 55.181-37.981 68.843-12.211 7.718-26.266 11.632-41.776 11.632-0.002 0-0.006 0-0.008 0-39.584-0.003-82.194-25.496-110.922-65.696l-8.966-13.824c-18.152-30.803-26.512-64.742-23.563-96.195 2.883-30.733 16.371-55.182 37.981-68.843 12.211-7.718 26.272-11.634 41.789-11.634 42.368 0 88.206 29.203 116.778 74.397 20.312 32.131 29.782 68.114 26.669 101.32z' />
+            <path d='M691.181 610.165c-3.715 0-7.488-0.813-11.061-2.528-12.746-6.12-18.117-21.413-11.998-34.158l197.040-410.402c8.365-17.421 6.488-48.106-3.938-64.378l-16.56-25.851-234.387 361.322c-7.696 11.864-23.55 15.24-35.41 7.544-11.861-7.694-15.238-23.547-7.544-35.408l256-394.637c4.72-7.278 12.805-11.669 21.477-11.669 0.024 0 0.048 0 0.074 0 8.699 0.026 16.79 4.466 21.483 11.79l37.981 59.288c20.134 31.429 23.136 80.506 6.981 114.157l-197.040 410.402c-4.403 9.173-13.56 14.528-23.098 14.528z' />
+            <path d='M360.533 772.123c-11.861-7.694-27.714-4.315-35.408 7.544l-0.651 1.005c-6.694-41.549-27.757-75.253-60.112-95.707-20.237-12.792-44.147-19.555-69.147-19.555-60.416 0-121.746 37.642-160.056 98.237-26.326 41.65-38.533 89.045-34.366 133.459 4.398 46.886 26.274 85.008 61.6 107.341 20.237 12.792 44.146 19.554 69.144 19.554 60.418 0 121.747-37.642 160.056-98.237 1.174-1.859 2.312-3.733 3.43-5.613l73.054-112.618c7.694-11.862 4.318-27.715-7.544-35.41zM131.536 972.8c-15.518 0-29.576-3.912-41.786-11.63-21.611-13.664-35.101-38.112-37.982-68.845-3.114-33.206 6.357-69.189 26.667-101.318 28.573-45.194 74.411-74.397 116.778-74.397 15.518 0 29.578 3.914 41.789 11.634 21.611 13.661 35.101 38.11 37.982 68.843 2.95 31.446-5.405 65.379-23.552 96.179l-8.982 13.845c-28.73 40.198-71.333 65.69-110.914 65.69z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screen.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screen.js
new file mode 100644
index 00000000..7312938b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screen.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Screen
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 102.4h-819.2c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.349 34.453 76.8 76.8 76.8h384v102.4h-179.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-179.2v-102.4h384c42.349 0 76.8-34.451 76.8-76.8v-512c0-42.347-34.451-76.8-76.8-76.8zM921.6 691.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screwdriver.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screwdriver.js
new file mode 100644
index 00000000..a61f1104
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Screwdriver.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Screwdriver
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M954.699 790.496l-234.795-234.795c-24.914-24.914-64.766-43.701-92.704-43.701-6.25 0-10.702-1.762-12.8-3.115v-22.485c0-14.138-11.461-25.6-25.6-25.6-7.075 0-13.478 2.869-18.11 7.507l-33.090 33.090-347.797-347.797 7.499-7.499c9.998-9.997 9.998-26.206 0-36.203l-102.4-102.4c-9.997-9.998-26.206-9.998-36.203 0l-51.2 51.2c-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499l7.499-7.498 347.797 347.797-33.090 33.090c-4.638 4.632-7.507 11.035-7.507 18.11 0 14.139 11.462 25.6 25.6 25.6h22.485c1.354 2.098 3.115 6.55 3.115 12.8 0 27.938 18.787 67.79 43.701 92.704l234.795 234.795c14.971 14.971 34.637 22.458 54.304 22.458s39.333-7.486 54.304-22.458l55.594-55.594c29.944-29.944 29.944-78.667 0.002-108.61zM61.803 76.8l14.997-14.997 66.197 66.197-14.997 14.997-66.197-66.197zM563.2 627.2c0-23.454-9.608-43.582-24.278-54.718l33.56-33.56c11.136 14.67 31.264 24.278 54.718 24.278 12.854 0 40.336 12.539 56.501 28.704l150.496 150.496-91.797 91.797-150.496-150.496c-16.165-16.165-28.704-43.646-28.704-56.501zM918.496 862.901l-55.594 55.594c-9.981 9.981-26.222 9.981-36.203 0l-48.096-48.094 91.797-91.797 48.096 48.096c9.981 9.981 9.981 26.221 0 36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select.js
new file mode 100644
index 00000000..18e71a0f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Select
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M179.2 972.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 768c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M179.2 614.4h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 409.6c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M947.2 563.2c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c42.349 0 76.8 34.453 76.8 76.8v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M179.2 256h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM76.8 51.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M588.8 204.8c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6 0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 256h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-102.4c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v102.4c0 42.347-34.453 76.8-76.8 76.8zM793.6 51.2c-14.115 0-25.6 11.485-25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.115-11.485-25.6-25.6-25.6h-102.4z' />
+            <path d='M665.608 1024.006c-10.16 0-19.773-6.090-23.776-16.099l-86.882-217.203-151.685 173.354c-7.022 8.027-18.285 10.859-28.269 7.106-9.986-3.75-16.597-13.298-16.597-23.963v-768c0-10.133 5.976-19.312 15.243-23.411 9.266-4.101 20.078-2.347 27.576 4.469l563.2 512c7.827 7.114 10.472 18.309 6.658 28.173s-13.301 16.37-23.877 16.37h-218.187l88.357 220.893c5.251 13.128-1.134 28.027-14.261 33.277l-128 51.2c-3.118 1.246-6.338 1.837-9.501 1.837zM563.198 716.8c1.432 0 2.874 0.12 4.31 0.366 8.781 1.501 16.152 7.456 19.459 15.726l92.893 232.232 80.462-32.184-92.893-232.232c-3.155-7.888-2.192-16.826 2.57-23.859s12.704-11.25 21.2-11.25h189.782l-471.382-428.53v641.997l134.334-153.525c4.904-5.606 11.954-8.742 19.264-8.742z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select2.js
new file mode 100644
index 00000000..c9d8ff77
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Select2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Select2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 768h-204.8c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.453 76.8 76.8v358.4c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-358.4c0-14.115-11.485-25.6-25.6-25.6h-716.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M665.608 1024.006c-10.16 0-19.773-6.090-23.776-16.099l-86.882-217.203-151.685 173.354c-7.022 8.027-18.285 10.859-28.269 7.106-9.986-3.75-16.597-13.298-16.597-23.963v-768c0-10.133 5.976-19.312 15.243-23.411 9.266-4.101 20.078-2.347 27.576 4.469l563.2 512c7.827 7.114 10.472 18.309 6.658 28.173s-13.301 16.37-23.877 16.37h-218.187l88.357 220.893c5.251 13.128-1.134 28.027-14.261 33.277l-128 51.2c-3.118 1.246-6.338 1.837-9.501 1.837zM563.198 716.8c1.432 0 2.874 0.12 4.31 0.366 8.781 1.501 16.152 7.456 19.459 15.726l92.893 232.232 80.462-32.184-92.893-232.232c-3.155-7.888-2.192-16.826 2.57-23.859s12.704-11.25 21.2-11.25h189.782l-471.382-428.53v641.997l134.334-153.525c4.904-5.606 11.954-8.742 19.264-8.742z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SelfTimer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SelfTimer.js
new file mode 100644
index 00000000..e62ff9fe
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SelfTimer.js
@@ -0,0 +1,13 @@
+// Icon: Linear.SelfTimer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-75.928 17.016-148.666 50.573-216.194 6.293-12.661 21.656-17.827 34.318-11.533 12.661 6.291 17.824 21.656 11.533 34.318-30.008 60.384-45.224 125.456-45.224 193.408 0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2c-12.93 0-23.829-9.64-25.408-22.472s6.656-24.829 19.2-27.965l204.8-51.2c13.717-3.427 27.616 4.91 31.045 18.627 3.429 13.715-4.91 27.614-18.627 31.045l-77.203 19.301c78.645 22.368 150.722 64.518 210.13 123.926 91.87 91.87 142.464 214.016 142.464 343.938s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464z' />
+            <path d='M486.376 564.605c-4.517 0-9.090-1.194-13.235-3.704l-256-155.002c-12.094-7.323-15.963-23.064-8.638-35.158 7.323-12.094 23.061-15.963 35.158-8.638l256 155.002c12.094 7.322 15.963 23.062 8.638 35.158-4.813 7.947-13.264 12.342-21.923 12.342z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Server.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Server.js
new file mode 100644
index 00000000..80611cd2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Server.js
@@ -0,0 +1,22 @@
+// Icon: Linear.Server
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 460.8h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 665.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M1024 384c0-32.592-12.864-80.173-29.286-108.325l-127.603-218.749c-18.931-32.453-61.539-56.926-99.11-56.926h-512c-37.571 0-80.181 24.474-99.11 56.926l-127.603 218.749c-16.422 28.152-29.286 75.733-29.286 108.325v102.4c0 19.656 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2v102.4c0 19.654 7.43 37.602 19.618 51.2-12.187 13.598-19.618 31.546-19.618 51.2v153.6c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.546 19.618-51.2v-102.4c0-19.654-7.43-37.602-19.618-51.2 12.187-13.598 19.618-31.544 19.618-51.2v-102.4zM972.8 588.8v102.4c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6zM76.8 512c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-870.4zM201.114 82.725c9.624-16.499 35.786-31.525 54.886-31.525h512c19.101 0 45.261 15.026 54.886 31.525l127.603 218.749c1.086 1.862 2.162 3.88 3.216 6.022-2.147-0.182-4.314-0.296-6.506-0.296h-870.4c-2.194 0-4.358 0.114-6.504 0.296 1.054-2.141 2.13-4.16 3.216-6.022l127.602-218.749zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+            <path d='M153.6 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M460.8 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 435.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 640c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 844.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share.js
new file mode 100644
index 00000000..249404d5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Share
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-870.4c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h563.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-563.2c-14.115 0-25.6 11.485-25.6 25.6v665.6c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-358.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M990.901 314.699l-204.8-204.8c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l161.099 161.098h-322.197c-88.138 0-171.333 31.766-234.259 89.45-63.544 58.25-98.541 135.582-98.541 217.75v25.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-141.16 126.325-256 281.6-256h322.197l-161.098 161.099c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share2.js
new file mode 100644
index 00000000..00c2b4f8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Share2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 614.4c-70.875 0-133.45 36.194-170.23 91.064l-250.981-125.491c7.51-21.278 11.611-44.154 11.611-67.973 0-23.821-4.101-46.698-11.613-67.979l250.974-125.496c36.779 54.875 99.358 91.075 170.238 91.075 112.926 0 204.8-91.872 204.8-204.8s-91.874-204.8-204.8-204.8-204.8 91.872-204.8 204.8c0 23.813 4.099 46.682 11.605 67.958l-250.978 125.499c-36.782-54.866-99.355-91.058-170.227-91.058-112.928 0-204.8 91.872-204.8 204.8 0 112.926 91.872 204.8 204.8 204.8 70.875 0 133.45-36.194 170.23-91.064l250.981 125.491c-7.51 21.278-11.611 44.154-11.611 67.973 0 112.926 91.874 204.8 204.8 204.8s204.8-91.874 204.8-204.8-91.874-204.8-204.8-204.8zM819.2 51.2c84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6 68.904-153.6 153.6-153.6zM204.8 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM819.2 972.8c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share3.js
new file mode 100644
index 00000000..db11adcb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Share3.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Share3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 716.8c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM486.4 409.6c-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128-57.421-128-128-128z' />
+            <path d='M179.2 563.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h128.974c13.115-171.59 156.931-307.2 331.826-307.2 111.718 0 215.392 55.611 277.323 148.762 7.829 11.773 4.629 27.664-7.146 35.493-11.771 7.824-27.662 4.629-35.493-7.146-52.416-78.84-140.149-125.909-234.685-125.909-155.275 0-281.6 126.325-281.6 281.6 0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 870.4c-111.72 0-215.392-55.611-277.322-148.762-7.829-11.773-4.629-27.664 7.144-35.493 11.774-7.824 27.666-4.629 35.491 7.146 52.418 78.84 140.15 125.909 234.686 125.909 155.275 0 281.6-126.325 281.6-281.6 0-14.139 11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-128.974c-13.115 171.59-156.931 307.2-331.826 307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shield.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shield.js
new file mode 100644
index 00000000..7ff13684
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shield.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shield
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-2.734 0-5.467-0.437-8.096-1.314-94.168-31.389-212.339-135.747-301.056-265.864-80.859-118.595-177.248-315.077-177.248-577.622 0-14.138 11.462-25.6 25.6-25.6 144.062 0 370.59-98.627 446.6-149.301 8.598-5.733 19.802-5.733 28.4 0 76.010 50.674 302.539 149.301 446.6 149.301 14.139 0 25.6 11.462 25.6 25.6 0 262.546-96.389 459.027-177.248 577.622-88.717 130.117-206.888 234.475-301.056 265.864-2.629 0.877-5.362 1.314-8.096 1.314zM51.501 203.96c5.795 237.094 93.813 415.136 168.050 524.018 90.566 132.83 197.422 216.558 266.85 243.227 69.427-26.669 176.283-110.397 266.848-243.227 74.237-108.882 162.254-286.923 168.050-524.018-83.368-5.232-176.208-33.917-242.189-58.354-72.611-26.893-145.854-61.078-192.709-89.67-46.854 28.592-120.098 62.778-192.709 89.67-65.982 24.437-158.821 53.123-242.19 58.354z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldAlert.js
new file mode 100644
index 00000000..0d3109db
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldAlert.js
@@ -0,0 +1,14 @@
+// Icon: Linear.ShieldAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-2.734 0-5.467-0.437-8.096-1.314-94.168-31.389-212.339-135.747-301.056-265.864-80.859-118.595-177.248-315.077-177.248-577.622 0-14.138 11.462-25.6 25.6-25.6 144.062 0 370.59-98.627 446.6-149.301 8.598-5.733 19.802-5.733 28.4 0 76.010 50.674 302.539 149.301 446.6 149.301 14.139 0 25.6 11.462 25.6 25.6 0 262.546-96.389 459.027-177.248 577.622-88.717 130.117-206.888 234.475-301.056 265.864-2.629 0.877-5.362 1.314-8.096 1.314zM51.501 203.96c5.795 237.094 93.813 415.136 168.050 524.018 90.566 132.83 197.422 216.558 266.85 243.227 69.427-26.669 176.283-110.397 266.848-243.227 74.237-108.882 162.254-286.923 168.050-524.018-83.368-5.232-176.208-33.917-242.189-58.354-72.611-26.893-145.854-61.078-192.709-89.67-46.854 28.592-120.098 62.778-192.709 89.67-65.982 24.437-158.821 53.123-242.19 58.354z' />
+            <path d='M486.4 563.2c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCheck.js
new file mode 100644
index 00000000..8963b62f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCheck.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ShieldCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-2.734 0-5.467-0.437-8.096-1.314-94.168-31.389-212.339-135.747-301.056-265.864-80.859-118.595-177.248-315.077-177.248-577.622 0-14.138 11.462-25.6 25.6-25.6 144.062 0 370.59-98.627 446.6-149.301 8.598-5.733 19.802-5.733 28.4 0 76.010 50.674 302.539 149.301 446.6 149.301 14.139 0 25.6 11.462 25.6 25.6 0 262.546-96.389 459.027-177.248 577.622-88.717 130.117-206.888 234.475-301.056 265.864-2.629 0.877-5.362 1.314-8.096 1.314zM51.501 203.96c5.795 237.094 93.813 415.136 168.050 524.018 90.566 132.83 197.422 216.558 266.85 243.227 69.427-26.669 176.283-110.397 266.848-243.227 74.237-108.882 162.254-286.923 168.050-524.018-83.368-5.232-176.208-33.917-242.189-58.354-72.611-26.893-145.854-61.078-192.709-89.67-46.854 28.592-120.098 62.778-192.709 89.67-65.982 24.437-158.821 53.123-242.19 58.354z' />
+            <path d='M435.2 640c-6.552 0-13.102-2.499-18.102-7.499l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l84.298 84.298 237.899-237.898c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-256 256c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCross.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCross.js
new file mode 100644
index 00000000..d7e1aacb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ShieldCross.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ShieldCross
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-2.734 0-5.467-0.437-8.096-1.314-94.168-31.389-212.339-135.747-301.056-265.864-80.859-118.595-177.248-315.077-177.248-577.622 0-14.138 11.462-25.6 25.6-25.6 144.062 0 370.59-98.627 446.6-149.301 8.598-5.733 19.802-5.733 28.4 0 76.010 50.674 302.539 149.301 446.6 149.301 14.139 0 25.6 11.462 25.6 25.6 0 262.546-96.389 459.027-177.248 577.622-88.717 130.117-206.888 234.475-301.056 265.864-2.629 0.877-5.362 1.314-8.096 1.314zM51.501 203.96c5.795 237.094 93.813 415.136 168.050 524.018 90.566 132.83 197.422 216.558 266.85 243.227 69.427-26.669 176.283-110.397 266.848-243.227 74.237-108.882 162.254-286.923 168.050-524.018-83.368-5.232-176.208-33.917-242.189-58.354-72.611-26.893-145.854-61.078-192.709-89.67-46.854 28.592-120.098 62.778-192.709 89.67-65.982 24.437-158.821 53.123-242.19 58.354z' />
+            <path d='M682.261 620.563l-156.523-134.163 156.523-134.163c10.734-9.2 11.976-25.363 2.776-36.098-9.202-10.733-25.362-11.981-36.099-2.776l-162.538 139.32-162.539-139.32c-10.733-9.2-26.894-7.958-36.098 2.776-9.202 10.734-7.958 26.896 2.776 36.098l156.523 134.163-156.523 134.163c-10.734 9.202-11.978 25.363-2.776 36.099 5.064 5.906 12.234 8.939 19.448 8.939 5.896 0 11.821-2.026 16.648-6.163l162.541-139.322 162.539 139.32c4.829 4.138 10.754 6.163 16.648 6.163 7.214 0 14.386-3.034 19.45-8.939 9.2-10.736 7.958-26.896-2.776-36.098z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship.js
new file mode 100644
index 00000000..2527a05b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Ship
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 358.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 358.4h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 358.4h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 358.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M828.006 1024.528c-30.426 0-56.816-11.432-78.477-34.002-39.944-41.619-43.045-109.566-7.061-154.691 24.118-30.246 68.203-51.022 126.171-31.91-2.914-29.126-10.376-58.366-28.787-73.803-14.88-12.474-36.922-15.914-67.386-10.514-46.896 8.309-83.214 42.829-125.267 82.797-58.786 55.87-125.414 119.195-237.6 119.195-61.803 0-94.35-32.547-120.502-58.699-24.416-24.414-43.701-43.701-84.298-43.701-54.304 0-134.701 68.506-161.098 94.901-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203 1.104-1.102 27.438-27.325 63.845-53.802 51.182-37.222 96.083-56.096 133.458-56.096 61.803 0 94.35 32.547 120.502 58.699 24.416 24.414 43.701 43.701 84.298 43.701 91.736 0 147.958-53.434 202.326-105.107 44.022-41.837 89.541-85.101 151.606-96.099 45.648-8.090 82.392-0.79 109.214 21.694 43.299 36.299 48.853 101.322 48.853 153.912 0 9.224-4.962 17.733-12.987 22.277-8.022 4.546-17.874 4.424-25.782-0.325-42.784-25.669-79.352-25.302-100.331 1.006-17.424 21.848-20.859 61.443 3.971 87.315 12.291 12.808 25.952 18.578 43.069 18.237 55.723-1.189 126.909-68.414 149.637-94.218 9.338-10.603 25.51-11.642 36.123-2.309 10.611 9.331 11.661 25.49 2.336 36.107-0.968 1.102-24.107 27.322-57.656 53.952-47.117 37.402-90.605 56.798-129.254 57.653-0.909 0.021-1.816 0.032-2.718 0.032z' />
+            <path d='M384.005 1024.533c-2.645 0-5.334-0.413-7.986-1.282-19.469-6.387-35.131-14.829-50.275-22.989-27.346-14.736-50.963-27.462-95.344-27.462-33.026 0-72.074 31.571-84.333 43.736-10.021 9.944-26.221 9.917-36.186-0.086s-9.966-26.168 0.018-36.152c6.006-6.006 60.432-58.698 120.501-58.698 57.298 0 90.414 17.845 119.632 33.589 13.784 7.429 26.803 14.443 41.949 19.413 13.434 4.408 20.752 18.872 16.344 32.306-3.539 10.784-13.557 17.626-24.32 17.626z' />
+            <path d='M901.554 461.41c-1.73-0.384-10.621-2.344-25.043-5.285l44.246-168.005c3.437-13.054-3.853-26.536-16.661-30.805l-153.6-51.2c-2.611-0.87-5.344-1.314-8.096-1.314h-45.056c-13.734-7.061-52.141-27.206-90.914-51.182-85.098-52.624-93.696-74.824-94.43-77.36v-50.659c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v50.658c-0.734 2.536-9.334 24.736-94.43 77.36-38.773 23.976-77.178 44.122-90.914 51.182h-45.056c-2.752 0-5.485 0.443-8.096 1.314l-153.6 51.2c-12.808 4.269-20.099 17.75-16.661 30.806l44.25 168.003c-14.427 2.941-23.318 4.901-25.048 5.285-11.712 2.605-20.045 12.994-20.045 24.992 0 80.819 14.755 169.499 43.858 263.578 3.398 10.987 13.518 18.040 24.448 18.040 2.504 0 5.054-0.37 7.573-1.15 13.507-4.178 21.069-18.514 16.891-32.022-25.091-81.117-38.933-157.611-41.227-227.741 56.349-11.501 219.144-42.384 358.058-45.96v332.456c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-332.456c138.829 3.578 301.682 34.462 358.054 45.962-1.336 40.488-6.541 83.386-15.522 127.822-2.802 13.858 6.163 27.365 20.021 30.165 13.866 2.806 27.363-6.165 30.165-20.021 11.202-55.427 16.882-108.811 16.882-158.672 0-11.998-8.334-22.387-20.046-24.99zM575.232 194.509c5.634 3.522 11.253 6.955 16.805 10.291h-80.037v-54.373c16.744 13.493 37.942 28.275 63.232 44.082zM397.568 194.509c25.29-15.806 46.49-30.589 63.232-44.082v54.373h-80.037c5.55-3.336 11.17-6.77 16.805-10.291zM107.67 298.294l126.883-42.294h503.691l126.885 42.294-39.002 148.090c-83.427-15.317-221.458-36.784-339.728-36.784-118.269 0-256.298 21.467-339.726 36.782l-39.003-148.088z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship2.js
new file mode 100644
index 00000000..c636c9c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ship2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Ship2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 1024c-36.205 0-66.043-29.84-94.901-58.699-19.47-19.469-43.704-43.701-58.699-43.701-14.155 0-35.635 22.072-54.587 41.546-27.762 28.525-59.224 60.854-99.013 60.854-39.286 0-69.088-31.445-95.381-59.19-20.133-21.243-40.95-43.21-58.219-43.21-18.173 0-41.627 24.099-62.32 45.365-27.29 28.040-55.509 57.035-91.28 57.035-36.203 0-66.043-29.84-94.901-58.699-19.472-19.469-43.702-43.701-58.699-43.701s-39.227 24.232-58.699 43.701c-28.858 28.859-58.698 58.699-94.901 58.699-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c14.997 0 39.227-24.232 58.699-43.701 28.858-28.859 58.698-58.699 94.901-58.699s66.043 29.84 94.901 58.699c19.472 19.469 43.702 43.701 58.699 43.701 14.155 0 35.635-22.072 54.587-41.546 27.76-28.525 59.224-60.854 99.013-60.854 39.286 0 69.088 31.445 95.381 59.19 20.133 21.243 40.95 43.21 58.219 43.21 18.171 0 41.627-24.099 62.32-45.365 27.29-28.040 55.509-57.035 91.28-57.035 36.205 0 66.043 29.84 94.901 58.699 19.47 19.469 43.704 43.701 58.699 43.701 14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 819.2c-14.995 0-39.229-24.232-58.699-43.701-21.494-21.494-43.536-43.525-68.344-53.373 2.635-38.766 12.512-132.856 49.478-280.717 0.507-2.030 0.765-4.115 0.765-6.208 0-23.739-20.323-43.584-70.152-68.498-9.606-4.803-20.371-9.808-32.253-14.998l0.005-95.704c0.002-21.314-19.363-34.067-55.094-50.147-21.901-9.856-52.198-21.57-90.048-34.818-43.342-15.17-87.062-28.997-110.858-36.37v-109.067c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v109.034c-23.746 7.288-67.326 20.859-110.531 35.333-37.654 12.613-67.76 23.469-89.477 32.264-34.838 14.104-55.992 24.246-55.992 46.080v103.397c-11.88 5.189-22.643 10.194-32.248 14.995-49.827 24.914-70.152 44.758-70.152 68.498 0 2.093 0.256 4.178 0.765 6.208 36.97 147.875 46.845 241.971 49.478 280.717-24.808 9.846-46.85 31.878-68.344 53.373-19.472 19.47-43.702 43.702-58.699 43.702-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6c36.203 0 66.043-29.84 94.901-58.699 19.472-19.469 43.702-43.701 58.699-43.701s39.227 24.232 58.699 43.701c28.858 28.859 58.698 58.699 94.901 58.699 35.771 0 63.99-28.995 91.28-57.035 20.693-21.266 44.147-45.365 62.32-45.365 17.269 0 38.086 21.966 58.219 43.21 26.293 27.746 56.094 59.19 95.381 59.19 39.789 0 71.251-32.33 99.013-60.854 18.952-19.474 40.432-41.546 54.587-41.546 14.995 0 39.229 24.232 58.699 43.701 28.858 28.859 58.696 58.699 94.901 58.699 14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM592.85 214.824c85.19 29.267 114.395 44.405 123.95 50.44l-0.005 65.581c-13.331-5.118-27.514-10.37-42.584-15.752-65.216-23.291-131.050-43.398-162.211-52.662v-74.126c21.338 6.712 50.683 16.155 80.85 26.52zM256 260.176c27.278-14.106 117.798-45.117 204.8-72.014v74.267c-31.162 9.266-96.995 29.371-162.21 52.662-15.072 5.382-29.258 10.635-42.59 15.755v-70.67zM702.32 773.835c-20.693 21.266-44.149 45.365-62.32 45.365-17.269 0-38.086-21.966-58.219-43.21-26.293-27.746-56.094-59.19-95.381-59.19-39.789 0-71.253 32.33-99.013 60.854-18.952 19.474-40.432 41.546-54.587 41.546-14.997 0-39.227-24.232-58.699-43.701-22.011-22.011-44.597-44.576-70.138-54.054-2.432-39.277-11.933-133.538-49-283.878 6.054-5.902 25.44-20.371 85.358-45.339 0.024-0.011 0.050-0.021 0.074-0.032 23.030-9.595 52.035-20.736 88.579-33.541 68.96-24.165 136.021-44.133 157.426-50.397 21.373 6.253 88.283 26.176 157.222 50.325 36.606 12.824 65.656 23.979 88.72 33.587 0.066 0.029 0.131 0.054 0.197 0.082 59.874 24.954 79.245 39.414 85.296 45.315-37.083 150.405-46.574 244.683-49.003 283.93-24.622 9.314-45.835 31.094-66.512 52.339z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shirt.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shirt.js
new file mode 100644
index 00000000..988c65ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shirt.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shirt
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 972.8h-409.6c-42.347 0-76.8-34.451-76.8-76.8v-476.482l-119.904 39.968c-13.414 4.472-27.91-2.778-32.381-16.19l-51.2-153.6c-4.029-12.086 1.442-25.296 12.837-30.994l307.2-153.6c7.936-3.968 17.36-3.542 24.907 1.122s12.141 12.904 12.141 21.776c0 70.579 57.421 128 128 128s128-57.421 128-128c0-8.872 4.594-17.112 12.141-21.776 7.547-4.666 16.971-5.090 24.907-1.122l307.2 153.6c11.395 5.698 16.867 18.907 12.837 30.994l-51.2 153.6c-4.47 13.411-18.966 20.662-32.381 16.19l-119.904-39.968v476.482c0 42.349-34.451 76.8-76.8 76.8zM230.398 358.4c5.307 0 10.555 1.65 14.97 4.832 6.675 4.811 10.632 12.539 10.632 20.768v512c0 14.115 11.485 25.6 25.6 25.6h409.6c14.115 0 25.6-11.485 25.6-25.6v-512c0-8.229 3.957-15.957 10.632-20.768 6.677-4.811 15.258-6.123 23.064-3.518l129.314 43.104 36.083-108.25-254.624-127.312c-17.946 79.995-89.538 139.944-174.869 139.944-85.333 0-156.925-59.949-174.869-139.944l-254.624 127.312 36.083 108.25 129.314-43.104c2.645-0.88 5.378-1.314 8.094-1.314z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked.js
new file mode 100644
index 00000000..c2862e48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Shocked
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M640 768h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 204.8c-65.11 0-122.218 34.909-153.6 86.992-31.382-52.083-88.49-86.992-153.6-86.992-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2c65.11 0 122.218-34.909 153.6-86.992 31.382 52.083 88.49 86.992 153.6 86.992 98.811 0 179.2-80.389 179.2-179.2s-80.389-179.2-179.2-179.2zM332.8 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128z' />
+            <path d='M332.8 409.6c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 409.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked2.js
new file mode 100644
index 00000000..aa1ccc6f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shocked2.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Shocked2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M640 768h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 460.8c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 204.8c-65.11 0-122.218 34.909-153.6 86.992-31.382-52.083-88.49-86.992-153.6-86.992-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2c65.11 0 122.218-34.909 153.6-86.992 31.382 52.083 88.49 86.992 153.6 86.992 98.811 0 179.2-80.389 179.2-179.2s-80.389-179.2-179.2-179.2zM332.8 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 512c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128z' />
+            <path d='M332.8 460.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 358.4c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoe.js
new file mode 100644
index 00000000..412b730c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoe.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shoe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M882.906 241.278c-9.232-9.416-18.398-17.738-24.802-23.338-3.776-27.765-19.242-55.306-46.41-82.45-81.992-81.926-139.75-84.291-146.066-84.291-0.090 0-0.203 0-0.293 0.002-8.558 0.088-16.504 4.446-21.179 11.616-70.621 108.307-176.133 267.622-234.754 351.27 1.837-15.754 1.982-27.669-0.834-37.285-17.334-59.176-95.058-69.035-98.358-69.426-11.040-1.306-21.658 4.658-26.285 14.763-10.675 23.31-20.298 84.522-36.386 190.702-2.811 18.558-5.723 37.779-8.744 57.325-25.294 163.688-28.366 166.848-107.090 247.824-9.773 10.053-20.851 21.446-33.136 34.346-20.731 21.765-36 48.928-42.998 76.488-7.211 28.405-4.682 53.262 6.936 68.2 18.693 24.035 40.424 26.64 44.59 26.918 0.566 0.037 1.134 0.056 1.701 0.056 2.765 0 5.515-0.448 8.144-1.33 5.15-1.728 127.861-44.054 278.904-194.906 142.235-142.053 172.712-201.936 192.878-241.562 7.002-13.758 11.627-22.846 19.421-31.838 13.146-15.17 42.062-46.627 75.546-83.053 2.117-2.302 4.246-4.621 6.382-6.944l32.506 39.757c4.592 5.618 11.355 9.022 18.602 9.366 0.408 0.019 0.813 0.030 1.219 0.030 6.816 0 13.37-2.722 18.189-7.589 0.387-0.392 39.2-39.626 77.499-81.494 77.226-84.426 83.51-103.045 83.51-117.238 0-18.298-11.933-38.627-38.694-65.922zM569.454 520.834c-11.893 13.722-18.595 26.896-26.36 42.149-18.696 36.736-46.95 92.253-183.429 228.555-120.634 120.482-222.738 167.869-251.189 179.555-1.422-1.019-3.147-2.542-5-4.805-2.981-8.434 0.854-45.766 32.165-78.637 12.106-12.707 23.086-24.003 32.774-33.968 40.85-42.018 65.506-67.379 82.426-105.058 15.997-35.624 24.467-79.478 38.554-170.635 3.029-19.597 5.947-38.869 8.766-57.474 9.288-61.299 18.822-124.229 26.459-157.222 14.173 4.933 30.486 13.698 34.736 27.654 1.262 7.093-2.848 32.36-5.062 45.976-5.888 36.189-9.131 56.123 2.787 70.136 5.459 6.418 13.403 10.099 21.798 10.099 12.246 0 20.802-7.605 23.613-10.104 6.098-5.419 20.374-18.112 155.093-220.040 50.856-76.23 100.104-151.344 120.104-181.918 17.416 5.299 52.064 20.902 97.814 66.614 45.141 45.102 37.118 75.88 11.189 108.216-23.093 28.798-88.301 99.736-140.698 156.736-33.754 36.72-62.904 68.434-76.541 84.17zM795.138 395.518c-18.965 20.595-37.634 40.136-51.053 54.019l-19.032-23.277c42.758-46.688 83.304-91.506 101.586-114.304 8.912-11.114 15.981-22.222 21.214-33.317 10.566 10.989 18.701 21.048 21.634 27.16-4.269 7.533-19.736 30.41-74.349 89.718z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoes.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoes.js
new file mode 100644
index 00000000..9c797dfd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shoes.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shoes
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M985.306 241.278c-9.232-9.416-18.398-17.738-24.802-23.338-3.776-27.765-19.242-55.306-46.41-82.45-81.992-81.926-139.75-84.291-146.066-84.291-0.090 0-0.205 0-0.293 0.002-8.558 0.088-16.506 4.446-21.179 11.616-7.885 12.091-16.205 24.821-24.843 38.006-61.562-48.526-102.63-49.707-107.579-49.622-8.557 0.090-16.502 4.448-21.176 11.616-0.906 1.39-87.512 134.168-163.982 247.75-9.122-2.283-15.472-3.085-16.365-3.19-11.037-1.306-21.656 4.658-26.285 14.763-6.091 13.301-11.842 38.966-18.645 78.259-3.368 4.842-6.518 9.347-9.461 13.533 1.821-15.677 1.955-27.546-0.853-37.13-17.334-59.176-95.058-69.035-98.357-69.426-11.045-1.306-21.658 4.658-26.285 14.763-10.677 23.31-20.298 84.522-36.386 190.704-2.811 18.557-5.725 37.778-8.744 57.323-25.294 163.688-28.366 166.848-107.090 247.824-9.773 10.053-20.851 21.446-33.136 34.346-20.731 21.765-36 48.928-42.998 76.488-7.211 28.405-4.682 53.262 6.936 68.2 18.693 24.035 40.422 26.64 44.589 26.918 0.566 0.037 1.134 0.056 1.702 0.056 2.765 0 5.515-0.448 8.144-1.33 1.776-0.597 36.24-12.378 90.302-44.941 1.806 7.477 4.754 14.016 8.861 19.296 18.693 24.035 40.424 26.64 44.59 26.918 0.566 0.037 1.136 0.056 1.702 0.056 2.765 0 5.515-0.448 8.144-1.33 5.15-1.728 127.862-44.054 278.904-194.906 142.235-142.053 172.712-201.936 192.878-241.562 7.002-13.758 11.629-22.846 19.421-31.838 13.146-15.17 42.062-46.627 75.546-83.053 2.117-2.302 4.246-4.621 6.382-6.944l32.506 39.757c4.592 5.618 11.355 9.022 18.602 9.366 0.408 0.019 0.813 0.030 1.219 0.030 6.816 0 13.37-2.722 18.189-7.589 0.387-0.392 39.2-39.626 77.499-81.494 77.226-84.426 83.51-103.045 83.51-117.238 0-18.298-11.933-38.627-38.694-65.922zM626.52 105.053c13.093 4.027 36.434 14.059 66.958 38.758-63.451 96.376-136.493 205.802-181.675 270.277 1.837-15.754 1.982-27.67-0.834-37.285-6.019-20.547-19.32-35.144-34.258-45.467 60.554-90.088 125.989-189.872 149.808-226.283zM163.107 912.499c-51.512 34.72-90.043 52.157-105.816 58.605-1.426-1.021-3.157-2.547-5.014-4.816-2.979-8.434 0.854-45.766 32.165-78.637 12.106-12.707 23.086-24.003 32.774-33.968 40.85-42.018 65.506-67.379 82.426-105.058 15.997-35.624 24.467-79.48 38.554-170.635 3.029-19.597 5.947-38.867 8.766-57.474 9.29-61.307 18.826-124.248 26.464-157.237 14.376 4.995 30.512 13.814 34.733 27.67 1.262 7.093-2.848 32.358-5.064 45.973-2.090 12.842-4.062 24.971-4.872 35.139-0.75 9.445-2.51 31.565 15.71 41.581 5.502 3.027 20.026 8.41 36.813-6.12-0.269 1.771-0.534 3.523-0.806 5.322-2.811 18.558-5.725 37.779-8.744 57.325-25.294 163.688-28.366 166.848-107.090 247.824-9.773 10.053-20.851 21.446-33.136 34.346-16.616 17.442-29.71 38.357-37.862 60.16zM671.854 520.834c-11.893 13.722-18.595 26.896-26.36 42.149-18.696 36.736-46.95 92.253-183.429 228.555-120.635 120.483-222.739 167.87-251.19 179.557-1.422-1.019-3.147-2.544-5-4.805-2.981-8.434 0.854-45.766 32.165-78.637 12.106-12.707 23.086-24.003 32.774-33.968 40.85-42.018 65.506-67.379 82.426-105.058 15.998-35.624 24.467-79.478 38.554-170.635 3.029-19.597 5.947-38.869 8.766-57.474 9.288-61.299 18.821-124.229 26.459-157.222 14.173 4.933 30.486 13.698 34.736 27.654 1.262 7.093-2.848 32.36-5.062 45.976-5.888 36.189-9.131 56.123 2.787 70.136 5.459 6.418 13.403 10.099 21.798 10.099 12.246 0 20.802-7.605 23.613-10.104 6.098-5.419 20.374-18.112 155.093-220.040 50.856-76.23 100.104-151.344 120.104-181.918 17.416 5.299 52.064 20.902 97.814 66.614 45.139 45.102 37.118 75.88 11.189 108.216-23.094 28.798-88.301 99.736-140.699 156.736-33.75 36.718-62.901 68.432-76.538 84.168zM897.538 395.518c-18.965 20.595-37.634 40.136-51.053 54.019l-19.032-23.277c42.758-46.688 83.304-91.506 101.586-114.304 8.912-11.114 15.981-22.222 21.214-33.317 10.566 10.989 18.701 21.048 21.634 27.16-4.269 7.533-19.736 30.41-74.349 89.718z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shorts.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shorts.js
new file mode 100644
index 00000000..9ec157a3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shorts.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shorts
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M971.17 631.011l-153.6-409.6c-3.746-9.992-13.298-16.611-23.97-16.611h-614.4c-10.67 0-20.224 6.619-23.97 16.611l-153.6 409.6c-4.6 12.267 0.803 26.029 12.522 31.886l307.2 153.6c11.066 5.536 24.504 2.362 31.928-7.538l133.12-177.493 133.12 177.493c4.971 6.632 12.642 10.242 20.493 10.242 3.869 0 7.782-0.878 11.435-2.704l307.2-153.6c11.718-5.859 17.122-19.619 12.522-31.886zM196.941 256h578.918l19.2 51.2h-617.318l19.2-51.2zM647.661 761.149l-140.781-187.709c-4.834-6.446-12.422-10.24-20.48-10.24s-15.645 3.794-20.48 10.24l-140.781 187.707-267.477-133.738 100.878-269.010h234.352c-2.827 3.81-5.565 7.814-8.2 12.032-17.939 28.702-25.226 57.354-25.528 58.56-3.429 13.717 4.91 27.614 18.627 31.045 13.717 3.429 27.614-4.91 31.045-18.627 0.206-0.83 22.296-83.010 77.563-83.010 55.507 0 77.221 81.682 77.578 83.062 2.926 11.603 13.349 19.344 24.803 19.344 2.054 0 4.144-0.25 6.229-0.77 13.715-3.43 22.054-17.328 18.627-31.045-0.301-1.206-7.587-29.858-25.526-58.56-2.635-4.218-5.374-8.222-8.2-12.032h234.35l100.878 269.010-267.478 133.739z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shovel.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shovel.js
new file mode 100644
index 00000000..6a778797
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shovel.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shovel
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1001.506 176.096l-153.6-153.602c-14.506-14.507-33.792-22.494-54.306-22.494s-39.8 7.989-54.302 22.493c-14.509 14.504-22.498 33.79-22.498 54.307v117.397l-204.8 204.8-7.499-7.499c-9.997-9.998-26.206-9.998-36.203 0l-37.898 37.899-99.294-99.294c-14.466-14.467-33.752-22.434-54.306-22.434s-39.84 7.966-54.306 22.434l-138.197 138.195c-52.043 52.043-84.298 107.485-84.298 222.902 0 105.344 50.37 257.662 52.514 264.096 2.547 7.643 8.546 13.642 16.19 16.19 6.434 2.146 158.754 52.514 264.096 52.514 115.418 0 170.859-32.254 222.901-84.299l138.197-138.197c14.466-14.464 22.432-33.75 22.432-54.304s-7.966-39.84-22.432-54.304l-99.294-99.296 37.899-37.899c4.802-4.8 7.499-11.312 7.499-18.101s-2.698-13.301-7.499-18.101l-7.499-7.499 204.8-204.8h117.397c20.515 0 39.803-7.989 54.306-22.494 14.506-14.504 22.496-33.792 22.496-54.306s-7.989-39.8-22.496-54.304zM486.4 445.803l91.795 91.797-164.392 164.392c-9.61 9.611-22.467 14.902-36.203 14.902s-26.594-5.293-36.203-14.904l-19.389-19.386c-19.963-19.965-19.963-52.445 0-72.41l164.392-164.392zM657.696 729.099c9.981 9.981 9.981 26.222 0 36.203l-138.197 138.197c-44.947 44.944-88.011 69.301-186.699 69.301-80.734 0-197.794-34.219-235.627-45.978-11.763-37.824-45.973-154.789-45.973-235.622 0-98.688 24.357-141.754 69.301-186.698l138.197-138.197c9.982-9.982 26.222-9.982 36.203 0l99.296 99.294-108.394 108.392c-39.925 39.925-39.925 104.891 0 144.818l19.389 19.386c19.282 19.282 44.997 29.901 72.408 29.901s53.126-10.619 72.406-29.901l108.394-108.392 99.296 99.296zM548.205 435.2l194.195-194.197 40.597 40.597-194.197 194.197-40.595-40.597zM965.301 248.502c-4.834 4.835-11.262 7.498-18.101 7.498h-117.397l-61.803-61.803v-117.397c0-6.838 2.662-13.267 7.501-18.102 4.834-4.835 11.262-7.498 18.099-7.498s13.266 2.662 18.101 7.499l153.602 153.602c4.835 4.835 7.499 11.264 7.499 18.101s-2.662 13.264-7.501 18.101z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shredder.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shredder.js
new file mode 100644
index 00000000..868a68e2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shredder.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Shredder
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM793.6 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 256h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 307.2h-76.8v-230.4c0-42.347-34.453-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v230.4h-76.8c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 42.349 34.453 76.8 76.8 76.8h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-281.6h51.2v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-230.4h51.2v281.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-281.6h51.2v230.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-230.4h51.2v281.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-281.6h51.2v230.4c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-230.4h51.2v281.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c42.349 0 76.8-34.451 76.8-76.8v-460.8c0-42.347-34.451-76.8-76.8-76.8zM204.8 76.8c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v230.4h-563.2v-230.4zM921.6 844.8c0 14.115-11.485 25.6-25.6 25.6h-76.8v-153.6h25.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-716.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h25.6v153.6h-76.8c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v460.8z' />
+            <path d='M691.2 153.6h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shuffle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shuffle.js
new file mode 100644
index 00000000..c3d61478
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shuffle.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Shuffle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.597 870.406c-10.72 0.002-20.707-6.782-24.283-17.51-4.472-13.413 2.778-27.91 16.19-32.381l43.346-14.448c-167.034-39.242-265.997-160.195-362.264-277.854-114.534-139.989-222.717-272.213-440.986-272.213-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c242.531 0 363.565 147.93 480.613 290.989 114.536 139.987 222.718 272.211 440.987 272.211 12.557 0 23.258 9.106 25.269 21.501 2.013 12.392-5.262 24.416-17.173 28.386l-153.6 51.2c-2.685 0.894-5.416 1.32-8.099 1.32z' />
+            <path d='M550.661 460.797c-5.984 0-11.994-2.086-16.851-6.339-10.637-9.312-11.712-25.486-2.398-36.123 76.315-87.173 165.298-169.235 297.547-200.363l-43.453-14.485c-13.413-4.47-20.662-18.968-16.19-32.381 4.47-13.413 18.965-20.664 32.381-16.19l153.6 51.2c11.91 3.97 19.186 15.994 17.173 28.387-2.011 12.392-12.712 21.498-25.269 21.498-170.658 0-274.24 78.378-377.267 196.059-5.059 5.781-12.149 8.738-19.272 8.738z' />
+            <path d='M25.6 819.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6c170.658 0 274.242-78.376 377.267-196.059 9.312-10.64 25.488-11.714 36.125-2.398 10.638 9.312 11.712 25.486 2.4 36.123-97.093 110.904-214.666 213.534-415.792 213.534z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter.js
new file mode 100644
index 00000000..7da4d8cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shutter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M874.038 149.962c-96.704-96.704-225.278-149.962-362.038-149.962s-265.334 53.258-362.038 149.962c-96.704 96.704-149.962 225.278-149.962 362.038s53.258 265.334 149.962 362.038c96.704 96.704 225.278 149.962 362.038 149.962s265.334-53.258 362.038-149.962c96.704-96.704 149.962-225.278 149.962-362.038s-53.258-265.334-149.962-362.038zM51.2 512c0-51.411 8.469-100.882 24.075-147.094l291.909 291.912c0.606 0.606 1.237 1.171 1.885 1.704 2.483 2.424 5.027 4.784 7.63 7.080l-299.142-0.003c-17.045-48.067-26.357-99.763-26.357-153.598zM512 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM654.899 365.448c-2.474-2.411-5.006-4.763-7.597-7.048h299.141c17.046 48.067 26.357 99.763 26.357 153.6 0 51.413-8.469 100.883-24.077 147.096l-291.906-291.915c-0.616-0.614-1.256-1.192-1.918-1.733zM924.701 307.2h-412.701c-4.312 0-8.59 0.15-12.837 0.414l211.394-211.392c92.717 44.456 168.336 119.038 214.144 210.978zM659.094 75.275l-291.91 291.91c-0.592 0.592-1.141 1.206-1.662 1.838-2.438 2.498-4.813 5.056-7.123 7.674l0.002-299.141c48.069-17.045 99.765-26.357 153.6-26.357 51.413 0 100.882 8.469 147.094 24.075zM307.202 99.298l-0.003 412.702c0 0.014 0.002 0.027 0.002 0.042 0 4.299 0.15 8.563 0.413 12.797l-211.39-211.395c44.456-92.717 119.038-168.336 210.979-214.146zM99.298 716.798l412.704 0.005c0.029 0 0.054-0.005 0.083-0.005 4.286-0.002 8.538-0.15 12.758-0.413l-211.398 211.392c-92.718-44.456-168.338-119.038-214.147-210.979zM364.904 948.723l291.914-291.906c0.619-0.618 1.197-1.261 1.739-1.923 2.411-2.472 4.762-5.003 7.045-7.595l-0.005 299.146c-48.066 17.045-99.762 26.355-153.597 26.355-51.413 0-100.882-8.469-147.096-24.077zM716.798 924.702l0.006-412.702c0-0.042-0.006-0.082-0.006-0.125-0.003-4.272-0.152-8.509-0.413-12.718l211.392 211.398c-44.456 92.718-119.038 168.338-210.979 214.147z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter2.js
new file mode 100644
index 00000000..e725dcdd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Shutter2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Shutter2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 793.066v-255.458c0-0.005 0-0.011 0-0.016v-255.838c0-0.088 0-0.176 0-0.264v-255.89c0-14.138-11.461-25.6-25.6-25.6h-256.421c-0.042 0-0.085 0-0.128 0h-562.491c-0.093 0-0.184 0-0.275 0h-153.485c-14.138 0-25.6 11.462-25.6 25.6v205.259c0 0.024 0 0.046 0 0.070v511.315c0 0.090 0 0.176 0 0.264v255.891c0 14.139 11.462 25.6 25.6 25.6h255.837c0.053 0 0.106 0.006 0.158 0.006s0.104-0.006 0.157-0.006h562.888c0.056 0 0.112 0.006 0.166 0.006 0.051 0 0.102-0.006 0.157-0.006h153.437c14.139 0 25.6-11.461 25.6-25.6v-205.248c0-0.030 0-0.058 0-0.086zM848.706 972.8l-437.094-136.592-235.637-235.638-124.774-374.323v-175.046h124.094l437.094 136.592 235.637 235.637 124.774 374.325v175.046h-124.094zM548.203 972.8l-58.568-58.568 187.419 58.568h-128.851zM300.051 972.8l-43.837-131.512 128.102 40.032 91.48 91.48h-175.746zM51.2 388.154l43.821 131.464-43.821-43.822v-87.642zM51.2 548.205l80.026 80.026 44.784 134.354-124.81-39.005v-175.374zM212.179 709.182l94.114 94.112-70.038-21.886-24.075-72.226zM475.795 51.2l58.568 58.568-187.418-58.568h128.85zM723.949 51.2l43.837 131.512-128.099-40.032-91.482-91.48h175.744zM972.8 475.797l-80.026-80.026-44.784-134.354 124.81 39.003v175.376zM811.822 314.818l-94.112-94.114 70.035 21.886 24.077 72.227zM928.978 504.381l43.822 43.822v87.643l-43.822-131.466zM972.8 246.779l-144.768-45.24-50.115-150.339h194.883v195.579zM51.2 777.221l144.77 45.24 50.112 150.339h-194.882v-195.579z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sigma.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sigma.js
new file mode 100644
index 00000000..f0b888f7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sigma.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Sigma
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 921.6h-512c-9.589 0-18.374-5.36-22.763-13.886s-3.643-18.79 1.931-26.594l245.371-343.52-245.371-343.52c-5.574-7.803-6.32-18.067-1.931-26.594s13.174-13.886 22.763-13.886h512c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-462.254l227.086 317.92c6.358 8.901 6.358 20.858 0 29.76l-227.086 317.92h462.254c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal.js
new file mode 100644
index 00000000..7310fd39
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 921.6h51.2v-204.8h-51.2v204.8z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6zM460.8 921.6h51.2v-358.4h-51.2v358.4z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-614.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v614.4c0 14.139-11.461 25.6-25.6 25.6zM665.6 921.6h51.2v-563.2h-51.2v563.2z' />
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-870.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v870.4c0 14.139-11.461 25.6-25.6 25.6zM870.4 921.6h51.2v-819.2h-51.2v819.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal0.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal0.js
new file mode 100644
index 00000000..aa584cd2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal0.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal0
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal20.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal20.js
new file mode 100644
index 00000000..693e7910
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal20.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal20
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal40.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal40.js
new file mode 100644
index 00000000..a1bc5a85
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal40.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal40
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 921.6h51.2v-204.8h-51.2v204.8z' />
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal60.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal60.js
new file mode 100644
index 00000000..94829f1b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal60.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal60
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 921.6h51.2v-204.8h-51.2v204.8z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6zM460.8 921.6h51.2v-358.4h-51.2v358.4z' />
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal80.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal80.js
new file mode 100644
index 00000000..b3673a24
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Signal80.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Signal80
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 921.6h51.2v-204.8h-51.2v204.8z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6zM460.8 921.6h51.2v-358.4h-51.2v358.4z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-614.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v614.4c0 14.139-11.461 25.6-25.6 25.6zM665.6 921.6h51.2v-563.2h-51.2v563.2z' />
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalBlocked.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalBlocked.js
new file mode 100644
index 00000000..7213d9cf
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalBlocked.js
@@ -0,0 +1,17 @@
+// Icon: Linear.SignalBlocked
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 307.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.043 0 230.4-103.357 230.4-230.4s-103.357-230.4-230.4-230.4zM486.4 358.4c49.307 0 94.027 20.021 126.459 52.357l-283.68 212.76c-14.005-25.525-21.979-54.806-21.979-85.917 0-98.811 80.389-179.2 179.2-179.2zM486.4 716.8c-49.307 0-94.026-20.021-126.459-52.357l283.68-212.76c14.005 25.525 21.979 54.806 21.979 85.917 0 98.811-80.389 179.2-179.2 179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalLock.js
new file mode 100644
index 00000000..d232062a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SignalLock.js
@@ -0,0 +1,17 @@
+// Icon: Linear.SignalLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-870.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v870.4c0 14.139-11.461 25.6-25.6 25.6zM870.4 921.6h51.2v-819.2h-51.2v819.2z' />
+            <path d='M742.4 972.8h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-614.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v614.4c0 14.139-11.461 25.6-25.6 25.6zM665.6 921.6h51.2v-563.2h-51.2v563.2z' />
+            <path d='M537.6 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v409.6c0 14.139-11.461 25.6-25.6 25.6zM460.8 921.6h51.2v-358.4h-51.2v358.4z' />
+            <path d='M332.8 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6zM256 921.6h51.2v-204.8h-51.2v204.8z' />
+            <path d='M128 972.8h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6zM51.2 921.6h51.2v-102.4h-51.2v102.4z' />
+            <path d='M307.2 209.203v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM179.2 102.4c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM307.2 435.2c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sim.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sim.js
new file mode 100644
index 00000000..18335727
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sim.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Sim
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 1024h-563.2c-42.347 0-76.8-34.451-76.8-76.8v-588.8c0-35.235 18.789-80.594 43.702-105.506l157.992-157.992c24.915-24.915 70.272-43.702 105.506-43.702h332.8c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM460.8 102.4c-21.246 0-54.278 13.683-69.302 28.706l-157.992 157.992c-15.024 15.024-28.706 48.054-28.706 69.302v588.8c0 14.115 11.485 25.6 25.6 25.6h563.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-332.8z' />
+            <path d='M665.6 460.8h-307.2c-56.464 0-102.4 45.936-102.4 102.4v256c0 56.464 45.936 102.4 102.4 102.4h307.2c56.464 0 102.4-45.936 102.4-102.4v-256c0-56.464-45.936-102.4-102.4-102.4zM716.8 563.2v102.4h-102.4v-153.6h51.2c28.232 0 51.2 22.968 51.2 51.2zM460.8 665.6v-153.6h102.4v153.6h-102.4zM563.2 716.8v153.6h-102.4v-153.6h102.4zM358.4 512h51.2v153.6h-102.4v-102.4c0-28.232 22.968-51.2 51.2-51.2zM307.2 819.2v-102.4h102.4v153.6h-51.2c-28.232 0-51.2-22.968-51.2-51.2zM665.6 870.4h-51.2v-153.6h102.4v102.4c0 28.232-22.968 51.2-51.2 51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Siren.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Siren.js
new file mode 100644
index 00000000..822c671d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Siren.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Siren
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 358.4c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 665.6h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M128 665.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M768 772.403v-81.203c0-155.275-126.325-281.6-281.6-281.6s-281.6 126.325-281.6 281.6v81.203c-29.797 10.568-51.2 39.026-51.2 72.397 0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8 0-33.371-21.405-61.829-51.2-72.397zM486.4 460.8c127.042 0 230.4 103.358 230.4 230.4v76.8h-460.8v-76.8c0-127.042 103.357-230.4 230.4-230.4zM742.4 870.4h-512c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+            <path d='M742.4 435.2c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M230.4 435.2c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SiteMap.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SiteMap.js
new file mode 100644
index 00000000..f78c98d3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SiteMap.js
@@ -0,0 +1,12 @@
+// Icon: Linear.SiteMap
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 668.174v-79.374c0-42.349-34.451-76.8-76.8-76.8h-281.6v-104.976c58.355-11.893 102.4-63.61 102.4-125.424 0-70.579-57.421-128-128-128s-128 57.421-128 128c0 61.814 44.045 113.531 102.4 125.424v104.976h-281.6c-42.347 0-76.8 34.451-76.8 76.8v79.374c-58.355 11.894-102.4 63.611-102.4 125.426 0 70.579 57.421 128 128 128s128-57.421 128-128c0-61.814-44.045-113.531-102.4-125.426v-79.374c0-14.115 11.485-25.6 25.6-25.6h281.6v104.974c-58.355 11.894-102.4 63.611-102.4 125.426 0 70.579 57.421 128 128 128s128-57.421 128-128c0-61.814-44.045-113.531-102.4-125.426v-104.974h281.6c14.115 0 25.6 11.485 25.6 25.6v79.374c-58.355 11.894-102.4 63.611-102.4 125.426 0 70.579 57.421 128 128 128s128-57.421 128-128c0-61.814-44.045-113.531-102.4-125.426zM409.6 281.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8c-42.347 0-76.8-34.453-76.8-76.8zM204.8 793.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8 34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8zM563.2 793.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8 34.453-76.8 76.8-76.8c42.347 0 76.8 34.453 76.8 76.8zM844.8 870.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Skull.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Skull.js
new file mode 100644
index 00000000..1e8d573a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Skull.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Skull
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-67.766 41.424-134.659 94.304-152.286 31.589-10.53 59.296-58.994 59.296-103.714v-102.4c0-211.738-172.261-384-384-384-211.738 0-384 172.262-384 384v102.4c0 44.72 27.707 93.184 59.296 103.714 52.88 17.627 94.304 84.52 94.304 152.286v153.6c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-153.6c0-44.72-27.707-93.184-59.296-103.714-52.88-17.627-94.304-84.52-94.304-152.286v-102.4c0-116.246 45.269-225.534 127.467-307.733s191.486-127.467 307.733-127.467c116.245 0 225.534 45.269 307.733 127.467s127.467 191.486 127.467 307.733v102.4c0 67.766-41.424 134.659-94.304 152.286-31.589 10.53-59.296 58.994-59.296 103.714v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 1024c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 1024c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 1024c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 1024c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM640 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M332.8 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM332.8 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M534.438 808.222c-0.003 0-0.003 0-0.006 0-5.523 0-11.49-1.056-17.728-3.136-7.563-2.52-18.608-3.966-30.304-3.966s-22.742 1.445-30.304 3.966c-6.242 2.082-12.208 3.136-17.733 3.136-13.707 0-25.171-6.363-31.451-17.456-5.64-9.962-8.99-27.458 7.078-54.24l24.115-40.192c11.645-19.41 29.246-30.539 48.294-30.539s36.648 11.13 48.294 30.538l24.115 40.195c16.070 26.784 12.72 44.282 7.078 54.242-6.28 11.091-17.744 17.453-31.45 17.453zM486.4 749.92c7.374 0 14.616 0.429 21.49 1.253l-17.099-28.499c-1.906-3.176-3.512-4.674-4.39-5.328-0.878 0.654-2.485 2.154-4.39 5.33l-17.099 28.499c6.874-0.826 14.115-1.254 21.49-1.254z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Slingshot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Slingshot.js
new file mode 100644
index 00000000..aaa3ba9c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Slingshot.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Slingshot
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 1024h-51.2c-42.347 0-76.8-34.451-76.8-76.8v-76.8c0-14.138 11.461-25.6 25.6-25.6 14.138 0 25.6 11.461 25.6 25.6v76.8c0 14.115 11.485 25.6 25.6 25.6h51.2c14.115 0 25.6-11.485 25.6-25.6v-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v76.8c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M742.4 0h-51.2c-42.347 0-76.8 34.453-76.8 76.8v128c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-128c0-42.347-34.453-76.8-76.8-76.8h-51.2c-42.347 0-76.8 34.453-76.8 76.8v128c0 68.248 21.912 132.872 63.366 186.886 36.134 47.078 85.827 83.082 141.429 102.811l0.002 196.702c0 14.139 11.462 25.6 25.6 25.6 14.139 0 25.6-11.461 25.6-25.6l-0.002-215.402c0-11.456-7.61-21.515-18.632-24.634-109.61-31.003-186.163-132.312-186.163-246.365h102.4c0 84.696 68.904 153.6 153.6 153.6s153.6-68.904 153.6-153.6h102.4c0 114.054-76.555 215.365-186.166 246.366-11.024 3.118-18.634 13.178-18.634 24.634v215.4c0 14.139 11.461 25.6 25.6 25.6 14.138 0 25.6-11.462 25.6-25.6l0.002-196.701c55.602-19.73 105.298-55.731 141.43-102.811 41.456-54.014 63.368-118.638 63.368-186.888v-128c0-42.347-34.453-76.8-76.8-76.8zM256 153.6v-76.8c0-14.115 11.485-25.6 25.6-25.6h51.2c14.115 0 25.6 11.485 25.6 25.6v76.8h-102.4zM665.6 153.6v-76.8c0-14.115 11.485-25.6 25.6-25.6h51.2c14.115 0 25.6 11.485 25.6 25.6v76.8h-102.4z' />
+            <path d='M512 819.2c-95.733 0-185.733-37.28-253.427-104.973-67.693-67.693-104.973-157.696-104.973-253.427v-281.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v281.6c0 169.39 137.81 307.2 307.2 307.2s307.2-137.81 307.2-307.2v-281.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v281.6c0 95.731-37.28 185.734-104.973 253.427s-157.696 104.973-253.427 104.973z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smartphone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smartphone.js
new file mode 100644
index 00000000..e5dfa713
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smartphone.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Smartphone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.6 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 1024h-460.8c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h460.8c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM281.6 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-460.8z' />
+            <path d='M691.2 819.2h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-665.6c0-14.138 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6v665.6c0 14.139-11.461 25.6-25.6 25.6zM358.4 768h307.2v-614.4h-307.2v614.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneEmbed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneEmbed.js
new file mode 100644
index 00000000..8f84986f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneEmbed.js
@@ -0,0 +1,19 @@
+// Icon: Linear.SmartphoneEmbed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 819.2h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v25.6h307.2v-25.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 256c-14.139 0-25.6-11.462-25.6-25.6v-76.8h-307.2v76.8c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 1024h-460.8c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M793.6 256c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.115-11.485-25.6-25.6-25.6h-460.8c-14.115 0-25.6 11.485-25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-153.6c0-42.347 34.453-76.8 76.8-76.8h460.8c42.347 0 76.8 34.453 76.8 76.8v153.6c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M307.2 665.6c-6.552 0-13.102-2.499-18.101-7.499l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-135.499 135.499 135.498 135.499c9.998 9.997 9.998 26.206 0 36.203-4.998 4.998-11.549 7.498-18.101 7.498z' />
+            <path d='M716.8 665.6c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l135.498-135.498-135.499-135.499c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l153.6 153.6c9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-4.998 5-11.549 7.499-18.101 7.499z' />
+            <path d='M435.181 665.606c-3.848 0-7.754-0.872-11.429-2.709-12.646-6.322-17.771-21.699-11.45-34.346l153.6-307.2c6.322-12.645 21.699-17.773 34.346-11.45 12.645 6.323 17.771 21.701 11.448 34.346l-153.6 307.2c-4.483 8.971-13.526 14.158-22.915 14.158z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneNotification.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneNotification.js
new file mode 100644
index 00000000..f917184b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneNotification.js
@@ -0,0 +1,17 @@
+// Icon: Linear.SmartphoneNotification
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024h-460.8c-42.347 0-76.8-34.451-76.8-76.8v-307.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-204.8c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M691.2 819.2h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v128h307.2v-614.4h-25.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6v665.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 563.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM281.6 51.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4 230.4-103.357 230.4-230.4-103.357-230.4-230.4-230.4z' />
+            <path d='M281.6 204.8c-14.138 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 460.8c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneVibration.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneVibration.js
new file mode 100644
index 00000000..cc4ec22a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneVibration.js
@@ -0,0 +1,16 @@
+// Icon: Linear.SmartphoneVibration
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 1024h-460.8c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h460.8c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM281.6 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-460.8z' />
+            <path d='M691.2 819.2h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-665.6c0-14.138 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6v665.6c0 14.139-11.461 25.6-25.6 25.6zM358.4 768h307.2v-614.4h-307.2v614.4z' />
+            <path d='M537.6 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M128.021 921.606c-9.392 0-18.432-5.186-22.918-14.158l-51.2-102.4c-3.603-7.206-3.603-15.691 0-22.898l45.475-90.95-45.475-90.952c-3.603-7.206-3.603-15.691 0-22.898l45.475-90.95-45.475-90.952c-3.603-7.206-3.603-15.69 0-22.898l45.475-90.95-45.475-90.952c-3.603-7.206-3.603-15.69 0-22.898l51.2-102.4c6.323-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.45 34.346l-45.475 90.954 45.475 90.952c3.603 7.206 3.603 15.69 0 22.898l-45.475 90.95 45.475 90.952c3.603 7.206 3.603 15.69 0 22.898l-45.475 90.95 45.475 90.952c3.603 7.206 3.603 15.691 0 22.898l-45.475 90.95 45.475 90.952c6.323 12.645 1.197 28.024-11.45 34.346-3.674 1.837-7.581 2.707-11.427 2.709z' />
+            <path d='M895.979 921.606c-3.846 0-7.754-0.872-11.429-2.709-12.646-6.322-17.771-21.699-11.448-34.346l45.475-90.952-45.475-90.952c-3.605-7.206-3.605-15.691 0-22.898l45.475-90.95-45.475-90.952c-3.605-7.206-3.605-15.69 0-22.898l45.475-90.95-45.475-90.952c-3.605-7.206-3.605-15.69 0-22.898l45.475-90.95-45.475-90.952c-6.323-12.645-1.198-28.022 11.448-34.346 12.648-6.323 28.026-1.195 34.346 11.45l51.2 102.4c3.605 7.206 3.605 15.69 0 22.898l-45.474 90.95 45.475 90.952c3.605 7.206 3.605 15.69 0 22.898l-45.475 90.95 45.475 90.952c3.605 7.206 3.605 15.691 0 22.898l-45.475 90.95 45.475 90.952c3.605 7.206 3.605 15.691 0 22.898l-51.2 102.4c-4.485 8.97-13.528 14.155-22.918 14.157z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneWaves.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneWaves.js
new file mode 100644
index 00000000..1b33c009
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SmartphoneWaves.js
@@ -0,0 +1,17 @@
+// Icon: Linear.SmartphoneWaves
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 819.2h-256c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.347 34.453-76.8 76.8-76.8h256c42.347 0 76.8 34.453 76.8 76.8v460.8c0 42.347-34.453 76.8-76.8 76.8zM384 256c-14.115 0-25.6 11.485-25.6 25.6v460.8c0 14.115 11.485 25.6 25.6 25.6h256c14.115 0 25.6-11.485 25.6-25.6v-460.8c0-14.115-11.485-25.6-25.6-25.6h-256z' />
+            <path d='M537.6 716.8h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 307.2c-14.139 0-25.6-11.462-25.6-25.6 0-70.579-57.421-128-128-128-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c98.811 0 179.2 80.389 179.2 179.2 0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 307.2c-14.139 0-25.6-11.462-25.6-25.6 0-127.043-103.357-230.4-230.4-230.4-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6c155.275 0 281.6 126.325 281.6 281.6 0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M384 921.6c-98.811 0-179.2-80.389-179.2-179.2 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 70.579 57.421 128 128 128 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 1024c-155.275 0-281.6-126.325-281.6-281.6 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 127.043 103.357 230.4 230.4 230.4 14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smile.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smile.js
new file mode 100644
index 00000000..68c8f4a3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Smile.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Smile
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 183.506-149.294 332.8-332.8 332.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow.js
new file mode 100644
index 00000000..7d39377d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Snow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 512h-120.211l39.52-63.232c7.493-11.99 3.848-27.784-8.141-35.277-11.995-7.498-27.784-3.846-35.278 8.141l-42.29 67.666-81.811-130.898h94.611c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-96.23l67.142-115.101c7.123-12.213 2.998-27.888-9.214-35.011-12.21-7.123-27.886-3-35.011 9.213l-68.242 116.987-41.536-66.456c-7.494-11.987-23.285-15.635-35.278-8.141-11.989 7.493-15.634 23.286-8.141 35.277l39.52 63.232h-138.022l39.52-63.232c7.494-11.99 3.848-27.784-8.141-35.277-11.99-7.494-27.784-3.85-35.277 8.141l-41.536 66.458-68.243-116.989c-7.123-12.211-22.797-16.338-35.011-9.213-12.213 7.123-16.338 22.8-9.213 35.011l67.144 115.101h-96.23c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h94.611l-81.811 130.898-42.291-67.666c-7.493-11.99-23.286-15.634-35.277-8.141-11.989 7.493-15.634 23.286-8.141 35.277l39.52 63.232h-120.211c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h120.211l-39.52 63.232c-7.494 11.99-3.848 27.784 8.141 35.278 4.219 2.635 8.909 3.894 13.544 3.894 8.533 0 16.877-4.266 21.733-12.034l42.291-67.67 81.811 130.899h-94.611c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h96.23l-67.142 115.101c-7.125 12.213-3 27.888 9.213 35.011 4.056 2.366 8.496 3.493 12.875 3.493 8.806 0 17.379-4.55 22.136-12.706l68.243-116.987 41.536 66.458c4.856 7.77 13.198 12.034 21.733 12.034 4.634 0 9.325-1.258 13.544-3.894 11.989-7.494 15.634-23.288 8.141-35.278l-39.52-63.232h138.022l-39.52 63.232c-7.493 11.99-3.848 27.784 8.141 35.278 4.221 2.635 8.91 3.894 13.544 3.894 8.534 0 16.878-4.266 21.734-12.034l41.536-66.458 68.242 116.987c4.758 8.158 13.328 12.706 22.136 12.706 4.379 0 8.821-1.126 12.875-3.493 12.213-7.123 16.338-22.798 9.214-35.011l-67.144-115.101h96.23c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-94.611l81.811-130.898 42.291 67.666c4.858 7.77 13.198 12.034 21.734 12.034 4.634 0 9.325-1.258 13.544-3.894 11.989-7.494 15.634-23.288 8.141-35.278l-39.52-63.232h120.21c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.597-25.6-25.597zM587.411 716.8h-202.022l-112-179.2 112-179.2h202.022l112 179.2-112 179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow2.js
new file mode 100644
index 00000000..4bbd609b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Snow2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Snow2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512h-91.795l58.698-58.698c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-94.902 94.902h-234.794l153.6-153.6h142.997c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-91.797l84.299-84.298c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-84.299 84.299v-91.797c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v142.997l-153.6 153.6v-234.792l94.901-94.902c9.998-9.998 9.998-26.206 0-36.205-9.997-9.997-26.206-9.997-36.203 0l-58.698 58.699v-91.797c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v91.797l-58.698-58.699c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l94.902 94.902v234.792l-153.6-153.6v-142.997c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v91.795l-84.298-84.298c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l84.298 84.298h-91.795c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h142.995l153.6 153.6h-234.792l-94.901-94.902c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l58.699 58.698h-91.797c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-58.699 58.699c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l94.901-94.901h234.792l-153.6 153.6h-142.995c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h91.797l-84.299 84.299c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l84.298-84.298v91.797c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-142.997l153.6-153.6v234.794l-94.902 94.901c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.698-58.696v91.795c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-91.795l58.699 58.698c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-94.901-94.901v-234.794l153.6 153.6v142.997c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-91.797l84.299 84.299c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-84.298-84.298h91.797c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-142.997l-153.6-153.6h234.794l94.901 94.901c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-58.696-58.698h91.795c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Soccer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Soccer.js
new file mode 100644
index 00000000..ba0e5b7a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Soccer.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Soccer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 204.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 51.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M486.392 1024.006c-3.166 0.002-6.381-0.59-9.501-1.837-13.128-5.25-19.512-20.149-14.261-33.277l96.131-240.326-141.664-141.664c-7.792-7.79-9.723-19.694-4.797-29.55l135.077-270.152h-155.627l-147.15 98.101c-11.765 7.842-27.658 4.662-35.501-7.101-7.842-11.765-4.664-27.658 7.101-35.501l153.6-102.4c4.205-2.803 9.146-4.299 14.2-4.299h204.8c8.872 0 17.112 4.594 21.776 12.141s5.090 16.971 1.12 24.907l-145.347 290.698 140.552 140.554c7.242 7.24 9.47 18.101 5.667 27.61l-102.4 256c-4.002 10.008-13.616 16.098-23.776 16.098z' />
+            <path d='M307.2 819.2h-230.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h217.6l69.12-92.16c8.483-11.312 24.528-13.605 35.84-5.12 11.31 8.483 13.603 24.528 5.12 35.838l-76.8 102.4c-4.835 6.448-12.422 10.242-20.48 10.242z' />
+            <path d='M896 512h-204.8c-9.698 0-18.562-5.478-22.898-14.152l-51.2-102.4c-6.323-12.645-1.197-28.022 11.448-34.346 12.648-6.32 28.026-1.197 34.346 11.45l44.126 88.248h188.978c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M819.2 1024c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM819.2 870.4c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Socks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Socks.js
new file mode 100644
index 00000000..ba28dd77
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Socks.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Socks
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M640 307.2c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 307.2c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 307.2c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896 0h-307.2c-42.349 0-76.8 34.453-76.8 76.8v256c0 18.23-15.069 41.8-31.616 49.451l-337.533 156.066c-0.218 0.099-0.434 0.205-0.65 0.31-42.038 20.893-77.547 52.941-102.686 92.677-25.851 40.864-39.515 88.133-39.515 136.696 0 141.16 114.842 256 256 256 39.893 0 78.128-8.938 113.65-26.565l496.37-238.776c59.878-28.803 106.781-103.414 106.781-169.859v-512c0-42.347-34.451-76.8-76.8-76.8zM51.2 768c0-58.253 24.133-112.070 65.374-150.182 109.429 19.008 190.626 114.685 190.626 226.982 0 45.914-13.298 89.792-38.546 127.613-4.194 0.251-8.411 0.387-12.654 0.387-112.928 0-204.8-91.874-204.8-204.8zM347.307 951.366c-0.099 0.048-0.198 0.098-0.296 0.146-3.882 1.93-7.81 3.717-11.771 5.386 15.248-35.053 23.16-72.973 23.16-112.098 0-120.053-75.96-224.563-184.53-264.418l328-151.659c34.39-15.899 61.33-58.035 61.33-95.923v-256c0-14.115 11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6v333.976c-143.322 12.978-256 133.779-256 280.424 0 34.104 5.966 67.136 17.726 98.525l-336.019 161.642zM843.824 712.518l-114.139 54.906c-8.558-24.35-12.885-49.891-12.885-76.224 0-118.389 89.762-216.194 204.8-228.97v126.57c0 46.782-35.618 103.438-77.776 123.718z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaAsc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaAsc.js
new file mode 100644
index 00000000..df03e4d7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaAsc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortAlphaAsc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M1021.93 373.915l-153.6-358.4c-4.032-9.413-13.29-15.515-23.53-15.515s-19.498 6.102-23.53 15.515l-153.6 358.4c-5.57 12.995 0.45 28.045 13.445 33.614 13 5.57 28.045-0.451 33.614-13.446l59.179-138.083h141.781l59.179 138.085c4.16 9.707 13.61 15.523 23.542 15.522 3.365 0 6.784-0.667 10.072-2.075 12.997-5.57 19.018-20.621 13.446-33.616zM795.851 204.8l48.949-114.211 48.949 114.211h-97.898z' />
+            <path d='M947.2 1024h-204.8c-9.125 0-17.562-4.858-22.142-12.75-4.579-7.894-4.613-17.629-0.085-25.552l182.914-320.098h-160.686c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c9.125 0 17.562 4.858 22.142 12.75 4.579 7.894 4.613 17.629 0.085 25.552l-182.914 320.098h160.686c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaDesc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaDesc.js
new file mode 100644
index 00000000..f0ce29e2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAlphaDesc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortAlphaDesc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M1021.93 988.315l-153.6-358.4c-4.032-9.413-13.29-15.515-23.53-15.515s-19.498 6.102-23.53 15.515l-153.6 358.4c-5.57 12.995 0.45 28.045 13.445 33.614 13 5.568 28.045-0.451 33.614-13.445l59.179-138.085h141.781l59.179 138.085c4.16 9.707 13.61 15.523 23.542 15.522 3.365 0 6.784-0.667 10.072-2.077 12.997-5.568 19.018-20.619 13.446-33.614zM795.851 819.2l48.949-114.213 48.949 114.213h-97.898z' />
+            <path d='M947.2 409.6h-204.8c-9.125 0-17.562-4.858-22.142-12.75-4.579-7.893-4.613-17.627-0.085-25.55l182.914-320.099h-160.686c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h204.8c9.125 0 17.562 4.858 22.142 12.75 4.579 7.893 4.613 17.627 0.085 25.55l-182.914 320.099h160.686c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountAsc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountAsc.js
new file mode 100644
index 00000000..8cdbe6f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountAsc.js
@@ -0,0 +1,16 @@
+// Icon: Linear.SortAmountAsc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M691.2 256h-102.4c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6zM614.4 204.8h51.2v-51.2h-51.2v51.2z' />
+            <path d='M793.6 460.8h-204.8c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6zM614.4 409.6h153.6v-51.2h-153.6v51.2z' />
+            <path d='M896 665.6h-307.2c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM614.4 614.4h256v-51.2h-256v51.2z' />
+            <path d='M998.4 870.4h-409.6c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM614.4 819.2h358.4v-51.2h-358.4v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountDesc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountDesc.js
new file mode 100644
index 00000000..2378c1aa
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortAmountDesc.js
@@ -0,0 +1,16 @@
+// Icon: Linear.SortAmountDesc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M691.2 870.4h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM614.4 819.2h51.2v-51.2h-51.2v51.2z' />
+            <path d='M793.6 665.6h-204.8c-14.139 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM614.4 614.4h153.6v-51.2h-153.6v51.2z' />
+            <path d='M896 460.8h-307.2c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6zM614.4 409.6h256v-51.2h-256v51.2z' />
+            <path d='M998.4 256h-409.6c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6zM614.4 204.8h358.4v-51.2h-358.4v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericAsc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericAsc.js
new file mode 100644
index 00000000..f10aef6f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericAsc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortNumericAsc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M896 1024h-102.4c-75.926 0-120.998-58.931-122.88-61.44-8.483-11.31-6.19-27.357 5.12-35.838 11.312-8.485 27.357-6.189 35.838 5.12 0.23 0.296 32.045 40.96 81.92 40.96h102.4c42.347 0 76.8-34.453 76.8-76.8v-25.6h-179.198c-70.579 0-128-57.421-128-128s57.421-128 128-128h102.4c70.579 0 128 57.421 128 128v153.6c0 70.578-57.421 127.998-128 127.998zM793.6 665.6c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8h179.2v-76.8c0-42.347-34.453-76.8-76.8-76.8h-102.4z' />
+            <path d='M896 0h-102.4c-70.579 0-128 57.421-128 128v153.6c0 70.579 57.421 128 128 128h102.4c70.579 0 128-57.421 128-128v-153.6c0-70.579-57.421-128-128-128zM716.8 128c0-42.347 34.453-76.8 76.8-76.8h102.4c13.842 0 26.829 3.699 38.054 10.133l-212.216 247.586c-3.245-8.493-5.038-17.698-5.038-27.318v-153.6zM972.8 281.6c0 42.347-34.453 76.8-76.8 76.8h-102.4c-13.84 0-26.827-3.699-38.053-10.133l212.216-247.584c3.243 8.493 5.037 17.698 5.037 27.317v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericDesc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericDesc.js
new file mode 100644
index 00000000..b1189e72
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortNumericDesc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortNumericDesc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M896 409.6h-102.4c-75.926 0-120.998-58.931-122.88-61.44-8.483-11.31-6.19-27.357 5.12-35.84 11.312-8.486 27.357-6.19 35.838 5.12 0.23 0.296 32.045 40.96 81.92 40.96h102.4c42.347 0 76.8-34.453 76.8-76.8v-25.6h-179.198c-70.579 0-128-57.421-128-128s57.421-128 128-128h102.4c70.579 0 128 57.421 128 128v153.6c0 70.579-57.421 128-128 128zM793.6 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8h179.2v-76.8c0-42.347-34.453-76.8-76.8-76.8h-102.4z' />
+            <path d='M896 614.4h-102.4c-70.579 0-128 57.421-128 128v153.6c0 70.579 57.421 128 128 128h102.4c70.579 0 128-57.421 128-128v-153.6c0-70.579-57.421-128-128-128zM716.8 742.4c0-42.347 34.453-76.8 76.8-76.8h102.4c13.84 0 26.827 3.699 38.054 10.134l-212.216 247.584c-3.245-8.493-5.038-17.698-5.038-27.318v-153.6zM972.8 896c0 42.347-34.453 76.8-76.8 76.8h-102.4c-13.84 0-26.826-3.699-38.051-10.133l212.214-247.582c3.243 8.491 5.037 17.696 5.037 27.315v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeAsc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeAsc.js
new file mode 100644
index 00000000..ef9a35f0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeAsc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortTimeAsc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M844.779 768.006c-3.846 0-7.754-0.872-11.429-2.709l-102.4-51.2c-10.621-5.309-16.194-17.224-13.467-28.778 2.73-11.557 13.043-19.72 24.917-19.72 127.042 0 230.4-103.358 230.4-230.4 0-127.043-103.358-230.4-230.4-230.4s-230.4 103.357-230.4 230.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-155.275 126.325-281.6 281.6-281.6s281.6 126.325 281.6 281.6c0 126.294-83.558 233.432-198.302 269.027l30.552 15.277c12.646 6.322 17.771 21.699 11.448 34.346-4.485 8.97-13.528 14.155-22.918 14.157z' />
+            <path d='M742.392 512c-3.886 0-7.803-0.885-11.44-2.702l-102.4-51.2c-12.645-6.323-17.771-21.701-11.448-34.346 6.322-12.645 21.699-17.771 34.346-11.45l85.898 42.949 89.354-89.354c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-102.4 102.4c-4.918 4.915-11.47 7.498-18.112 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeDesc.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeDesc.js
new file mode 100644
index 00000000..5b5cf20c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SortTimeDesc.js
@@ -0,0 +1,14 @@
+// Icon: Linear.SortTimeDesc
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M453.301 749.899c-9.997-9.997-26.206-9.997-36.203 0l-161.098 161.098v-885.397c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v885.397l-161.099-161.098c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l204.8-204.8c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M640.021 768.006c-9.392 0-18.434-5.186-22.917-14.158-6.323-12.645-1.198-28.024 11.448-34.346l30.552-15.277c-114.746-35.594-198.304-142.731-198.304-269.026 0-155.275 126.325-281.6 281.6-281.6s281.6 126.325 281.6 281.6c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-127.043-103.358-230.4-230.4-230.4s-230.4 103.357-230.4 230.4c0 127.042 103.358 230.4 230.4 230.4 11.874 0 22.187 8.163 24.915 19.718 2.726 11.555-2.846 23.469-13.467 28.778l-102.4 51.2c-3.675 1.838-7.581 2.709-11.427 2.71z' />
+            <path d='M742.392 512c-3.886 0-7.803-0.885-11.44-2.702l-102.4-51.2c-12.645-6.323-17.771-21.701-11.448-34.346 6.322-12.645 21.699-17.771 34.346-11.45l85.898 42.949 89.354-89.354c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-102.4 102.4c-4.918 4.915-11.47 7.498-18.112 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spades.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spades.js
new file mode 100644
index 00000000..1b29fd45
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spades.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Spades
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 1024h-409.6c-11.872 0-22.187-8.163-24.915-19.718s2.846-23.469 13.467-28.778c57.198-28.6 97.997-73.306 121.261-132.878 1.875-4.802 3.558-9.518 5.067-14.11-41.203 27.096-89.76 41.885-140.48 41.885-141.158 0-256-114.84-256-256 0-71.286 26.76-135.237 81.81-195.51 46.866-51.314 108.36-93.976 167.83-135.235 108.59-75.339 211.16-146.501 211.16-258.054 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 111.554 102.568 182.715 211.162 258.054 59.47 41.259 120.965 83.922 167.83 135.235 55.048 60.274 81.808 124.224 81.808 195.51 0 141.16-114.84 256-256 256-50.72 0-99.277-14.787-140.48-41.885 1.509 4.592 3.192 9.309 5.067 14.11 23.264 59.57 64.062 104.277 121.261 132.877 10.619 5.309 16.194 17.224 13.467 28.778-2.728 11.557-13.042 19.72-24.915 19.72zM363.566 972.8h245.667c-33.501-30.933-59.379-69.291-76.349-113.645-20.654-53.992-20.894-98.088-20.894-99.938 0-10.846 6.834-20.515 17.059-24.134 10.226-3.622 21.621-0.403 28.442 8.032 39.123 48.352 97.189 76.085 159.309 76.085 112.926 0 204.8-91.874 204.8-204.8 0-130.757-110.566-207.467-227.626-288.678-82.261-57.072-166.538-115.547-207.574-195.141-41.037 79.594-125.314 138.067-207.576 195.139-117.058 81.213-227.624 157.923-227.624 288.68 0 112.926 91.872 204.8 204.8 204.8 62.12 0 120.186-27.734 159.309-76.090 6.821-8.434 18.214-11.653 28.443-8.032 10.226 3.619 17.059 13.288 17.059 24.134 0 1.851-0.24 45.947-20.896 99.939-16.968 44.357-42.848 82.714-76.349 113.648z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedFast.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedFast.js
new file mode 100644
index 00000000..99138b6f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedFast.js
@@ -0,0 +1,13 @@
+// Icon: Linear.SpeedFast
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 768c-20.514 0-39.8-7.987-54.306-22.494-29.944-29.946-29.944-78.667 0-108.613 20.6-20.598 217.693-156.88 256.994-183.99 10.171-7.014 23.901-5.765 32.637 2.971s9.987 22.467 2.971 32.637c-27.11 39.301-163.392 236.395-183.992 256.994-14.504 14.507-33.79 22.496-54.304 22.496zM601.035 576.565c-68.845 48.374-124.701 88.589-132.742 96.538-9.976 9.978-9.976 26.219 0.005 36.202 4.834 4.834 11.264 7.498 18.101 7.498s13.267-2.662 18.101-7.498c7.949-8.040 48.162-63.894 96.536-132.739z' />
+            <path d='M830.336 296.064c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.014-142.464 343.936c0 96.728 28.33 190.176 81.925 270.246 4.752 7.099 12.731 11.36 21.274 11.36l766.402-0.002c8.542 0 16.522-4.261 21.274-11.36 53.597-80.067 81.926-173.515 81.926-270.245 0-129.922-50.594-252.067-142.464-343.936zM855.678 870.405l-738.558 0.002c-38.661-61.818-60.93-131.928-65.163-204.806h24.843c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.827c12.805-219.624 189.203-396.022 408.827-408.827v24.827c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-24.827c219.626 12.805 396.022 189.203 408.827 408.827h-24.827c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.843c-4.234 72.878-26.504 142.99-65.165 204.805z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedMedium.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedMedium.js
new file mode 100644
index 00000000..957fe1b6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedMedium.js
@@ -0,0 +1,13 @@
+// Icon: Linear.SpeedMedium
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 768c-42.347 0-76.8-34.453-76.8-76.8 0-29.131 43-264.862 51.621-311.822 2.23-12.152 12.824-20.978 25.179-20.978s22.949 8.826 25.179 20.978c8.621 46.96 51.621 282.691 51.621 311.822 0 42.347-34.453 76.8-76.8 76.8zM486.4 529.080c-14.472 82.878-25.534 150.821-25.6 162.126 0 14.109 11.485 25.594 25.6 25.594s25.6-11.485 25.6-25.6c-0.066-11.302-11.128-79.243-25.6-162.12z' />
+            <path d='M830.336 296.064c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.014-142.464 343.936c0 96.728 28.33 190.176 81.925 270.246 4.752 7.099 12.731 11.36 21.274 11.36l766.402-0.002c8.542 0 16.522-4.261 21.274-11.36 53.597-80.067 81.926-173.515 81.926-270.245 0-129.922-50.594-252.067-142.464-343.936zM855.678 870.405l-738.558 0.002c-38.661-61.818-60.93-131.928-65.163-204.806h24.843c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.827c12.805-219.624 189.203-396.022 408.827-408.827v24.827c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-24.827c219.626 12.805 396.022 189.203 408.827 408.827h-24.827c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.843c-4.234 72.878-26.504 142.99-65.165 204.805z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedSlow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedSlow.js
new file mode 100644
index 00000000..82acbbb3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpeedSlow.js
@@ -0,0 +1,13 @@
+// Icon: Linear.SpeedSlow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 768c-20.514 0-39.8-7.989-54.306-22.496-20.598-20.598-156.88-217.691-183.99-256.992-7.016-10.17-5.766-23.901 2.971-32.637 8.736-8.738 22.467-9.986 32.637-2.971 39.301 27.11 236.395 163.392 256.994 183.992 14.506 14.504 22.494 33.79 22.494 54.304s-7.989 39.8-22.494 54.304c-14.504 14.507-33.792 22.496-54.306 22.496zM371.765 576.565c48.368 68.835 88.589 124.701 96.538 132.742 4.832 4.83 11.261 7.494 18.099 7.494s13.267-2.664 18.102-7.499c9.981-9.981 9.981-26.222 0-36.203-8.040-7.947-63.894-48.16-132.739-96.534z' />
+            <path d='M830.336 296.064c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.014-142.464 343.936c0 96.728 28.33 190.176 81.925 270.246 4.752 7.099 12.731 11.36 21.274 11.36l766.402-0.002c8.542 0 16.522-4.261 21.274-11.36 53.597-80.067 81.926-173.515 81.926-270.245 0-129.922-50.594-252.067-142.464-343.936zM855.678 870.405l-738.558 0.002c-38.661-61.818-60.93-131.928-65.163-204.806h24.843c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.827c12.805-219.624 189.203-396.022 408.827-408.827v24.827c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-24.827c219.626 12.805 396.022 189.203 408.827 408.827h-24.827c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.843c-4.234 72.878-26.504 142.99-65.165 204.805z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpellCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpellCheck.js
new file mode 100644
index 00000000..15b41cb2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SpellCheck.js
@@ -0,0 +1,15 @@
+// Icon: Linear.SpellCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M230.4 716.8c-14.138 0-25.6 11.461-25.6 25.6v0.070c-21.408-16.107-48.006-25.67-76.8-25.67-70.579 0-128 57.421-128 128s57.421 128 128 128c28.794 0 55.392-9.563 76.8-25.67v0.070c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6zM128 921.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8z' />
+            <path d='M435.2 716.8c-28.794 0-55.392 9.563-76.8 25.67v-204.87c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v409.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-0.070c21.408 16.107 48.006 25.67 76.8 25.67 70.579 0 128-57.421 128-128s-57.421-128-128-128zM435.2 921.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8z' />
+            <path d='M742.4 972.8c-70.579 0-128-57.421-128-128s57.421-128 128-128c22.496 0 44.632 5.925 64.014 17.136 12.238 7.080 16.422 22.739 9.344 34.978-7.082 12.24-22.744 16.421-34.978 9.344-11.603-6.71-24.875-10.258-38.381-10.258-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c13.509 0 26.782-3.547 38.382-10.258 12.235-7.078 27.898-2.899 34.978 9.341 7.080 12.237 2.899 27.899-9.341 34.978-19.382 11.213-41.52 17.139-64.019 17.139z' />
+            <path d='M588.8 537.6c-6.552 0-13.102-2.499-18.101-7.499l-153.6-153.6c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l135.496 135.499 340.299-340.298c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-358.4 358.4c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spotlights.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spotlights.js
new file mode 100644
index 00000000..11a8532c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spotlights.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Spotlights
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1002.546 771.365l-313.931-368.054 129.15-369.259c4.026-11.504-0.621-24.25-11.101-30.469-10.482-6.218-23.896-4.186-32.062 4.861l-217.414 240.782-204.91-240.238c-8.094-9.488-21.846-11.765-32.563-5.389-10.718 6.374-15.283 19.544-10.81 31.186l131.928 343.304-417.379 462.266c-15.366 16.832-23.453 35.68-23.453 55.646 0 38.082 29.365 72.102 82.685 95.802 46.718 20.765 108.27 32.198 173.315 32.198s126.597-11.434 173.315-32.198c42.789-19.018 70.133-44.688 79.272-73.765l66.584-190.373 41.944 109.146c5.646 18.315 21.973 41.662 65.29 60.227 36.96 15.84 85.541 24.563 136.795 24.563s99.835-8.723 136.797-24.565c59.17-25.357 68.003-59.651 68.003-77.835 0-11.571-3.602-29.67-21.454-47.835zM727.525 136.976l-77.378 221.234-59.45-69.699 136.827-151.534zM630.578 414.163l-57.669 164.882-73.006-189.979 56.19-62.23 74.485 87.328zM410.304 155.914l112.278 131.635-43.275 47.926-69.003-179.562zM408.52 945.014c-40.315 17.918-94.482 27.786-152.52 27.786s-112.205-9.867-152.52-27.786c-32.246-14.331-52.28-33.114-52.28-49.014s20.034-34.683 52.28-49.014c40.315-17.918 94.482-27.786 152.52-27.786s112.205 9.867 152.52 27.786c32.246 14.331 52.28 33.114 52.28 49.014s-20.034 34.683-52.28 49.014zM483.374 835.037c-13.539-13.122-31.68-24.893-54.061-34.838-46.717-20.765-108.269-32.198-173.314-32.198-38.162 0-75.091 3.965-108.558 11.411l313.984-347.733 85.349 222.093-63.4 181.266zM669.045 459.262l225.304 264.147c-23.566-4.326-49.003-6.61-75.149-6.61-51.254 0-99.835 8.723-136.797 24.565-16.381 7.021-28.891 14.726-38.435 22.586l-42.661-111.011 67.738-193.677zM819.2 870.4c-95.285 0-153.6-33.15-153.6-51.2s58.315-51.2 153.6-51.2 153.6 33.15 153.6 51.2-58.315 51.2-153.6 51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spray.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spray.js
new file mode 100644
index 00000000..a1245ac2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Spray.js
@@ -0,0 +1,22 @@
+// Icon: Linear.Spray
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M560.64 413.136c-6.454-27.525-25.002-52.426-53.829-71.643-26.946-17.965-60.786-29.371-97.211-33.021v-52.472h25.6c14.138 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h25.6v52.472c-36.426 3.648-70.266 15.056-97.211 33.021-28.827 19.218-47.374 44.12-53.829 71.643-31.125 9.81-53.76 38.941-53.76 73.264v460.8c0 42.347 34.453 76.8 76.8 76.8h307.2c42.347 0 76.8-34.453 76.8-76.8v-460.8c0-34.323-22.635-63.454-53.76-73.264zM358.4 153.6h51.2v51.2h-51.2v-51.2zM384 358.4c54.506 0 102.352 21.709 120.37 51.2h-240.739c18.018-29.491 65.864-51.2 120.37-51.2zM537.6 972.8h-307.2c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h307.2c14.115 0 25.6 11.485 25.6 25.6v76.8h-128c-14.138 0-25.6 11.461-25.6 25.6v256c0 14.139 11.462 25.6 25.6 25.6h128v76.8c0 14.115-11.485 25.6-25.6 25.6zM563.2 614.4v204.8h-102.4v-204.8h102.4z' />
+            <path d='M537.6 204.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 153.6c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 102.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 204.8c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M640 256c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M742.4 307.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 153.6c-6.736 0-13.328-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.77-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 51.2c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 256c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.768-7.502-11.36-7.502-18.096s2.736-13.328 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M844.8 358.4c-6.736 0-13.344-2.736-18.098-7.504-4.766-4.752-7.502-11.36-7.502-18.096s2.736-13.344 7.502-18.096c4.754-4.768 11.362-7.504 18.098-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Square.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Square.js
new file mode 100644
index 00000000..bb599a5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Square.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Square
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-819.2c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v819.2c0 42.349-34.451 76.8-76.8 76.8zM76.8 102.4c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-819.2c0-14.115-11.485-25.6-25.6-25.6h-819.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stamp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stamp.js
new file mode 100644
index 00000000..152e52c3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stamp.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Stamp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-819.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 716.8h-230.4c-27.754 0-51.2-35.17-51.2-76.8v-257.893c61.166-35.464 102.4-101.659 102.4-177.307 0-112.928-91.874-204.8-204.8-204.8-112.928 0-204.8 91.872-204.8 204.8 0 75.65 41.232 141.845 102.4 177.307v257.893c0 41.63-23.446 76.8-51.2 76.8h-281.6c-42.347 0-76.8 34.451-76.8 76.8v51.2c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-51.2c0-42.349-34.451-76.8-76.8-76.8zM358.4 204.8c0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6zM460.8 640v-236.88c16.37 4.229 33.528 6.48 51.2 6.48 17.674 0 34.83-2.251 51.2-6.48v236.88c0 28.794 7.65 55.392 20.536 76.8h-143.472c12.886-21.408 20.536-48.006 20.536-76.8zM921.6 844.8c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v51.2z' />
+            <path d='M435.2 204.806c-2.832 0-5.709-0.474-8.531-1.47-13.331-4.712-20.317-19.338-15.605-32.667 10.27-29.059 37.741-56.53 66.803-66.805 13.334-4.714 27.957 2.274 32.669 15.602 4.712 13.331-2.272 27.957-15.602 32.669-14.502 5.128-30.472 21.096-35.597 35.595-3.715 10.51-13.592 17.077-24.138 17.077z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Star.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Star.js
new file mode 100644
index 00000000..b420fd43
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Star.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Star
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.598 972.8c-4.205 0-8.422-1.034-12.258-3.126l-269.341-146.912-269.341 146.912c-8.598 4.691-19.118 4.061-27.098-1.613-7.981-5.677-12.022-15.41-10.413-25.069l49.034-294.206-195.483-195.485c-6.781-6.781-9.203-16.782-6.277-25.914s10.712-15.862 20.17-17.438l294.341-49.058 122.17-244.339c4.336-8.674 13.2-14.152 22.898-14.152s18.562 5.478 22.898 14.152l122.17 244.339 294.341 49.058c9.459 1.576 17.243 8.307 20.17 17.438s0.504 19.133-6.277 25.914l-195.483 195.485 49.034 294.206c1.61 9.659-2.434 19.392-10.413 25.069-4.419 3.144-9.621 4.739-14.84 4.739zM512 768c4.219 0 8.437 1.042 12.259 3.126l235.445 128.426-42.557-255.344c-1.36-8.155 1.302-16.464 7.15-22.309l169.626-169.626-258.131-43.022c-8.080-1.346-15.027-6.477-18.69-13.803l-105.102-210.205-105.102 210.205c-3.664 7.326-10.61 12.458-18.69 13.803l-258.131 43.022 169.624 169.626c5.846 5.845 8.509 14.155 7.15 22.309l-42.557 255.344 235.446-128.426c3.821-2.085 8.040-3.126 12.259-3.126z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarEmpty.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarEmpty.js
new file mode 100644
index 00000000..a51ad2bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarEmpty.js
@@ -0,0 +1,21 @@
+// Icon: Linear.StarEmpty
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.57 426.67c-12.29 0-23.134-8.874-25.221-21.395-2.325-13.946 7.098-27.136 21.043-29.461l89.541-14.923 19.77-39.539c6.323-12.646 21.701-17.773 34.346-11.45 12.646 6.323 17.771 21.701 11.45 34.346l-25.6 51.2c-3.664 7.326-10.61 12.458-18.69 13.803l-102.4 17.067c-1.424 0.237-2.842 0.352-4.238 0.352z' />
+            <path d='M128 512c-6.552 0-13.102-2.499-18.101-7.499l-51.2-51.2c-6.781-6.781-9.203-16.782-6.277-25.914s10.71-15.862 20.17-17.438l102.4-17.067c13.957-2.326 27.136 7.099 29.461 21.043 2.325 13.946-7.098 27.136-21.043 29.461l-53.331 8.89 16.024 16.026c9.998 9.997 9.998 26.206 0 36.203-5 4.997-11.55 7.496-18.102 7.496z' />
+            <path d='M759.434 768.005c-12.29 0-23.134-8.875-25.221-21.397l-17.066-102.4c-1.36-8.155 1.302-16.464 7.15-22.309l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-41.885 41.885 14.899 89.406c2.325 13.946-7.098 27.136-21.043 29.459-1.422 0.237-2.838 0.352-4.238 0.352z' />
+            <path d='M793.598 972.8c-4.205 0-8.422-1.034-12.256-3.126l-153.606-83.784c-12.413-6.768-16.986-22.32-10.216-34.731 6.766-12.414 22.32-16.99 34.731-10.216l107.453 58.61-8.424-50.542c-2.325-13.947 7.098-27.136 21.042-29.461 13.955-2.322 27.136 7.096 29.461 21.042l17.067 102.4c1.61 9.661-2.434 19.394-10.413 25.070-4.418 3.144-9.619 4.739-14.838 4.739z' />
+            <path d='M273.098 716.805c-1.398 0-2.814-0.115-4.238-0.354-13.946-2.325-23.366-15.514-21.043-29.461l6.368-38.205-41.885-41.885c-9.998-9.997-9.998-26.206 0-36.203s26.206-9.997 36.203 0l51.2 51.2c5.846 5.845 8.509 14.155 7.15 22.31l-8.533 51.2c-2.088 12.522-12.934 21.397-25.222 21.397z' />
+            <path d='M230.402 972.8c-5.221 0-10.421-1.595-14.842-4.739-7.981-5.677-12.022-15.41-10.413-25.069l25.6-153.598c2.325-13.947 15.514-23.368 29.461-21.043 13.946 2.323 23.366 15.514 21.043 29.459l-16.957 101.742 56.246-30.68c12.41-6.771 27.963-2.197 34.733 10.214 6.77 12.413 2.197 27.963-10.216 34.733l-102.4 55.854c-3.834 2.093-8.051 3.126-12.256 3.126z' />
+            <path d='M435.222 861.096c-9.067 0-17.85-4.827-22.498-13.347-6.77-12.411-2.197-27.963 10.216-34.731l76.8-41.891c7.64-4.168 16.875-4.168 24.517 0l25.595 13.962c12.413 6.768 16.986 22.32 10.216 34.731-6.766 12.414-22.32 16.99-34.731 10.216l-13.338-7.274-64.541 35.203c-3.893 2.123-8.094 3.131-12.237 3.131z' />
+            <path d='M896 512c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l16.024-16.026-104.53-17.422c-13.947-2.325-23.368-15.514-21.043-29.461s15.533-23.368 29.459-21.043l153.6 25.6c9.459 1.576 17.243 8.307 20.17 17.438s0.504 19.133-6.277 25.914l-51.2 51.2c-5 5.003-11.55 7.502-18.102 7.502z' />
+            <path d='M691.234 418.138c-1.398 0-2.816-0.115-4.24-0.352l-51.202-8.533c-8.078-1.346-15.026-6.477-18.688-13.802l-51.2-102.395c-6.323-12.646-1.198-28.024 11.448-34.346 12.643-6.323 28.024-1.197 34.346 11.448l45.37 90.736 38.344 6.39c13.946 2.325 23.366 15.514 21.042 29.461-2.086 12.518-12.933 21.392-25.219 21.392z' />
+            <path d='M460.779 256.005c-3.846 0-7.754-0.87-11.429-2.707-12.646-6.323-17.771-21.701-11.45-34.346l51.2-102.4c4.338-8.674 13.203-14.152 22.899-14.152 0 0 0 0 0 0 9.698 0 18.562 5.478 22.898 14.152l25.598 51.2c6.323 12.646 1.197 28.024-11.448 34.346-12.646 6.325-28.024 1.198-34.346-11.45l-2.702-5.403-28.301 56.603c-4.486 8.971-13.53 14.157-22.92 14.157z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarHalf.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarHalf.js
new file mode 100644
index 00000000..9a121580
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StarHalf.js
@@ -0,0 +1,16 @@
+// Icon: Linear.StarHalf
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.598 972.8c-4.205 0-8.422-1.034-12.256-3.126l-153.595-83.778c-12.413-6.768-16.986-22.32-10.218-34.731 6.77-12.414 22.322-16.992 34.733-10.216l107.442 58.603-8.424-50.542c-2.325-13.947 7.098-27.136 21.042-29.461 13.941-2.33 27.136 7.096 29.461 21.042l17.067 102.4c1.611 9.661-2.434 19.394-10.413 25.070-4.418 3.144-9.619 4.739-14.838 4.739z' />
+            <path d='M759.434 768.005c-12.29 0-23.134-8.875-25.221-21.397l-17.066-102.4c-1.36-8.155 1.302-16.464 7.15-22.309l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-41.885 41.885 14.899 89.406c2.325 13.946-7.098 27.136-21.043 29.459-1.422 0.237-2.838 0.35-4.238 0.352z' />
+            <path d='M896 512c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l16.024-16.026-104.53-17.422c-13.947-2.325-23.368-15.514-21.043-29.461s15.533-23.368 29.459-21.043l153.6 25.6c9.459 1.576 17.243 8.307 20.17 17.438s0.504 19.133-6.277 25.914l-51.2 51.2c-5 5.003-11.55 7.502-18.102 7.502z' />
+            <path d='M691.232 418.136c-1.398 0-2.814-0.115-4.238-0.352l-51.2-8.533c-8.080-1.346-15.027-6.477-18.69-13.802l-51.2-102.395c-6.323-12.646-1.198-28.024 11.448-34.346 12.643-6.323 28.024-1.197 34.346 11.448l45.37 90.736 38.341 6.39c13.947 2.325 23.368 15.514 21.043 29.461-2.085 12.518-12.933 21.392-25.219 21.392z' />
+            <path d='M230.402 972.8c-5.221 0-10.421-1.595-14.842-4.739-7.981-5.677-12.022-15.41-10.413-25.069l49.034-294.206-195.482-195.485c-6.781-6.781-9.203-16.782-6.277-25.914s10.71-15.862 20.17-17.438l294.341-49.058 122.17-244.339c4.336-8.674 13.202-14.152 22.898-14.152 0 0 0 0 0 0 9.698 0 18.562 5.478 22.898 14.152l25.6 51.2c6.322 12.646 1.195 28.024-11.45 34.346-12.646 6.325-28.024 1.198-34.347-11.45l-2.701-5.403-105.101 210.203c-3.664 7.326-10.61 12.458-18.69 13.803l-258.133 43.022 169.626 169.626c5.846 5.845 8.509 14.155 7.149 22.309l-42.557 255.344 235.446-128.426c7.642-4.17 16.875-4.166 24.518 0l25.603 13.966c12.411 6.77 16.984 22.32 10.214 34.733-6.77 12.411-22.318 16.984-34.733 10.214l-13.344-7.278-269.341 146.912c-3.835 2.093-8.053 3.126-12.258 3.126z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Steak.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Steak.js
new file mode 100644
index 00000000..f4e1336a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Steak.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Steak
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M965.766 232.925c-24.738-39.958-56.73-71.304-95.093-93.166-43.496-24.789-95.267-37.358-153.874-37.358-127.973 0-208.718 55.963-273.598 100.931-42.456 29.426-75.99 52.669-110.402 52.669-33.062 0-57.683-1.874-79.405-3.526-16.733-1.274-31.184-2.373-46.061-2.373-29.293 0-55.44 4.55-87.43 15.213-76.2 25.4-119.904 96.653-119.904 195.486v128c0 22.566 4.23 58.578 24.381 101.979 18.923 40.757 47.056 77.542 83.621 109.338 42.72 37.149 95.893 66.29 158.040 86.614 70.746 23.138 153.498 34.869 245.958 34.869 178.213 0 313.971-37.501 403.504-111.464 94.4-77.982 108.496-172.147 108.496-221.336v-128c0-49.971-7.566-146.027-58.234-227.875zM136.096 313.886c26.818-8.939 47.458-12.586 71.238-12.586 12.931 0 26.483 1.032 42.176 2.226 21.512 1.637 48.283 3.674 83.29 3.674 50.419 0 93.723-30.013 139.568-61.789 62.091-43.035 132.467-91.811 244.432-91.811 237.539 0 256 235.134 256 307.2 0 76.971-44.899 256-460.8 256-161.934 0-290.37-33.528-371.422-96.962-82.933-64.901-89.378-138.139-89.378-159.038 0-44.299 11.029-122.291 84.896-146.914zM512 870.4c-160.376 0-288.459-37.662-370.402-108.917-60.093-52.254-85.299-113.68-89.682-158.595 15.814 20.718 34.888 39.886 57.106 57.274 42.453 33.224 95.565 59.208 157.862 77.232 70.203 20.307 152.672 30.606 245.115 30.606 179.213 0 314.605-32.909 402.416-97.813 22.181-16.395 41.162-34.774 56.832-54.923-15.014 127.861-141.454 255.136-459.248 255.136z' />
+            <path d='M921.373 431.802c-1.299-9.691-8.002-17.797-17.278-20.888-23.397-7.8-51.989-20.702-81.653-36.234 12.006-6.61 23.714-13.17 35.059-19.654 12.275-7.014 16.541-22.653 9.525-34.928-7.014-12.275-22.653-16.538-34.928-9.526-19.808 11.318-40.688 22.846-62.349 34.434-27.094-16.323-53.038-33.634-74.651-50.027 23.616-14.894 44.811-29.803 63.294-44.589 11.040-8.834 12.83-24.942 3.998-35.982-8.834-11.042-24.944-12.826-35.982-3.998-20.544 16.435-44.946 33.109-72.472 49.72-9.922-6.454-23.333-5.336-32.037 3.37-5.293 5.291-7.755 12.323-7.443 19.253-37.35 20.378-78.976 40.446-123.501 59.643-13.515-9.374-26.795-19.211-39.762-29.586-11.040-8.832-27.15-7.043-35.982 3.998-8.832 11.040-7.042 27.15 3.998 35.982 5.338 4.27 10.73 8.426 16.146 12.525-63.83 25.16-132.043 48.251-201.149 67.813-30.181-21.094-59.992-43.939-89.818-68.794-10.861-9.053-27.003-7.584-36.054 3.278-9.051 10.861-7.584 27.003 3.278 36.054 19.542 16.286 39.074 31.752 58.696 46.456-15.978 3.978-31.946 7.75-47.861 11.286-13.802 3.067-22.504 16.742-19.437 30.544 2.651 11.933 13.232 20.053 24.966 20.053 1.84 0 3.707-0.2 5.578-0.614 29.96-6.658 60.52-14.242 91.272-22.589 28.819 19.339 58.038 37.171 87.96 53.653-32.117 9.646-61.389 16.893-86.594 21.094-13.946 2.323-23.366 15.514-21.043 29.461 2.086 12.522 12.933 21.394 25.221 21.394 1.398 0 2.816-0.114 4.24-0.352 40.426-6.738 89.371-20.307 142.928-38.554 31.723 14.952 64.424 28.618 98.424 41.157-11.454 5.109-17.72 17.97-14.174 30.378 3.213 11.245 13.462 18.573 24.602 18.573 2.328 0 4.696-0.32 7.045-0.99 21.755-6.216 43.149-13.186 64.096-20.717 24.661 7.421 50.045 14.382 76.262 20.938 2.085 0.52 4.173 0.77 6.229 0.77 11.47 0 21.909-7.766 24.818-19.397 3.429-13.717-4.91-27.616-18.627-31.045-3.514-0.88-6.978-1.782-10.461-2.677 52.386-23.184 100.686-48.75 143.093-73.278 0.509 0.197 1.022 0.397 1.53 0.595 19.083 7.426 37.107 14.438 54.922 21.565 3.118 1.246 6.334 1.837 9.501 1.837 10.16 0 19.773-6.091 23.776-16.099 5.251-13.126-1.134-28.027-14.261-33.277-6.662-2.666-13.341-5.309-20.078-7.96 30.317-18.938 55.99-36.051 75.97-49.371 8.133-5.421 12.469-15.005 11.17-24.696zM647.922 322.909c19.557 15.958 43.47 32.978 69.248 49.557-30.422 15.522-61.856 30.946-93.643 45.931-27.181-13.070-54.21-27.24-80.664-42.843 38.006-17.238 73.176-34.866 105.059-52.645zM290.229 469.966c66.091-20.133 131.781-43.438 193.118-68.694 0.726-0.299 1.442-0.6 2.166-0.899 25.667 16.565 51.898 31.603 78.354 45.438-63.050 28.208-125.824 53.846-183.216 74.258-30.942-15.302-60.971-31.944-90.422-50.102zM556.046 589.859c-37.987-11.931-74.17-25.078-109.026-39.613 57.155-21.954 117.331-47.749 176.573-75.211 31.49 14.472 62.923 27.616 93.747 39.981-48.445 26.414-103.021 52.827-161.294 74.843zM774.282 482.477c-29.296-11.458-59.395-23.442-89.715-36.442 28.752-14.027 56.93-28.275 84.066-42.483 24.6 13.949 49.384 26.738 72.472 37.214-19.574 12.715-42.022 26.907-66.822 41.71z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StopCircle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StopCircle.js
new file mode 100644
index 00000000..78fb5470
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StopCircle.js
@@ -0,0 +1,13 @@
+// Icon: Linear.StopCircle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2z' />
+            <path d='M640 768h-307.2c-42.347 0-76.8-34.451-76.8-76.8v-307.2c0-42.347 34.453-76.8 76.8-76.8h307.2c42.349 0 76.8 34.453 76.8 76.8v307.2c0 42.349-34.451 76.8-76.8 76.8zM332.8 358.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h307.2c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-307.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store.js
new file mode 100644
index 00000000..05310a04
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store.js
@@ -0,0 +1,16 @@
+// Icon: Linear.Store
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 486.4v-51.2c0-3.974-0.925-7.894-2.702-11.448l-102.4-204.8c-4.336-8.674-13.2-14.152-22.898-14.152h-614.4c-9.698 0-18.562 5.478-22.898 14.152l-102.4 204.8c-1.778 3.554-2.702 7.474-2.702 11.448v51.2c0 41.786 20.131 78.955 51.2 102.33v332.87h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h819.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-25.598v-332.87c31.067-23.376 51.198-60.544 51.198-102.33zM588.8 563.2c-42.347 0-76.8-34.453-76.8-76.8v-25.6h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8zM102.4 486.4v-25.6h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8zM460.8 256v153.6h-146.413l38.4-153.6h108.013zM620.013 256l38.4 153.6h-146.413v-153.6h108.013zM307.2 460.8h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8v-25.6zM716.8 460.8h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8v-25.6zM854.578 409.6h-143.39l-38.4-153.6h104.99l76.8 153.6zM195.022 256h104.99l-38.4 153.6h-143.39l76.8-153.6zM153.6 611.826c8.274 1.686 16.835 2.574 25.6 2.574 41.827 0 79.029-20.168 102.4-51.29 23.371 31.122 60.573 51.29 102.4 51.29s79.029-20.168 102.4-51.29c18.474 24.598 45.589 42.354 76.8 48.714v309.776h-409.6v-309.774zM819.202 921.6h-204.802v-309.774c31.211-6.362 58.325-24.115 76.8-48.714 23.371 31.12 60.573 51.288 102.4 51.288 8.766 0 17.326-0.89 25.602-2.576v309.776z' />
+            <path d='M716.8 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M230.4 768c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l51.2-51.2c9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.997 26.206 0 36.203l-51.2 51.2c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M281.6 870.4c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M435.2 870.4c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l51.2-51.2c9.998-9.997 26.206-9.997 36.205 0s9.998 26.206 0 36.203l-51.2 51.2c-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store24.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store24.js
new file mode 100644
index 00000000..be4f4a6b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Store24.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Store24
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M921.6 486.4v-51.2c0-3.974-0.925-7.894-2.702-11.448l-102.4-204.8c-4.336-8.674-13.2-14.152-22.898-14.152h-307.2c-14.138 0-25.6 11.462-25.6 25.6v179.2h-146.411l17.648-70.592c3.429-13.717-4.91-27.614-18.627-31.045-13.714-3.427-27.614 4.91-31.045 18.627l-20.752 83.010h-143.39l32.675-65.352c6.323-12.645 1.197-28.022-11.45-34.346-12.645-6.323-28.024-1.197-34.346 11.45l-51.2 102.4c-1.778 3.554-2.702 7.474-2.702 11.448v51.2c0 41.786 20.131 78.955 51.2 102.33v332.87h-25.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h819.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-25.598v-332.87c31.067-23.376 51.198-60.544 51.198-102.33zM588.8 563.2c-42.347 0-76.8-34.453-76.8-76.8v-25.6h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8zM716.8 460.8h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8v-25.6zM854.578 409.6h-143.39l-38.4-153.6h104.99l76.8 153.6zM512 256h108.013l38.4 153.6h-146.413v-153.6zM460.8 486.4c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8v-25.6h153.6v25.6zM102.4 486.4v-25.6h153.6v25.6c0 42.347-34.453 76.8-76.8 76.8s-76.8-34.453-76.8-76.8zM153.6 611.826c8.274 1.686 16.835 2.574 25.6 2.574 41.827 0 79.029-20.168 102.4-51.29 23.371 31.122 60.573 51.29 102.4 51.29s79.029-20.168 102.4-51.29c18.474 24.598 45.589 42.354 76.8 48.714v309.776h-409.6v-309.774zM819.202 921.6h-204.802v-309.774c31.211-6.362 58.325-24.115 76.8-48.714 23.371 31.12 60.573 51.288 102.4 51.288 8.766 0 17.326-0.89 25.602-2.576v309.776z' />
+            <path d='M716.8 742.4c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M230.4 768c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l51.2-51.2c9.998-9.997 26.206-9.997 36.205 0 9.997 9.997 9.997 26.206 0 36.203l-51.2 51.2c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M281.6 870.4c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M435.2 870.4c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l51.2-51.2c9.998-9.997 26.206-9.997 36.205 0s9.998 26.206 0 36.203l-51.2 51.2c-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M179.2 256h-102.4c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6h-76.8v51.2h76.8c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 0c-14.138 0-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h76.8v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-204.8c0-14.138-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stream.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stream.js
new file mode 100644
index 00000000..3f3d26f1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Stream.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Stream
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 819.206h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-819.2c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.453 76.8 76.8v614.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M486.397 972.81c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM486.397 870.403c-14.118 0-25.603 11.486-25.603 25.603s11.485 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.485-25.603-25.603-25.603z' />
+            <path d='M309.925 817.576c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.056-20.446 75.144-31.253 115.931-31.253s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.872 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.779 8.086-13.31 12.582-22.066 12.582z' />
+            <path d='M773.467 706.966c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.475 11.314-24.522 13.618-35.837 5.144-11.317-8.475-13.619-24.52-5.144-35.837 35.021-46.758 80.95-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamAlert.js
new file mode 100644
index 00000000..ae3dac2c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamAlert.js
@@ -0,0 +1,18 @@
+// Icon: Linear.StreamAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 819.206h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-307.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h307.2c42.349 0 76.8 34.453 76.8 76.8v614.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M179.2 819.206h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h307.2c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6h-307.2c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.397 972.81c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM486.397 870.403c-14.118 0-25.603 11.486-25.603 25.603s11.485 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.485-25.603-25.603-25.603z' />
+            <path d='M309.925 817.576c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.056-20.446 75.144-31.253 115.931-31.253s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.872 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.779 8.086-13.31 12.582-22.066 12.582z' />
+            <path d='M773.467 706.966c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.475 11.314-24.522 13.618-35.837 5.144-11.317-8.475-13.619-24.52-5.144-35.837 35.021-46.758 80.95-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M486.397 255.994c-14.138 0-25.6-11.462-25.6-25.6v-153.587c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.587c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.402 409.6c-14.138 0-25.6-11.461-25.602-25.598l-0.003-51.206c0-14.138 11.461-25.6 25.598-25.602s25.6 11.461 25.602 25.598l0.003 51.206c0 14.138-11.461 25.602-25.598 25.602z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamCheck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamCheck.js
new file mode 100644
index 00000000..42b7645c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamCheck.js
@@ -0,0 +1,17 @@
+// Icon: Linear.StreamCheck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 819.206h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-460.806c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v460.806c0 42.349-34.453 76.8-76.8 76.8z' />
+            <path d='M179.2 819.206h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h716.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-716.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.397 972.81c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM486.397 870.403c-14.118 0-25.603 11.486-25.603 25.603s11.485 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.485-25.603-25.603-25.603z' />
+            <path d='M309.925 817.576c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.056-20.446 75.144-31.253 115.931-31.253s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.872 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.779 8.086-13.31 12.582-22.066 12.582z' />
+            <path d='M773.467 706.966c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.475 11.314-24.522 13.618-35.837 5.144-11.317-8.475-13.619-24.52-5.144-35.837 35.021-46.758 80.95-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M691.2 384c-6.552 0-13.102-2.499-18.101-7.498l-102.4-102.4c-9.998-9.998-9.998-26.206 0-36.205 9.997-9.997 26.206-9.997 36.203 0l84.298 84.299 237.899-237.899c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-256 256c-5 4.998-11.55 7.498-18.102 7.498z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamError.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamError.js
new file mode 100644
index 00000000..a5e9661d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/StreamError.js
@@ -0,0 +1,17 @@
+// Icon: Linear.StreamError
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 819.206h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M179.2 819.206h-102.4c-42.347 0-76.8-34.451-76.8-76.8v-614.4c0-42.347 34.453-76.8 76.8-76.8h460.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-460.8c-14.115 0-25.6 11.485-25.6 25.6v614.4c0 14.115 11.485 25.6 25.6 25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.397 972.81c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM486.397 870.403c-14.118 0-25.603 11.486-25.603 25.603s11.485 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.485-25.603-25.603-25.603z' />
+            <path d='M309.925 817.576c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.056-20.446 75.144-31.253 115.931-31.253s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.872 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.779 8.086-13.31 12.582-22.066 12.582z' />
+            <path d='M773.467 706.966c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.475 11.314-24.522 13.618-35.837 5.144-11.317-8.475-13.619-24.52-5.144-35.837 35.021-46.758 80.95-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M829.803 204.8l109.899-109.899c9.998-9.997 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0l-109.899 109.899-109.899-109.899c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.899-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l109.899-109.898 109.899 109.899c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Strikethrough.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Strikethrough.js
new file mode 100644
index 00000000..24831805
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Strikethrough.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Strikethrough
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 102.4h-716.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h332.8v230.4c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-230.4h332.8c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M486.4 921.6c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 614.4h-921.6c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM51.2 563.2h870.4v-51.2h-870.4v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Subtract.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Subtract.js
new file mode 100644
index 00000000..cb963cb5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Subtract.js
@@ -0,0 +1,29 @@
+// Icon: Linear.Subtract
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M819.2 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M614.4 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M512 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M409.6 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 768h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 665.6h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 870.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 460.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 563.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 870.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M716.8 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M588.8 51.2h-512c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h281.6v-281.6c0-14.115 11.485-25.6 25.6-25.6h281.6v-281.6c0-42.347-34.453-76.8-76.8-76.8zM384 358.4c-42.347 0-76.8 34.453-76.8 76.8v230.4h-230.4c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v230.4h-230.4z' />
+            <path d='M307.2 768h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M921.6 972.8h51.2v51.2h-51.2v-51.2z' />
+            <path d='M307.2 972.8h51.2v51.2h-51.2v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun.js
new file mode 100644
index 00000000..4b57c24e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Sun
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 256c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 563.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 563.2h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 358.778c47.883 0 92.894 18.611 126.744 52.405 33.826 33.773 52.456 78.667 52.456 126.418s-18.63 92.645-52.456 126.416c-33.85 33.795-78.861 52.406-126.744 52.406-47.882 0-92.894-18.611-126.742-52.406-33.827-33.771-52.458-78.667-52.458-126.416s18.63-92.645 52.458-126.418c33.848-33.794 78.861-52.405 126.742-52.405zM486.4 307.578c-127.246 0-230.4 102.984-230.4 230.022 0 127.037 103.154 230.022 230.4 230.022s230.4-102.984 230.4-230.022c0-127.038-103.154-230.022-230.4-230.022v0z' />
+            <path d='M281.976 333.176c-6.552 0-13.102-2.499-18.101-7.498l-108.611-108.611c-9.998-9.998-9.998-26.206 0-36.203 9.998-9.998 26.206-9.998 36.203 0l108.611 108.611c9.998 9.998 9.998 26.206 0 36.203-4.998 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M173.365 901.834c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l108.611-108.611c9.997-9.998 26.205-9.998 36.203 0 9.997 9.997 9.997 26.206 0 36.203l-108.611 108.611c-4.997 5-11.55 7.499-18.101 7.499z' />
+            <path d='M690.824 333.176c-6.552 0-13.102-2.499-18.101-7.498-9.998-9.998-9.998-26.206 0-36.203l108.611-108.611c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.203l-108.611 108.611c-5 4.998-11.552 7.498-18.102 7.498z' />
+            <path d='M799.434 901.834c-6.552 0-13.102-2.499-18.101-7.499l-108.611-108.611c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l108.611 108.611c9.998 9.997 9.998 26.206 0 36.203-4.998 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun2.js
new file mode 100644
index 00000000..20df7c5f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sun2.js
@@ -0,0 +1,20 @@
+// Icon: Linear.Sun2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 768c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.043 0 230.4 103.357 230.4 230.4s-103.357 230.4-230.4 230.4zM486.4 358.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M281.978 333.176c-6.552 0-13.102-2.499-18.101-7.498l-108.613-108.611c-9.998-9.998-9.998-26.206 0-36.203 9.998-9.998 26.206-9.998 36.203 0l108.613 108.611c9.998 9.998 9.998 26.206 0 36.203-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M173.365 901.834c-6.552 0-13.102-2.499-18.102-7.499-9.997-9.997-9.997-26.206 0-36.203l108.613-108.611c9.997-9.998 26.206-9.998 36.203 0 9.997 9.997 9.997 26.206 0 36.203l-108.613 108.611c-4.997 5-11.55 7.499-18.101 7.499z' />
+            <path d='M690.822 333.176c-6.554 0-13.102-2.499-18.101-7.499-9.998-9.998-9.998-26.206 0-36.203l108.613-108.611c10-9.995 26.21-9.998 36.203 0 9.998 9.998 9.998 26.206 0 36.203l-108.613 108.611c-5 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M486.4 256c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 563.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 563.2h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M844.8 716.8c-70.579 0-128 57.421-128 128v153.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h153.6v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-70.579-57.421-128-128-128zM768 870.4v-25.6c0-42.349 34.451-76.8 76.8-76.8s76.8 34.451 76.8 76.8v25.6h-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunSmall.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunSmall.js
new file mode 100644
index 00000000..e7573929
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunSmall.js
@@ -0,0 +1,20 @@
+// Icon: Linear.SunSmall
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 307.2c-14.138 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v102.4c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 563.2h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 563.2h-102.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 921.6c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 409.6c70.579 0 128 57.421 128 128s-57.421 128-128 128-128-57.421-128-128 57.421-128 128-128zM486.4 358.4c-98.97 0-179.2 80.23-179.2 179.2 0 98.968 80.23 179.2 179.2 179.2 98.968 0 179.2-80.232 179.2-179.2 0-98.97-80.232-179.2-179.2-179.2v0z' />
+            <path d='M654.619 369.381c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l72.408-72.408c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-72.408 72.408c-5 5-11.552 7.499-18.102 7.499z' />
+            <path d='M318.181 369.381c-6.552 0-13.102-2.499-18.101-7.499l-72.408-72.408c-9.998-9.997-9.998-26.206 0-36.203s26.206-9.998 36.203 0l72.408 72.408c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M727.027 829.427c-6.552 0-13.102-2.499-18.101-7.499l-72.408-72.408c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l72.408 72.408c9.998 9.997 9.998 26.206 0 36.203-5 4.998-11.552 7.499-18.102 7.499z' />
+            <path d='M245.773 829.427c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l72.408-72.408c9.997-9.997 26.206-9.997 36.203 0s9.998 26.206 0 36.203l-72.408 72.408c-5 4.998-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunWind.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunWind.js
new file mode 100644
index 00000000..ccb5a476
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SunWind.js
@@ -0,0 +1,20 @@
+// Icon: Linear.SunWind
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 614.4h-332.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c48.435 0 90.627 34.374 100.32 81.736 2.835 13.853 16.368 22.786 30.213 19.947 13.851-2.834 22.782-16.362 19.947-30.213-14.547-71.080-77.834-122.67-150.48-122.67-84.696 0-153.6 68.904-153.6 153.6 0 39.306 14.846 75.205 39.219 102.4h-192.819c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2c21.669 0 41.077 13.714 48.293 34.126 4.712 13.33 19.338 20.312 32.669 15.603 13.33-4.712 20.315-19.339 15.603-32.669-14.434-40.829-53.24-68.261-96.565-68.261-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4h640c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M204.8 921.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4h435.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-435.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c21.667 0 41.074-13.714 48.291-34.125 4.714-13.33 19.336-20.309 32.67-15.602 13.33 4.714 20.315 19.341 15.602 32.67-14.437 40.826-53.242 68.256-96.563 68.256z' />
+            <path d='M793.6 870.4h-307.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M817.376 563.208c-4.352 0-8.758-1.109-12.794-3.445-12.238-7.078-16.422-22.739-9.342-34.976 15.674-27.101 23.96-58.080 23.96-89.587 0-98.811-80.389-179.2-179.2-179.2-43.699 0-85.789 15.904-118.515 44.784-10.6 9.355-26.779 8.346-36.134-2.256-9.355-10.6-8.344-26.778 2.258-36.133 42.086-37.141 96.208-57.595 152.392-57.595 127.042 0 230.4 103.357 230.4 230.4 0 40.498-10.664 80.341-30.84 115.221-4.744 8.203-13.344 12.786-22.184 12.787z' />
+            <path d='M640 153.6c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M384 204.8c-6.552 0-13.102-2.499-18.102-7.498l-51.2-51.2c-9.997-9.998-9.997-26.206 0-36.205 9.998-9.997 26.206-9.997 36.205 0l51.2 51.2c9.997 9.998 9.997 26.206 0 36.205-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M896 204.8c-6.552 0-13.102-2.499-18.101-7.498-9.998-9.998-9.998-26.206 0-36.205l51.2-51.2c9.997-9.997 26.206-9.997 36.203 0 9.998 9.998 9.998 26.206 0 36.205l-51.2 51.2c-5 4.998-11.55 7.498-18.102 7.498z' />
+            <path d='M998.4 460.8h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 716.8c-6.552 0-13.102-2.499-18.101-7.499l-51.2-51.2c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l51.2 51.2c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance.js
new file mode 100644
index 00000000..763f660c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Surveillance
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.923 281.6c0 14.138-11.534 25.6-25.762 25.6s-25.762-11.462-25.762-25.6c0-14.138 11.534-25.6 25.762-25.6s25.762 11.462 25.762 25.6z' />
+            <path d='M998.4 716.8c-14.139 0-25.6 11.461-25.6 25.6v76.8h-179.2c-42.349 0-76.8-34.451-76.8-76.8v-117.395l135.501-135.499c29.942-29.944 29.942-78.667-0.002-108.611l-22.589-22.589c26.888-30.12 25.891-76.509-3.011-105.411l-132.395-132.392c-14.464-14.466-33.75-22.432-54.304-22.432s-39.84 7.966-54.304 22.432l-552.597 552.597c-7.322 7.322-9.512 18.333-5.55 27.899s13.298 15.802 23.651 15.802h142.997l-33.099 33.099c-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l33.099-33.096 22.496 22.496c14.973 14.97 34.638 22.456 54.306 22.456s39.333-7.486 54.306-22.458l201.693-201.694v66.195c0 70.579 57.421 128 128 128h179.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.461-25.6-25.6-25.6zM621.899 156.706c4.795-4.795 11.224-7.435 18.101-7.435s13.306 2.64 18.101 7.435l132.394 132.392c9.981 9.982 9.981 26.222 0 36.203l-340.298 340.299h-337.194l508.896-508.894zM281.6 834.197l-66.197-66.197 14.997-14.997 66.197 66.197-14.997 14.997zM427.702 841.694c-9.982 9.984-26.224 9.979-36.203 0.002l-124.896-124.896h194.197c6.79 0 13.301-2.698 18.101-7.499l314.699-314.698 22.496 22.494c9.981 9.982 9.981 26.222 0 36.205l-388.394 388.392z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance2.js
new file mode 100644
index 00000000..3f6c81a2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Surveillance2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Surveillance2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M896 153.6h-819.2c-42.347 0-76.8 34.453-76.8 76.8v153.6c0 33.373 21.403 61.829 51.2 72.397v30.003c0 116.245 45.269 225.534 127.467 307.733s191.486 127.467 307.733 127.467c116.245 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733v-30.003c29.797-10.568 51.2-39.024 51.2-72.397v-153.6c0-42.347-34.451-76.8-76.8-76.8zM358.4 848.435v-106.035c0-70.579 57.421-128 128-128s128 57.421 128 128l-0.002 106.037c-40.056 14.203-83.134 21.963-127.998 21.963s-87.944-7.76-128-21.965zM665.598 825.934l0.002-83.534c0-98.811-80.389-179.2-179.2-179.2s-179.2 80.389-179.2 179.2v83.533c-121.696-64.49-204.8-192.478-204.8-339.533v-25.6h768v25.6c0 147.054-83.102 275.043-204.802 339.534zM921.6 384c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Swim.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Swim.js
new file mode 100644
index 00000000..ec9fefb6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Swim.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Swim
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 460.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4-45.936 102.4-102.4 102.4zM665.6 307.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M281.624 460.803c-8.272 0-16.39-4.003-21.325-11.403-7.842-11.763-4.664-27.658 7.101-35.501l153.6-102.4c11.304-7.536 26.528-4.93 34.68 5.941l76.8 102.4c8.483 11.31 6.19 27.357-5.12 35.84s-27.358 6.192-35.838-5.12l-62.27-83.027-133.45 88.966c-4.366 2.91-9.299 4.304-14.178 4.304z' />
+            <path d='M896.021 665.602c-7.763 0-15.429-3.515-20.458-10.186v0c-0.701-0.922-71.272-92.216-184.363-92.216-58.566 0-112.112 23.798-168.803 48.994-59.077 26.256-120.163 53.406-189.597 53.406-139.2 0-221.83-108.040-225.28-112.64-8.483-11.309-6.192-27.357 5.12-35.838 11.31-8.483 27.357-6.192 35.84 5.12 0.658 0.866 71.23 92.16 184.32 92.16 58.566 0 112.114-23.798 168.803-48.994 59.077-26.258 120.163-53.408 189.597-53.408 139.2 0 221.832 108.040 225.28 112.64 8.483 11.309 6.19 27.357-5.12 35.838-4.605 3.454-9.995 5.123-15.339 5.123z' />
+            <path d='M896.021 819.202c-7.763 0-15.429-3.515-20.458-10.186v0c-0.701-0.922-71.272-92.216-184.363-92.216-58.566 0-112.112 23.798-168.803 48.994-59.077 26.256-120.163 53.406-189.597 53.406-139.2 0-221.83-108.040-225.28-112.64-8.483-11.309-6.192-27.357 5.12-35.838 11.31-8.485 27.357-6.19 35.84 5.12 0.658 0.866 71.23 92.16 184.32 92.16 58.566 0 112.114-23.798 168.803-48.994 59.077-26.258 120.163-53.408 189.597-53.408 139.2 0 221.832 108.040 225.28 112.64 8.483 11.309 6.19 27.357-5.12 35.838-4.605 3.454-9.995 5.123-15.339 5.123z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync.js
new file mode 100644
index 00000000..c4553904
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Sync
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 442.698c-9.997-9.997-26.206-9.997-36.203 0l-58.832 58.832c-2.63-105.486-44.947-204.27-119.835-279.16-77.362-77.365-180.222-119.97-289.63-119.97-152.28 0-291.122 83.699-362.342 218.435-6.606 12.499-1.83 27.989 10.669 34.597 12.498 6.606 27.989 1.83 34.597-10.669 62.33-117.914 183.826-191.163 317.077-191.163 194.014 0 352.501 154.966 358.224 347.619l-58.522-58.522c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l102.4 102.4c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.203z' />
+            <path d='M863.674 668.566c-12.502-6.603-27.99-1.832-34.597 10.669-62.328 117.915-183.826 191.165-317.077 191.165-194.016 0-352.502-154.966-358.224-347.621l58.522 58.522c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.83-58.832c2.63 105.488 44.946 204.272 119.835 279.162 77.365 77.363 180.224 119.97 289.632 119.97 152.28 0 291.12-83.699 362.342-218.435 6.608-12.501 1.829-27.99-10.669-34.598z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync2.js
new file mode 100644
index 00000000..352ca6bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Sync2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Sync2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M895.994 588.8c-3.298 0.002-6.624-0.635-9.79-1.949-9.566-3.962-15.803-13.296-15.803-23.651v-51.2c0-197.622-160.778-358.4-358.4-358.4-133.251 0-254.747 73.25-317.077 191.163-6.608 12.499-22.101 17.274-34.597 10.669-12.499-6.608-17.277-22.098-10.669-34.597 71.221-134.736 210.062-218.435 362.342-218.435 109.408 0 212.269 42.606 289.632 119.968 74.89 74.89 117.208 173.672 119.838 279.158l58.829-58.829c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-102.4 102.4c-4.898 4.898-11.446 7.499-18.109 7.499z' />
+            <path d='M512 921.6c-109.408 0-212.267-42.606-289.632-119.968-74.89-74.89-117.208-173.674-119.838-279.158l-58.829 58.829c-9.998 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l102.4-102.4c7.322-7.323 18.331-9.512 27.899-5.55 9.566 3.962 15.803 13.296 15.803 23.651v51.2c0 197.622 160.778 358.4 358.4 358.4 133.251 0 254.749-73.25 317.077-191.165 6.606-12.499 22.094-17.277 34.597-10.669 12.499 6.608 17.277 22.098 10.669 34.597-71.222 134.738-210.062 218.437-362.342 218.437z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed.js
new file mode 100644
index 00000000..bf135cdb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.SyncCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 442.698c-9.997-9.997-26.206-9.997-36.203 0l-58.832 58.832c-2.63-105.486-44.947-204.269-119.835-279.16-0.846-0.848-1.715-1.667-2.568-2.507l65.083-75.096c9.259-10.685 8.104-26.853-2.579-36.112-10.683-9.261-26.851-8.104-36.11 2.579l-65.037 75.043c-71.026-54.397-157.451-83.877-248.419-83.877-152.28 0-291.122 83.699-362.341 218.437-6.606 12.499-1.83 27.989 10.669 34.597 12.499 6.605 27.987 1.832 34.597-10.669 62.326-117.915 183.824-191.165 317.075-191.165 80.459 0 154.81 26.656 214.69 71.594l-468.051 540.059c-62.498-62.523-102.056-147.965-104.862-242.474l58.522 58.522c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.102-7.499c9.997-9.997 9.997-26.206 0-36.203l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l58.83-58.832c2.63 105.488 44.946 204.272 119.837 279.162 0.848 0.846 1.715 1.667 2.568 2.506l-65.083 75.098c-9.261 10.685-8.106 26.851 2.579 36.11 4.843 4.198 10.813 6.254 16.755 6.254 7.166 0 14.294-2.992 19.357-8.834l65.037-75.043c71.022 54.398 157.45 83.878 248.418 83.878 152.28 0 291.12-83.699 362.342-218.435 6.608-12.499 1.83-27.989-10.669-34.597-12.502-6.603-27.99-1.832-34.597 10.669-62.328 117.914-183.826 191.163-317.077 191.163-80.461 0-154.81-26.654-214.69-71.594l468.053-540.059c62.498 62.523 102.054 147.965 104.861 242.472l-58.522-58.522c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l102.4 102.4c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.203z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed2.js
new file mode 100644
index 00000000..3ce3ad0f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/SyncCrossed2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.SyncCrossed2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 442.699c-9.997-9.998-26.206-9.998-36.203 0l-58.829 58.829c-2.632-105.485-44.95-204.267-119.838-279.157-0.846-0.848-1.715-1.667-2.568-2.507l65.083-75.096c9.259-10.685 8.104-26.853-2.579-36.112-10.683-9.261-26.851-8.104-36.11 2.579l-65.037 75.043c-71.026-54.398-157.451-83.878-248.419-83.878-152.28 0-291.122 83.699-362.341 218.437-6.606 12.499-1.83 27.989 10.669 34.597 12.499 6.605 27.99 1.832 34.597-10.669 62.328-117.915 183.824-191.165 317.075-191.165 80.459 0 154.81 26.656 214.69 71.594l-468.051 540.059c-64.866-64.891-105.038-154.47-105.038-253.253v-51.2c0-10.355-6.237-19.69-15.803-23.651-9.568-3.963-20.578-1.773-27.899 5.55l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.205 9.997 36.203 0l58.829-58.829c2.63 105.485 44.95 204.269 119.838 279.158 0.848 0.846 1.715 1.667 2.568 2.506l-65.083 75.098c-9.261 10.685-8.106 26.851 2.579 36.11 4.843 4.198 10.813 6.254 16.755 6.254 7.166 0 14.294-2.992 19.357-8.834l65.037-75.043c71.024 54.397 157.451 83.877 248.419 83.877 152.28 0 291.12-83.699 362.342-218.435 6.608-12.499 1.83-27.989-10.669-34.597-12.502-6.608-27.99-1.832-34.597 10.669-62.328 117.914-183.826 191.163-317.077 191.163-80.461 0-154.81-26.654-214.69-71.594l468.053-540.059c64.866 64.893 105.037 154.469 105.037 253.253v51.2c0 10.355 6.237 19.69 15.803 23.651 3.166 1.312 6.494 1.949 9.79 1.949 6.662 0 13.211-2.602 18.107-7.499l102.4-102.4c9.998-9.997 9.998-26.205 0-36.202z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Syringe.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Syringe.js
new file mode 100644
index 00000000..d041a97e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Syringe.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Syringe
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M965.301 289.099l-25.592-25.594c-0.003-0.002-0.005-0.005-0.008-0.008l-204.8-204.8c-0.003-0.002-0.005-0.005-0.008-0.006l-25.592-25.592c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l7.499 7.498-117.397 117.397-7.499-7.499c-0.003-0.002-0.005-0.005-0.008-0.006l-76.792-76.792c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l58.699 58.698-391.499 391.499c-6.053 6.051-8.678 14.73-7 23.122 0.994 4.963 22.504 110.414 67.278 172.602l-137.077 137.077c-9.998 9.997-9.998 26.206 0 36.203 4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499l137.077-137.077c62.187 44.774 167.64 66.286 172.6 67.278 1.67 0.334 3.35 0.498 5.021 0.498 6.72 0 13.253-2.65 18.101-7.499l391.501-391.498 84.299 84.299c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-102.392-102.394c-0.003-0.002-0.005-0.005-0.008-0.008l-7.498-7.496 117.397-117.397 7.499 7.499c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202zM375.806 842.39c-40.613-9.598-119.547-33.534-152.904-66.893-33.272-33.274-57.254-112.274-66.885-152.912l381.582-381.582 219.795 219.797-381.589 381.59zM768 398.997l-168.597-168.597 117.397-117.397 168.595 168.597-117.395 117.397z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tab.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tab.js
new file mode 100644
index 00000000..0da534a7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tab.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Tab
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M939.701 365.899l-153.6-153.6c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l109.899 109.898h-731.797c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h731.797l-109.899 109.899c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M896 665.6h-731.797l109.898-109.899c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.203 0l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-109.898-109.898h731.797c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet.js
new file mode 100644
index 00000000..510bf8a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Tablet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 1024h-614.4c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM179.2 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-614.4z' />
+            <path d='M512 128c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M486.4 921.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8zM486.4 819.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet2.js
new file mode 100644
index 00000000..67e90219
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tablet2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Tablet2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 1024h-665.6c-42.347 0-76.8-34.451-76.8-76.8v-870.4c0-42.347 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.453 76.8 76.8v870.4c0 42.349-34.451 76.8-76.8 76.8zM179.2 51.2c-14.115 0-25.6 11.485-25.6 25.6v870.4c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-870.4c0-14.115-11.485-25.6-25.6-25.6h-665.6z' />
+            <path d='M537.6 921.6h-51.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 819.2h-563.2c-14.138 0-25.6-11.461-25.6-25.6v-665.6c0-14.138 11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.462 25.6 25.6v665.6c0 14.139-11.461 25.6-25.6 25.6zM256 768h512v-614.4h-512v614.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tag.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tag.js
new file mode 100644
index 00000000..4254f922
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tag.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Tag
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M384 977.13c-20.554 0-39.84-7.966-54.306-22.43l-260.394-260.395c-14.466-14.464-22.432-33.75-22.432-54.304s7.966-39.84 22.434-54.306l439.594-439.592c24.91-24.914 70.269-43.702 105.504-43.702h230.4c42.349 0 76.8 34.453 76.8 76.8v230.4c0 35.232-18.787 80.59-43.699 105.504l-439.595 439.595c-14.466 14.466-33.752 22.43-54.306 22.43zM614.4 153.6c-21.246 0-54.278 13.682-69.299 28.704l-439.595 439.595c-4.795 4.795-7.435 11.224-7.435 18.101s2.64 13.306 7.435 18.099l260.394 260.397c4.795 4.794 11.224 7.434 18.101 7.434s13.307-2.64 18.102-7.435l439.594-439.592c15.021-15.024 28.704-48.058 28.704-69.302v-230.4c0-14.115-11.485-25.6-25.6-25.6h-230.4z' />
+            <path d='M742.4 358.4c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 256c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tags.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tags.js
new file mode 100644
index 00000000..00cbd289
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tags.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Tags
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM793.6 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M896 153.6h-179.2c-35.235 0-80.594 18.789-105.504 43.701l-388.394 388.394c-14.466 14.466-22.434 33.752-22.434 54.306s7.966 39.84 22.432 54.304l133.234 133.234-56.078 32.378c-5.874 3.39-12.768 4.275-19.41 2.498-6.643-1.779-12.17-5.994-15.56-11.867l-184.125-318.914c-7.058-12.226-2.854-27.912 9.37-34.97l408.869-236.061c12.243-7.069 16.438-22.726 9.37-34.97-7.070-12.246-22.728-16.437-34.97-9.37l-408.869 236.058c-17.717 10.229-30.403 26.795-35.723 46.65s-2.616 40.544 7.613 58.262l184.126 318.915c10.229 17.717 26.795 30.403 46.65 35.723 6.651 1.781 13.397 2.664 20.093 2.664 13.291 0 26.389-3.475 38.17-10.277l67.96-39.237 38.477 38.478c14.466 14.466 33.75 22.432 54.306 22.432s39.84-7.966 54.304-22.432l388.395-388.395c24.912-24.914 43.699-70.27 43.699-105.504v-179.2c0-42.347-34.451-76.8-76.8-76.8zM921.6 409.6c0 21.246-13.683 54.278-28.704 69.301l-388.395 388.395c-4.795 4.794-11.224 7.434-18.101 7.434s-13.307-2.64-18.101-7.434l-209.194-209.197c-4.795-4.794-7.435-11.222-7.435-18.099s2.64-13.306 7.435-18.101l388.395-388.394c15.021-15.024 48.053-28.706 69.299-28.706h179.2c14.115 0 25.6 11.485 25.6 25.6v179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape.js
new file mode 100644
index 00000000..f3e95fe8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Tape
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M409.6 358.4c-51.254 0-99.837-8.723-136.798-24.565-59.168-25.357-68.002-59.65-68.002-77.835s8.834-52.478 68.002-77.835c36.962-15.842 85.544-24.565 136.798-24.565s99.837 8.723 136.798 24.565c59.168 25.357 68.002 59.65 68.002 77.835s-8.834 52.478-68.002 77.835c-36.962 15.842-85.544 24.565-136.798 24.565zM409.6 204.8c-95.283 0-153.6 33.149-153.6 51.2s58.317 51.2 153.6 51.2 153.6-33.149 153.6-51.2-58.317-51.2-153.6-51.2z' />
+            <path d='M1016.797 422.528c-3.454-3.57-81.41-83.189-201.379-131.141 2.488-11.61 3.782-23.421 3.782-35.387 0-70.89-44.357-136.544-124.899-184.869-76.45-45.869-177.558-71.131-284.701-71.131s-208.251 25.262-284.701 71.131c-80.542 48.325-124.899 113.979-124.899 184.869s44.357 136.544 124.899 184.869c9.216 5.53 18.8 10.754 28.701 15.675v110.952c-43.387 21.573-79.715 48.754-105.669 79.237-31.357 36.829-47.931 78.763-47.931 121.267 0 70.89 44.357 136.544 124.899 184.869 76.45 45.87 177.558 71.131 284.701 71.131 97.085 0 191.050-21.251 264.584-59.84 61.379-32.211 105.73-74.926 128.216-122.701 18.267 13.915 37.189 29.733 56.686 47.434 68.197 61.917 118.824 124.874 119.323 125.499 4.955 6.192 12.366 9.61 19.995 9.61 2.832 0 5.693-0.47 8.469-1.445 10.259-3.598 17.126-13.285 17.126-24.157v-558.069c0-6.645-2.582-13.029-7.203-17.803zM51.2 256c0-52.195 35.53-102.258 100.042-140.966 68.608-41.163 160.36-63.834 258.358-63.834s189.752 22.67 258.358 63.834c64.514 38.709 100.042 88.771 100.042 140.966 0 14.33-2.694 28.498-7.915 42.314-0.034 0.091-0.075 0.174-0.107 0.267-0.018 0.050-0.027 0.101-0.043 0.15-13.877 36.354-45.352 70.261-91.974 98.234-11.87 7.122-24.448 13.677-37.618 19.67-0.467 0.19-0.92 0.41-1.374 0.627-62.683 28.246-138.917 43.538-219.368 43.538-80.366 0-156.522-15.258-219.166-43.446-0.536-0.264-1.075-0.518-1.632-0.744-13.147-5.986-25.706-12.533-37.56-19.643-64.512-38.709-100.042-88.771-100.042-140.966zM409.6 512c73.040 0 143.269-11.75 204.8-33.755v264.155c0 15.901-20.034 34.683-52.28 49.014-40.315 17.918-94.482 27.786-152.52 27.786s-112.205-9.867-152.52-27.786c-32.246-14.331-52.28-33.114-52.28-49.014v-264.155c61.531 22.005 131.76 33.755 204.8 33.755zM650.394 918.822c-66.33 34.808-151.846 53.978-240.794 53.978-97.998 0-189.75-22.67-258.358-63.834-64.512-38.709-100.042-88.771-100.042-140.966 0-52.592 37.618-104.059 102.4-142.32v116.72c0 38.082 29.365 72.102 82.686 95.802 46.717 20.765 108.269 32.198 173.314 32.198 65.046 0 126.597-11.434 173.314-32.198 40.189-17.862 66.76-41.59 77.414-68.499 29.102 4.622 62.483 18.736 99.248 41.878-15.942 40.707-54.034 78.302-109.182 107.242zM972.8 930.002c-20.946-22.749-47.992-50.557-78.779-78.544-86.651-78.774-163.328-123.291-228.421-132.733v-262.181c9.901-4.923 19.485-10.146 28.701-15.675 47.648-28.589 82.624-63.242 103.251-101.456 89.309 36.034 154.32 92.261 175.248 111.779v478.81z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape2.js
new file mode 100644
index 00000000..9be04a56
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tape2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Tape2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM281.6 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M742.4 665.6c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM742.4 460.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8c0-42.347-34.453-76.8-76.8-76.8z' />
+            <path d='M588.8 358.4h-307.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 204.8h-870.4c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.349 34.453 76.8 76.8 76.8h767.838c0.061 0 0.12 0.006 0.181 0.006 0.035 0 0.074-0.006 0.109-0.006h102.272c42.349 0 76.8-34.451 76.8-76.8v-512c0-42.347-34.451-76.8-76.8-76.8zM220.622 819.2l25.6-51.2h531.557l25.6 51.2h-582.757zM972.8 793.6c0 14.115-11.485 25.6-25.6 25.6h-86.578l-44.125-88.248c-4.336-8.674-13.2-14.152-22.898-14.152h-563.2c-9.698 0-18.562 5.478-22.898 14.152l-44.125 88.248h-86.578c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Taxi.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Taxi.js
new file mode 100644
index 00000000..b1303428
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Taxi.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Taxi
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 819.2c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 819.2c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM742.4 716.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M868.256 609.642c-6.646-40.557-28.301-164.576-51.76-211.491-15.627-31.256-55.694-55.139-119.088-70.987-10.078-2.52-20.722-4.81-31.81-6.877v-38.686c0-42.347-34.451-76.8-76.8-76.8h-153.6c-42.347 0-76.8 34.453-76.8 76.8v38.688c-11.086 2.067-21.73 4.357-31.808 6.877-63.394 15.848-103.461 39.733-119.090 70.987-23.458 46.915-45.112 170.933-51.758 211.491-35.776 24.512-53.342 59.99-53.342 107.157v128c0 33.373 21.403 61.829 51.2 72.397v55.603c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-51.2h409.6v51.2c0 28.232 22.968 51.2 51.2 51.2h51.2c28.232 0 51.2-22.968 51.2-51.2v-55.603c29.797-10.566 51.2-39.024 51.2-72.397v-128c0-47.166-17.566-82.645-53.344-107.158zM409.6 281.6c0-14.115 11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v31.155c-32.416-3.632-67.099-5.555-102.4-5.555s-69.986 1.923-102.4 5.555v-31.155zM253.298 421.048c15.186-30.37 111.014-62.648 258.702-62.648s243.517 32.278 258.702 62.648c14.717 29.434 31.024 107.302 41.141 162.968-4.998-1.474-10.166-2.846-15.514-4.12-13.656-3.251-28.434-5.862-44.2-7.971l-148.421-106.334c-11.494-8.237-27.485-5.59-35.72 5.901-8.234 11.493-5.592 27.485 5.901 35.72l80.165 57.435c-43.515-1.443-91.25-1.446-142.054-1.446-5.998 0-11.942 0-17.854 0.003l-147.146-98.102c-11.765-7.843-27.658-4.664-35.501 7.099s-4.666 27.658 7.099 35.501l84.178 56.122c-68.654 1.237-128.362 4.946-175.107 16.075-5.347 1.274-10.517 2.648-15.517 4.12 10.115-55.654 26.418-133.515 41.146-162.97zM256 972.8h-51.2v-51.2h51.2v51.2zM768 972.8v-51.2h51.2v51.2h-51.2zM870.4 844.8c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-128c0-47.331 24.896-72.565 85.93-87.098 64.275-15.302 160.757-15.302 272.47-15.302s208.194 0 272.47 15.302c61.034 14.533 85.93 39.766 85.93 87.098v128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teacup.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teacup.js
new file mode 100644
index 00000000..8419b1d9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teacup.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Teacup
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M907.912 647.638c-9.638-16.083-24.315-26.779-42.44-30.942-18.941-4.346-39.381-0.861-57.168 4.917 7.029-37.984 9.675-66.507 10.52-77.635 0.262-2.237 0.376-4.37 0.376-6.378 0-0.318-0.022-0.632-0.027-0.949-0.005-0.125-0.005-0.251-0.011-0.374-0.8-35.917-34.093-65.522-99.029-88.003-54.235-18.778-129.245-31.757-211.21-36.549-14.117-0.822-26.226 9.949-27.051 24.062s9.947 26.226 24.062 27.050c77.405 4.526 147.528 16.536 197.448 33.819 51.442 17.81 63.998 35.235 64.589 40.558-0.026 0.365-0.058 0.819-0.099 1.368-1.536 7.099-19.133 27.627-86.28 46.811-65.467 18.706-152.971 29.006-246.392 29.006s-180.925-10.301-246.395-29.008c-67.138-19.181-84.739-39.707-86.278-46.81-0.043-0.573-0.077-1.046-0.102-1.419 1.067-11.808 45.032-48.098 182.802-66.768 14.010-1.899 23.829-14.795 21.93-28.806s-14.792-23.829-28.806-21.93c-62.787 8.509-116.338 22.022-154.864 39.078-47.32 20.949-71.61 47.058-72.256 77.613-0.002 0.054-0.002 0.11-0.003 0.166-0.006 0.362-0.026 0.72-0.026 1.083 0 2.008 0.114 4.142 0.378 6.379 1.816 23.909 11.939 128.139 55.992 233.867 67.098 161.035 180.39 246.154 327.63 246.154 94.485 0 174.989-35.054 238.28-102.725 2.331-0.36 4.654-1.013 6.901-2.054 2.050-0.954 50.851-23.723 103.861-58.267 74.272-48.402 118.731-95.083 132.146-138.746 8.030-26.139 5.099-51.926-8.475-74.57zM435.2 972.8c-126.347 0-220.522-71.843-279.904-213.533-22.246-53.082-35.336-106.683-42.934-148.040 17.266 8.635 38.138 16.47 62.379 23.397 69.915 19.974 162.414 30.976 260.459 30.976s190.544-11.002 260.459-30.976c24.242-6.926 45.114-14.762 62.379-23.397-7.598 41.36-20.688 94.96-42.934 148.040-59.382 141.69-153.557 213.533-279.904 213.533zM867.448 707.157c-9.486 30.907-48.781 70.174-110.648 110.566-6.197 4.045-12.357 7.93-18.392 11.634 8.714-16.2 16.864-33.368 24.424-51.51 13.454-32.29 23.738-64.435 31.592-94.203 15.299-8.782 42.914-20.875 59.589-17.045 4.587 1.056 7.482 3.189 9.986 7.366 6.152 10.264 7.25 20.813 3.45 33.192z' />
+            <path d='M486.098 563.202c0.421 0 0.701-0.005 0.826-0.006 14.136-0.29 25.435-11.982 25.147-26.118s-11.923-25.4-26.043-25.074c-0.339 0.005-35.227 0.043-57.198-21.741-12.76-12.651-19.229-31.176-19.229-55.062 0-73.746 18.397-107.334 37.874-142.894 19.138-34.939 38.926-71.069 38.926-138.706 0-81.901-27.146-137.136-28.301-139.448-6.325-12.646-21.699-17.773-34.346-11.45s-17.771 21.699-11.45 34.346c0.229 0.458 22.896 46.605 22.896 116.552 0 54.533-15.122 82.142-32.632 114.109-20.702 37.8-44.168 80.643-44.168 167.491 0 38.312 11.723 69.226 34.842 91.878 35.533 34.814 85.568 36.123 92.856 36.123z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teapot.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teapot.js
new file mode 100644
index 00000000..dabf7544
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Teapot.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Teapot
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1024 332.8c0-43.066-44.979-76.8-102.4-76.8-1.83 0-3.645 0.035-5.448 0.104-82.077 2.166-112.040 53.053-141.003 102.33-13.149 22.368-26.565 45.171-45.323 66.81-8.814-32.224-13.026-62.282-13.026-92.443 0-7.504-3.248-14.234-8.394-18.915 6.274-11.584 8.394-22.643 8.394-32.285 0-23.312-12.675-57.085-73.054-85.587-34.032-16.064-77.958-28.066-128.179-35.168 0.485-4.822 0.76-9.571 0.76-14.197 0-27.533-8.822-50.856-25.514-67.45-18.691-18.578-46.014-27.998-81.213-27.998s-62.522 9.421-81.211 28c-16.691 16.594-25.514 39.917-25.514 67.45 0 4.626 0.275 9.374 0.758 14.197-44.358 6.274-83.771 16.382-115.822 29.726-4.902-5.736-11.078-11.928-18.566-17.536-29.805-22.326-65.664-24.614-100.963-6.445-37.675 19.39-79.094 65.205-62.464 173.331 9.728 63.24 35.171 124.709 47.398 154.25 0.566 1.366 1.152 2.784 1.715 4.149-0.736 1.848-1.474 3.696-2.21 5.541-25.92 64.998-52.722 132.21-52.722 187.338 0 107.819 42.555 195.605 123.062 253.869 71.352 51.637 170.435 78.931 286.538 78.931s215.186-27.294 286.538-78.931c80.507-58.264 123.062-146.050 123.062-253.869 0-9.534-0.771-19.157-2.328-29.226 2.293-2.835 4.568-5.768 6.826-8.829 25.038-33.942 45.237-77.81 64.77-120.232 25.514-55.41 51.816-112.53 83.381-132.904 31.352-12.982 52.152-37.933 52.152-67.21zM972.8 332.8c0 4.696-4.046 10.344-11.333 15.141-4.29 1.742-8.45 3.75-12.47 6.054-7.63 2.68-16.869 4.405-27.397 4.405-31.254 0-51.2-15.162-51.2-25.6 0-10.099 18.674-24.619 48.195-25.552 0.998-0.019 1.981-0.048 3.005-0.048 31.254 0 51.2 15.162 51.2 25.6zM354.472 139.002c1.853-17.040 9.794-36.602 55.128-36.602s53.275 19.562 55.128 36.602c1.142 10.512-0.186 22.922-3.667 36.054-0.114 0.352-0.205 0.714-0.304 1.074-3.469 12.701-8.918 26.037-16.107 38.976-14.115 25.405-29.186 38.574-35.050 40.72-5.866-2.146-20.934-15.315-35.050-40.72-7.242-13.035-12.722-26.477-16.187-39.261-0.069-0.237-0.126-0.478-0.202-0.712-3.498-13.162-4.834-25.598-3.69-36.131zM335.642 249.909c13.325 21.397 40.653 57.291 73.958 57.291s60.634-35.894 73.958-57.291c7.853-12.608 14.438-25.814 19.6-39.099 46.968 6.275 88.582 17.274 118.73 31.504 32.229 15.214 43.712 30.269 43.712 39.286 0 12.187-20.293 31.864-65.627 48.349-50.454 18.347-118.064 28.451-190.373 28.451s-139.918-10.104-190.373-28.451c-45.334-16.485-65.627-36.162-65.627-48.349 0-9.016 11.483-24.070 43.709-39.283 30.149-14.232 71.762-25.23 118.731-31.507 5.163 13.286 11.749 26.491 19.602 39.099zM56.424 332.138c-9.634-62.63 2.24-103.013 35.293-120.026 17.501-9.005 32.054-8.643 45.8 1.142 1.296 0.923 2.518 1.896 3.691 2.888-31.23 23.23-38.808 47.459-38.808 65.458 0 9.642 2.12 20.701 8.394 32.285-5.144 4.682-8.394 11.411-8.394 18.915 0 27.003-8.53 59.698-20.462 94.362-9.992-27.733-20.35-61.456-25.514-95.024zM409.6 972.8c-224.419 0-358.4-105.27-358.4-281.6 0-45.296 24.95-107.864 49.080-168.371 22.891-57.405 46.461-116.515 52.067-168.080 13.034 8.123 29.254 15.998 49.384 23.318 55.92 20.333 129.742 31.533 207.869 31.533s151.95-11.2 207.87-31.533c19.837-7.214 35.878-14.966 48.814-22.966 2.075 35.085 9.101 70.32 21.608 108.408-3.397 2.437-6.907 4.846-10.576 7.214-39.397 25.432-62.917 69.573-62.917 118.077 0 32.854 9.806 64.026 27.614 87.768 19.176 25.568 46.434 40.232 74.786 40.232 17.984 0 34.899-4.152 50.926-12.538-6.498 168.446-139.31 268.538-358.126 268.538zM841.962 511.501c-34.885 75.76-70.957 154.099-125.162 154.099-27.754 0-51.2-35.17-51.2-76.8 0-31.040 14.762-59.101 39.485-75.061 10.373-6.696 19.808-13.682 28.472-20.851 0.173-0.133 0.33-0.28 0.499-0.416 42.39-35.245 65.79-75.016 85.232-108.094 3.581-6.093 6.981-11.877 10.307-17.338 12.954 19.949 37.029 34.79 66.566 40.258-19.862 29.666-36.789 66.387-54.2 104.203z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone.js
new file mode 100644
index 00000000..ab1823f6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Telephone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M819.2 1024c-90.691 0-187.154-25.699-286.706-76.386-91.794-46.736-182.48-113.654-262.258-193.522-79.763-79.853-146.595-170.624-193.272-262.498-50.608-99.61-76.269-196.102-76.269-286.795 0-58.774 54.765-115.55 78.31-137.232 33.85-31.17 87.104-67.568 125.794-67.568 19.245 0 41.803 12.589 70.994 39.616 21.782 20.17 46.27 47.51 70.814 79.067 14.794 19.021 88.592 116.267 88.592 162.917 0 38.27-43.25 64.853-89.037 92.998-17.694 10.875-35.992 22.122-49.226 32.73-14.114 11.315-16.645 17.288-17.061 18.629 48.602 121.128 197.141 269.651 318.203 318.184 1.085-0.341 7.067-2.699 18.592-17.075 10.608-13.234 21.854-31.531 32.73-49.227 28.144-45.789 54.726-89.038 92.998-89.038 46.648 0 143.896 73.798 162.917 88.592 31.557 24.546 58.898 49.032 79.067 70.816 27.029 29.189 39.616 51.747 39.616 70.992 0 38.701-36.378 92.115-67.528 126.099-21.693 23.662-78.491 78.701-137.272 78.701zM204.477 51.203c-13.731 0.262-50.634 17.054-90.789 54.029-38.115 35.099-61.792 73.25-61.792 99.568 0 344.523 423.093 768 767.304 768 26.28 0 64.418-23.795 99.528-62.099 37.003-40.366 53.806-77.413 54.069-91.178-1.662-9.728-28.57-47.563-102.232-104.283-63.322-48.762-114.699-74.886-127.901-75.237-0.925 0.274-6.656 2.467-18.277 17.222-10.104 12.832-20.912 30.418-31.366 47.424-28.683 46.666-55.774 90.744-95.122 90.744-6.336 0-12.597-1.219-18.608-3.624-134.376-53.75-293.31-212.685-347.061-347.061-6.456-16.138-7.485-41.414 24.272-70.184 16.882-15.293 40.25-29.656 62.848-43.546 17.006-10.453 34.59-21.261 47.422-31.366 14.755-11.619 16.95-17.352 17.222-18.277-0.352-13.203-26.475-64.579-75.237-127.902-56.72-73.659-94.554-100.568-104.282-102.23z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone2.js
new file mode 100644
index 00000000..0fb0fafb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Telephone2.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Telephone2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M916.19 455.509c-53.283 0.002-149.901-19.214-180.016-49.326-18.466-18.466-22.854-41.64-26.381-60.262-4.344-22.931-6.95-29.755-17.010-34.077-46.194-19.853-112.456-31.238-181.8-31.238-68.621 0-134.16 11.189-179.81 30.699-9.939 4.248-12.499 11.050-16.741 33.938-3.459 18.672-7.765 41.91-26.234 60.381-16.814 16.813-51.976 28.36-78.512 35.086-34.218 8.674-70.85 13.646-100.502 13.646-33.982 0-56.965-6.461-70.258-19.755-20.021-20.019-32.797-47.4-35.050-75.12-1.901-23.365 2.6-57.979 34.824-90.205 52.315-52.315 122.699-93.11 209.195-121.253 79.549-25.882 170.093-39.562 261.842-39.562 92.378 0 183.67 13.848 264.006 40.048 87.304 28.472 158.35 69.688 211.163 122.499 53.766 53.765 40.451 125.102 0.629 164.928-13.173 13.17-35.856 19.571-69.347 19.573zM510.986 229.405c77.157 0 148.901 12.571 202.014 35.398 36.51 15.69 42.632 48 47.099 71.59 2.672 14.104 4.979 26.285 12.28 33.586 12.915 12.914 87.362 34.331 143.811 34.33 24.638 0 32.398-4.219 33.4-4.835 15.851-16.061 35.757-55.621-0.885-92.261-92.392-92.392-256.493-147.552-438.966-147.552-180.973 0-343.526 54.51-434.832 145.818-14.76 14.76-21.488 31.533-19.998 49.853 1.258 15.462 8.72 31.445 19.986 42.827 0.965 0.606 8.846 5 34.291 5 56.242 0 130.12-21.048 142.811-33.738 7.226-7.227 9.482-19.403 12.094-33.502 4.382-23.659 10.386-56.061 46.963-71.691 52.538-22.456 123.541-34.822 199.931-34.822z' />
+            <path d='M844.8 921.6h-665.6c-34.347 0-66.043-13.509-89.248-38.040-23.206-24.531-34.936-56.928-33.032-91.222 0.218-3.928 6.024-97.307 65.029-191.453 34.904-55.694 81.181-100.088 137.541-131.946 69.658-39.374 154.613-59.339 252.51-59.339s182.853 19.965 252.509 59.339c56.363 31.858 102.637 76.251 137.542 131.946 59.005 94.146 64.811 187.525 65.030 191.453 1.904 34.296-9.827 66.691-33.034 91.222s-54.901 38.040-89.248 38.040zM512 460.8c-159.592 0-275.859 55.696-345.574 165.541-52.726 83.077-58.336 168.038-58.387 168.888-1.114 20.050 5.67 38.942 19.107 53.146s31.923 22.026 52.054 22.026h665.6c20.131 0 38.618-7.822 52.054-22.027 13.435-14.203 20.222-33.096 19.104-53.195-0.046-0.798-5.658-85.762-58.384-168.837-69.715-109.845-185.984-165.541-345.574-165.541z' />
+            <path d='M512 819.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM512 563.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis.js
new file mode 100644
index 00000000..9122442b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Tennis
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1023.669 891.901c-1.317-8.123-6.459-15.117-13.821-18.797l-47.485-23.742-176.262-176.262c-2.235-2.235-4.541-4.525-6.909-6.877-51.262-50.891-128.731-127.797-171.965-338.566l-0.008 0.002c-15.386-73.736-54.486-145.986-108.848-200.346-83.286-83.288-172.408-127.312-257.73-127.312-63.875 0-122.363 24.725-169.141 71.501-52.79 52.792-77.702 122.096-70.146 195.141 7.984 77.181 51.539 157.312 125.957 231.731 54.667 54.667 127.398 93.488 200.358 108.789l-0.014 0.067c210.768 43.234 287.675 120.701 338.566 171.965 2.352 2.368 4.64 4.674 6.877 6.909l176.262 176.262 23.742 47.485c3.68 7.362 10.674 12.502 18.797 13.821 1.366 0.222 2.738 0.331 4.101 0.331 6.733 0 13.261-2.659 18.099-7.499l102.4-102.4c5.819-5.819 8.486-14.080 7.168-22.202zM479.216 545.413l-71.813-71.813 66.197-66.197 71.824 71.822c-7.098 14.547-16.256 27.566-27.443 38.754-11.915 11.915-25.136 20.818-38.765 27.434zM305.003 371.2l66.197-66.197 66.197 66.197-66.197 66.197-66.197-66.197zM334.997 473.6l-62.491 62.491c-29.229-12.755-57.24-29.683-82.373-50.019l78.667-78.669 66.197 66.197zM557.322 339.133c0.862 4.219 1.638 8.443 2.32 12.667 4.074 25.261 4.669 49.162 1.95 71.189l-51.789-51.789 44.667-44.667c0.973 3.933 1.869 7.874 2.688 11.819 0.053 0.262 0.109 0.518 0.163 0.781zM473.6 334.997l-66.197-66.197 78.677-78.677c20.269 25.037 37.198 53.018 49.995 82.398l-62.475 62.475zM371.2 232.597l-66.197-66.197 71.818-71.818c24.846 15.418 49.696 34.853 74.248 58.146l-79.869 79.869zM334.997 268.8l-66.197 66.197-66.197-66.197 66.197-66.197 66.197 66.197zM329.096 69.901l-60.296 60.296-73.406-73.408c14.597-3.702 29.728-5.589 45.25-5.589 28.826 0 58.491 6.333 88.453 18.701zM144.582 78.387l88.014 88.013-66.197 66.197-88.11-88.11c8.018-12.883 17.813-25.179 29.414-36.781 11.475-11.474 23.818-21.266 36.878-29.318zM56.597 195.2l73.6 73.6-60.189 60.189c-19.334-46.733-23.95-92.219-13.411-133.789zM94.669 376.734l71.731-71.731 66.197 66.197-79.875 79.874c-23.331-24.618-42.698-49.525-58.053-74.339zM326.501 554.502l44.699-44.699 51.699 51.699c-9.939 1.23-19.414 1.698-28.024 1.698-17.277 0-34.934-1.798-52.63-5.226-1.435-0.301-2.853-0.606-4.301-0.902l-0.005 0.024c-3.813-0.795-7.627-1.65-11.438-2.594zM484.426 598.923c26.65-10.128 50.15-25.131 69.758-44.741 19.662-19.661 34.643-43.181 44.766-69.69 42.186 109.851 94.365 167.971 132.821 206.733l-40.544 40.544c-38.771-38.464-96.907-90.656-206.802-132.846zM903.013 955.182l-9.715-19.432c-1.23-2.461-2.85-4.707-4.795-6.653l-161.099-161.098 40.597-40.597 161.099 161.099c1.946 1.946 4.192 3.566 6.653 4.795l19.432 9.715-52.171 52.17z' />
+            <path d='M128 1024c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM128 819.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis2.js
new file mode 100644
index 00000000..bbef9a9d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tennis2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Tennis2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M830.336 193.664c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936s-50.594-252.067-142.464-343.936zM716.8 537.6c0-103.394 36.138-201.866 102.262-280.256 63.936 75.771 102.538 173.584 102.538 280.256s-38.602 204.485-102.538 280.256c-66.125-78.392-102.262-176.864-102.262-280.256zM153.738 257.344c66.126 78.39 102.262 176.862 102.262 280.256 0 103.392-36.138 201.864-102.262 280.256-63.938-75.771-102.538-173.584-102.538-280.256s38.6-204.485 102.538-280.256zM189.195 855.195c76.27-88.309 118.005-200.115 118.005-317.595 0-117.482-41.734-229.286-118.006-317.595 77.848-72.896 182.397-117.605 297.206-117.605s219.36 44.709 297.206 117.605c-76.272 88.309-118.006 200.114-118.006 317.595 0 117.48 41.734 229.286 118.005 317.597-77.846 72.894-182.395 117.603-297.205 117.603s-219.358-44.709-297.205-117.605z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignCenter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignCenter.js
new file mode 100644
index 00000000..613a7b3a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignCenter.js
@@ -0,0 +1,16 @@
+// Icon: Linear.TextAlignCenter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 409.6h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 716.8h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignJustify.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignJustify.js
new file mode 100644
index 00000000..9b9fa53b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignJustify.js
@@ -0,0 +1,16 @@
+// Icon: Linear.TextAlignJustify
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 716.8h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignLeft.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignLeft.js
new file mode 100644
index 00000000..1c0fd0f8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignLeft.js
@@ -0,0 +1,16 @@
+// Icon: Linear.TextAlignLeft
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 409.6h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 716.8h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignRight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignRight.js
new file mode 100644
index 00000000..8f2b28b7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextAlignRight.js
@@ -0,0 +1,16 @@
+// Icon: Linear.TextAlignRight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 409.6h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 563.2h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 716.8h-563.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormat.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormat.js
new file mode 100644
index 00000000..4538f780
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormat.js
@@ -0,0 +1,13 @@
+// Icon: Linear.TextFormat
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M844.8 972.8h-716.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h716.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M817.13 783.515l-131.562-306.978c-0.032-0.075-0.064-0.149-0.098-0.224l-175.539-409.598c-4.035-9.413-13.291-15.515-23.531-15.515s-19.496 6.102-23.531 15.515l-175.539 409.594c-0.034 0.078-0.067 0.155-0.099 0.232l-131.562 306.974c-5.568 12.995 0.451 28.045 13.446 33.614 12.992 5.57 28.045-0.451 33.614-13.445l125.008-291.685h317.325l125.008 291.685c4.16 9.707 13.61 15.523 23.542 15.522 3.365 0 6.784-0.667 10.072-2.077 12.995-5.568 19.016-20.619 13.445-33.614zM349.68 460.8l136.72-319.013 136.72 319.013h-273.44z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormatRemove.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormatRemove.js
new file mode 100644
index 00000000..373b8b50
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextFormatRemove.js
@@ -0,0 +1,14 @@
+// Icon: Linear.TextFormatRemove
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 51.2h-614.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h276.981l-97.432 584.592c-2.325 13.946 7.098 27.134 21.043 29.459 1.426 0.237 2.842 0.354 4.24 0.354 12.288 0 23.133-8.875 25.221-21.397l98.834-593.008h285.514c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M537.6 819.2h-460.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M804.203 844.8l84.299-84.299c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-84.299 84.299-84.299-84.299c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l84.299 84.299-84.299 84.299c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l84.299-84.298 84.299 84.299c4.998 4.998 11.549 7.498 18.101 7.498s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-84.298-84.298z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextSize.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextSize.js
new file mode 100644
index 00000000..bd494860
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextSize.js
@@ -0,0 +1,13 @@
+// Icon: Linear.TextSize
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M356.331 834.715l-65.734-153.381c-0.030-0.072-0.061-0.144-0.093-0.216l-87.773-204.803c-4.035-9.413-13.291-15.515-23.531-15.515s-19.496 6.102-23.531 15.515l-87.771 204.803c-0.032 0.072-0.062 0.144-0.093 0.216l-65.736 153.381c-5.568 12.995 0.451 28.045 13.446 33.614 12.997 5.57 28.046-0.451 33.614-13.445l59.179-138.085h141.781l59.179 138.085c4.162 9.707 13.61 15.523 23.542 15.522 3.363 0 6.784-0.667 10.072-2.077 12.997-5.568 19.016-20.619 13.448-33.614zM130.251 665.6l48.949-114.213 48.949 114.213h-97.898z' />
+            <path d='M1022.032 834.954l-106.669-256.003c-0.029-0.069-0.056-0.138-0.085-0.205l-149.246-358.192c-3.976-9.539-13.298-15.754-23.632-15.754s-19.656 6.214-23.632 15.754l-149.243 358.184c-0.032 0.075-0.061 0.149-0.093 0.222l-106.664 255.994c-5.438 13.051 0.733 28.038 13.784 33.478 13.048 5.435 28.040-0.734 33.477-13.784l100.104-240.248h264.533l100.102 240.246c4.098 9.832 13.616 15.76 23.642 15.76 3.282 0 6.618-0.634 9.835-1.974 13.053-5.44 19.224-20.427 13.787-33.478zM631.467 563.2l110.933-266.24 110.933 266.24h-221.866z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextWrap.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextWrap.js
new file mode 100644
index 00000000..a229d7c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TextWrap.js
@@ -0,0 +1,15 @@
+// Icon: Linear.TextWrap
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 256h-768c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M896 870.4h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 409.6h-665.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h665.6c42.349 0 76.8 34.451 76.8 76.8s-34.451 76.8-76.8 76.8h-270.997l58.699-58.699c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203l102.4 102.4c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-58.698-58.698h270.997c70.579 0 128-57.421 128-128s-57.421-128-128-128z' />
+            <path d='M332.8 665.6h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Texture.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Texture.js
new file mode 100644
index 00000000..6724e349
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Texture.js
@@ -0,0 +1,47 @@
+// Icon: Linear.Texture
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M25.6 102.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M128 102.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 102.4c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 102.4c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504 7.504 11.36 7.504 18.096-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 102.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M947.2 102.4h-409.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 204.8c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M128 204.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 204.8c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 204.8c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 204.8c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M947.2 204.8h-409.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 307.2c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504 7.504 11.36 7.504 18.096-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M128 307.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 307.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 307.2c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 307.2c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M947.2 307.2h-409.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 409.6c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M128 409.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 409.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096c-4.752 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 409.6c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504s13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 409.6c-6.736 0-13.344-2.736-18.096-7.504-4.768-4.768-7.504-11.36-7.504-18.096s2.736-13.328 7.504-18.096 11.36-7.504 18.096-7.504 13.328 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M947.2 409.6h-409.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 512c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M128 512c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M230.4 512c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M332.8 512c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.096-11.36 7.504-18.096 7.504z' />
+            <path d='M435.2 512c-6.736 0-13.328-2.736-18.096-7.504s-7.504-11.36-7.504-18.096 2.736-13.328 7.504-18.096c4.752-4.768 11.36-7.504 18.096-7.504s13.344 2.736 18.096 7.504c4.768 4.752 7.504 11.36 7.504 18.096s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M947.2 512h-409.6c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M25.6 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M128 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 1024c-14.138 0-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v409.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M947.2 563.2h-409.6c-14.139 0-25.6 11.461-25.6 25.6v409.6c0 14.139 11.461 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6v-409.6c0-14.139-11.461-25.6-25.6-25.6zM716.8 768h-51.2v-51.2h51.2v51.2zM768 716.8h51.2v51.2h-51.2v-51.2zM614.4 768h-51.2v-51.2h51.2v51.2zM614.4 819.2v51.2h-51.2v-51.2h51.2zM665.6 819.2h51.2v51.2h-51.2v-51.2zM768 819.2h51.2v51.2h-51.2v-51.2zM870.4 819.2h51.2v51.2h-51.2v-51.2zM870.4 768v-51.2h51.2v51.2h-51.2zM870.4 665.6v-51.2h51.2v51.2h-51.2zM819.2 665.6h-51.2v-51.2h51.2v51.2zM716.8 665.6h-51.2v-51.2h51.2v51.2zM614.4 665.6h-51.2v-51.2h51.2v51.2zM563.2 921.6h51.2v51.2h-51.2v-51.2zM665.6 921.6h51.2v51.2h-51.2v-51.2zM768 921.6h51.2v51.2h-51.2v-51.2zM870.4 921.6h51.2v51.2h-51.2v-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Theater.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Theater.js
new file mode 100644
index 00000000..2959b213
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Theater.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Theater
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.824 409.603c-8.774 0-17.315-4.515-22.083-12.614-0.45-0.741-23.998-38.589-54.741-38.589-30.845 0-54.462 38.114-54.688 38.499-7.122 12.213-22.797 16.341-35.011 9.213-12.213-7.123-16.338-22.8-9.213-35.011 1.522-2.61 37.976-63.901 98.912-63.901s97.39 61.291 98.912 63.901c7.123 12.213 3 27.888-9.213 35.011-4.058 2.366-8.494 3.491-12.875 3.491z' />
+            <path d='M844.824 409.603c-8.806 0-17.378-4.549-22.136-12.704-0.173-0.288-23.798-38.499-54.688-38.499-30.843 0-54.462 38.114-54.688 38.499-7.125 12.213-22.798 16.338-35.013 9.213-12.213-7.125-16.336-22.8-9.213-35.011 1.523-2.61 37.978-63.901 98.914-63.901s97.39 61.291 98.912 63.901c7.123 12.213 3 27.888-9.213 35.011-4.058 2.366-8.494 3.491-12.875 3.491z' />
+            <path d='M640 716.8c-116.878 0-174.118-111.792-176.498-116.552-3.966-7.936-3.544-17.36 1.122-24.907 4.664-7.547 12.904-12.141 21.776-12.141h307.2c8.872 0 17.112 4.594 21.776 12.141 4.664 7.549 5.090 16.971 1.12 24.907-2.379 4.76-59.618 116.552-176.496 116.552zM535.942 614.4c21.834 24.149 56.834 51.2 104.058 51.2 47.219 0 82.213-27.040 104.053-51.2h-208.11z' />
+            <path d='M1013.373 107.242c-6.67-4.811-15.248-6.125-23.056-3.533-1.501 0.499-152.491 49.891-350.317 49.891-197.776 0-347.362-49.37-348.835-49.864-7.802-2.624-16.392-1.338-23.082 3.461s-10.664 12.52-10.68 20.754c-0.006 3.072 0.011 51.31 6.102 122.162-135.046-13.086-227.374-43.651-228.358-43.981-7.802-2.616-16.387-1.325-23.070 3.474-6.685 4.798-10.656 12.517-10.672 20.746-0.010 4.77 0.034 118.395 22.784 256.525 13.43 81.534 32.048 154.533 55.336 216.96 29.677 79.555 67.227 142.437 111.605 186.902 54.344 54.453 119.237 82.062 192.87 82.062 83.765 0 155.813-35.49 214.386-105.488 13.539 2.048 27.413 3.088 41.614 3.088 90.243 0 166.845-41.128 227.68-122.24 46.648-62.198 83.912-148.178 110.757-255.55 45.046-180.186 45.563-357.163 45.563-364.61 0-8.224-3.958-15.946-10.627-20.758zM384 921.6c-60.365 0-111.587-21.914-156.597-66.994-145.197-145.427-169.798-481.416-173.957-589.805 41.634 11.147 118.118 28.578 215.267 37.216 2.974 25.91 6.73 53.646 11.474 82.456 3.414 20.73 7.166 40.899 11.243 60.49-9.477 8.424-21.71 15.837-35.43 15.837-30.89 0-54.515-38.211-54.688-38.499-7.123-12.211-22.794-16.338-35.011-9.213-12.213 7.123-16.338 22.8-9.213 35.011 1.522 2.608 37.976 63.901 98.912 63.901 18.245 0 34.254-5.403 47.843-13.144 9.323 36.718 19.901 71.005 31.68 102.579 9.693 25.981 20.229 50.171 31.565 72.536-66.587 26.053-106.443 104.301-108.384 108.181-3.966 7.936-3.544 17.36 1.122 24.907 4.664 7.547 12.904 12.141 21.776 12.141h201.326c18.957 13.912 38.97 25.018 59.986 33.275-45.306 46.443-97.592 69.125-158.914 69.125zM428.41 768h-99.464c15.659-19.798 37.87-41.541 63.768-48.733 11.272 17.8 23.182 34.053 35.696 48.733zM928.566 480.978c-25.203 100.515-59.541 180.168-102.058 236.744-51.317 68.285-112.323 101.478-186.509 101.478-49.646 0-93.104-14.837-132.013-45.179-0.258-0.218-0.528-0.419-0.795-0.626-8.122-6.389-16.050-13.437-23.789-21.189-20.73-20.762-38.99-45.419-55.094-72.731-0.357-0.682-0.738-1.346-1.152-1.989-95.674-164.083-114.155-422.466-117.71-515.048 56.995 15.306 179.162 42.362 330.554 42.362 151.632 0 274.651-27.136 331.914-42.421-2.381 60.115-11.142 190.163-43.347 318.598z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Thermometer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Thermometer.js
new file mode 100644
index 00000000..ab3f06d6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Thermometer.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Thermometer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 153.6h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 256h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 358.4h-51.2c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 460.8h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 563.2h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M460.8 721.203v-490.803c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v490.803c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8c0-33.373-21.403-61.829-51.2-72.397zM435.2 819.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M435.2 1024c-127.043 0-230.4-103.357-230.4-230.4 0-76.96 38.878-149.048 102.398-191.594l0.002-474.006c0-70.579 57.421-128 128-128s128 57.421 128 128l0.010 474.010c63.515 42.547 102.39 114.634 102.39 191.59 0 127.043-103.357 230.4-230.4 230.4zM435.2 51.2c-42.347 0-76.8 34.453-76.8 76.8l-0.002 488.2c0 9.139-4.87 17.584-12.781 22.16-55.278 31.976-89.618 91.461-89.618 155.24 0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2c0-63.776-34.338-123.259-89.611-155.237-7.909-4.576-12.779-13.022-12.779-22.16l-0.010-488.203c0-42.347-34.453-76.8-76.8-76.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDGlasses.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDGlasses.js
new file mode 100644
index 00000000..3586c595
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDGlasses.js
@@ -0,0 +1,14 @@
+// Icon: Linear.3DGlasses
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 768h-281.6c-38.040 0-79.939-27.23-95.387-61.99l-58.213-130.976-58.211 130.976c-15.45 34.76-57.35 61.99-95.389 61.99h-281.6c-42.347 0-76.8-34.451-76.8-76.8v-307.2c0-42.347 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.453 76.8 76.8v307.2c0 42.349-34.451 76.8-76.8 76.8zM512 513.888c8.675 0 30.349 3.363 44.187 34.502l60.813 136.826c7.347 16.53 30.51 31.584 48.6 31.584h281.6c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-870.4c-14.115 0-25.6 11.485-25.6 25.6v307.2c0 14.115 11.485 25.6 25.6 25.6h281.6c18.090 0 41.254-15.054 48.6-31.584l60.811-136.826c13.842-31.141 35.514-34.502 44.189-34.502z' />
+            <path d='M896 665.6h-204.8c-9.698 0-18.562-5.478-22.898-14.152l-102.4-204.8c-3.968-7.934-3.544-17.36 1.12-24.907s12.904-12.141 21.776-12.141h307.2c14.139 0 25.6 11.462 25.6 25.6v204.8c0.002 14.139-11.459 25.6-25.598 25.6zM707.022 614.4h163.378v-153.6h-240.178l76.8 153.6z' />
+            <path d='M332.8 665.6h-204.8c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6h307.2c8.872 0 17.112 4.594 21.776 12.141 4.666 7.547 5.088 16.971 1.122 24.907l-102.4 204.8c-4.336 8.674-13.2 14.152-22.898 14.152zM153.6 614.4h163.378l76.8-153.6h-240.178v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDRotate.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDRotate.js
new file mode 100644
index 00000000..d80d6660
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThreeDRotate.js
@@ -0,0 +1,13 @@
+// Icon: Linear.3DRotate
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 921.6c-127.362 0-247.494-27.773-338.267-78.203-40.118-22.288-72.672-47.962-96.933-76.026v26.229c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 58.666 43.256 115.006 121.798 158.64 83.294 46.275 194.595 71.76 313.402 71.76 89.301 0 175.28-14.555 248.642-42.090 69.854-26.219 123.653-62.24 155.578-104.173 8.566-11.25 24.63-13.424 35.877-4.861 11.248 8.566 13.426 24.627 4.861 35.877-76.982 101.112-251.638 166.446-444.957 166.446z' />
+            <path d='M947.2 460.8c-14.139 0-25.6 11.461-25.6 25.6v26.608c-35.178-40.877-87.462-76.49-153.6-103.394v-128.014c0-10.467-6.373-19.882-16.093-23.768l-256-102.4c-6.102-2.442-12.912-2.442-19.016 0l-256 102.4c-9.718 3.886-16.091 13.301-16.091 23.768v128.008c-70.066 28.491-125.514 67.075-160.971 112.158-8.741 11.114-6.818 27.208 4.296 35.949 4.691 3.691 10.269 5.48 15.808 5.48 7.581 0 15.090-3.355 20.139-9.774 26.786-34.056 68.142-64.147 120.728-88.085v123.464c0 10.469 6.373 19.882 16.093 23.768l256 102.4c3.051 1.221 6.28 1.832 9.507 1.832s6.456-0.611 9.507-1.832l256-102.4c9.72-3.886 16.093-13.299 16.093-23.768v-123.422c42.835 19.557 78.677 43.426 104.853 70.059 32.346 32.912 48.747 68.091 48.747 104.563 0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.139-11.461-25.6-25.6-25.6zM486.4 206.771l187.070 74.829-187.070 74.829-187.069-74.829 187.069-74.829zM256 319.411l204.8 81.92v252.056l-204.8-81.92v-252.056zM512 653.387v-252.054l204.8-81.92v252.056l-204.8 81.918z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown.js
new file mode 100644
index 00000000..b525afd9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsDown
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.517 450.149c22.662 26.155 35.565 69.381 35.565 110.541 0 27.17-5.899 50.974-17.056 68.842-14.526 23.259-37.762 36.069-65.426 36.069h-134.053c72.966 132.683 91.408 232.587 54.766 297.302-25.534 45.096-72.366 61.098-104.714 61.098-12.811 0-23.65-9.469-25.368-22.165-9.147-67.554-60.811-148.131-141.742-221.074-77.518-69.869-172.765-125.768-270.642-159.208-12.317 26.010-38.811 44.046-69.448 44.046h-153.6c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.347 34.453-76.8 76.8-76.8h153.6c32.437 0 60.222 20.226 71.459 48.718 100.421-12.57 138.195-32.754 174.794-52.314 45.802-24.482 89.062-47.605 230.547-47.605 36.854 0 71.587 9.624 97.8 27.101 25.61 17.074 41.968 41.006 47.4 68.755 20.414 8.283 38.544 27.426 52.454 55.893 13.53 27.688 22.272 63.077 22.272 90.166 0 5.069-0.296 9.726-0.89 14.014 12.944 9.528 24.56 24.243 34.152 43.592 13.837 27.912 22.099 62.866 22.099 93.494 0 21.694-4.027 39.802-11.968 53.822-0.645 1.128-1.312 2.234-2.003 3.31zM230.4 102.4h-153.6c-14.115 0-25.6 11.485-25.6 25.6v460.8c0 14.115 11.485 25.6 25.6 25.6h153.6c14.115 0 25.6-11.485 25.6-25.6v-460.738c0-0.022 0-0.043 0-0.066-0.002-14.114-11.486-25.597-25.6-25.597zM938.944 497.986c-7.739-15.546-15.57-21.186-18.944-21.186-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c2.149 0 3.699 0 5.971-4.008 3.378-5.965 5.315-16.382 5.315-28.582 0-22.77-6.427-49.883-16.771-70.754-10.131-20.437-20.451-27.856-24.915-27.856-14.139 0-25.6-11.461-25.6-25.6 0-9.067 4.715-17.034 11.827-21.582 1.581-16.206-5.976-59.629-25.627-87.947-7.438-10.722-15.238-16.87-21.4-16.87-14.139 0-25.6-11.461-25.6-25.6 0-45.072-49.765-65.6-96-65.6-128.659 0-164.691 19.259-206.413 41.56-38.992 20.84-82.864 44.29-193.587 58.085v419.179c107.558 35.258 212.589 96.114 297.566 172.704 81.554 73.502 135.12 152.979 153.286 226.603 13.933-4.477 29.651-13.896 39.706-31.656 17.096-30.192 29.896-107.299-76.43-284.506-4.746-7.909-4.87-17.758-0.325-25.784s13.053-12.987 22.277-12.987h178.32c10.17 0 16.749-3.586 21.998-11.99 5.986-9.586 9.283-24.402 9.283-41.72 0-21.733-5.211-45.174-13.938-62.702z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown2.js
new file mode 100644
index 00000000..f4c03146
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsDown2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M995.123 601.333c-24.955 44.45-58.646 54.75-93.88 62.125-19.522 4.085-51.522 3.275-85.394 2.418-21.726-0.549-54.341-1.376-63.152 0.794-3.805 1.994-13.243 8.187-17.352 22.061-4.83 16.31-3.739 46.954 28.894 100.315 10.875 17.786 17.418 48.205 17.498 81.371 0.091 37.043-7.866 71.725-22.405 97.656-20.512 36.589-52.925 55.928-93.733 55.928-9.773 0-18.696-5.565-22.992-14.344-19.77-40.384-60.635-128.933-100.155-214.566-34.942-75.717-67.947-147.237-78.95-169.242-2.334-4.67-4.41-9.019-6.416-13.222-9.867-20.675-14.73-30.086-26.6-36.515-13.859-7.504-38.453-11.59-76.584-12.635-10.643 29.653-39.032 50.925-72.302 50.925h-204.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h204.8c33.251 0 61.626 21.246 72.285 50.872 29.698-0.899 85-4.195 125.189-16.202 78.821-23.542 154.362-34.509 237.726-34.509h0.802c0.269 0 0.528 0 0.797 0 64.467 0 111.126 0.043 149.365 10.483 42.019 11.474 72.146 34.667 100.738 77.557 17.387 26.078 55.499 123.877 55.499 244.598 0 99.901 0 165.894-28.877 217.333zM281.6 102.4h-204.8c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h204.8c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6zM925.901 167.8c-43.392-65.086-81.52-65.238-207.418-65.238-0.293 0-0.589 0-0.883 0h-0.802c-79.333 0-148.131 9.982-223.074 32.368-44.509 13.296-102.389 17.155-135.325 18.253v359.208c45.856 1.483 75.442 7.312 96.467 18.701 27.022 14.634 37.419 36.419 48.426 59.485 1.907 3.995 3.88 8.126 6.003 12.376 11.362 22.722 44.53 94.594 79.645 170.686 33.154 71.842 70.213 152.146 91.874 197.411 14.325-3.581 25.283-12.722 33.858-28.014 10.15-18.106 15.933-44.53 15.866-72.494-0.062-25.354-5.067-46.75-9.979-54.784-34.077-55.728-45.618-103.357-34.301-141.565 10.126-34.19 34.914-49.213 45.099-54.085 13.699-6.554 35.528-6.686 85.79-5.414 26.701 0.674 59.92 1.515 73.611-1.349 33.082-6.923 46.349-13.253 59.72-37.075 22.322-39.763 22.322-100.435 22.322-192.269 0-109.942-34.88-198.168-46.899-216.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown3.js
new file mode 100644
index 00000000..dd6c4067
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsDown3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsDown3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 409.6c0 44.606-28.678 82.619-68.558 96.629 10.955 16.298 17.358 35.899 17.358 56.971 0 56.464-45.936 102.4-102.4 102.4h-153.6v256c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-256c-6.326 0-62.733-0.93-94.902-33.098-25.33-25.331-44.278-55.854-57.928-93.315-17.498-48.021-26.37-108.85-26.37-180.787 0-61.979 9.11-131.048 25.651-194.482 9.509-36.462 29.771-101.944 58.646-130.819 32.17-32.171 88.576-33.099 94.902-33.099h307.2c56.464 0 102.4 45.936 102.4 102.4 0 21.072-6.403 40.674-17.358 56.973 39.88 14.008 68.558 52.021 68.558 96.627 0 21.072-6.403 40.674-17.358 56.973 39.88 14.008 68.558 52.021 68.558 96.627zM409.6 921.6c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-256h-102.4v256zM768 358.4h-230.4c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h179.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-307.131c-10.608 0.059-44.176 3.51-58.768 18.099-27.906 27.909-69.301 161.598-69.301 289.101 0 168.597 52.162 220.757 69.302 237.898 14.584 14.586 48.13 18.040 58.754 18.102h358.344c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-179.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h230.4c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp.js
new file mode 100644
index 00000000..67d4c042
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsUp
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M968.517 573.851c22.662-26.155 35.565-69.381 35.565-110.541 0-27.17-5.899-50.974-17.056-68.842-14.526-23.259-37.762-36.069-65.426-36.069h-134.053c72.966-132.683 91.408-232.587 54.766-297.302-25.534-45.096-72.366-61.098-104.714-61.098-12.811 0-23.65 9.469-25.368 22.165-9.147 67.554-60.811 148.131-141.742 221.074-77.518 69.869-172.765 125.768-270.642 159.208-12.317-26.010-38.811-44.046-69.448-44.046h-153.6c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 42.347 34.453 76.8 76.8 76.8h153.6c32.437 0 60.222-20.226 71.459-48.718 100.421 12.57 138.195 32.754 174.794 52.314 45.802 24.482 89.062 47.605 230.547 47.605 36.854 0 71.587-9.624 97.8-27.101 25.61-17.074 41.968-41.006 47.4-68.755 20.414-8.283 38.544-27.426 52.454-55.893 13.53-27.688 22.272-63.077 22.272-90.166 0-5.069-0.296-9.726-0.89-14.014 12.944-9.528 24.56-24.243 34.152-43.592 13.837-27.912 22.099-62.866 22.099-93.494 0-21.694-4.027-39.802-11.968-53.822-0.645-1.128-1.312-2.234-2.003-3.31zM230.4 921.6h-153.6c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v460.738c0 0.022 0 0.043 0 0.066-0.002 14.114-11.486 25.597-25.6 25.597zM938.944 526.014c-7.739 15.546-15.57 21.186-18.944 21.186-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c2.149 0 3.699 0 5.971 4.008 3.378 5.965 5.315 16.382 5.315 28.582 0 22.77-6.427 49.883-16.771 70.754-10.131 20.437-20.451 27.856-24.915 27.856-14.139 0-25.6 11.461-25.6 25.6 0 9.067 4.715 17.034 11.827 21.582 1.581 16.206-5.976 59.629-25.627 87.947-7.438 10.722-15.238 16.87-21.4 16.87-14.139 0-25.6 11.461-25.6 25.6 0 45.072-49.765 65.6-96 65.6-128.659 0-164.691-19.259-206.413-41.56-38.992-20.84-82.864-44.29-193.587-58.085v-419.179c107.558-35.258 212.589-96.114 297.566-172.704 81.554-73.502 135.12-152.979 153.286-226.603 13.933 4.477 29.651 13.896 39.706 31.656 17.096 30.192 29.896 107.299-76.43 284.506-4.746 7.909-4.87 17.758-0.325 25.784 4.544 8.026 13.053 12.987 22.277 12.987h178.32c10.17 0 16.749 3.586 21.998 11.99 5.986 9.586 9.283 24.402 9.283 41.72 0 21.733-5.211 45.174-13.938 62.702z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp2.js
new file mode 100644
index 00000000..350fdda3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsUp2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M995.123 473.867c-24.955-44.45-58.646-54.75-93.88-62.125-19.522-4.085-51.522-3.275-85.394-2.418-21.726 0.549-54.341 1.376-63.152-0.794-3.805-1.994-13.243-8.187-17.352-22.061-4.83-16.31-3.739-46.954 28.894-100.315 10.875-17.786 17.418-48.205 17.498-81.371 0.091-37.043-7.866-71.725-22.405-97.656-20.512-36.589-52.925-55.928-93.733-55.928-9.773 0-18.696 5.565-22.992 14.344-19.77 40.384-60.635 128.933-100.155 214.566-34.942 75.717-67.947 147.237-78.95 169.242-2.334 4.67-4.41 9.019-6.416 13.222-9.867 20.675-14.73 30.086-26.6 36.515-13.859 7.504-38.453 11.59-76.584 12.635-10.643-29.653-39.032-50.925-72.302-50.925h-204.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h204.8c33.251 0 61.626-21.246 72.285-50.872 29.698 0.899 85 4.195 125.189 16.202 78.821 23.542 154.362 34.509 237.726 34.509h0.802c0.269 0 0.528 0 0.797 0 64.467 0 111.126-0.043 149.365-10.483 42.019-11.474 72.146-34.667 100.738-77.557 17.387-26.078 55.499-123.877 55.499-244.598 0-99.901 0-165.894-28.877-217.333zM281.6 972.8h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6zM925.901 907.4c-43.392 65.086-81.52 65.238-207.418 65.238-0.293 0-0.589 0-0.883 0h-0.802c-79.333 0-148.131-9.982-223.074-32.368-44.509-13.296-102.389-17.155-135.325-18.253v-359.208c45.856-1.483 75.442-7.312 96.467-18.701 27.022-14.634 37.419-36.419 48.426-59.485 1.907-3.995 3.88-8.126 6.003-12.376 11.362-22.722 44.53-94.594 79.645-170.686 33.154-71.842 70.213-152.146 91.874-197.411 14.325 3.581 25.283 12.722 33.858 28.014 10.15 18.106 15.933 44.53 15.866 72.494-0.062 25.354-5.067 46.75-9.979 54.784-34.077 55.728-45.618 103.357-34.301 141.565 10.126 34.19 34.914 49.213 45.099 54.085 13.699 6.554 35.528 6.686 85.79 5.414 26.701-0.674 59.92-1.515 73.611 1.349 33.082 6.923 46.349 13.253 59.72 37.075 22.322 39.763 22.322 100.435 22.322 192.269 0 109.942-34.88 198.168-46.899 216.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp3.js
new file mode 100644
index 00000000..561083a4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ThumbsUp3.js
@@ -0,0 +1,12 @@
+// Icon: Linear.ThumbsUp3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M870.4 614.4c0-44.606-28.678-82.619-68.558-96.629 10.955-16.298 17.358-35.899 17.358-56.971 0-56.464-45.936-102.4-102.4-102.4h-153.6v-256c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v256c-6.326 0-62.733 0.93-94.902 33.098-25.33 25.331-44.278 55.854-57.928 93.315-17.498 48.021-26.37 108.85-26.37 180.787 0 61.979 9.11 131.048 25.651 194.482 9.509 36.462 29.771 101.944 58.646 130.819 32.17 32.171 88.576 33.099 94.902 33.099h307.2c56.464 0 102.4-45.936 102.4-102.4 0-21.072-6.403-40.674-17.358-56.973 39.88-14.008 68.558-52.021 68.558-96.627 0-21.072-6.403-40.674-17.358-56.973 39.88-14.008 68.558-52.021 68.558-96.627zM409.6 102.4c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v256h-102.4v-256zM768 665.6h-230.4c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h179.2c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-204.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h153.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-307.131c-10.608-0.059-44.176-3.51-58.768-18.099-27.906-27.909-69.301-161.598-69.301-289.101 0-168.597 52.162-220.757 69.302-237.898 14.584-14.586 48.13-18.040 58.754-18.102h358.344c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-179.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h230.4c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ticket.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ticket.js
new file mode 100644
index 00000000..514e2591
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Ticket.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Ticket
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 819.2h-972.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6 42.347 0 76.8-34.451 76.8-76.8s-34.453-76.8-76.8-76.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h972.8c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8c14.139 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6zM51.2 768h921.6v-104.971c-58.352-11.894-102.4-63.616-102.4-125.429s44.048-113.534 102.4-125.429v-104.971h-921.6v104.971c58.352 11.894 102.4 63.616 102.4 125.429s-44.048 113.534-102.4 125.429v104.971z' />
+            <path d='M793.6 716.8h-563.2c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6h563.2c14.139 0 25.6 11.461 25.6 25.6v307.2c0 14.139-11.461 25.6-25.6 25.6zM256 665.6h512v-256h-512v256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tie.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tie.js
new file mode 100644
index 00000000..a6ab957e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tie.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Tie
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.32 892.226l-100.318-672.77c15.131-13.909 30.299-31.747 45.445-53.514 28.528-40.992 46.968-81.437 47.741-83.139 9.198-20.302 8.499-41.216-1.92-57.374-10.419-16.162-29.178-25.429-51.467-25.429h-236.8c-22.29 0-41.050 9.267-51.467 25.427-10.419 16.158-11.118 37.070-1.918 57.374 0.771 1.701 19.211 42.147 47.739 83.139 14.958 21.494 29.934 39.157 44.878 52.989l-99.755 673.318c-1.451 9.8 2.88 19.557 11.123 25.051l153.6 102.4c4.299 2.867 9.25 4.301 14.2 4.301s9.901-1.434 14.2-4.301l153.6-102.4c8.25-5.499 12.582-15.267 11.12-25.074zM361.25 61.67c-2.443-5.394-1.896-8.174-1.686-8.499s2.517-1.971 8.437-1.971h236.8c5.92 0 8.229 1.646 8.437 1.971s0.757 3.106-1.686 8.499c-15.677 34.597-51.81 96.475-88.010 126.232-1.294 0.853-2.504 1.811-3.614 2.872-11.451 8.723-22.843 14.026-33.526 14.026-21.901 0-51.653-24.619-81.63-67.544-25.966-37.181-43.352-75.218-43.52-75.586zM486.4 967.634l-125.899-83.933 93.909-633.866c10.718 4.093 21.389 6.165 31.99 6.165 10.406 0 20.88-1.992 31.4-5.934l94.485 633.643-125.885 83.925z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse.js
new file mode 100644
index 00000000..d2772f83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse.js
@@ -0,0 +1,15 @@
+// Icon: Linear.TimeLapse
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 409.6c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M691.2 921.602h-358.4c-42.347 0-76.8-34.451-76.8-76.8v-102.403c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.403c0 14.115 11.485 25.6 25.6 25.6h358.4c14.115 0 25.6-11.485 25.6-25.6v-358.4c0-14.115-11.485-25.6-25.6-25.6h-51.2c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h51.2c42.349 0 76.8 34.451 76.8 76.8v358.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M971.174 877.965c-0.003 0-0.005 0-0.006 0-9.88-0.002-19.978-2.547-30.013-7.565l-62.010-31.006c-33.614-16.806-59.946-59.413-59.946-96.994v-153.6c0-37.581 26.331-80.187 59.947-96.994l62.010-31.006c10.037-5.019 20.136-7.565 30.016-7.565 30.61 0 52.827 24.715 52.827 58.765v307.2c0 16.171-4.72 30.312-13.65 40.891-9.731 11.525-23.645 17.874-39.176 17.874zM971.171 504.435c-0.843 0-3.224 0.211-7.118 2.158l-62.010 31.006c-16.56 8.282-31.643 32.685-31.643 51.2v153.6c0 18.515 15.083 42.918 31.643 51.2l62.010 31.006c3.896 1.947 6.277 2.158 7.12 2.158 0.099 0 0.186-0.003 0.261-0.008 0.502-0.877 1.366-3.272 1.366-7.557v-307.2c0-4.286-0.866-6.682-1.366-7.557-0.075-0.005-0.162-0.008-0.262-0.008z' />
+            <path d='M281.6 665.6c-155.275 0-281.6-126.325-281.6-281.6 0-45.038 10.322-88.083 30.68-127.938 9.306-18.218 20.664-35.44 33.736-51.264l-38.816 0.002c-14.138 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6l102.381-0.003c11.014 0 20.797 7.045 24.283 17.494 3.488 10.448-0.099 21.957-8.906 28.573-58.568 44-92.158 111.187-92.158 184.336 0 127.042 103.357 230.4 230.4 230.4s230.4-103.358 230.4-230.4c0-127.043-103.357-230.4-230.4-230.4-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6c155.275 0 281.6 126.325 281.6 281.6s-126.325 281.6-281.6 281.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse2.js
new file mode 100644
index 00000000..7953cd00
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimeLapse2.js
@@ -0,0 +1,18 @@
+// Icon: Linear.TimeLapse2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-460.8c-42.347 0-76.8-34.453-76.8-76.8v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-307.2c0-14.115-11.485-25.6-25.6-25.6h-51.2c-6.789 0-13.301-2.698-18.101-7.499l-43.704-43.701h-194.195c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c6.789 0 13.301 2.698 18.101 7.499l43.704 43.701h40.595c42.347 0 76.8 34.453 76.8 76.8v307.2c0 42.347-34.453 76.8-76.8 76.8z' />
+            <path d='M716.8 819.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM716.8 563.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4z' />
+            <path d='M532.371 358.011c-11.907 0-22.573-8.352-25.054-20.472-18.528-90.55-89.030-160.941-179.61-179.33-13.856-2.813-22.808-16.325-19.995-30.181s16.317-22.811 30.181-19.995c54.086 10.979 103.422 37.501 142.677 76.696 39.25 39.192 65.845 88.483 76.906 142.546 2.834 13.851-6.098 27.378-19.949 30.213-1.726 0.354-3.454 0.523-5.155 0.523z' />
+            <path d='M30.747 358.403c-1.688 0-3.4-0.166-5.12-0.517-13.856-2.813-22.808-16.325-19.995-30.181 10.994-54.16 37.566-103.549 76.846-142.827 39.278-39.278 88.669-65.853 142.829-76.846 13.862-2.81 27.368 6.141 30.181 19.995 2.813 13.856-6.139 27.368-19.995 30.181-90.736 18.421-161.266 88.95-179.685 179.685-2.464 12.138-13.138 20.51-25.061 20.51z' />
+            <path d='M230.426 660.485c-1.69 0-3.4-0.166-5.12-0.515-54.16-10.995-103.549-37.568-142.827-76.846-39.278-39.282-65.851-88.67-76.845-142.83-2.813-13.854 6.139-27.366 19.995-30.181 13.866-2.813 27.368 6.139 30.181 19.997 18.419 90.734 88.949 161.264 179.683 179.683 13.856 2.814 22.808 16.326 19.995 30.181-2.464 12.136-13.139 20.512-25.062 20.512z' />
+            <path d='M332.773 660.485c-11.925 0-22.597-8.373-25.061-20.512-2.813-13.856 6.139-27.366 19.995-30.181 90.734-18.418 161.264-88.947 179.685-179.683 2.813-13.854 16.322-22.81 30.182-19.995 13.854 2.813 22.808 16.326 19.994 30.182-10.994 54.16-37.566 103.549-76.846 142.829-39.278 39.278-88.667 65.851-142.829 76.845-1.718 0.347-3.432 0.515-5.12 0.515z' />
+            <path d='M281.6 409.6c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer.js
new file mode 100644
index 00000000..69b0761d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Timer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M794.134 281.067c-76.134-76.134-175.515-120.557-282.134-126.701v-51.966h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.966c-106.618 6.144-205.998 50.566-282.133 126.702-82.198 82.198-127.467 191.486-127.467 307.731 0 116.246 45.269 225.536 127.467 307.734 82.2 82.197 191.488 127.466 307.733 127.466 116.246 0 225.536-45.269 307.734-127.466 82.197-82.198 127.466-191.488 127.466-307.734 0-116.245-45.269-225.533-127.466-307.733zM512 971.926v-24.726c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v24.726c-191.381-12.661-344.866-166.146-357.526-357.526h24.726c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.726c12.661-191.381 166.146-344.866 357.526-357.526v24.726c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-24.726c191.381 12.661 344.866 166.146 357.526 357.526h-24.726c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.726c-12.661 191.381-166.146 344.866-357.526 357.526z' />
+            <path d='M486.4 614.4c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer2.js
new file mode 100644
index 00000000..63b847cc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Timer2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Timer2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M794.134 281.067c-76.134-76.134-175.515-120.557-282.134-126.701v-51.966h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.966c-106.618 6.144-205.998 50.566-282.133 126.702-82.198 82.198-127.467 191.486-127.467 307.731 0 116.246 45.269 225.536 127.467 307.734 82.2 82.197 191.488 127.466 307.733 127.466 116.246 0 225.536-45.269 307.734-127.466 82.197-82.198 127.466-191.488 127.466-307.734 0-116.245-45.269-225.533-127.466-307.733zM486.4 972.8c-211.738 0-384-172.261-384-384 0-211.738 172.262-384 384-384 211.739 0 384 172.262 384 384 0 211.739-172.261 384-384 384z' />
+            <path d='M486.4 614.4c-14.138 0-25.6-11.461-25.6-25.6v-307.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v307.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed.js
new file mode 100644
index 00000000..c5ffe014
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed.js
@@ -0,0 +1,12 @@
+// Icon: Linear.TimerCrossed
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M794.133 281.067c-0.792-0.792-1.603-1.558-2.4-2.342l72.333-82.667c9.31-10.64 8.234-26.813-2.408-36.123-10.642-9.314-26.814-8.232-36.123 2.408l-72.275 82.6c-69.357-54.050-152.835-85.488-241.298-90.579 0.006-0.256 0.038-0.506 0.038-0.763v-51.2h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2c0 0.258 0.032 0.507 0.038 0.763-106.632 6.136-206.027 50.56-282.171 126.704-82.198 82.198-127.467 191.486-127.467 307.733 0 116.245 45.269 225.534 127.467 307.733 0.792 0.792 1.603 1.558 2.4 2.342l-72.333 82.667c-9.31 10.64-8.232 26.814 2.408 36.123 4.856 4.25 10.864 6.334 16.848 6.334 7.125 0 14.216-2.958 19.275-8.742l72.275-82.6c76.003 59.232 168.962 91.342 266.859 91.342 116.245 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733c0-116.246-45.269-225.534-127.467-307.733zM103.274 614.4h24.726c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-24.726c13.221-199.846 179.992-358.4 383.126-358.4 87.515 0 168.269 29.45 232.922 78.93l-207.322 236.938v-239.067c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v297.581l-245.85 280.973c-63.854-63.877-105.349-150.086-111.677-245.754zM512 971.926v-24.726c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v24.726c-77.634-5.136-149.026-33.44-207.322-78.054l504.371-576.426c63.854 63.877 105.347 150.086 111.677 245.754h-24.726c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h24.726c-12.661 191.381-166.146 344.866-357.526 357.526z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed2.js
new file mode 100644
index 00000000..adc0c126
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TimerCrossed2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.TimerCrossed2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M794.133 281.067c-0.792-0.792-1.603-1.558-2.4-2.342l72.333-82.667c9.31-10.64 8.234-26.813-2.408-36.123-10.642-9.314-26.814-8.232-36.123 2.408l-72.275 82.6c-69.357-54.050-152.835-85.488-241.298-90.579 0.006-0.256 0.038-0.506 0.038-0.763v-51.2h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2c0 0.258 0.032 0.507 0.038 0.763-106.632 6.136-206.027 50.56-282.171 126.704-82.198 82.198-127.467 191.486-127.467 307.733 0 116.245 45.269 225.534 127.467 307.733 0.792 0.792 1.603 1.558 2.4 2.342l-72.333 82.667c-9.31 10.64-8.232 26.814 2.408 36.123 4.856 4.25 10.864 6.334 16.848 6.334 7.125 0 14.216-2.958 19.275-8.742l72.275-82.6c76.003 59.232 168.962 91.342 266.859 91.342 116.245 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733c0-116.246-45.269-225.534-127.467-307.733zM102.4 588.8c0-211.738 172.262-384 384-384 87.515 0 168.269 29.45 232.922 78.93l-207.322 236.938v-239.067c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v297.581l-245.85 280.973c-69.504-69.53-112.55-165.509-112.55-271.354zM486.4 972.8c-87.515 0-168.269-29.448-232.922-78.928l504.371-576.426c69.506 69.53 112.55 165.509 112.55 271.354 0 211.739-172.261 384-384 384z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tissue.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tissue.js
new file mode 100644
index 00000000..b046393f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tissue.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Tissue
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 582.755l-56.608-113.205c-16.805-33.618-59.408-59.95-96.992-59.95h-91.978c45.742-131.23 113.946-268.293 114.877-270.152 4.274-8.552 3.429-18.773-2.195-26.504-2.504-3.446-62.715-84.027-180.512-54.579-39.504 9.877-67.237 33.355-91.707 54.070-27.168 22.998-48.626 41.165-81.285 41.165-34.814 0-78.611-12.514-120.966-24.614-45.746-13.070-93.048-26.586-135.034-26.586-50.251 0-75.418 19.49-87.68 35.84-14.011 18.68-14.72 37.397-14.72 40.96 0 2.144 0.269 4.278 0.802 6.355 1.061 4.141 21.456 82.035 86.755 224.045h-61.957c-37.582 0-80.187 26.333-96.995 59.947l-56.605 113.21c-14.355 28.71-25.6 76.344-25.6 108.443v204.8c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-204.8c0-32.099-11.245-79.734-25.6-108.445zM209.28 168.96c7.536-10.048 23.693-15.36 46.72-15.36 34.814 0 78.611 12.514 120.966 24.614 45.746 13.070 93.048 26.586 135.034 26.586 51.421 0 84.861-28.31 114.366-53.288 22.166-18.766 43.104-36.493 71.043-43.477 60.888-15.221 99.522 9.293 116.627 24.544-27.221 56.16-115.782 244.906-144.032 379.419h-52.779c8.754-50.328 35.539-136.53 47.061-171.106 4.47-13.413-2.778-27.91-16.192-32.381-13.41-4.469-27.909 2.778-32.379 16.19-4.662 13.987-40.746 123.413-50.23 187.296h-113.894c-21.834-51.035-42.53-133.302-42.755-134.211-3.43-13.715-17.33-22.053-31.045-18.624-13.715 3.43-22.054 17.328-18.626 31.043 0.856 3.422 17.246 68.595 37.312 121.792h-48.146c-99.976-192.917-136.301-310.997-143.101-334.725 0.546-1.976 1.714-5.198 4.050-8.314zM128 492.443c8.28-16.56 32.685-31.643 51.2-31.643h86.15c7.941 16.379 16.411 33.453 25.429 51.2h-9.179c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-19.984c3.752-16.346 8.403-33.538 13.715-51.2h108.669c18.515 0 42.917 15.082 51.197 31.645l56.61 113.208c1.413 2.827 2.802 5.978 4.152 9.363-3.134-0.39-6.32-0.616-9.558-0.616h-870.4c-3.238 0-6.422 0.226-9.557 0.616 1.349-3.384 2.738-6.536 4.152-9.363l56.605-113.21zM972.8 896c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-204.8c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toggle.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toggle.js
new file mode 100644
index 00000000..c0d7c3ee
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toggle.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Toggle
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.398 1024c-3.912 0-7.834-0.896-11.446-2.702l-199.395-99.698h-505.957c-14.138 0-25.6-11.461-25.6-25.6v-716.8c0-14.138 11.462-25.6 25.6-25.6h505.957l199.395-99.698c7.936-3.966 17.358-3.542 24.907 1.122 7.547 4.664 12.141 12.904 12.141 21.776v921.6c0 8.872-4.594 17.112-12.141 21.776-4.11 2.541-8.779 3.824-13.461 3.824zM51.2 870.4h486.4c3.974 0 7.894 0.925 11.448 2.702l167.752 83.875v-838.755l-167.752 83.875c-3.554 1.778-7.474 2.702-11.448 2.702h-486.4v665.6z' />
+            <path d='M998.4 921.6h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h128v-665.6h-128c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.462 25.6 25.6v716.8c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M427.702 519.499l-102.4-102.4c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l58.699 58.696h-219.797c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h219.797l-58.699 58.699c-9.997 9.997-9.997 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.102-7.499l102.4-102.4c9.997-9.997 9.997-26.205 0-36.202z' />
+            <path d='M537.6 358.4c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 512c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 665.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 819.2c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOff.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOff.js
new file mode 100644
index 00000000..4ee2e4ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOff.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ToggleOff
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M665.6 870.4h-307.2c-95.733 0-185.734-37.28-253.427-104.973s-104.973-157.696-104.973-253.427c0-95.733 37.28-185.734 104.973-253.427s157.694-104.973 253.427-104.973h307.2c95.731 0 185.734 37.28 253.427 104.973s104.973 157.694 104.973 253.427c0 95.731-37.28 185.734-104.973 253.427s-157.696 104.973-253.427 104.973zM358.4 204.8c-169.39 0-307.2 137.81-307.2 307.2s137.81 307.2 307.2 307.2h307.2c169.39 0 307.2-137.81 307.2-307.2s-137.81-307.2-307.2-307.2h-307.2z' />
+            <path d='M358.4 716.8c-112.928 0-204.8-91.874-204.8-204.8 0-112.928 91.872-204.8 204.8-204.8s204.8 91.872 204.8 204.8c0 112.926-91.872 204.8-204.8 204.8zM358.4 358.4c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOn.js
new file mode 100644
index 00000000..756b29e1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToggleOn.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ToggleOn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M358.4 870.4h307.2c95.733 0 185.734-37.28 253.427-104.973s104.973-157.696 104.973-253.427c0-95.733-37.28-185.734-104.973-253.427s-157.694-104.973-253.427-104.973h-307.2c-95.731 0-185.734 37.28-253.427 104.973s-104.973 157.694-104.973 253.427c0 95.731 37.28 185.734 104.973 253.427s157.696 104.973 253.427 104.973zM665.6 204.8c169.39 0 307.2 137.81 307.2 307.2s-137.81 307.2-307.2 307.2h-307.2c-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2h307.2z' />
+            <path d='M665.6 716.8c112.928 0 204.8-91.874 204.8-204.8 0-112.928-91.872-204.8-204.8-204.8s-204.8 91.872-204.8 204.8c0 112.926 91.872 204.8 204.8 204.8zM665.6 358.4c84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6 68.904-153.6 153.6-153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToiletPaper.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToiletPaper.js
new file mode 100644
index 00000000..fe2d2420
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ToiletPaper.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ToiletPaper
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 512c-14.394 0-41.325-6.962-59.973-53.582-10.851-27.128-16.827-62.648-16.827-100.018s5.976-72.89 16.827-100.018c18.648-46.621 45.579-53.582 59.973-53.582s41.325 6.962 59.973 53.582c10.851 27.128 16.827 62.648 16.827 100.018s-5.976 72.89-16.827 100.018c-18.648 46.621-45.579 53.582-59.973 53.582zM281.6 256.638c-8.378 6.597-25.6 41.672-25.6 101.762s17.222 95.165 25.6 101.762c8.378-6.597 25.6-41.672 25.6-101.762s-17.222-95.165-25.6-101.762z' />
+            <path d='M742.4 51.2h-460.8c-100.486 0-179.2 134.938-179.2 307.2 0 8.566 0.203 17.037 0.586 25.406l-0.586 563.366c-0.010 8.877 4.581 17.125 12.13 21.797 4.114 2.546 8.786 3.83 13.472 3.83 3.912 0 7.834-0.898 11.446-2.702l90.952-45.475 90.952 45.475c7.206 3.603 15.691 3.603 22.898 0l90.95-45.475 90.952 45.475c7.206 3.603 15.691 3.603 22.898 0l90.95-45.475 90.952 45.475c7.936 3.97 17.362 3.544 24.907-1.12s12.141-12.906 12.141-21.778v-284.578c87.939-20.693 153.6-146.891 153.6-304.222 0-172.262-78.714-307.2-179.2-307.2zM195.462 171.538c23.966-43.938 55.362-69.138 86.138-69.138s62.171 25.2 86.138 69.138c26.995 49.491 41.862 115.854 41.862 186.862s-14.867 137.37-41.862 186.862c-23.966 43.938-55.362 69.138-86.138 69.138s-62.171-25.2-86.138-69.138c-23.914-43.843-38.301-100.928-41.275-162.75l0.051-49.334c3.093-61.397 17.454-118.061 41.224-161.64zM651.448 873.102c-7.206-3.603-15.691-3.603-22.898 0l-90.95 45.475-90.952-45.475c-7.206-3.603-15.691-3.603-22.898 0l-90.95 45.475-90.952-45.475c-7.206-3.603-15.691-3.603-22.898 0l-65.309 32.653 0.342-329.741c32.266 55.611 77.198 89.586 127.616 89.586h435.2v240.178l-65.352-32.675zM828.538 545.262c-23.966 43.938-55.363 69.138-86.138 69.138h-360.459c47.886-54.592 78.859-147.949 78.859-256s-30.973-201.408-78.859-256h360.459c30.774 0 62.171 25.2 86.138 69.138 26.995 49.491 41.862 115.854 41.862 186.862s-14.867 137.37-41.862 186.862z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tombstone.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tombstone.js
new file mode 100644
index 00000000..6f9cddd5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tombstone.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Tombstone
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M358.4 409.6v-51.2c0-28.232-22.968-51.2-51.2-51.2h-51.2c-28.232 0-51.2 22.968-51.2 51.2v179.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h9.778l44.125 88.248c4.486 8.971 13.526 14.158 22.917 14.158 3.846 0 7.755-0.872 11.429-2.709 12.646-6.322 17.771-21.699 11.45-34.346l-33.762-67.523c21.070-6.344 36.464-25.918 36.464-49.029zM256 358.4h51.2v51.2h-51.2v-51.2z' />
+            <path d='M435.2 563.2c-14.138 0-25.6-11.461-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 563.2c-14.139 0-25.6-11.461-25.6-25.6v-179.2c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v51.2c0 28.232-22.968 51.2-51.2 51.2h-51.2v76.8c0 14.139-11.461 25.6-25.6 25.6zM563.2 409.6h51.2v-51.2h-51.2v51.2z' />
+            <path d='M896.533 127.467c-82.198-82.198-191.488-127.467-307.733-127.467h-153.6c-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.486-127.467 307.733v512c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-512c0-116.246-45.269-225.534-127.467-307.733zM51.2 947.2v-512c0-211.738 172.262-384 384-384 211.739 0 384 172.262 384 384v512c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-81.203c2.842-8.013 4.403-16.626 4.403-25.6v-512c0-116.246-45.269-225.534-127.467-307.733-28.354-28.354-59.931-52.307-93.904-71.531 183.227 28.987 323.771 188.013 323.771 379.264v512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TombstoneHipster.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TombstoneHipster.js
new file mode 100644
index 00000000..de82ef3f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TombstoneHipster.js
@@ -0,0 +1,16 @@
+// Icon: Linear.TombstoneHipster
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M358.4 358.4v-51.2c0-28.232-22.968-51.2-51.2-51.2h-51.2c-28.232 0-51.2 22.968-51.2 51.2v179.2c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8h9.778l44.125 88.248c4.486 8.971 13.526 14.157 22.917 14.157 3.846 0 7.755-0.87 11.429-2.707 12.646-6.323 17.771-21.701 11.45-34.346l-33.762-67.523c21.070-6.344 36.464-25.918 36.464-49.029zM256 307.2h51.2v51.2h-51.2v-51.2z' />
+            <path d='M435.2 512c-14.138 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v204.8c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M537.6 512c-14.139 0-25.6-11.462-25.6-25.6v-179.2c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v51.2c0 28.232-22.968 51.2-51.2 51.2h-51.2v76.8c0 14.138-11.461 25.6-25.6 25.6zM563.2 358.4h51.2v-51.2h-51.2v51.2z' />
+            <path d='M896.533 127.467c-82.198-82.198-191.488-127.467-307.733-127.467h-153.6c-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.486-127.467 307.733v512c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-512c0-116.246-45.269-225.534-127.467-307.733zM51.2 947.2v-512c0-211.738 172.262-384 384-384 211.739 0 384 172.262 384 384v512c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-81.203c2.842-8.013 4.403-16.626 4.403-25.6v-512c0-116.246-45.269-225.534-127.467-307.733-28.354-28.354-59.931-52.307-93.904-71.531 183.227 28.987 323.771 188.013 323.771 379.264v512z' />
+            <path d='M764.058 728.752c-5.658-8.979-16.27-13.528-26.678-11.454-9.582 1.917-18.819 2.888-27.454 2.888-0.002 0-0.006 0-0.010 0-44.645-0.003-71.763-25.77-100.47-53.053-27.28-25.925-55.49-52.733-97.445-52.733-30.563 0-58.021 13.475-76.8 34.776-18.779-21.301-46.237-34.776-76.8-34.776-41.954 0-70.163 26.808-97.443 52.733-28.709 27.283-55.826 53.051-100.47 53.051-8.643 0-17.883-0.97-27.466-2.888-10.398-2.082-21.019 2.475-26.678 11.454-5.659 8.978-5.19 20.517 1.178 29.008 59.243 78.992 135.293 95.573 188.658 95.573 31.79 0 57.109-5.984 69.373-9.552 27.166-7.902 52.106-27.757 69.648-52.627 17.544 24.87 42.482 44.723 69.65 52.627 12.266 3.566 37.587 9.554 69.374 9.552 53.366-0.002 129.416-16.584 188.656-95.573 6.37-8.49 6.838-20.029 1.179-29.006zM351.25 794.619c-9.646 2.806-29.63 7.514-55.070 7.514-29.939 0-69.050-6.722-105.958-33.501 47.877-9.141 79.642-39.328 106.006-64.384 25.213-23.962 41.706-38.648 62.173-38.648 28.232 0 51.2 22.968 51.2 51.2 0 31.275-28.358 69.094-58.35 77.819zM574.222 802.133c-25.437 0.002-45.424-4.706-55.070-7.514-29.994-8.725-58.352-46.544-58.352-77.819 0-28.232 22.968-51.2 51.2-51.2 20.469 0 36.962 14.686 62.176 38.646 26.365 25.053 58.13 55.238 106.005 64.382-36.907 26.781-76.019 33.504-105.958 33.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue.js
new file mode 100644
index 00000000..7498efdb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Tongue
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 614.4h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h179.2v51.2c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4v-51.2h25.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM614.4 716.8c0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2v-51.2h102.4v51.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue2.js
new file mode 100644
index 00000000..fa80c84b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tongue2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Tongue2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 614.4h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h179.2v51.2c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4v-51.2h25.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM614.4 716.8c0 28.232-22.968 51.2-51.2 51.2s-51.2-22.968-51.2-51.2v-51.2h102.4v51.2z' />
+            <path d='M395.448 309.902c-12.646-6.323-28.022-1.198-34.346 11.45-0.186 0.37-19.486 37.048-53.902 37.048-34.362 0-53.784-36.822-53.976-37.195l0.074 0.146-0.014 0.006c-4.203-8.392-12.859-14.165-22.883-14.165-14.142 0-25.606 11.464-25.606 25.606 0 4.118 0.995 7.995 2.723 11.442l-0.014 0.006c0.050 0.099 0.147 0.293 0.283 0.554 0.056 0.104 0.107 0.21 0.165 0.312 4.25 8.034 36.363 64.488 99.25 64.488 66.261 0 98.363-62.683 99.698-65.352 6.323-12.645 1.197-28.022-11.45-34.346z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toothbrush.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toothbrush.js
new file mode 100644
index 00000000..3e672d91
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Toothbrush.js
@@ -0,0 +1,18 @@
+// Icon: Linear.Toothbrush
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M76.8 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M179.2 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M281.6 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M384 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M998.4 921.6h-921.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-921.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M460.8 460.8h-307.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6h25.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6h281.6c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM103.405 217.966c-31.138 17.584-52.205 50.994-52.205 89.234 0 56.464 45.936 102.4 102.4 102.4h307.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-281.6c-42.347 0-76.8-34.453-76.8-76.8 0-4.232 0.344-8.386 1.005-12.434z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tornado.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tornado.js
new file mode 100644
index 00000000..89d987f0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tornado.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Tornado
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 256c-131.642 0-255.659-10.846-349.21-30.541-46.797-9.851-83.931-21.52-110.373-34.682-34.782-17.312-52.418-38.434-52.418-62.778s17.635-45.466 52.416-62.776c26.443-13.162 63.578-24.83 110.373-34.682 93.552-19.696 217.57-30.542 349.211-30.542 62.6 0 123.608 2.443 181.33 7.262 14.090 1.176 24.558 13.552 23.381 27.64s-13.544 24.562-27.64 23.381c-56.31-4.699-115.886-7.083-177.070-7.083-122.019 0-238.096 9.603-326.85 27.040-109.504 21.515-130.429 45.098-133.571 49.76 3.142 4.662 24.067 28.245 133.57 49.76 88.755 17.437 204.832 27.040 326.851 27.040s238.098-9.603 326.85-27.040c116.019-22.795 132.605-47.912 133.958-50.387 0.333-13.848 11.664-24.973 25.592-24.973 14.139 0 25.6 11.462 25.6 25.6 0 24.344-17.635 45.466-52.418 62.776-26.442 13.162-63.576 24.83-110.371 34.682-93.552 19.696-217.571 30.542-349.211 30.542z' />
+            <path d='M460.8 870.4c-65.045 0-126.597-11.434-173.314-32.198-53.322-23.699-82.686-57.72-82.686-95.802 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 15.901 20.034 34.683 52.28 49.014 40.315 17.918 94.482 27.786 152.52 27.786s112.205-9.867 152.52-27.786c32.246-14.331 52.28-33.114 52.28-49.014 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 38.082-29.366 72.102-82.686 95.802-46.717 20.765-108.269 32.198-173.314 32.198z' />
+            <path d='M512 1024c-114.842 0-204.8-56.226-204.8-128 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 36.325 63.082 76.8 153.6 76.8s153.6-40.475 153.6-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 71.774-89.96 128-204.8 128z' />
+            <path d='M460.8 563.2c-104.733 0-203.507-10.958-278.125-30.856-87.242-23.266-131.475-55.949-131.475-97.144 0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 4.805 15.862 26.978 93.467 47.672 70.437 18.784 164.526 29.128 264.933 29.128 100.408 0 194.496-10.344 264.933-29.128 77.605-20.694 93.467-42.867 93.467-47.672 0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6c0 41.195-44.234 73.878-131.475 97.144-74.618 19.898-173.39 30.856-278.125 30.856z' />
+            <path d='M435.2 716.8c-84.734 0-164.755-11.117-225.318-31.306-88.835-29.611-107.482-68.928-107.482-96.694 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 8.29 15.147 29.014 72.472 48.122 55.482 18.494 129.75 28.678 209.128 28.678s153.646-10.184 209.128-28.678c57.325-19.107 72.472-39.832 72.472-48.122 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 27.766-18.646 67.083-107.482 96.694-60.563 20.189-140.582 31.306-225.318 31.306z' />
+            <path d='M486.4 409.6c-124.896 0-242.586-10.867-331.389-30.602-104.307-23.179-155.011-55.038-155.011-97.398 0-14.138 11.462-25.6 25.6-25.6 14.038 0 25.438 11.301 25.598 25.302 2.202 6.766 29.338 29.842 124.394 49.758 84.139 17.63 194.518 27.339 310.808 27.339s226.669-9.709 310.808-27.338c95.056-19.917 122.19-42.994 124.394-49.758 0.16-14.003 11.56-25.304 25.598-25.304 14.139 0 25.6 11.462 25.6 25.6 0 42.36-50.704 74.219-155.013 97.398-88.802 19.734-206.491 30.602-331.387 30.602z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TrafficLights.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TrafficLights.js
new file mode 100644
index 00000000..372eef07
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/TrafficLights.js
@@ -0,0 +1,15 @@
+// Icon: Linear.TrafficLights
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 358.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 204.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M512 614.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 460.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M512 870.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM512 716.8c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2z' />
+            <path d='M830.648 592.498c41.493-20.746 90.952-64.875 90.952-157.298 0-14.138-11.461-25.6-25.6-25.6h-128v-53.552c16.734-2.597 39.666-8.059 62.648-19.55 41.493-20.746 90.952-64.875 90.952-157.298 0-14.138-11.461-25.6-25.6-25.6h-130.574c-11.894-58.355-63.611-102.4-125.426-102.4h-256c-61.814 0-113.531 44.045-125.424 102.4h-130.576c-14.138 0-25.6 11.462-25.6 25.6 0 92.422 49.461 136.552 90.952 157.298 22.984 11.491 45.915 16.954 62.648 19.55v53.552h-128c-14.138 0-25.6 11.462-25.6 25.6 0 92.422 49.461 136.552 90.952 157.298 22.984 11.493 45.915 16.955 62.648 19.552v53.55h-128c-14.138 0-25.6 11.461-25.6 25.6 0 92.422 49.461 136.552 90.952 157.298 24.019 12.011 47.971 17.432 64.862 19.882 11.101 59.349 63.262 104.421 125.786 104.421h256c62.523 0 114.685-45.072 125.786-104.422 16.891-2.45 40.842-7.87 64.862-19.882 41.493-20.744 90.952-64.874 90.952-157.296 0-14.139-11.461-25.6-25.6-25.6h-128v-53.552c16.734-2.597 39.666-8.059 62.648-19.55zM214.845 289.99c-33.699-17.346-53.622-45.941-59.445-85.19h100.6v99.261c-11.944-2.397-26.682-6.621-41.155-14.070zM214.845 545.99c-33.699-17.346-53.622-45.941-59.445-85.19h100.6v99.259c-11.944-2.397-26.682-6.619-41.155-14.069zM155.4 716.8h100.6v99.259c-11.944-2.397-26.682-6.619-41.155-14.069-33.699-17.346-53.622-45.941-59.445-85.19zM716.8 844.8c0 42.349-34.451 76.8-76.8 76.8h-256c-42.347 0-76.8-34.451-76.8-76.8v-665.6c0-42.347 34.453-76.8 76.8-76.8h256c42.349 0 76.8 34.453 76.8 76.8v665.6zM868.6 460.8c-5.822 39.25-25.746 67.845-59.445 85.19-14.478 7.451-29.218 11.674-41.155 14.070v-99.261h100.6zM809.155 289.99c-14.478 7.451-29.218 11.674-41.155 14.070v-99.261h100.6c-5.822 39.25-25.746 67.845-59.445 85.19zM868.6 716.8c-5.822 39.25-25.746 67.845-59.445 85.19-14.478 7.451-29.218 11.674-41.155 14.070v-99.261h100.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trailer.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trailer.js
new file mode 100644
index 00000000..57eae12c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trailer.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Trailer
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1016.501 688.094l-36.718-257.030c-5.819-40.746-42.622-72.664-83.782-72.664h-204.8c-42.347 0-76.8 34.453-76.8 76.8v435.2h-320.976c-17.733-30.576-50.805-51.2-88.624-51.2s-70.89 20.624-88.624 51.2h-90.576c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4h311.603c10.568 29.795 39.026 51.2 72.397 51.2h39.376c17.733 30.576 50.805 51.2 88.624 51.2s70.891-20.624 88.624-51.2h39.376c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-29.237-3.365-76.566-7.499-105.506zM204.8 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM954.254 614.4h-186.254v-102.4h171.627l14.627 102.4zM819.2 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM947.2 921.6h-25.6c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4h-25.6c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h204.8c15.446 0 30.912 13.414 33.099 28.706l3.213 22.494h-189.912c-14.139 0-25.6 11.462-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6h219.168l4.248 29.734c2.739 19.173 5.168 48.034 6.304 72.666h-24.92c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h25.6v76.8c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Train.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Train.js
new file mode 100644
index 00000000..12bf3725
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Train.js
@@ -0,0 +1,17 @@
+// Icon: Linear.Train
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 768h-512c-70.579 0-128-57.421-128-128v-512c0-70.579 57.421-128 128-128h512c70.579 0 128 57.421 128 128v512c0 70.579-57.421 128-128 128zM230.4 51.2c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.349 34.453 76.8 76.8 76.8h512c42.349 0 76.8-34.451 76.8-76.8v-512c0-42.347-34.451-76.8-76.8-76.8h-512z' />
+            <path d='M970.098 986.952l-102.4-204.8c-6.32-12.645-21.696-17.77-34.346-11.448-12.645 6.322-17.771 21.699-11.448 34.346l7.075 14.152h-685.157l7.075-14.152c6.323-12.645 1.197-28.024-11.45-34.346-12.645-6.322-28.024-1.198-34.346 11.448l-102.4 204.8c-6.323 12.645-1.197 28.024 11.45 34.346 3.675 1.837 7.581 2.709 11.429 2.709 9.39 0 18.432-5.187 22.917-14.158l18.525-37.048h838.757l18.525 37.048c4.485 8.971 13.525 14.158 22.917 14.158 3.846 0 7.754-0.872 11.429-2.709 12.645-6.323 17.771-21.701 11.448-34.346zM92.622 921.6l25.6-51.2h736.357l25.6 51.2h-787.557z' />
+            <path d='M281.6 665.6c-42.347 0-76.8-34.451-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.453 76.8-76.8 76.8zM281.6 563.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M691.2 665.6c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM691.2 563.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 153.6h-307.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h307.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 204.8h-512c-14.138 0-25.6 11.462-25.6 25.6v204.8c0 14.138 11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.461-25.6-25.6-25.6zM256 256h204.8v153.6h-204.8v-153.6zM716.8 409.6h-204.8v-153.6h204.8v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transform.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transform.js
new file mode 100644
index 00000000..16bf87c5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transform.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Transform
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 204.8c14.139 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6h-102.4c-14.139 0-25.6 11.462-25.6 25.6v25.6h-256v-25.6c0-14.138-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v25.6h-256v-25.6c0-14.138-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h25.6v256h-25.6c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h25.6v256h-25.6c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h256v25.6c0 14.139 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-25.6h256v25.6c0 14.139 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6h-25.6v-256h25.6c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6h-25.6v-256h25.6zM870.4 102.4h51.2v51.2h-51.2v-51.2zM460.8 102.4h51.2v51.2h-51.2v-51.2zM51.2 102.4h51.2v51.2h-51.2v-51.2zM51.2 512h51.2v51.2h-51.2v-51.2zM102.4 972.8h-51.2v-51.2h51.2v51.2zM512 972.8h-51.2v-51.2h51.2v51.2zM921.6 972.8h-51.2v-51.2h51.2v51.2zM921.6 563.2h-51.2v-51.2h51.2v51.2zM870.4 460.8h-25.6c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h25.6v256h-25.6c-14.139 0-25.6 11.461-25.6 25.6v25.6h-256v-25.6c0-14.139-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.461-25.6 25.6v25.6h-256v-25.6c0-14.139-11.462-25.6-25.6-25.6h-25.6v-256h25.6c14.138 0 25.6-11.461 25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6h-25.6v-256h25.6c14.138 0 25.6-11.462 25.6-25.6v-25.6h256v25.6c0 14.138 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.462 25.6-25.6v-25.6h256v25.6c0 14.138 11.461 25.6 25.6 25.6h25.6v256z' />
+            <path d='M588.8 512h-76.8v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v76.8h-76.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transmission.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transmission.js
new file mode 100644
index 00000000..68188676
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Transmission.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Transmission
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 358.4c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-128v-128c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v128h-53.776c-10.206-50.080-49.744-89.618-99.824-99.824v-28.176c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v28.176c-50.080 10.206-89.618 49.744-99.824 99.824h-53.776v-128c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v307.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h53.776c10.206 50.080 49.744 89.618 99.824 99.826v28.174c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-28.174c50.080-10.208 89.618-49.746 99.824-99.826h53.776v128c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-128h128c42.347 0 76.8-34.453 76.8-76.8v-102.4c0-14.138-11.461-25.6-25.6-25.6zM384 614.4c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8z' />
+            <path d='M230.4 1024h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-102.4c0-14.139 11.462-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.462 25.6-25.6 25.6h-76.8v51.2h76.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M435.2 51.2h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-76.8c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h76.8v51.2h-84c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h109.6c14.138 0 25.6-11.462 25.6-25.6v-204.8c0-14.138-11.462-25.6-25.6-25.6z' />
+            <path d='M435.2 768c-14.138 0-25.6 11.461-25.6 25.6v76.8h-51.2v-76.8c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h76.8v76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6z' />
+            <path d='M640 307.2h-102.4c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h76.8v-51.2h-76.8c-14.139 0-25.6-11.462-25.6-25.6v-102.4c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M640 1024h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v51.2h76.8c14.139 0 25.6 11.461 25.6 25.6v102.4c0 14.139-11.461 25.6-25.6 25.6zM563.2 972.8h51.2v-51.2h-51.2v51.2z' />
+            <path d='M844.8 307.2c-6.552 0-13.102-2.499-18.099-7.498l-58.701-58.699v40.597c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-102.213c-0.002-0.128-0.002-0.256 0-0.384v-102.203c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6v102.4c0 14.138-11.461 25.6-25.6 25.6h-40.595l58.699 58.698c9.997 9.998 9.997 26.206 0 36.205-5.002 4.998-11.552 7.498-18.104 7.498zM768 153.6h51.2v-51.2h-51.2v51.2z' />
+            <path d='M230.4 256h-25.6v-179.2c0-14.138-11.462-25.6-25.6-25.6h-51.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v153.6h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash.js
new file mode 100644
index 00000000..a30e675a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Trash
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 102.403h-294.398l-69.122-92.163c-4.835-6.446-12.422-10.24-20.48-10.24h-102.4c-8.058 0-15.645 3.794-20.48 10.24l-69.12 92.16h-294.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6l870.4 0.003c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM473.6 51.2h76.8l38.402 51.202h-153.602l38.4-51.202z' />
+            <path d='M900.21 205.149c-13.942-2.323-27.136 7.098-29.461 21.043l-119.582 717.496c-2.586 15.509-18.645 29.112-34.366 29.112h-409.6c-15.722 0-31.781-13.603-34.366-29.11l-119.582-717.498c-2.323-13.946-15.504-23.366-29.461-21.043-13.946 2.325-23.366 15.514-21.043 29.461l119.582 717.498c6.722 40.314 44 71.893 84.87 71.893h409.6c40.87 0 78.15-31.579 84.869-71.896l119.582-717.496c2.325-13.946-7.096-27.136-21.042-29.459z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash2.js
new file mode 100644
index 00000000..9d5cf076
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Trash2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 102.4h-179.2v-25.6c0-42.347-34.453-76.8-76.8-76.8h-102.4c-42.347 0-76.8 34.453-76.8 76.8v25.6h-179.2c-42.347 0-76.8 34.453-76.8 76.8v51.2c0 33.373 21.403 61.829 51.2 72.397v644.403c0 42.349 34.453 76.8 76.8 76.8h512c42.349 0 76.8-34.451 76.8-76.8v-644.403c29.797-10.568 51.2-39.024 51.2-72.397v-51.2c0-42.347-34.451-76.8-76.8-76.8zM409.6 76.8c0-14.115 11.485-25.6 25.6-25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v25.6h-153.6v-25.6zM742.4 972.8h-512c-14.115 0-25.6-11.485-25.6-25.6v-640h563.2v640c0 14.115-11.485 25.6-25.6 25.6zM819.2 230.4c0 14.115-11.485 25.6-25.6 25.6h-614.4c-14.115 0-25.6-11.485-25.6-25.6v-51.2c0-14.115 11.485-25.6 25.6-25.6h614.4c14.115 0 25.6 11.485 25.6 25.6v51.2z' />
+            <path d='M640 358.4c-14.139 0-25.6 11.462-25.6 25.6v512c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-512c0-14.138-11.461-25.6-25.6-25.6z' />
+            <path d='M486.4 358.4c-14.138 0-25.6 11.462-25.6 25.6v512c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-512c0-14.138-11.462-25.6-25.6-25.6z' />
+            <path d='M332.8 358.4c-14.138 0-25.6 11.462-25.6 25.6v512c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-512c0-14.138-11.462-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash3.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash3.js
new file mode 100644
index 00000000..9b106826
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trash3.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Trash3
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 153.6c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6h-102.4c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-51.2c0-42.347 34.453-76.8 76.8-76.8h102.4c42.347 0 76.8 34.453 76.8 76.8v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M896.512 137.706c-14.416-16.752-35.299-31.109-62.070-42.674-45.070-19.469-108.030-32.102-192.474-38.621-14.098-1.093-26.406 9.458-27.494 23.554-1.090 14.098 9.456 26.406 23.554 27.494 77.619 5.99 136.87 17.624 176.11 34.573 8.59 3.71 15.861 7.501 22.054 11.315-59.734 27.419-186.704 51.453-349.792 51.453-164.531 0-291.12-24.054-350.438-51.669 6.315-3.917 13.774-7.805 22.637-11.605 39.16-16.794 98.421-28.293 176.134-34.176 14.099-1.067 24.662-13.362 23.594-27.459-1.067-14.098-13.355-24.669-27.459-23.594-84.52 6.4-147.47 18.886-192.448 38.174-26.787 11.486-47.682 25.782-62.106 42.488-16.664 19.299-25.114 41.858-25.114 67.048v128.792c0 25.045 17.184 46.904 51.2 65.39v497.81c0 15.709 6.842 39.056 39.435 61.072 20.293 13.707 48.589 25.803 84.104 35.952 69.917 19.974 162.416 30.976 260.461 30.976 98.043 0 190.544-11.002 260.459-30.976 35.515-10.149 63.813-22.243 84.106-35.952 32.594-22.016 39.435-45.363 39.435-61.072v-497.811c34.018-18.485 51.2-40.344 51.2-65.389v-128c0-25.178-8.44-47.75-25.088-67.094zM819.2 896c0 5.994-15.874 27.64-86.406 47.794-65.469 18.706-152.973 29.006-246.394 29.006s-180.925-10.301-246.395-29.006c-70.531-20.154-86.405-41.8-86.405-47.794v-476.507c11.389 3.71 23.69 7.234 36.96 10.55 79.336 19.834 184.4 30.757 295.84 30.757s216.504-10.923 295.838-30.757c13.272-3.318 25.571-6.84 36.962-10.55v476.507zM870.4 332.8c0 1.315-3.328 8.195-19.614 17.821-18.243 10.782-46.238 21.070-80.965 29.752-75.39 18.846-176.045 29.227-283.421 29.227s-208.030-10.381-283.422-29.229c-34.725-8.68-62.722-18.968-80.965-29.752-16.283-9.624-19.613-16.504-19.613-17.819v-128.792c0-3.099 0.206-6.478 0.877-10.067 37.522 19.971 89.422 32.926 130.506 40.742 73.29 13.946 160.645 21.317 252.618 21.317 166.962 0 311.299-23.838 382.982-61.971 0.774 3.85 1.018 7.472 1.018 10.771v128z' />
+            <path d='M742.4 890.858c-14.139 0-25.6-11.461-25.6-25.6v-358.402c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v358.402c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M640 911.741c-14.139 0-25.6-11.461-25.6-25.6v-358.397c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.397c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 921.6c-14.139 0-25.6-11.461-25.6-25.6v-358.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.4c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 921.6c-14.138 0-25.6-11.461-25.6-25.6v-358.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v358.4c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.79 911.741c-0.002 0 0 0-0.003 0-14.138-0.002-25.598-11.464-25.597-25.603l0.038-358.397c0.002-14.136 11.464-25.597 25.6-25.597 0.002 0 0 0 0.002 0 14.139 0.002 25.6 11.464 25.598 25.603l-0.038 358.397c-0.002 14.136-11.464 25.597-25.6 25.597z' />
+            <path d='M230.386 890.858c-0.002 0 0 0 0 0-14.139 0-25.6-11.462-25.6-25.602l0.014-358.4c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.139 0 25.6 11.462 25.6 25.6l-0.014 358.402c-0.002 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tree.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tree.js
new file mode 100644
index 00000000..3a3e6cbb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tree.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Tree
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M869.125 328.038c-7.243-86.485-45.278-166.728-108.19-227.482-67.154-64.845-155.56-100.557-248.934-100.557-95.733 0-185.734 37.28-253.427 104.973-60.466 60.466-96.638 138.734-103.68 222.984-93.317 40.117-154.893 132.571-154.893 235.243 0 141.16 114.842 256 256 256 44.254 0 87.882-11.482 126.165-33.202 5.098-2.893 10.078-5.974 14.957-9.206 32.512 79.995 7.293 122.232-15.19 159.862-12.101 20.254-23.531 39.384-23.531 61.746 0 14.139 11.462 25.6 25.6 25.6h256c14.139 0 25.6-11.461 25.6-25.6 0-22.362-11.43-41.491-23.531-61.746-22.47-37.61-47.674-79.821-15.245-159.728 41.136 27.222 89.888 42.274 141.176 42.274 141.16 0 256-114.84 256-256 0-105.261-63.864-195.874-154.875-235.162zM420.045 972.8c1.851-3.213 3.832-6.525 5.838-9.886 25.68-42.981 64.034-107.197 12.357-219.965 9.045-9.166 17.397-19.019 24.981-29.451 16.112 2.19 32.454 3.302 48.779 3.302 16.31 0 32.64-1.11 48.741-3.298 7.643 10.554 16 20.413 24.974 29.544-51.611 112.706-13.272 176.899 12.4 219.867 2.008 3.362 3.987 6.674 5.838 9.886h-183.909zM768 768c-70.88 0-135.75-35.877-173.528-95.971-0.035-0.056-0.078-0.106-0.114-0.162-0.294-0.461-0.614-0.899-0.936-1.336-0.194-0.266-0.379-0.541-0.582-0.797-0.246-0.309-0.514-0.6-0.774-0.898-0.31-0.357-0.618-0.72-0.944-1.058-0.117-0.118-0.245-0.227-0.365-0.344-3.478-3.434-7.794-5.744-12.408-6.768-0.13-0.030-0.264-0.043-0.394-0.070-0.682-0.141-1.366-0.266-2.058-0.35-0.144-0.019-0.291-0.021-0.434-0.035-0.696-0.074-1.392-0.13-2.093-0.146-0.106-0.003-0.214 0.006-0.32 0.005-0.752-0.008-1.502 0.011-2.256 0.069-0.074 0.006-0.147 0.019-0.222 0.026-0.782 0.069-1.565 0.168-2.342 0.31-0.026 0.005-0.050 0.005-0.075 0.010-34.722 6.413-71.214 6.762-106.126 1.066-11.48-5.109-25.258-1.138-32.094 9.834-0.034 0.053-0.067 0.102-0.101 0.157-0.021 0.032-0.042 0.064-0.062 0.098-37.742 60.341-102.678 96.362-173.771 96.362-112.928 0-204.8-91.874-204.8-204.8 0-74.368 40.394-142.013 103.432-177.971 1.4 18.858 4.237 37.558 8.558 55.85 2.782 11.781 13.291 19.72 24.893 19.72 1.949 0 3.928-0.224 5.907-0.691 13.76-3.25 22.28-17.038 19.030-30.8-5.456-23.088-8.221-46.944-8.221-70.907 0-169.39 137.81-307.2 307.2-307.2 154.066 0 281.282 111.866 303.682 260.47-15.454-2.923-31.389-4.47-47.682-4.47-9.48 0-19.038 0.525-28.413 1.562-14.053 1.554-24.186 14.205-22.634 28.258 1.555 14.053 14.21 24.189 28.258 22.634 7.514-0.832 15.181-1.253 22.789-1.253 112.926 0 204.8 91.872 204.8 204.8 0 112.926-91.874 204.8-204.8 204.8z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy.js
new file mode 100644
index 00000000..c06ef343
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Trophy
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M840.834 592.038c58.794-53.587 131.966-120.278 131.966-233.638 0-56.464-45.936-102.4-102.4-102.4-19.442 0-37.635 5.448-53.136 14.896 1.557-38.181 1.936-69.925 1.936-91.696 0-27.53-17.234-66.613-99.33-96.467-55.92-20.334-129.744-31.533-207.87-31.533s-151.949 11.198-207.869 31.533c-82.098 29.854-99.331 68.938-99.331 96.467 0 21.771 0.379 53.515 1.936 91.696-15.501-9.448-33.694-14.896-53.136-14.896-56.464 0-102.4 45.936-102.4 102.4 0 113.36 73.173 180.051 131.968 233.638 39.080 35.621 72.832 66.384 72.832 99.162 0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 42.349 34.453 76.8 76.8 76.8 24.731 0 46.754-11.762 60.81-29.971 14.376 33.542 30.43 62.579 48.080 86.869 46.634 64.166 104.741 96.702 172.71 96.702s126.078-32.536 172.709-96.702c17.651-24.29 33.704-53.326 48.080-86.869 14.056 18.21 36.080 29.971 60.811 29.971 42.349 0 76.8-34.451 76.8-76.8 0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6c0-32.778 33.752-63.541 72.834-99.162zM321.627 130.851c50.454-18.347 118.064-28.451 190.373-28.451s139.918 10.104 190.373 28.451c45.334 16.485 65.627 36.162 65.627 48.349s-20.293 31.864-65.627 48.349c-50.454 18.347-118.064 28.451-190.373 28.451s-139.918-10.104-190.373-28.451c-45.334-16.485-65.627-36.162-65.627-48.349s20.293-31.864 65.627-48.349zM102.4 358.4c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 22.765-14.994 45.898-34.133 52.664-13.331 4.712-20.315 19.339-15.603 32.669 4.712 13.331 19.339 20.315 32.669 15.603 11.877-4.198 22.765-10.978 32.203-19.595 5.352 44.931 12.558 91.547 22.235 137.134-7.928-7.555-16.176-15.078-24.515-22.678-56.662-51.643-115.256-105.048-115.256-195.797zM643.291 794.797c-36.971 50.874-79.917 75.603-131.291 75.603s-94.322-24.73-131.291-75.603c-32.958-45.354-60.093-110.754-80.65-194.382-29.72-120.91-39.626-255.717-42.733-346.488 12.578 7.565 27.981 14.896 46.803 21.739 55.922 20.336 129.744 31.534 207.87 31.534s151.95-11.198 207.87-31.533c18.822-6.845 34.227-14.174 46.803-21.739-3.107 90.771-13.014 225.576-42.733 346.486-20.557 83.629-47.691 149.029-80.65 194.382zM781.827 576.875c9.68-45.587 16.886-92.203 22.237-137.134 9.438 8.616 20.326 15.397 32.203 19.595 13.325 4.709 27.955-2.272 32.669-15.603 4.712-13.33-2.274-27.957-15.603-32.669-19.139-6.766-34.133-29.899-34.133-52.664 0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 90.749-58.594 144.154-115.258 195.798-8.338 7.6-16.587 15.123-24.515 22.677z' />
+            <path d='M512 1024c-51.254 0-99.837-8.723-136.798-24.565-59.168-25.357-68.002-59.651-68.002-77.835 0-14.677 5.552-29.165 16.054-41.898 8.998-10.907 25.133-12.453 36.038-3.458 10.906 8.997 12.454 25.133 3.458 36.038-2.886 3.499-4.35 6.634-4.35 9.317 0 18.050 58.317 51.2 153.6 51.2 95.285 0 153.6-33.15 153.6-51.2 0-2.685-1.462-5.819-4.349-9.317-8.997-10.906-7.448-27.042 3.459-36.037 10.906-8.995 27.042-7.45 36.037 3.459 10.502 12.73 16.053 27.218 16.053 41.894 0 18.184-8.834 52.478-68.003 77.835-36.962 15.842-85.542 24.565-136.797 24.565z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy2.js
new file mode 100644
index 00000000..ef5da8eb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trophy2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Trophy2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M967.509 163.616c-4.843-6.315-12.349-10.016-20.309-10.016h-130.483c1.664-28.326 2.483-54.24 2.483-76.8 0-14.138-11.461-25.6-25.6-25.6h-563.232c-14.078 0-25.517 11.37-25.6 25.448-0.126 21.333 0.541 47.373 2.182 76.952h-130.15c-7.97 0-15.485 3.712-20.33 10.040-4.843 6.33-6.464 14.552-4.382 22.245 1.149 4.248 28.634 105.2 71.474 207.966 55.414 132.93 109.464 204.661 164.614 218.179 26.624 80.269 62.746 157.939 110.8 206.28 24.043 24.184 49.882 40.016 77.152 47.35-22.85 48.627-59.49 87.798-103.578 109.843-10.619 5.309-16.195 17.224-13.467 28.778 2.73 11.555 13.045 19.718 24.917 19.718h256c11.874 0 22.187-8.163 24.915-19.718 2.726-11.555-2.848-23.469-13.467-28.778-44.080-22.040-80.715-61.203-103.566-109.819 42.635-11.434 81.51-43.662 115.936-96.245 26.504-40.488 50.512-93.264 71.653-157.387 55.688-13.464 109.965-85.205 165.314-218.216 42.771-102.787 70.003-203.762 71.142-208.010 2.061-7.69 0.429-15.898-4.418-22.211zM241.856 510.133c-22.986-32.358-46.827-77.97-70.862-135.568-27.344-65.531-48.643-131.771-60.107-169.765h99.638c6.237 74.853 17.978 164.613 37.342 255.874 5.334 25.142 11.629 52.048 18.971 79.597-8.082-8.064-16.47-18.155-24.982-30.138zM462.563 972.8c19.090-18.902 35.779-40.848 49.437-65.080 13.656 24.232 30.347 46.176 49.437 65.080h-98.874zM512 819.2c-26.877 0-51.97-12.099-76.712-36.987-42.245-42.498-76.309-115.032-102.936-199.426-0.28-1.163-0.634-2.294-1.066-3.389-49.245-157.834-72.693-356.014-75.122-476.998h511.507c-2.731 111.691-22.634 285.68-62.774 433.328-4.28 15.739-8.701 30.854-13.25 45.366-0.021 0.059-0.038 0.12-0.058 0.181-48.286 153.893-111.355 237.925-179.59 237.925zM853.341 374.586c-23.982 57.576-47.84 103.168-70.909 135.509-8.829 12.378-17.544 22.733-25.942 30.926 29.23-110.158 47.667-233.638 56.499-336.221h100.202c-11.374 37.978-32.547 104.238-59.85 169.786z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Truck.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Truck.js
new file mode 100644
index 00000000..543f3978
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Truck.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Truck
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1013.462 687.173l-0.213-1.062c-0.010-0.042-0.018-0.086-0.026-0.13l-20.451-102.246c-0.011-0.056-0.022-0.114-0.034-0.171l-10.395-51.976c-7.938-39.694-45.864-70.787-86.344-70.787h-204.8c-8.974 0-17.587 1.562-25.6 4.403v-30.003c0-42.347-34.453-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h76.8c0 56.464 45.936 102.4 102.4 102.4s102.4-45.936 102.4-102.4h260.403c10.566 29.797 39.024 51.2 72.397 51.2h39.376c17.733 30.576 50.805 51.2 88.624 51.2s70.891-20.624 88.624-51.2h39.376c42.349 0 76.8-34.451 76.8-76.8v-102.4c0-29.627-4.726-77.368-10.538-106.427zM956.933 665.6h-137.733v-51.2h127.493l10.24 51.2zM256 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM344.624 870.4c-17.733-30.576-50.805-51.2-88.624-51.2s-70.89 20.624-88.624 51.2h-90.576c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v435.2h-269.776zM819.2 972.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM947.2 921.6h-25.6c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4h-25.6c-14.115 0-25.6-11.485-25.6-25.6v-358.4c0-14.115 11.485-25.6 25.6-25.6h204.8c16.096 0 32.981 13.843 36.138 29.627l4.315 21.573h-142.853c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h172.95c2.306 16.010 4.218 34.549 5.298 51.2h-24.648c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h25.6v76.8c0 14.115-11.485 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trumpet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trumpet.js
new file mode 100644
index 00000000..6e35f7db
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Trumpet.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Trumpet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M1004.299 205.501c-11.555-2.742-23.464 2.83-28.786 13.432-0.958 1.906-97.314 190.667-233.114 190.667h-230.4v-51.2h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-153.6v-51.2h25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v51.2h-178.418c-6.568-2.514-20.784-20.576-29.085-37.048-5.309-10.619-17.226-16.197-28.779-13.467-11.555 2.728-19.718 13.043-19.718 24.915v204.8c0 11.858 8.152 22.146 19.688 24.888 11.531 2.739 23.454-2.814 28.792-13.403 8.318-16.509 22.534-34.571 29.102-37.085h26.67c-1.208 8.44-1.853 16.982-1.853 25.6 0 69.611 40.48 132.526 102.4 161.917v42.883c0 14.139 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6v-25.6h51.2v25.6c0 14.139 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-25.6h25.6c98.811 0 179.2-80.389 179.2-179.2 0-8.008-0.536-15.891-1.56-23.624 122.992 20.050 208.171 186.899 209.062 188.672 4.406 8.816 13.365 14.155 22.891 14.155 1.95 0 3.925-0.226 5.888-0.688 11.554-2.728 19.718-13.042 19.718-24.915v-512c0-11.866-8.158-22.165-19.701-24.899zM153.6 588.8c0-8.666 0.878-17.224 2.578-25.6h48.622v128.006c-31.602-23.766-51.2-61.466-51.2-102.406zM256 768v-204.8h51.2v204.8h-51.2zM409.6 614.4h-51.2v-51.2h51.2v51.2zM358.4 716.8v-51.2h51.2v51.2h-51.2zM588.8 716.8h-51.2c-14.139 0-25.6 11.461-25.6 25.6v25.6h-51.2v-204.8h51.2v76.8c0 14.139 11.461 25.6 25.6 25.6h51.2c42.349 0 76.8-34.451 76.8-76.8s-34.451-76.8-76.8-76.8h-512c-9.173 0-17.75 2.85-25.6 7.395v-65.99c7.85 4.546 16.427 7.395 25.6 7.395h512c70.579 0 128 57.421 128 128s-57.421 128-128 128zM563.2 614.4v-51.2h25.6c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-25.6zM972.8 654.454c-46.173-61.482-123.162-138.128-222.029-142.272-9.147-19.258-21.63-36.634-36.698-51.382h28.326c102.896 0 182.93-79.248 230.4-142.456v336.11z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tv.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tv.js
new file mode 100644
index 00000000..b73496da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Tv.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Tv
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 256h-367.867l180.075-160.067c10.566-9.394 11.518-25.574 2.126-36.141-9.395-10.566-25.574-11.522-36.142-2.126l-213.698 189.955-162.234-139.058c-10.733-9.2-26.896-7.958-36.098 2.776s-7.958 26.896 2.776 36.098l126.658 108.563h-365.997c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-614.4c0-42.347-34.451-76.8-76.8-76.8zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-614.4c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v614.4z' />
+            <path d='M640 921.6h-460.8c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h460.8c42.347 0 76.8 34.453 76.8 76.8v409.6c0 42.347-34.453 76.8-76.8 76.8zM179.2 409.6c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h460.8c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-460.8z' />
+            <path d='M844.8 563.2c-42.349 0-76.8-34.451-76.8-76.8 0-42.347 34.451-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 42.349-34.451 76.8-76.8 76.8zM844.8 460.8c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M844.8 768c-42.349 0-76.8-34.451-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.451 76.8 76.8-34.451 76.8-76.8 76.8zM844.8 665.6c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Typewriter.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Typewriter.js
new file mode 100644
index 00000000..ca0ed304
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Typewriter.js
@@ -0,0 +1,28 @@
+// Icon: Linear.Typewriter
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 358.4h-25.6v-25.6c0-42.347-34.451-76.8-76.8-76.8h-25.6v-179.2c0-42.347-34.453-76.8-76.8-76.8h-512c-42.347 0-76.8 34.453-76.8 76.8v179.2h-25.6c-42.347 0-76.8 34.453-76.8 76.8v614.4c0 42.349 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.451 76.8-76.8v-384h25.6c42.349 0 76.8-34.451 76.8-76.8v-51.2c0-42.347-34.451-76.8-76.8-76.8zM588.8 512c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-307.2c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-25.6h563.2v25.6c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6zM179.2 51.2h512c14.115 0 25.6 11.485 25.6 25.6v281.6h-563.2v-281.6c0-14.115 11.485-25.6 25.6-25.6zM819.2 947.2c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-614.4c0-14.115 11.485-25.6 25.6-25.6h25.6v128c0 42.347 34.453 76.8 76.8 76.8h29.987c-2.84 8.011-4.387 16.629-4.387 25.6 0 42.347 34.453 76.8 76.8 76.8h307.2c42.347 0 76.8-34.453 76.8-76.8 0-8.971-1.547-17.589-4.387-25.6h29.987c42.347 0 76.8-34.453 76.8-76.8v-128h25.6c14.115 0 25.6 11.485 25.6 25.6v614.4zM921.6 486.4c0 14.115-11.485 25.6-25.6 25.6h-25.6v-102.4h25.6c14.115 0 25.6 11.485 25.6 25.6v51.2z' />
+            <path d='M153.6 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M563.2 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M665.6 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M768 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M204.8 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M307.2 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M512 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M614.4 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M716.8 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M640 921.6h-409.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M460.8 691.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M409.6 793.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M384 153.6h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M640 256h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella.js
new file mode 100644
index 00000000..ed7f4029
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Umbrella
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M794.133 178.667c-82.198-82.198-191.488-127.467-307.733-127.467-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.486-127.467 307.733c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8v409.6c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 42.349 34.453 76.8 76.8 76.8s76.8-34.451 76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-116.246-45.269-225.534-127.467-307.733zM793.6 358.4c-41.827 0-79.029 20.168-102.4 51.29-23.371-31.122-60.573-51.29-102.4-51.29s-79.029 20.168-102.4 51.29c-23.371-31.122-60.573-51.29-102.4-51.29s-79.029 20.168-102.4 51.29c-23.371-31.122-60.573-51.29-102.4-51.29-21.586 0-41.928 5.392-59.784 14.867 48.403-156.693 194.606-270.867 366.984-270.867s318.581 114.174 366.984 270.867c-17.858-9.475-38.198-14.867-59.784-14.867z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella2.js
new file mode 100644
index 00000000..02885328
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Umbrella2.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Umbrella2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M845.333 332.267c-82.198-82.198-191.488-127.467-307.733-127.467-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.488-127.467 307.733c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8v307.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6c0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8v-307.2c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8s76.8 34.453 76.8 76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-116.245-45.269-225.534-127.467-307.733zM844.8 512c-41.827 0-79.029 20.168-102.4 51.29-23.371-31.122-60.573-51.29-102.4-51.29s-79.029 20.168-102.4 51.29c-23.371-31.122-60.573-51.29-102.4-51.29s-79.029 20.168-102.4 51.29c-23.371-31.122-60.573-51.29-102.4-51.29-21.586 0-41.928 5.392-59.784 14.867 48.403-156.693 194.606-270.867 366.984-270.867s318.581 114.174 366.984 270.867c-17.858-9.475-38.198-14.867-59.784-14.867z' />
+            <path d='M895.979 307.205c-3.846 0-7.754-0.87-11.429-2.707-12.645-6.323-17.771-21.701-11.448-34.346l51.2-102.4c6.322-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.448 34.346l-51.2 102.4c-4.483 8.971-13.526 14.157-22.917 14.157z' />
+            <path d='M691.179 204.805c-3.846 0-7.754-0.87-11.429-2.707-12.645-6.323-17.771-21.701-11.448-34.346l51.2-102.4c6.322-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.448 34.346l-51.2 102.4c-4.483 8.971-13.526 14.157-22.917 14.157z' />
+            <path d='M332.781 204.805c-3.848 0-7.754-0.87-11.429-2.707-12.646-6.323-17.771-21.701-11.45-34.346l51.2-102.4c6.323-12.646 21.699-17.771 34.346-11.45 12.646 6.323 17.771 21.701 11.45 34.346l-51.2 102.4c-4.485 8.971-13.528 14.157-22.917 14.157z' />
+            <path d='M76.781 358.405c-3.848 0-7.754-0.87-11.429-2.707-12.646-6.323-17.771-21.701-11.45-34.346l51.2-102.4c6.323-12.646 21.701-17.773 34.346-11.45 12.646 6.323 17.771 21.701 11.45 34.346l-51.2 102.4c-4.485 8.971-13.528 14.157-22.917 14.157z' />
+            <path d='M179.181 153.605c-3.848 0-7.754-0.87-11.429-2.707-12.646-6.323-17.771-21.701-11.45-34.346l51.2-102.4c6.322-12.646 21.702-17.771 34.346-11.45 12.646 6.323 17.771 21.701 11.45 34.346l-51.2 102.4c-4.485 8.971-13.528 14.157-22.917 14.157z' />
+            <path d='M844.779 153.605c-3.846 0-7.754-0.87-11.429-2.707-12.645-6.323-17.771-21.701-11.448-34.346l51.2-102.4c6.322-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.448 34.346l-51.2 102.4c-4.483 8.971-13.526 14.157-22.917 14.157z' />
+            <path d='M537.579 153.605c-3.846 0-7.754-0.87-11.429-2.707-12.645-6.323-17.771-21.701-11.448-34.346l51.2-102.4c6.322-12.645 21.699-17.773 34.346-11.45s17.771 21.701 11.448 34.346l-51.2 102.4c-4.483 8.971-13.526 14.157-22.917 14.157z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Underline.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Underline.js
new file mode 100644
index 00000000..5aaa74da
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Underline.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Underline
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M742.4 921.6h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M512 768c-141.158 0-256-114.84-256-256v-384c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v384c0 112.926 91.872 204.8 204.8 204.8 112.926 0 204.8-91.874 204.8-204.8v-384c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v384c0 141.16-114.84 256-256 256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo.js
new file mode 100644
index 00000000..a5f171c7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Undo
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M916.47 624.579c-49.046-65.285-113.31-119.374-185.845-156.426-76.066-38.854-158.237-58.554-244.226-58.554-145.117 0-283.115 58.394-384 161.357v-135.757c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6h204.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-149.915c91.864-97.883 219.894-153.6 354.715-153.6 154.421 0 296.254 70.904 389.136 194.533 5.030 6.696 12.71 10.226 20.488 10.226 5.352 0 10.749-1.672 15.357-5.134 11.304-8.493 13.582-24.541 5.090-35.845z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo2.js
new file mode 100644
index 00000000..36d1283b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Undo2.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Undo2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896.533 229.867c-82.198-82.198-191.488-127.467-307.733-127.467s-225.534 45.269-307.733 127.467-127.467 191.486-127.467 307.733v66.197l-109.899-109.899c-9.997-9.997-26.206-9.997-36.203 0s-9.998 26.206 0 36.203l153.6 153.6c5 5 11.55 7.499 18.102 7.499s13.102-2.499 18.101-7.499l153.6-153.6c9.998-9.997 9.998-26.206 0-36.203s-26.206-9.997-36.203 0l-109.898 109.899v-66.197c0-211.738 172.262-384 384-384 211.739 0 384 172.262 384 384s-172.261 384-384 384c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c116.245 0 225.534-45.269 307.733-127.467s127.467-191.488 127.467-307.733c0-116.246-45.269-225.534-127.467-307.733z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink.js
new file mode 100644
index 00000000..79f445ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Unlink
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M281.6 307.2c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M230.4 409.6h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 256c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M844.8 870.4c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M947.2 665.6h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M640 972.8c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M716.8 563.2c-9.488 0-19.046-0.525-28.413-1.562-14.053-1.555-24.186-14.208-22.632-28.259 1.557-14.053 14.214-24.197 28.259-22.63 7.504 0.83 15.17 1.251 22.784 1.251 112.926 0 204.8-91.872 204.8-204.8s-91.872-204.8-204.798-204.8-204.8 91.872-204.8 204.8c0 7.608 0.421 15.274 1.251 22.789 1.554 14.053-8.581 26.704-22.634 28.258-14.059 1.55-26.704-8.581-28.258-22.634-1.035-9.374-1.56-18.934-1.56-28.413 0-141.158 114.84-256 256-256s256 114.842 256 256-114.84 256-256 256z' />
+            <path d='M307.2 972.8c-141.158 0-256-114.84-256-256s114.842-256 256-256c9.486 0 19.046 0.525 28.413 1.562 14.053 1.554 24.184 14.206 22.63 28.259-1.554 14.051-14.197 24.17-28.259 22.63-7.504-0.83-15.17-1.251-22.784-1.251-112.928 0-204.8 91.874-204.8 204.8s91.872 204.8 204.8 204.8 204.8-91.874 204.8-204.8c0-7.6-0.421-15.269-1.251-22.79-1.552-14.053 8.582-26.702 22.635-28.254 14.053-1.539 26.702 8.582 28.254 22.635 1.037 9.381 1.562 18.939 1.562 28.41 0 141.16-114.842 256-256 256z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink2.js
new file mode 100644
index 00000000..ce598e22
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlink2.js
@@ -0,0 +1,19 @@
+// Icon: Linear.Unlink2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 588.8c-6.552 0-13.102-2.499-18.101-7.499-9.998-9.997-9.998-26.206 0-36.203l157.083-157.083c25.936-25.936 40.221-60.421 40.221-97.099s-14.285-71.162-40.221-97.098c-53.539-53.538-140.654-53.541-194.197 0l-157.083 157.082c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203l157.083-157.083c73.504-73.502 193.104-73.499 266.603 0 35.608 35.606 55.218 82.947 55.218 133.302s-19.61 97.696-55.218 133.302l-157.083 157.082c-5 5.002-11.55 7.501-18.102 7.501z' />
+            <path d='M239.717 972.802c-50.355 0-97.696-19.61-133.302-55.218-73.501-73.501-73.501-193.101 0-266.603l157.083-157.083c9.997-9.998 26.206-9.998 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-157.082 157.083c-53.538 53.541-53.538 140.658 0 194.197 25.936 25.936 60.419 40.221 97.098 40.221s71.162-14.285 97.098-40.221l157.083-157.083c9.997-9.997 26.206-9.997 36.203 0 9.998 9.997 9.998 26.206 0 36.203l-157.083 157.083c-35.605 35.608-82.946 55.218-133.301 55.218z' />
+            <path d='M281.6 358.4c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M384 307.2c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 460.8h-153.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.462 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M793.6 870.4c-6.552 0-13.102-2.499-18.101-7.499l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.997 26.206-9.997 36.203 0l102.4 102.4c9.998 9.997 9.998 26.206 0 36.203-5 5-11.55 7.499-18.102 7.499z' />
+            <path d='M896.002 665.6h-153.602c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.602c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 972.8c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlock.js
new file mode 100644
index 00000000..0663965a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Unlock.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Unlock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M691.2 51.2c-127.043 0-230.4 103.357-230.4 230.4v128h-384c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8v-409.6c0-42.347-34.453-76.8-76.8-76.8h-76.8v-128c0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2v51.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-51.2c0-127.043-103.357-230.4-230.4-230.4zM588.8 460.8c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-512c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h512z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload.js
new file mode 100644
index 00000000..5343fd48
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Upload
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M709.301 237.899l-204.8-204.8c-9.997-9.998-26.206-9.998-36.203 0l-204.8 204.8c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l161.099-161.099v526.997c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-526.997l161.099 161.098c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.202z' />
+            <path d='M486.4 1024c-127.362 0-247.494-27.773-338.267-78.203-95.525-53.069-148.133-125.302-148.133-203.397 0-135.238 160.149-253.584 380.798-281.4 13.917-1.752 26.654 8.018 28.563 21.914s-7.72 26.741-21.594 28.806c-67.658 10.067-128.95 32.464-172.587 63.059-39.712 27.845-61.581 60.099-61.581 90.821 0 37.117 33.102 74.957 90.822 103.816 64.206 32.104 150.142 49.784 241.978 49.784 91.834 0 177.771-17.68 241.978-49.784 57.72-28.859 90.822-66.699 90.822-103.816 0-30.722-21.87-62.976-61.581-90.821-43.635-30.595-104.928-52.99-172.587-63.059-13.874-2.066-23.502-14.91-21.592-28.806 1.907-13.898 14.648-23.661 28.563-21.914 220.648 27.816 380.797 146.162 380.797 281.4 0 78.094-52.608 150.328-148.133 203.397-90.773 50.43-210.906 78.203-338.267 78.203zM108.864 626.859c-36.637 34.848-57.664 74.603-57.664 115.541 0 58.666 43.256 115.006 121.798 158.64 83.294 46.275 194.595 71.76 313.402 71.76s230.107-25.485 313.402-71.76c78.544-43.634 121.798-99.974 121.798-158.64 0-40.938-21.027-80.693-57.662-115.541 4.27 12.741 6.462 25.714 6.462 38.741 0 58.069-42.306 111.202-119.123 149.611-71.179 35.589-165.246 55.189-264.877 55.189-99.629 0-193.698-19.6-264.875-55.189-76.819-38.41-119.125-91.542-119.125-149.611 0-13.027 2.192-26 6.464-38.741z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload2.js
new file mode 100644
index 00000000..560167c1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Upload2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Upload2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 972.8h-819.2c-42.347 0-76.8-34.451-76.8-76.8v-102.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-102.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v102.4c0 42.349-34.451 76.8-76.8 76.8z' />
+            <path d='M760.501 442.698l-256-256c-9.998-9.997-26.206-9.997-36.205 0l-256 256c-9.997 9.998-9.997 26.206 0 36.203s26.206 9.997 36.205 0l212.299-212.298v526.997c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-526.997l212.299 212.298c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.205 0-36.203z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsbDrive.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsbDrive.js
new file mode 100644
index 00000000..8647ccef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsbDrive.js
@@ -0,0 +1,15 @@
+// Icon: Linear.UsbDrive
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M716.8 332.869v-281.669c0-28.232-22.968-51.2-51.2-51.2h-307.2c-28.232 0-51.2 22.968-51.2 51.2v281.669c-31.069 23.376-51.2 60.544-51.2 102.331v460.8c0 70.579 57.421 128 128 128h256c70.579 0 128-57.421 128-128v-460.8c0-41.786-20.131-78.954-51.2-102.331zM358.4 51.2h307.2v258.576c-8.275-1.686-16.834-2.576-25.6-2.576h-256c-8.765 0-17.326 0.89-25.6 2.576v-258.576zM716.8 896c0 42.347-34.453 76.8-76.8 76.8h-256c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.347 34.453-76.8 76.8-76.8h256c42.347 0 76.8 34.453 76.8 76.8v460.8z' />
+            <path d='M588.8 256c-14.139 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 256c-14.138 0-25.6-11.462-25.6-25.6v-51.2c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v51.2c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M665.6 896c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/User.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/User.js
new file mode 100644
index 00000000..f920add6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/User.js
@@ -0,0 +1,13 @@
+// Icon: Linear.User
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 563.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 51.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.042 0 230.4-103.357 230.4-230.4s-103.358-230.4-230.4-230.4z' />
+            <path d='M896 1024h-819.2c-42.347 0-76.8-34.451-76.8-76.8 0-3.485 0.712-86.285 62.72-168.96 36.094-48.126 85.514-86.36 146.883-113.634 74.957-33.314 168.085-50.206 276.797-50.206 108.71 0 201.838 16.893 276.797 50.206 61.37 27.275 110.789 65.507 146.883 113.634 62.008 82.675 62.72 165.475 62.72 168.96 0 42.349-34.451 76.8-76.8 76.8zM486.4 665.6c-178.52 0-310.267 48.789-381 141.093-53.011 69.174-54.195 139.904-54.2 140.61 0 14.013 11.485 25.498 25.6 25.498h819.2c14.115 0 25.6-11.485 25.6-25.6-0.006-0.603-1.189-71.333-54.198-140.507-70.734-92.304-202.483-141.093-381.002-141.093z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserLock.js
new file mode 100644
index 00000000..4c5b718f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserLock.js
@@ -0,0 +1,14 @@
+// Icon: Linear.UserLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 563.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 51.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.042 0 230.4-103.357 230.4-230.4s-103.358-230.4-230.4-230.4z' />
+            <path d='M588.8 1024h-512c-42.347 0-76.8-34.453-76.8-76.8 0-3.485 0.714-86.285 62.72-168.96 36.094-48.126 85.514-86.36 146.883-113.634 74.957-33.314 168.085-50.206 276.797-50.206 56.546 0 109.331 4.594 156.891 13.651 13.888 2.645 23.003 16.050 20.358 29.939s-16.051 23-29.939 20.358c-44.41-8.459-93.971-12.749-147.31-12.749-180.037 0-312.379 49.573-382.72 143.36-51.88 69.173-52.48 137.557-52.48 138.24 0 14.115 11.485 25.6 25.6 25.6h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M972.8 721.203v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.566-51.2 39.024-51.2 72.397v153.6c0 42.349 34.451 76.8 76.8 76.8h204.8c42.349 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.83-51.2-72.397zM844.8 614.4c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM972.8 947.2c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserMinus.js
new file mode 100644
index 00000000..4900126f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserMinus.js
@@ -0,0 +1,15 @@
+// Icon: Linear.UserMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 563.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 51.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.042 0 230.4-103.357 230.4-230.4s-103.358-230.4-230.4-230.4z' />
+            <path d='M588.8 1024h-512c-42.347 0-76.8-34.453-76.8-76.8 0-3.485 0.714-86.285 62.72-168.96 36.094-48.126 85.514-86.36 146.883-113.634 74.957-33.314 168.085-50.206 276.797-50.206 17.962 0 35.723 0.539 52.792 1.603 14.11 0.878 24.837 13.032 23.958 27.142-0.88 14.112-13.067 24.858-27.142 23.958-16.013-0.998-32.704-1.504-49.608-1.504-178.52 0-310.267 48.789-381 141.093-53.011 69.174-54.195 139.904-54.2 140.61 0 14.013 11.485 25.498 25.6 25.498h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 819.2h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserPlus.js
new file mode 100644
index 00000000..847c9ed5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UserPlus.js
@@ -0,0 +1,15 @@
+// Icon: Linear.UserPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 563.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM486.4 51.2c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.042 0 230.4-103.357 230.4-230.4s-103.358-230.4-230.4-230.4z' />
+            <path d='M588.8 1024h-512c-42.347 0-76.8-34.453-76.8-76.8 0-3.485 0.714-86.285 62.72-168.96 36.094-48.126 85.514-86.36 146.883-113.634 74.957-33.314 168.085-50.206 276.797-50.206 17.962 0 35.723 0.539 52.792 1.603 14.11 0.878 24.837 13.032 23.958 27.142-0.88 14.112-13.067 24.858-27.142 23.958-16.013-0.998-32.704-1.504-49.608-1.504-178.52 0-310.267 48.789-381 141.093-53.011 69.174-54.195 139.904-54.2 140.61 0 14.013 11.485 25.498 25.6 25.498h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 1024c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 614.4c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 768h-76.8v-76.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users.js
new file mode 100644
index 00000000..95403b27
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Users
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M969.077 827.291c-18.267-19.485-40.486-36.531-66.352-51.029-15.498-30.917-45.966-71.605-105.395-104.101-24.336-13.306-51.803-24.331-82.274-33.061 62.125-35.21 104.144-101.936 104.144-178.301 0-82.899-49.51-154.451-120.515-186.643-15.19-33.68-39.077-62.518-69.646-83.838-10.414-7.264-21.387-13.474-32.782-18.629-15.192-33.651-39.067-62.466-69.618-83.771-34.442-24.021-74.912-36.718-117.038-36.718-112.928 0-204.8 91.872-204.8 204.8 0 42.125 12.698 82.597 36.717 117.037 21.307 30.55 50.122 54.427 83.774 69.619 5.154 11.395 11.363 22.366 18.626 32.781 9.611 13.781 20.768 26.184 33.187 37.070-76.694 2.406-143.211 13.464-198.080 32.973-51.659 18.366-93.411 44.278-124.099 77.011-54.301 57.92-54.925 117.406-54.925 119.909 0 42.349 34.453 76.8 76.8 76.8h29.074c-3.363 14.902-3.474 24.621-3.474 25.6 0 42.349 34.453 76.8 76.8 76.8h29.074c-3.363 14.902-3.474 24.621-3.474 25.6 0 42.349 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.451 76.8-76.8 0-2.504-0.626-61.989-54.923-119.909zM768 460.8c0 84.696-68.904 153.6-153.6 153.6s-153.6-68.904-153.6-153.6 68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6zM256 256c0-84.696 68.904-153.6 153.6-153.6 44.317 0 85.95 19.557 114.664 51.597-4.072-0.24-8.158-0.397-12.264-0.397-112.928 0-204.8 91.872-204.8 204.8 0 4.107 0.157 8.194 0.397 12.266-32.040-28.714-51.597-70.349-51.597-114.666zM358.4 358.4c0-84.696 68.904-153.6 153.6-153.6 44.307 0 85.934 19.549 114.645 51.576-4.053-0.24-8.133-0.376-12.245-0.376-112.928 0-204.8 91.872-204.8 204.8 0 4.112 0.136 8.194 0.376 12.246-32.027-28.712-51.576-70.339-51.576-114.646zM76.8 768c-14.064 0-25.514-11.398-25.6-25.442 0.074-2.8 1.902-45.026 43.765-87.858 40.795-41.742 128.496-91.501 314.635-91.501 9.366 0 18.63 0.141 27.725 0.392 11.266 19.331 25.602 36.658 42.339 51.31-76.762 2.397-143.334 13.453-198.242 32.976-51.659 18.366-93.411 44.278-124.099 77.011-13.67 14.582-23.933 29.262-31.646 43.109h-48.877zM179.2 870.4c-14.064 0-25.515-11.402-25.6-25.446 0.077-2.848 1.93-45.046 43.765-87.853 40.795-41.742 128.496-91.501 314.635-91.501 155.392 0 243.354 34.19 293.131 72.554-54.63-14.168-118.55-21.354-190.731-21.354-90.518 0-168.096 11.264-230.576 33.48-51.659 18.366-93.411 44.278-124.099 77.011-13.67 14.582-23.933 29.262-31.646 43.109h-48.878zM947.2 972.8h-665.6c-14.064 0-25.514-11.398-25.6-25.44 0.074-2.802 1.902-45.027 43.765-87.859 40.795-41.742 128.496-91.501 314.635-91.501s273.84 49.758 314.635 91.501c41.861 42.834 43.69 85.058 43.765 87.859-0.086 14.042-11.536 25.44-25.6 25.44z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users2.js
new file mode 100644
index 00000000..5a34dfff
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Users2.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Users2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 921.6h-563.2c-42.347 0-76.8-34.453-76.8-76.8 0-2.461 0.538-60.952 47.331-118.544 26.883-33.088 63.541-59.31 108.952-77.941 54.856-22.504 122.858-33.915 202.117-33.915s147.261 11.411 202.117 33.915c45.411 18.63 82.067 44.853 108.952 77.941 46.794 57.592 47.331 116.083 47.331 118.544 0 42.347-34.453 76.8-76.8 76.8zM358.4 844.931c0.072 14.056 11.528 25.469 25.6 25.469h563.2c14.072 0 25.528-11.413 25.6-25.469-0.048-1.786-1.656-45.802-37.851-88.786-49.88-59.235-143.019-90.546-269.349-90.546s-219.469 31.31-269.349 90.546c-36.194 42.984-37.803 87-37.851 88.786z' />
+            <path d='M665.6 563.2c-112.926 0-204.8-91.874-204.8-204.8 0-112.928 91.874-204.8 204.8-204.8s204.8 91.872 204.8 204.8c0 112.926-91.874 204.8-204.8 204.8zM665.6 204.8c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6z' />
+            <path d='M230.4 921.6h-153.6c-42.347 0-76.8-34.451-76.8-76.8 0-1.915 0.386-47.446 33.92-92.16 19.373-25.832 45.778-46.299 78.483-60.834 39.126-17.389 87.438-26.206 143.597-26.206 9.16 0 18.232 0.235 26.962 0.701 14.118 0.754 24.954 12.81 24.2 26.928-0.752 14.117-12.781 24.96-26.928 24.2-7.826-0.418-15.979-0.629-24.234-0.629-199.366 0-204.666 121.826-204.8 128.131 0.072 14.054 11.528 25.469 25.6 25.469h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M256 614.4c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM256 358.4c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4c0-56.464-45.936-102.4-102.4-102.4z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersMinus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersMinus.js
new file mode 100644
index 00000000..9baa1152
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersMinus.js
@@ -0,0 +1,17 @@
+// Icon: Linear.UsersMinus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 921.6h-204.8c-42.347 0-76.8-34.453-76.8-76.8 0-3.762 0.618-37.954 22.010-79.765 19.613-38.333 61.294-90.651 148.478-122.197 13.294-4.808 27.971 2.066 32.782 15.362s-2.067 27.973-15.363 32.782c-132.95 48.109-136.611 148.698-136.707 153.93 0.062 14.064 11.522 25.488 25.6 25.488h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M538.888 510.712c-6.552 0-13.102-2.499-18.101-7.498-38.685-38.68-59.987-90.11-59.987-144.814 0-112.928 91.874-204.8 204.8-204.8s204.8 91.872 204.8 204.8c0 9.781-0.699 19.616-2.074 29.23-2.005 13.997-14.968 23.72-28.97 21.714-13.995-2.003-23.717-14.973-21.714-28.968 1.034-7.221 1.557-14.613 1.557-21.976 0-84.696-68.904-153.6-153.6-153.6s-153.6 68.904-153.6 153.6c0 41.029 15.978 79.6 44.989 108.61 9.997 9.998 9.998 26.206 0.002 36.205-5 4.998-11.552 7.498-18.102 7.498z' />
+            <path d='M230.4 921.6h-153.6c-42.347 0-76.8-34.451-76.8-76.8 0-1.915 0.386-47.446 33.92-92.16 19.373-25.832 45.778-46.299 78.483-60.834 39.126-17.389 87.438-26.206 143.597-26.206 9.16 0 18.232 0.235 26.963 0.701 14.118 0.754 24.954 12.81 24.2 26.928-0.752 14.117-12.781 24.96-26.928 24.2-7.827-0.418-15.981-0.629-24.235-0.629-199.402 0-204.667 121.869-204.8 128.134 0.072 14.054 11.53 25.466 25.6 25.466h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M256 614.4c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM256 358.4c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4c0-56.464-45.936-102.4-102.4-102.4z' />
+            <path d='M793.6 921.6c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 512c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 716.8h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersPlus.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersPlus.js
new file mode 100644
index 00000000..b971315d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/UsersPlus.js
@@ -0,0 +1,17 @@
+// Icon: Linear.UsersPlus
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M588.8 921.6h-204.8c-42.347 0-76.8-34.453-76.8-76.8 0-3.762 0.618-37.954 22.010-79.765 19.613-38.333 61.294-90.651 148.478-122.197 13.294-4.808 27.971 2.066 32.782 15.362s-2.067 27.973-15.363 32.782c-132.95 48.109-136.611 148.698-136.707 153.93 0.062 14.064 11.522 25.488 25.6 25.488h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M538.888 510.712c-6.552 0-13.102-2.499-18.101-7.498-38.685-38.68-59.987-90.11-59.987-144.814 0-112.928 91.874-204.8 204.8-204.8s204.8 91.872 204.8 204.8c0 9.781-0.699 19.616-2.074 29.23-2.005 13.997-14.968 23.72-28.97 21.714-13.995-2.003-23.717-14.973-21.714-28.968 1.034-7.221 1.557-14.613 1.557-21.976 0-84.696-68.904-153.6-153.6-153.6s-153.6 68.904-153.6 153.6c0 41.029 15.978 79.6 44.989 108.61 9.997 9.998 9.998 26.206 0.002 36.205-5 4.998-11.552 7.498-18.102 7.498z' />
+            <path d='M230.4 921.6h-153.6c-42.347 0-76.8-34.451-76.8-76.8 0-1.915 0.386-47.446 33.92-92.16 19.373-25.832 45.778-46.299 78.483-60.834 39.126-17.389 87.438-26.206 143.597-26.206 9.16 0 18.232 0.235 26.963 0.701 14.118 0.754 24.954 12.81 24.2 26.928-0.752 14.117-12.781 24.96-26.928 24.2-7.827-0.418-15.981-0.629-24.235-0.629-199.402 0-204.667 121.869-204.8 128.134 0.072 14.054 11.53 25.466 25.6 25.466h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M256 614.4c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM256 358.4c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4c0-56.464-45.936-102.4-102.4-102.4z' />
+            <path d='M793.6 921.6c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4 230.4 103.357 230.4 230.4-103.357 230.4-230.4 230.4zM793.6 512c-98.811 0-179.2 80.389-179.2 179.2s80.389 179.2 179.2 179.2 179.2-80.389 179.2-179.2-80.389-179.2-179.2-179.2z' />
+            <path d='M896 665.6h-76.8v-76.8c0-14.139-11.461-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v76.8h-76.8c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h76.8v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-76.8h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vault.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vault.js
new file mode 100644
index 00000000..393a5555
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vault.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Vault
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M940.099 122.398l-45.6-68.398c-20.523-30.786-63.901-54-100.899-54h-614.4c-37 0-80.378 23.214-100.901 54l-45.598 68.4c-18.336 27.504-32.701 74.944-32.701 108v716.8c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-716.8c0-33.058-14.365-80.498-32.701-108.002zM120.899 82.4c10.886-16.33 38.675-31.2 58.301-31.2h614.4c19.626 0 47.413 14.87 58.301 31.202l45.6 68.398c0.613 0.918 1.219 1.89 1.822 2.885-1.102-0.048-2.21-0.085-3.323-0.085h-819.2c-1.114 0-2.219 0.037-3.322 0.085 0.603-0.997 1.211-1.966 1.822-2.885l45.598-68.4zM921.6 947.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-716.8c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v716.8z' />
+            <path d='M844.8 563.2c14.139 0 25.6-11.461 25.6-25.6v-153.6c0-14.138-11.461-25.6-25.6-25.6h-25.6v-25.6c0-42.347-34.453-76.8-76.8-76.8h-563.2c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h563.2c42.347 0 76.8-34.453 76.8-76.8v-25.6h25.6c14.139 0 25.6-11.461 25.6-25.6v-153.6c0-14.139-11.461-25.6-25.6-25.6h-25.6v-51.2h25.6zM819.2 512h-51.2v-102.4h51.2v102.4zM819.2 768h-51.2v-102.4h51.2v102.4zM768 614.4h-25.6c-14.139 0-25.6 11.461-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6h25.6v25.6c0 14.115-11.485 25.6-25.6 25.6h-563.2c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h563.2c14.115 0 25.6 11.485 25.6 25.6v25.6h-25.6c-14.139 0-25.6 11.462-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6h25.6v51.2z' />
+            <path d='M435.2 665.6c-42.347 0-76.8-34.451-76.8-76.8 0-10.544 3.011-29.754 29.056-74.65 13.155-22.677 26.134-41.509 26.68-42.299 4.781-6.92 12.654-11.051 21.064-11.051s16.283 4.131 21.064 11.051c0.546 0.79 13.526 19.622 26.68 42.299 26.043 44.896 29.056 64.106 29.056 74.65 0 42.349-34.451 76.8-76.8 76.8zM435.205 533.845c-14.747 24.848-25.397 47.158-25.605 54.984 0 14.086 11.485 25.57 25.6 25.57s25.6-11.485 25.6-25.6c-0.21-7.824-10.853-30.123-25.595-54.954z' />
+            <path d='M435.2 358.4c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.043 0 230.4-103.357 230.4-230.4s-103.357-230.4-230.4-230.4zM578.666 696.062l-22.965-22.965c-9.997-9.997-26.206-9.997-36.203 0-9.998 9.997-9.998 26.206 0 36.203l22.965 22.965c-23.454 17.581-51.347 29.542-81.662 33.899v-23.765c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v23.765c-30.315-4.357-58.208-16.317-81.664-33.899l22.965-22.965c9.998-9.997 9.998-26.206 0-36.203-9.997-9.997-26.206-9.997-36.203 0l-22.965 22.965c-17.579-23.454-29.541-51.347-33.896-81.662h23.763c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-23.763c4.355-30.315 16.317-58.208 33.898-81.664l22.965 22.965c4.998 5 11.549 7.499 18.101 7.499s13.102-2.499 18.101-7.499c9.998-9.997 9.998-26.206 0-36.203l-22.965-22.965c23.456-17.581 51.347-29.541 81.664-33.898v23.765c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-23.763c30.315 4.355 58.208 16.317 81.662 33.898l-22.965 22.965c-9.998 9.997-9.998 26.206 0 36.203 5 4.998 11.55 7.498 18.102 7.498s13.102-2.499 18.101-7.499l22.965-22.965c17.581 23.456 29.542 51.347 33.899 81.664h-23.765c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h23.765c-4.357 30.315-16.318 58.208-33.899 81.662z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vector.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vector.js
new file mode 100644
index 00000000..e07d2109
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Vector.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Vector
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 512.531c-11.698 0-22.784 2.646-32.709 7.358l-146.491-146.493v-91.797c0-14.138-11.461-25.6-25.6-25.6h-91.797l-146.109-146.109c4.806-10.027 7.506-21.25 7.506-33.091 0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8 34.453 76.8 76.8 76.8c11.842 0 23.064-2.698 33.091-7.506l69.371 69.373c-59.445-14.544-124.038-13.59-193.202 2.994-81.605 19.566-154.435 57.512-206.909 90.6-2.954-1.19-6.173-1.861-9.552-1.861h-102.4c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6v-75.613c106.976-70.114 297.386-160.312 460.8-56.152v80.565c0 14.138 11.461 25.6 25.6 25.6h80.554c107.123 168.61 2.962 370.198-56.16 460.8h-75.594c-14.139 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-3.379-0.67-6.597-1.859-9.55 33.088-52.475 71.034-125.302 90.6-206.91 16.582-69.163 17.536-133.757 2.992-193.202l69.656 69.658c-4.821 10.016-7.523 21.234-7.523 33.072 0 42.2 34.333 76.533 76.534 76.533s76.534-34.333 76.534-76.534-34.333-76.534-76.534-76.534zM102.4 409.6h-51.2v-51.2h51.2v51.2zM665.6 972.8h-51.2v-51.2h51.2v51.2zM409.6 76.8c0-14.115 11.485-25.6 25.6-25.6s25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6-25.6-11.485-25.6-25.6zM665.6 307.2h51.2v51.2h-51.2v-51.2zM947.2 614.4c-13.968 0-25.334-11.366-25.334-25.334s11.366-25.334 25.334-25.334 25.334 11.366 25.334 25.334-11.366 25.334-25.334 25.334z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Voicemail.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Voicemail.js
new file mode 100644
index 00000000..42c9d9e4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Voicemail.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Voicemail
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M768 307.2c-112.926 0-204.8 91.874-204.8 204.8 0 61.109 26.912 116.043 69.499 153.6h-292.597c42.586-37.557 69.498-92.491 69.498-153.6 0-112.926-91.872-204.8-204.8-204.8s-204.8 91.874-204.8 204.8 91.872 204.8 204.8 204.8h563.2c112.926 0 204.8-91.874 204.8-204.8s-91.874-204.8-204.8-204.8zM51.2 512c0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6-153.6-68.904-153.6-153.6zM768 665.6c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Volume.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Volume.js
new file mode 100644
index 00000000..8370029d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Volume.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Volume
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M417.291 164.216c-12.64 0-25.318 5.33-37.682 15.838l-209.819 178.346h-92.99c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h92.989l209.821 178.346c12.363 10.509 25.040 15.838 37.68 15.838 0 0 0 0 0.002 0 13.931 0 26.429-6.762 34.288-18.55 6.118-9.178 9.221-20.898 9.221-34.834v-640c0-36.877-21.853-53.384-43.509-53.384zM51.2 640v-204.8c0-14.115 11.485-25.6 25.6-25.6h76.8v256h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM409.6 853.442l-204.8-174.080v-283.523l204.8-174.078v631.682z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeHigh.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeHigh.js
new file mode 100644
index 00000000..f7dc3779
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeHigh.js
@@ -0,0 +1,15 @@
+// Icon: Linear.VolumeHigh
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M699.050 761.893c-7.438 0-14.816-3.227-19.875-9.446-8.922-10.968-7.262-27.093 3.704-36.014 54.096-44.003 85.122-109.187 85.122-178.832s-31.026-134.827-85.12-178.834c-10.968-8.922-12.627-25.046-3.704-36.014s25.046-12.626 36.014-3.702c66.099 53.771 104.010 133.43 104.010 218.55 0 85.122-37.91 164.779-104.011 218.55-4.749 3.862-10.462 5.742-16.139 5.742z' />
+            <path d='M795.915 881.107c-7.438 0-14.814-3.227-19.875-9.446-8.922-10.966-7.264-27.091 3.704-36.014 90.152-73.338 141.856-181.971 141.856-298.046 0-116.077-51.704-224.71-141.854-298.046-10.968-8.922-12.627-25.046-3.704-36.013 8.92-10.968 25.045-12.627 36.014-3.704 102.155 83.101 160.744 206.211 160.744 337.763 0 131.55-58.589 254.661-160.746 337.766-4.747 3.861-10.462 5.741-16.139 5.741z' />
+            <path d='M602.19 642.677c-7.438 0-14.814-3.227-19.875-9.446-8.922-10.966-7.264-27.093 3.704-36.014 18.037-14.672 28.381-36.4 28.381-59.616 0-23.218-10.346-44.949-28.382-59.621-10.966-8.922-12.627-25.046-3.704-36.014s25.045-12.626 36.014-3.704c30.040 24.44 47.272 60.645 47.272 99.339 0 38.691-17.23 74.898-47.27 99.334-4.747 3.861-10.462 5.742-16.139 5.742z' />
+            <path d='M417.291 164.216c-12.64 0-25.318 5.33-37.682 15.838l-209.819 178.346h-92.99c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h92.989l209.821 178.346c12.363 10.509 25.040 15.838 37.68 15.838 0 0 0 0 0.002 0 13.931 0 26.429-6.762 34.288-18.55 6.118-9.178 9.221-20.898 9.221-34.834v-640c0-36.877-21.853-53.384-43.509-53.384zM51.2 640v-204.8c0-14.115 11.485-25.6 25.6-25.6h76.8v256h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM409.6 853.442l-204.8-174.080v-283.523l204.8-174.078v631.682z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeLow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeLow.js
new file mode 100644
index 00000000..ea0df1e7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeLow.js
@@ -0,0 +1,13 @@
+// Icon: Linear.VolumeLow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M602.19 642.677c-7.438 0-14.814-3.227-19.875-9.446-8.922-10.966-7.264-27.093 3.704-36.014 18.037-14.672 28.381-36.4 28.381-59.616 0-23.218-10.346-44.949-28.382-59.621-10.966-8.922-12.627-25.046-3.704-36.014s25.045-12.626 36.014-3.704c30.040 24.44 47.272 60.645 47.272 99.339 0 38.691-17.23 74.898-47.27 99.334-4.747 3.861-10.462 5.742-16.139 5.742z' />
+            <path d='M417.291 164.216c-12.64 0-25.318 5.33-37.682 15.838l-209.819 178.346h-92.99c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h92.989l209.821 178.346c12.363 10.509 25.040 15.838 37.68 15.838 0 0 0 0 0.002 0 13.931 0 26.429-6.762 34.288-18.55 6.118-9.178 9.221-20.898 9.221-34.834v-640c0-36.877-21.853-53.384-43.509-53.384zM51.2 640v-204.8c0-14.115 11.485-25.6 25.6-25.6h76.8v256h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM409.6 853.442l-204.8-174.080v-283.523l204.8-174.078v631.682z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeMedium.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeMedium.js
new file mode 100644
index 00000000..967997ad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/VolumeMedium.js
@@ -0,0 +1,14 @@
+// Icon: Linear.VolumeMedium
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M699.050 761.893c-7.438 0-14.816-3.227-19.875-9.446-8.922-10.968-7.262-27.093 3.704-36.014 54.096-44.003 85.122-109.187 85.122-178.832s-31.026-134.827-85.12-178.834c-10.968-8.922-12.627-25.046-3.704-36.014s25.046-12.626 36.014-3.702c66.099 53.771 104.010 133.43 104.010 218.55 0 85.122-37.91 164.779-104.011 218.55-4.749 3.862-10.462 5.742-16.139 5.742z' />
+            <path d='M602.19 642.677c-7.438 0-14.814-3.227-19.875-9.446-8.922-10.966-7.264-27.093 3.704-36.014 18.037-14.672 28.381-36.4 28.381-59.616 0-23.218-10.346-44.949-28.382-59.621-10.966-8.922-12.627-25.046-3.704-36.014s25.045-12.626 36.014-3.704c30.040 24.44 47.272 60.645 47.272 99.339 0 38.691-17.23 74.898-47.27 99.334-4.747 3.861-10.462 5.742-16.139 5.742z' />
+            <path d='M417.291 164.216c-12.64 0-25.318 5.33-37.682 15.838l-209.819 178.346h-92.99c-42.347 0-76.8 34.453-76.8 76.8v204.8c0 42.349 34.453 76.8 76.8 76.8h92.989l209.821 178.346c12.363 10.509 25.040 15.838 37.68 15.838 0 0 0 0 0.002 0 13.931 0 26.429-6.762 34.288-18.55 6.118-9.178 9.221-20.898 9.221-34.834v-640c0-36.877-21.853-53.384-43.509-53.384zM51.2 640v-204.8c0-14.115 11.485-25.6 25.6-25.6h76.8v256h-76.8c-14.115 0-25.6-11.485-25.6-25.6zM409.6 853.442l-204.8-174.080v-283.523l204.8-174.078v631.682z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Walk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Walk.js
new file mode 100644
index 00000000..f5f0336e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Walk.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Walk
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M460.8 204.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM460.8 51.2c-28.232 0-51.2 22.968-51.2 51.2s22.968 51.2 51.2 51.2 51.2-22.968 51.2-51.2-22.968-51.2-51.2-51.2z' />
+            <path d='M640.008 1024.006c-10.16 0-19.773-6.090-23.776-16.099l-99.448-248.616-146.984-97.99c-8.203-5.469-12.536-15.162-11.142-24.92l44.291-310.032-150.568 75.283-48.344 193.378c-3.429 13.715-17.326 22.051-31.045 18.627-13.717-3.43-22.056-17.328-18.627-31.045l51.2-204.8c1.813-7.251 6.702-13.347 13.387-16.69l204.8-102.4c8.52-4.259 18.696-3.435 26.418 2.13 7.725 5.568 11.72 14.963 10.373 24.389l-48.917 342.427 140.174 93.451c4.309 2.872 7.645 6.984 9.568 11.792l102.4 256c5.251 13.128-1.134 28.027-14.261 33.277-3.117 1.248-6.336 1.838-9.499 1.838z' />
+            <path d='M179.176 1024.003c-4.88 0-9.811-1.392-14.176-4.302-11.765-7.842-14.942-23.736-7.101-35.501l101.517-152.275 50.486-100.973c6.322-12.645 21.699-17.77 34.346-11.448s17.771 21.699 11.45 34.346l-51.2 102.4c-0.475 0.95-1.008 1.869-1.597 2.752l-102.4 153.6c-4.933 7.398-13.053 11.402-21.325 11.402z' />
+            <path d='M793.619 512.006c-2.054 0-4.144-0.25-6.229-0.77l-204.8-51.2c-4.501-1.126-8.611-3.453-11.893-6.734l-51.2-51.2c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l46.186 46.186 197.922 49.48c13.715 3.43 22.054 17.328 18.627 31.045-2.907 11.63-13.346 19.397-24.816 19.397z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall.js
new file mode 100644
index 00000000..651ab91d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Wall
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 358.4c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-153.6h128c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-921.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h281.6v153.6h-281.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h128v153.6h-128c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h281.6v153.6h-281.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h128v153.6h-128c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h921.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-281.6v-153.6h281.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-128v-153.6h128c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-281.6v-153.6h281.6zM358.4 153.6h409.6v153.6h-409.6v-153.6zM614.4 921.6h-409.6v-153.6h409.6v153.6zM768 716.8h-409.6v-153.6h409.6v153.6zM614.4 512h-409.6v-153.6h409.6v153.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall2.js
new file mode 100644
index 00000000..76ec98f0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wall2.js
@@ -0,0 +1,23 @@
+// Icon: Linear.Wall2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M128 1024h-102.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h76.8v-102.4h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 1024h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6zM256 972.8h307.2v-102.4h-307.2v102.4z' />
+            <path d='M947.2 1024h-256c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6h256c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-230.4v102.4h230.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 768h-358.4c-14.138 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.461 25.6-25.6 25.6zM409.6 716.8h307.2v-102.4h-307.2v102.4z' />
+            <path d='M947.2 768h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-153.6c0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v102.4h76.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 768h-256c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h230.4v-102.4h-230.4c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.461 25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M128 512h-102.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h76.8v-102.4h-76.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M588.8 512h-358.4c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6zM256 460.8h307.2v-102.4h-307.2v102.4z' />
+            <path d='M947.2 512h-256c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6h256c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-230.4v102.4h230.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M742.4 256h-358.4c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h358.4c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6zM409.6 204.8h307.2v-102.4h-307.2v102.4z' />
+            <path d='M947.2 256h-102.4c-14.139 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v102.4h76.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M281.6 256h-256c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h230.4v-102.4h-230.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h256c14.138 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wallet.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wallet.js
new file mode 100644
index 00000000..fc95736b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wallet.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Wallet
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 460.8h-25.6v-128c0-42.347-34.453-76.8-76.8-76.8h-128v-230.4c0-14.138-11.461-25.6-25.6-25.6h-512c-14.138 0-25.6 11.462-25.6 25.6v232.976c-58.355 11.893-102.4 63.61-102.4 125.424v563.2c0 42.349 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.451 76.8-76.8v-409.6c0-42.347-34.451-76.8-76.8-76.8zM153.6 51.2h460.8v307.2h-460.8v-307.2zM102.4 311.603v72.397c0 14.138 11.462 25.6 25.6 25.6h614.4c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8v-51.2h128c14.115 0 25.6 11.485 25.6 25.6v128h-691.2c-42.347 0-76.8-34.453-76.8-76.8 0-33.373 21.403-61.829 51.2-72.397zM921.6 947.2c0 14.115-11.485 25.6-25.6 25.6h-819.2c-14.115 0-25.6-11.485-25.6-25.6v-460.861c21.406 16.104 48.011 25.661 76.8 25.661h768c14.115 0 25.6 11.485 25.6 25.6v409.6z' />
+            <path d='M537.6 153.6h-25.6v-25.6c0-14.138-11.462-25.6-25.6-25.6h-102.4c-14.138 0-25.6 11.462-25.6 25.6v76.8h-51.2v-76.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v25.6h-25.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h25.6v25.6c0 14.138 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6v-76.8h51.2v76.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6h25.6c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M844.8 921.6h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Warning.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Warning.js
new file mode 100644
index 00000000..fbb84df8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Warning.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Warning
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 972.8h-921.6c-9.094 0-17.507-4.826-22.099-12.677s-4.672-17.547-0.214-25.474l460.8-819.2c4.536-8.061 13.066-13.050 22.314-13.050s17.778 4.989 22.312 13.050l460.8 819.2c4.459 7.926 4.376 17.624-0.214 25.474-4.592 7.851-13.002 12.677-22.098 12.677zM69.371 921.6h834.056l-417.027-741.382-417.029 741.382z' />
+            <path d='M486.4 716.8c-14.138 0-25.6-11.461-25.6-25.6v-256c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v256c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M486.4 870.4c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Watch.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Watch.js
new file mode 100644
index 00000000..ae9a8f5b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Watch.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Watch
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M793.6 460.8h-34.562c-15.242-64.277-49.173-121.395-95.722-165.282l-38.478-174.243c-8.677-39.294-46.997-70.075-87.238-70.075h-204.8c-40.24 0-78.56 30.781-87.238 70.075l-38.478 174.242c-64.408 60.726-104.683 146.786-104.683 242.083 0 95.299 40.275 181.357 104.683 242.083l38.478 174.242c8.678 39.296 46.998 70.075 87.238 70.075h204.8c40.242 0 78.562-30.781 87.238-70.075l38.478-174.242c46.549-43.888 80.48-101.005 95.722-165.283h34.562c42.349 0 76.8-34.451 76.8-76.8 0-42.347-34.451-76.8-76.8-76.8zM295.557 132.315c3.458-15.656 21.21-29.915 37.243-29.915h204.8c16.034 0 33.786 14.259 37.242 29.915l25.741 116.563c-48.749-28.034-105.226-44.078-165.382-44.078s-116.635 16.045-165.384 44.078l25.741-116.563zM574.842 942.885c-3.456 15.656-21.208 29.915-37.242 29.915h-204.8c-16.034 0-33.786-14.259-37.243-29.915l-25.741-116.563c48.749 28.034 105.227 44.078 165.384 44.078s116.634-16.045 165.382-44.078l-25.741 116.563zM435.2 819.2c-155.275 0-281.6-126.325-281.6-281.6s126.325-281.6 281.6-281.6 281.6 126.325 281.6 281.6-126.325 281.6-281.6 281.6zM793.6 563.2h-26.574c0.645-8.45 0.974-16.987 0.974-25.6s-0.33-17.15-0.974-25.6h26.574c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6z' />
+            <path d='M435.198 563.2c-3.909 0-7.83-0.894-11.446-2.702l-102.4-51.2c-12.646-6.323-17.771-21.701-11.45-34.346 6.322-12.646 21.702-17.771 34.346-11.45l89.112 44.557 141.238-94.16c11.765-7.842 27.659-4.664 35.501 7.101 7.843 11.763 4.664 27.658-7.101 35.501l-153.6 102.4c-4.277 2.853-9.229 4.299-14.2 4.299z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Weight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Weight.js
new file mode 100644
index 00000000..9e4541d0
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Weight.js
@@ -0,0 +1,21 @@
+// Icon: Linear.Weight
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M512 158.003v-81.203c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v81.203c-29.797 10.568-51.2 39.024-51.2 72.397 0 42.347 34.453 76.8 76.8 76.8 42.349 0 76.8-34.453 76.8-76.8 0-33.373-21.403-61.829-51.2-72.397zM486.4 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z' />
+            <path d='M844.8 51.2h-213.763c-39.57-32-89.899-51.2-144.637-51.2-54.736 0-105.067 19.2-144.637 51.2h-213.763c-70.579 0-128 57.421-128 128v716.8c0 70.579 57.421 128 128 128h716.8c70.579 0 128-57.421 128-128v-716.8c0-70.579-57.421-128-128-128zM486.4 51.2c90.12 0 164.902 66.874 177.365 153.6h-23.765c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h23.765c-11.259 78.363-73.402 140.504-151.765 151.763v-23.763c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v23.763c-78.363-11.259-140.504-73.4-151.763-151.763h23.763c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-23.763c12.461-86.726 87.243-153.6 177.363-153.6zM921.6 896c0 42.349-34.451 76.8-76.8 76.8h-716.8c-42.347 0-76.8-34.451-76.8-76.8v-716.8c0-42.347 34.453-76.8 76.8-76.8h166.922c-24.57 36.635-38.922 80.67-38.922 128 0 127.043 103.357 230.4 230.4 230.4s230.4-103.357 230.4-230.4c0-47.33-14.352-91.365-38.922-128h166.922c42.349 0 76.8 34.453 76.8 76.8v716.8z' />
+            <path d='M793.6 665.6h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 768h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M793.6 870.4h-204.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M384 665.6h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M793.6 563.2h-153.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h153.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M332.8 563.2h-153.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h153.6c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 768h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+            <path d='M384 870.4h-204.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wheelchair.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wheelchair.js
new file mode 100644
index 00000000..67203c64
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wheelchair.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Wheelchair
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M914.101 673.099c-9.997-9.997-26.206-9.997-36.203 0l-33.344 33.342-139.749-135.987c-0.082-0.078-0.17-0.144-0.251-0.222-0.366-0.346-0.746-0.67-1.13-0.994-0.282-0.235-0.56-0.478-0.848-0.701-0.33-0.254-0.674-0.488-1.016-0.726-0.362-0.251-0.718-0.507-1.090-0.739-0.288-0.178-0.586-0.336-0.88-0.502-0.434-0.246-0.864-0.498-1.309-0.715-0.282-0.139-0.573-0.258-0.861-0.386-0.461-0.206-0.92-0.419-1.389-0.597-0.347-0.131-0.701-0.234-1.054-0.352-0.418-0.138-0.832-0.286-1.254-0.4-0.45-0.125-0.909-0.216-1.366-0.314-0.336-0.072-0.667-0.158-1.005-0.218-0.518-0.091-1.043-0.146-1.57-0.205-0.29-0.032-0.576-0.077-0.867-0.099-0.51-0.038-1.029-0.045-1.546-0.053-0.32-0.005-0.64-0.021-0.962-0.014-0.45 0.010-0.902 0.048-1.355 0.083-0.402 0.030-0.803 0.054-1.203 0.102-0.374 0.046-0.749 0.114-1.123 0.178-0.483 0.080-0.965 0.165-1.442 0.272-0.114 0.026-0.229 0.035-0.342 0.064l-201.984 48.779c-5.45 1.314-10.174 0.683-13.304-1.781-3.13-2.467-4.854-6.91-4.854-12.515v-86.4h179.2c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6h-179.2v-156.176c8.275 1.686 16.834 2.576 25.6 2.576 70.579 0 128-57.421 128-128s-57.421-128-128-128-128 57.421-128 128c0 41.786 20.131 78.954 51.2 102.331v316.869c0 21.32 8.888 40.544 24.386 52.744 11.181 8.802 25.104 13.402 39.779 13.4 5.664 0 11.442-0.686 17.214-2.080l188.248-45.462 147.72 143.746c4.971 4.838 11.413 7.253 17.851 7.253 6.555 0 13.109-2.502 18.102-7.499l51.2-51.2c9.998-9.997 9.998-26.205 0-36.202zM486.4 102.4c42.347 0 76.8 34.453 76.8 76.8s-34.453 76.8-76.8 76.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8z' />
+            <path d='M384 1024c-183.506 0-332.8-149.294-332.8-332.8 0-79.186 28.286-155.91 79.65-216.043 50.784-59.454 121-99.285 197.712-112.155 13.947-2.336 27.144 7.069 29.483 21.011 2.339 13.944-7.067 27.144-21.011 29.483-135.955 22.81-234.634 139.602-234.634 277.704 0 155.275 126.325 281.6 281.6 281.6 138.104 0 254.898-98.678 277.706-234.635 2.339-13.944 15.541-23.347 29.483-21.011 13.944 2.339 23.35 15.539 21.011 29.483-12.87 76.712-52.701 146.93-112.155 197.714-60.133 51.362-136.858 79.65-216.045 79.65z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wifi.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wifi.js
new file mode 100644
index 00000000..5402aae4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wifi.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Wifi
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M361.125 663.97c-4.427 0-8.912-1.15-13-3.566-12.171-7.192-16.208-22.891-9.016-35.062 20.019-33.88 48.568-62.266 82.558-82.091 35.056-20.446 75.142-31.253 115.931-31.253s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.195-27.87 3.16-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.266 33.792-154.408 88.19c-4.779 8.086-13.31 12.582-22.066 12.582z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.478 11.314-24.523 13.616-35.837 5.144-11.317-8.477-13.619-24.52-5.144-35.837 35.021-46.758 80.952-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M934.056 443.968c-7.414 0.002-14.766-3.203-19.829-9.387-92.874-113.493-230.152-178.584-376.632-178.584-146.478 0-283.754 65.091-376.629 178.581-8.957 10.942-25.083 12.552-36.024 3.6-10.942-8.955-12.554-25.083-3.6-36.026 102.637-125.422 254.355-197.357 416.251-197.357 161.898 0 313.618 71.934 416.256 197.36 8.954 10.942 7.342 27.070-3.6 36.026-4.752 3.893-10.491 5.787-16.194 5.787z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlert.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlert.js
new file mode 100644
index 00000000..01f1b5f3
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlert.js
@@ -0,0 +1,18 @@
+// Icon: Linear.WifiAlert
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M714.070 663.968c-8.758 0-17.288-4.496-22.064-12.581-32.144-54.397-91.31-88.189-154.41-88.189-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c40.787 0 80.875 10.806 115.93 31.251 33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-4.088 2.416-8.573 3.565-12.998 3.565z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M934.056 443.968c-7.414 0.002-14.766-3.203-19.829-9.387-92.874-113.493-230.152-178.584-376.632-178.584-32.765 0-65.502 3.274-97.307 9.73-13.861 2.814-27.368-6.139-30.181-19.995s6.139-27.368 19.995-30.181c35.15-7.134 71.317-10.754 107.494-10.754 161.899 0 313.618 71.934 416.256 197.36 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.891-10.494 5.786-16.197 5.786z' />
+            <path d='M230.398 716.797c-127.042 0-230.398-103.357-230.398-230.398s103.357-230.398 230.398-230.398 230.398 103.357 230.398 230.398-103.357 230.398-230.398 230.398zM230.398 307.2c-98.81 0-179.198 80.387-179.198 179.198s80.389 179.198 179.198 179.198 179.198-80.387 179.198-179.198-80.389-179.198-179.198-179.198z' />
+            <path d='M230.398 511.998c0 0 0.002 0 0 0-14.139 0-25.6-11.462-25.6-25.6l0.002-102.398c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.138 0 25.6 11.462 25.6 25.6l-0.002 102.398c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow.js
new file mode 100644
index 00000000..71c4002d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow.js
@@ -0,0 +1,20 @@
+// Icon: Linear.WifiAlertLow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M824.669 553.36c-7.789 0-15.482-3.541-20.509-10.254-26.003-34.715-57.995-63.648-95.085-85.992-12.109-7.296-16.013-23.029-8.717-35.139s23.026-16.018 35.139-8.717c42.771 25.768 79.661 59.128 109.64 99.155 8.477 11.315 6.174 27.362-5.142 35.835-4.602 3.448-9.987 5.112-15.326 5.112z' />
+            <path d='M614.427 417.851c-1.81 0-3.646-0.192-5.486-0.594-23.278-5.083-47.282-7.661-71.344-7.661-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c27.73 0 55.408 2.973 82.266 8.838 13.814 3.018 22.566 16.659 19.55 30.474-2.616 11.973-13.214 20.142-24.986 20.142z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M230.398 716.797c-127.042 0-230.398-103.357-230.398-230.398s103.357-230.398 230.398-230.398 230.398 103.357 230.398 230.398-103.357 230.398-230.398 230.398zM230.398 307.2c-98.81 0-179.198 80.387-179.198 179.198s80.389 179.198 179.198 179.198 179.198-80.387 179.198-179.198-80.389-179.198-179.198-179.198z' />
+            <path d='M230.398 511.998c0 0 0.002 0 0 0-14.139 0-25.6-11.462-25.6-25.6l0.002-102.398c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.138 0 25.6 11.462 25.6 25.6l-0.002 102.398c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M714.070 663.968c-8.758 0-17.288-4.496-22.064-12.581-32.144-54.397-91.31-88.189-154.41-88.189-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c40.787 0 80.875 10.806 115.93 31.251 33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-4.088 2.416-8.573 3.565-12.998 3.565z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow2.js
new file mode 100644
index 00000000..276558c6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertLow2.js
@@ -0,0 +1,21 @@
+// Icon: Linear.WifiAlertLow2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M714.069 663.966c-8.757 0-17.285-4.496-22.062-12.579-9.613-16.266-21.686-30.867-35.885-43.402-10.6-9.357-11.608-25.534-2.251-36.133 9.358-10.603 25.536-11.606 36.133-2.251 18.23 16.091 33.734 34.843 46.082 55.736 7.194 12.171 3.158 27.87-9.014 35.064-4.088 2.416-8.573 3.565-13.002 3.565z' />
+            <path d='M588.822 569.658c-2.112 0-4.259-0.262-6.398-0.814-14.557-3.746-29.637-5.645-44.827-5.645-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c19.491 0 38.866 2.442 57.586 7.261 13.693 3.523 21.936 17.48 18.413 31.171-2.973 11.554-13.373 19.227-24.773 19.227z' />
+            <path d='M824.669 553.36c-7.789 0-15.482-3.541-20.509-10.254-26.003-34.715-57.995-63.648-95.085-85.992-12.109-7.296-16.013-23.029-8.717-35.139s23.026-16.018 35.139-8.717c42.771 25.768 79.661 59.128 109.64 99.155 8.477 11.315 6.174 27.362-5.142 35.835-4.602 3.448-9.987 5.112-15.326 5.112z' />
+            <path d='M614.427 417.851c-1.81 0-3.646-0.192-5.486-0.594-23.278-5.083-47.282-7.661-71.344-7.661-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c27.73 0 55.408 2.973 82.266 8.838 13.814 3.018 22.566 16.659 19.55 30.474-2.616 11.973-13.214 20.142-24.986 20.142z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M230.398 716.797c-127.042 0-230.398-103.357-230.398-230.398s103.357-230.398 230.398-230.398 230.398 103.357 230.398 230.398-103.357 230.398-230.398 230.398zM230.398 307.2c-98.81 0-179.198 80.387-179.198 179.198s80.389 179.198 179.198 179.198 179.198-80.387 179.198-179.198-80.389-179.198-179.198-179.198z' />
+            <path d='M230.398 511.998c0 0 0.002 0 0 0-14.139 0-25.6-11.462-25.6-25.6l0.002-102.398c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.138 0 25.6 11.462 25.6 25.6l-0.002 102.398c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertMid.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertMid.js
new file mode 100644
index 00000000..433671e7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiAlertMid.js
@@ -0,0 +1,19 @@
+// Icon: Linear.WifiAlertMid
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M230.398 716.797c-127.042 0-230.398-103.357-230.398-230.398s103.357-230.398 230.398-230.398 230.398 103.357 230.398 230.398-103.357 230.398-230.398 230.398zM230.398 307.2c-98.81 0-179.198 80.387-179.198 179.198s80.389 179.198 179.198 179.198 179.198-80.387 179.198-179.198-80.389-179.198-179.198-179.198z' />
+            <path d='M230.398 511.998c0 0 0.002 0 0 0-14.139 0-25.6-11.462-25.6-25.6l0.002-102.398c0-14.138 11.462-25.6 25.6-25.6 0 0 0 0 0 0 14.138 0 25.6 11.462 25.6 25.6l-0.002 102.398c0 14.138-11.462 25.6-25.6 25.6z' />
+            <path d='M230.4 614.4c-6.736 0-13.328-2.736-18.096-7.504-4.768-4.752-7.504-11.36-7.504-18.096s2.736-13.344 7.504-18.098c4.768-4.766 11.36-7.502 18.096-7.502s13.328 2.736 18.096 7.502c4.768 4.754 7.504 11.362 7.504 18.098s-2.736 13.344-7.504 18.096c-4.768 4.768-11.36 7.504-18.096 7.504z' />
+            <path d='M714.070 663.968c-8.758 0-17.288-4.496-22.064-12.581-32.144-54.397-91.31-88.189-154.41-88.189-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c40.787 0 80.875 10.806 115.93 31.251 33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-4.088 2.416-8.573 3.565-12.998 3.565z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiBlocked.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiBlocked.js
new file mode 100644
index 00000000..74acb608
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiBlocked.js
@@ -0,0 +1,16 @@
+// Icon: Linear.WifiBlocked
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M714.070 663.968c-8.758 0-17.288-4.496-22.064-12.581-32.144-54.397-91.31-88.189-154.41-88.189-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c40.787 0 80.875 10.806 115.93 31.251 33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-4.088 2.416-8.573 3.565-12.998 3.565z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+            <path d='M934.056 443.968c-7.414 0.002-14.766-3.203-19.829-9.387-92.874-113.493-230.152-178.584-376.632-178.584-32.765 0-65.502 3.274-97.307 9.73-13.861 2.814-27.368-6.139-30.181-19.995s6.139-27.368 19.995-30.181c35.15-7.134 71.317-10.754 107.494-10.754 161.899 0 313.618 71.934 416.256 197.36 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.891-10.494 5.786-16.197 5.786z' />
+            <path d='M230.398 256c-127.042 0-230.398 103.357-230.398 230.398s103.357 230.398 230.398 230.398 230.398-103.357 230.398-230.398-103.357-230.398-230.398-230.398zM230.398 307.2c49.307 0 94.026 20.021 126.459 52.355l-283.678 212.758c-14.005-25.523-21.979-54.805-21.979-85.915 0-98.811 80.389-179.198 179.198-179.198zM230.398 665.597c-49.307 0-94.026-20.019-126.458-52.355l283.678-212.758c14.003 25.523 21.978 54.803 21.978 85.914 0 98.813-80.389 179.2-179.198 179.2z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLock.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLock.js
new file mode 100644
index 00000000..3aa7d9c6
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLock.js
@@ -0,0 +1,16 @@
+// Icon: Linear.WifiLock
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M934.056 443.968c-7.414 0.002-14.766-3.203-19.829-9.387-92.874-113.493-230.152-178.584-376.632-178.584-32.765 0-65.502 3.274-97.307 9.73-13.866 2.808-27.368-6.139-30.181-19.995s6.139-27.368 19.995-30.181c35.149-7.134 71.315-10.754 107.493-10.754 161.899 0 313.618 71.934 416.256 197.36 8.954 10.942 7.342 27.070-3.6 36.026-4.754 3.891-10.493 5.786-16.195 5.786z' />
+            <path d='M358.4 362.803v-30.003c0-70.579-57.421-128-128-128s-128 57.421-128 128v30.003c-29.797 10.568-51.2 39.024-51.2 72.397v153.6c0 42.349 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.451 76.8-76.8v-153.6c0-33.373-21.403-61.829-51.2-72.397zM230.4 256c42.347 0 76.8 34.453 76.8 76.8v25.6h-153.6v-25.6c0-42.347 34.453-76.8 76.8-76.8zM358.4 588.8c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-153.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v153.6z' />
+            <path d='M714.069 663.97c-8.757 0-17.286-4.496-22.062-12.581-32.144-54.397-91.31-88.189-154.41-88.189-15.186 0-30.266 1.899-44.818 5.643-13.686 3.517-27.65-4.72-31.171-18.413-3.523-13.693 4.72-27.648 18.413-31.171 18.718-4.818 38.091-7.259 57.578-7.259 40.787 0 80.875 10.806 115.93 31.251 33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-4.090 2.416-8.574 3.563-13.002 3.565z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509-15.928 0-31.933 1.134-47.571 3.371-13.997 1.99-26.966-7.72-28.968-21.717-2.002-13.995 7.72-26.965 21.717-28.966 18.032-2.579 36.477-3.888 54.824-3.888 61.522 0 120.304 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.605 3.446-9.989 5.11-15.328 5.11z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow.js
new file mode 100644
index 00000000..e51d2644
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow.js
@@ -0,0 +1,19 @@
+// Icon: Linear.WifiLow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M824.669 553.36c-7.789 0-15.482-3.541-20.509-10.254-26.003-34.715-57.995-63.648-95.085-85.992-12.109-7.296-16.013-23.029-8.717-35.139s23.026-16.018 35.139-8.717c42.771 25.768 79.661 59.128 109.64 99.155 8.477 11.315 6.174 27.362-5.142 35.835-4.602 3.448-9.987 5.112-15.326 5.112z' />
+            <path d='M614.427 417.851c-1.81 0-3.646-0.192-5.488-0.594-46.558-10.166-96.152-10.163-142.678-0.003-13.805 3.014-27.456-5.734-30.472-19.549-3.018-13.814 5.734-27.456 19.549-30.474 53.691-11.722 110.802-11.728 164.528 0.003 13.813 3.018 22.565 16.659 19.549 30.474-2.618 11.973-13.216 20.142-24.987 20.142z' />
+            <path d='M250.528 553.36c-5.339 0-10.725-1.664-15.326-5.11-11.317-8.477-13.619-24.52-5.144-35.837 29.966-40.011 66.846-73.366 109.614-99.139 12.109-7.298 27.842-3.397 35.139 8.714 7.298 12.109 3.397 27.842-8.714 35.139-37.086 22.349-69.069 51.277-95.061 85.979-5.029 6.712-12.722 10.254-20.509 10.254z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M141.142 443.966c-5.702 0-11.44-1.896-16.198-5.789-10.941-8.954-12.552-25.083-3.598-36.024 48.090-58.765 106.738-105.854 174.317-139.966 12.624-6.37 28.019-1.302 34.389 11.318 6.37 12.622 1.302 28.019-11.318 34.39-60.293 30.434-114.846 74.238-157.765 126.683-5.061 6.184-12.413 9.387-19.826 9.387z' />
+            <path d='M361.125 663.97c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.054-20.445 75.142-31.251 115.93-31.251s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.87 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.778 8.085-13.309 12.581-22.064 12.581z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow2.js
new file mode 100644
index 00000000..d65314f4
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiLow2.js
@@ -0,0 +1,21 @@
+// Icon: Linear.WifiLow2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M714.069 663.966c-8.757 0-17.285-4.496-22.062-12.579-9.613-16.266-21.686-30.867-35.885-43.402-10.6-9.357-11.608-25.534-2.251-36.133 9.358-10.603 25.536-11.606 36.133-2.251 18.23 16.091 33.734 34.843 46.082 55.736 7.194 12.171 3.158 27.87-9.014 35.064-4.088 2.416-8.573 3.565-13.002 3.565z' />
+            <path d='M486.376 569.658c-11.402 0-21.8-7.672-24.773-19.226-3.525-13.691 4.717-27.648 18.41-31.173 37.432-9.634 77.73-9.637 115.171 0 13.693 3.523 21.936 17.48 18.413 31.171-3.523 13.694-17.493 21.931-31.171 18.413-29.114-7.493-60.549-7.494-89.648 0-2.142 0.55-4.29 0.814-6.402 0.814z' />
+            <path d='M361.125 663.97c-4.427 0-8.912-1.15-13-3.566-12.171-7.192-16.208-22.891-9.016-35.062 12.347-20.896 27.853-39.646 46.086-55.738 10.602-9.355 26.779-8.344 36.133 2.258 9.355 10.6 8.344 26.778-2.258 36.133-14.2 12.53-26.272 27.13-35.883 43.394-4.776 8.086-13.307 12.582-22.062 12.582z' />
+            <path d='M824.669 553.36c-7.789 0-15.482-3.541-20.509-10.254-26.003-34.715-57.995-63.648-95.085-85.992-12.109-7.296-16.013-23.029-8.717-35.139s23.026-16.018 35.139-8.717c42.771 25.768 79.661 59.128 109.64 99.155 8.477 11.315 6.174 27.362-5.142 35.835-4.602 3.448-9.987 5.112-15.326 5.112z' />
+            <path d='M614.427 417.851c-1.81 0-3.646-0.192-5.488-0.594-46.558-10.166-96.152-10.163-142.678-0.003-13.805 3.014-27.456-5.734-30.472-19.549-3.018-13.814 5.734-27.456 19.549-30.474 53.691-11.722 110.802-11.728 164.528 0.003 13.813 3.018 22.565 16.659 19.549 30.474-2.618 11.973-13.216 20.142-24.987 20.142z' />
+            <path d='M250.528 553.36c-5.339 0-10.725-1.664-15.326-5.11-11.317-8.477-13.619-24.52-5.144-35.837 29.966-40.011 66.846-73.366 109.614-99.139 12.109-7.298 27.842-3.397 35.139 8.714 7.298 12.109 3.397 27.842-8.714 35.139-37.086 22.349-69.069 51.277-95.061 85.979-5.029 6.712-12.722 10.254-20.509 10.254z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M141.142 443.966c-5.702 0-11.44-1.896-16.198-5.789-10.941-8.954-12.552-25.083-3.598-36.024 48.090-58.765 106.738-105.854 174.317-139.966 12.624-6.37 28.019-1.302 34.389 11.318 6.37 12.622 1.302 28.019-11.318 34.39-60.293 30.434-114.846 74.238-157.765 126.683-5.061 6.184-12.413 9.387-19.826 9.387z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiMid.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiMid.js
new file mode 100644
index 00000000..7ecb62c2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/WifiMid.js
@@ -0,0 +1,17 @@
+// Icon: Linear.WifiMid
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M537.597 819.203c-42.349 0-76.803-34.453-76.803-76.803s34.454-76.803 76.803-76.803c42.35 0 76.803 34.453 76.803 76.803s-34.453 76.803-76.803 76.803zM537.597 716.797c-14.117 0-25.603 11.486-25.603 25.603s11.486 25.603 25.603 25.603 25.603-11.486 25.603-25.603-11.486-25.603-25.603-25.603z' />
+            <path d='M934.056 443.968c-7.414 0-14.766-3.203-19.829-9.387-42.912-52.44-97.467-96.248-157.765-126.685-12.622-6.371-17.69-21.766-11.317-34.389 6.368-12.621 21.762-17.691 34.389-11.318 67.584 34.115 126.234 81.206 174.317 139.966 8.954 10.942 7.342 27.070-3.6 36.026-4.755 3.893-10.493 5.787-16.195 5.787z' />
+            <path d='M640.029 266.245c-1.688 0-3.4-0.166-5.118-0.517-63.618-12.914-130.987-12.915-194.618-0.002-13.854 2.814-27.368-6.142-30.179-19.997-2.813-13.856 6.141-27.368 19.997-30.179 70.32-14.27 144.682-14.269 214.986 0.002 13.856 2.813 22.81 16.325 19.997 30.181-2.466 12.138-13.141 20.512-25.064 20.512z' />
+            <path d='M141.142 443.966c-5.702 0-11.44-1.896-16.198-5.789-10.941-8.954-12.552-25.083-3.598-36.024 48.090-58.765 106.738-105.854 174.317-139.966 12.624-6.37 28.019-1.302 34.389 11.318 6.37 12.622 1.302 28.019-11.318 34.39-60.293 30.434-114.846 74.238-157.765 126.683-5.061 6.184-12.413 9.387-19.826 9.387z' />
+            <path d='M361.125 663.97c-4.427 0-8.912-1.15-13-3.566-12.173-7.192-16.208-22.891-9.016-35.062 20.021-33.88 48.568-62.266 82.558-82.090 35.054-20.445 75.142-31.251 115.93-31.251s80.875 10.806 115.93 31.251c33.99 19.826 62.539 48.211 82.558 82.091 7.194 12.171 3.157 27.87-9.016 35.062-12.173 7.194-27.87 3.158-35.062-9.016-32.144-54.397-91.31-88.189-154.41-88.189s-122.264 33.792-154.408 88.189c-4.778 8.085-13.309 12.581-22.064 12.581z' />
+            <path d='M824.667 553.362c-7.79 0-15.482-3.541-20.51-10.254-63.547-84.846-160.702-133.509-266.56-133.509s-203.014 48.661-266.56 133.507c-8.477 11.314-24.523 13.616-35.837 5.144-11.317-8.475-13.619-24.52-5.144-35.837 35.021-46.758 80.95-85.504 132.829-112.053 54.41-27.843 113.192-41.962 174.712-41.962 61.522 0 120.302 14.118 174.712 41.963 51.877 26.547 97.808 65.296 132.829 112.053 8.475 11.317 6.171 27.362-5.144 35.837-4.603 3.446-9.987 5.11-15.326 5.11z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wind.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wind.js
new file mode 100644
index 00000000..5536c153
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wind.js
@@ -0,0 +1,14 @@
+// Icon: Linear.Wind
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M998.4 768h-409.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+            <path d='M947.2 512h-435.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6c75.946 0 141.309 56.586 152.042 131.622 2.002 13.997 14.978 23.717 28.966 21.717 13.995-2.002 23.718-14.971 21.717-28.966-6.914-48.333-31.059-92.73-67.99-125.013-37.296-32.605-85.146-50.56-134.734-50.56-112.928 0-204.8 91.872-204.8 204.8 0 61.109 26.912 116.043 69.498 153.6h-248.698c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c27.334 0 52.83 14.72 66.539 38.414 7.078 12.237 22.739 16.421 34.978 9.339 12.238-7.080 16.419-22.739 9.339-34.978-22.829-39.462-65.307-63.976-110.856-63.976-70.579 0-128 57.421-128 128s57.421 128 128 128h819.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+            <path d='M230.4 870.4c-70.579 0-128-57.421-128-128s57.421-128 128-128h563.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c27.336 0 52.834-14.72 66.542-38.418 7.080-12.237 22.738-16.419 34.979-9.341 12.238 7.080 16.419 22.741 9.339 34.978-22.83 39.466-65.31 63.981-110.861 63.981z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Window.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Window.js
new file mode 100644
index 00000000..d67eb5a8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Window.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Window
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M947.2 51.2h-870.4c-42.347 0-76.8 34.453-76.8 76.8v768c0 42.349 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.451 76.8-76.8v-768c0-42.347-34.451-76.8-76.8-76.8zM76.8 102.4h870.4c14.115 0 25.6 11.485 25.6 25.6v128h-921.6v-128c0-14.115 11.485-25.6 25.6-25.6zM947.2 921.6h-870.4c-14.115 0-25.6-11.485-25.6-25.6v-588.8h921.6v588.8c0 14.115-11.485 25.6-25.6 25.6z' />
+            <path d='M153.6 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M256 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+            <path d='M358.4 179.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wink.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wink.js
new file mode 100644
index 00000000..5390d7e8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wink.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Wink
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M486.4 870.4c-183.506 0-332.8-149.294-332.8-332.8 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 155.275 126.325 281.6 281.6 281.6s281.6-126.325 281.6-281.6c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 183.506-149.294 332.8-332.8 332.8z' />
+            <path d='M395.448 309.902c-12.646-6.323-28.022-1.198-34.346 11.45-0.186 0.37-19.486 37.048-53.902 37.048-34.362 0-53.784-36.822-53.976-37.195l0.074 0.146-0.014 0.006c-4.203-8.392-12.859-14.165-22.883-14.165-14.142 0-25.606 11.464-25.606 25.606 0 4.118 0.995 7.995 2.723 11.442l-0.014 0.006c0.050 0.099 0.147 0.293 0.283 0.554 0.056 0.104 0.107 0.21 0.165 0.312 4.25 8.034 36.363 64.488 99.25 64.488 66.261 0 98.363-62.683 99.698-65.352 6.323-12.645 1.197-28.022-11.45-34.346z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman.js
new file mode 100644
index 00000000..81e80e46
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Woman
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M896 1024h-768c-7.525 0-14.669-3.31-19.533-9.053s-6.955-13.333-5.718-20.757c13.926-83.555 28.154-136.64 63.402-177.827 35.179-41.106 89.142-67.406 186.259-90.776 18.667-4.493 46.976-37.168 55.498-72.565 6.168-25.624 1.131-45.614-14.973-59.419-53.086-45.502-72.406-113.85-79.266-163.171-8.317-59.803-1.736-114.424 8.474-142.027 9.907-26.782 25.186-32.405 36.258-32.405 22.733 0 91.915 0 135.618-43.701 4.8-4.802 11.312-7.499 18.101-7.499 6.79 0 13.301 2.698 18.102 7.499 43.702 43.701 112.704 43.701 135.379 43.701 11.072 0 26.35 5.622 36.259 32.408 10.211 27.602 16.79 82.222 8.474 142.027-6.861 49.322-26.181 117.667-79.269 163.17-17.070 14.632-22.667 34.755-16.635 59.808 8.406 34.922 37.634 67.472 57.165 72.173 97.115 23.37 151.078 49.672 186.258 90.778 35.246 41.186 49.475 94.272 63.402 177.827 1.237 7.424-0.854 15.014-5.718 20.757s-12.010 9.053-19.534 9.053zM158.499 972.8h707c-23.434-124.632-53.541-160.771-205.886-197.435-40.768-9.811-82.482-58.114-94.965-109.968-10.59-43.994 1.163-83.296 33.094-110.666 46.701-40.030 59.8-107.763 63.45-144.576 4.896-49.365-1.725-87.888-6.952-103.035-31.277-0.578-92.322-5.238-142.125-42.872-49.845 37.645-111.027 42.298-142.36 42.872-5.227 15.15-11.846 53.675-6.952 103.035 3.65 36.813 16.747 104.547 63.448 144.579 30.992 26.565 42.154 65.728 31.43 110.275-12.597 52.323-53.576 100.8-93.296 110.358-152.344 36.661-182.453 72.8-205.886 197.432z' />
+            <path d='M691.221 665.606c-9.392 0-18.434-5.186-22.917-14.158-6.323-12.645-1.197-28.024 11.448-34.346 47.058-23.53 128.49-39.872 175.877-47.934-46.066-87.674-70.379-179.389-90.357-254.736-7.829-29.53-14.589-55.032-21.558-75.938-22.49-67.467-71.534-116.275-131.197-130.566-34.389-8.234-67.051-3.256-83.208 12.691-4.792 4.73-11.254 7.379-17.984 7.379-0.056 0-0.112 0-0.168 0-6.79-0.045-13.283-2.784-18.053-7.618-15.122-15.323-47.571-20.434-80.747-12.718-60.046 13.966-109.418 62.875-132.070 130.834-7.005 21.016-13.784 46.582-21.634 76.184-20.034 75.552-44.43 167.571-90.811 255.496 50.899 9.882 140.398 28.923 176.406 46.928 12.646 6.322 17.771 21.699 11.45 34.346-6.323 12.643-21.701 17.771-34.346 11.448-35.634-17.818-154.858-41.328-197.789-48.885-8.302-1.461-15.354-6.915-18.853-14.586-3.499-7.669-3-16.568 1.338-23.797 54.552-90.922 81.478-192.474 103.115-274.072 8.069-30.434 15.038-56.717 22.55-79.253 28.326-84.982 91.522-146.482 169.045-164.51 41.688-9.696 82.008-4.829 110.704 12.478 29.434-17.533 70.629-22.28 112.981-12.134 35.282 8.451 68.763 26.446 96.824 52.042 32.078 29.261 55.971 66.984 71.019 112.125 7.477 22.427 14.429 48.646 22.477 79.008 21.658 81.688 48.611 183.352 103.189 274.317 4.432 7.384 4.85 16.504 1.117 24.266-3.733 7.763-11.12 13.126-19.656 14.277-1.36 0.182-136.589 18.638-196.765 48.725-3.675 1.837-7.581 2.707-11.427 2.709z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman2.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman2.js
new file mode 100644
index 00000000..c0fe9211
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Woman2.js
@@ -0,0 +1,13 @@
+// Icon: Linear.Woman2
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 256c-70.579 0-128-57.421-128-128s57.421-128 128-128 128 57.421 128 128-57.421 128-128 128zM486.4 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8z' />
+            <path d='M696.096 578.699c15.101 15.101 35.538 23.762 56.072 23.76 18.56-0.002 35.725-6.946 48.334-19.557 27.627-27.626 25.741-74.462-4.203-104.408l-127.594-127.592c-24.914-24.914-70.272-43.702-105.506-43.702h-153.6c-35.234 0-80.59 18.787-105.506 43.702l-127.592 127.592c-14.050 14.050-22.438 32.338-23.619 51.498-1.235 20.051 5.84 39.338 19.414 52.91 12.613 12.613 29.778 19.558 48.338 19.557 20.534-0.002 40.971-8.661 56.070-23.76l93.424-93.426 11.118 44.474-158.346 158.347c-24.397 24.395-19.373 45.517-16.080 53.467 3.293 7.949 14.677 26.438 49.178 26.438h102.4v179.2c0 42.349 34.453 76.8 76.8 76.8 19.654 0 37.602-7.43 51.2-19.619 13.598 12.189 31.546 19.619 51.2 19.619 42.349 0 76.8-34.451 76.8-76.8v-179.2h102.4c34.499 0 45.883-18.49 49.176-26.438s8.317-29.072-16.078-53.466l-158.347-158.349 11.117-44.474 93.429 93.426zM435.2 972.8c-14.115 0-25.6-11.485-25.6-25.6v-179.2h51.2v179.2c0 14.115-11.485 25.6-25.6 25.6zM563.2 947.2c0 14.115-11.485 25.6-25.6 25.6s-25.6-11.485-25.6-25.6v-179.2h51.2v179.2zM545.099 555.701l161.096 161.099h-439.59l161.098-161.099c6.358-6.358 8.914-15.586 6.733-24.31l-25.6-102.4c-2.237-8.947-9.114-16-18.002-18.462-8.885-2.461-18.414 0.048-24.936 6.57l-125.395 125.395c-5.57 5.568-12.813 8.765-19.87 8.765-3.454 0-8.362-0.79-12.131-4.56-4.386-4.386-4.712-10.378-4.517-13.56 0.406-6.584 3.584-13.306 8.72-18.44l127.592-127.592c15.026-15.022 48.058-28.706 69.304-28.706h153.6c21.246 0 54.278 13.682 69.301 28.706l127.594 127.59c9.811 9.813 11.736 24.467 4.203 32.002-3.768 3.768-8.678 4.56-12.133 4.56-7.056 0-14.298-3.194-19.867-8.763l-125.397-125.398c-6.52-6.522-16.048-9.030-24.934-6.568-8.89 2.462-15.766 9.515-18.003 18.462l-25.6 102.4c-2.181 8.725 0.376 17.954 6.736 24.31z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wondering.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wondering.js
new file mode 100644
index 00000000..1cabfd7d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wondering.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Wondering
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640.013 768.006c-2.328 0-4.696-0.32-7.045-0.99l-358.4-102.4c-13.595-3.885-21.467-18.054-17.582-31.648s18.054-21.456 31.648-17.582l358.4 102.4c13.594 3.885 21.466 18.054 17.582 31.648-3.213 11.243-13.464 18.573-24.603 18.573z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wow.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wow.js
new file mode 100644
index 00000000..8b7eae1f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wow.js
@@ -0,0 +1,15 @@
+// Icon: Linear.Wow
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M486.4 1024c-129.922 0-252.067-50.594-343.936-142.464-91.869-91.869-142.464-214.014-142.464-343.936 0-129.923 50.595-252.067 142.464-343.936s214.013-142.464 343.936-142.464c129.922 0 252.067 50.595 343.936 142.464 91.87 91.869 142.464 214.014 142.464 343.936s-50.594 252.067-142.464 343.936c-91.869 91.87-214.014 142.464-343.936 142.464zM486.4 102.4c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2 435.2-195.23 435.2-435.2-195.23-435.2-435.2-435.2z' />
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M486.4 921.6c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM486.4 614.4c-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128-57.421-128-128-128z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wrench.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wrench.js
new file mode 100644
index 00000000..edf97267
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Wrench.js
@@ -0,0 +1,12 @@
+// Icon: Linear.Wrench
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M857.576 1024.691c-30.816 0-59.853-11.904-81.762-33.522-0.038-0.038-0.080-0.080-0.118-0.118l-394.73-394.683c-31.674 11.974-65.019 18.032-99.366 18.032-155.275 0-281.6-126.325-281.6-281.6 0-40.387 8.378-79.389 24.899-115.923 3.464-7.659 10.466-13.13 18.733-14.635 8.267-1.51 16.75 1.139 22.694 7.082l149.077 149.077h91.797v-91.797l-149.458-149.458c-5.942-5.942-8.59-14.426-7.083-22.694 1.507-8.267 6.978-15.27 14.637-18.733 35.467-16.040 75.685-24.518 116.304-24.518 155.275 0 281.6 126.325 281.6 281.6 0 33.936-6.139 67.198-18.275 99.122l394.469 394.47c22.027 21.771 34.224 50.79 34.344 81.72 0.12 30.88-11.803 60.038-33.576 82.104-21.936 22.232-51.264 34.475-82.586 34.475zM811.826 954.771c12.259 12.072 28.504 18.718 45.752 18.718 17.514 0 33.901-6.832 46.141-19.235 12.205-12.368 18.89-28.685 18.821-45.941-0.067-17.235-6.878-33.411-19.178-45.549-0.040-0.038-0.082-0.080-0.12-0.12l-406.626-406.624c-7.533-7.533-9.613-18.944-5.222-28.651 13.674-30.234 20.606-62.051 20.606-94.57 0-127.043-103.357-230.4-230.4-230.4-20.058 0-39.941 2.49-58.886 7.31l128.189 128.189c4.8 4.8 7.498 11.312 7.498 18.101v128c0 14.138-11.462 25.6-25.6 25.6h-128c-6.79 0-13.301-2.698-18.101-7.498l-127.986-127.984c-4.995 19.003-7.514 38.629-7.514 58.682 0 127.043 103.357 230.4 230.4 230.4 33.066 0 64.97-6.846 94.827-20.35 9.707-4.39 21.117-2.31 28.65 5.222l406.749 406.699z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Zipped.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Zipped.js
new file mode 100644
index 00000000..b708a309
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/Zipped.js
@@ -0,0 +1,24 @@
+// Icon: Linear.Zipped
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M332.8 409.6c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM332.8 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M640 409.6c-42.349 0-76.8-34.453-76.8-76.8s34.451-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.451 76.8-76.8 76.8zM640 307.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6z' />
+            <path d='M742.4 614.4c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M691.2 665.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M588.8 665.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M486.4 665.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M384 665.6c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M640 614.4c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M537.6 614.4c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+            <path d='M435.2 614.4c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M332.8 614.4c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.462 25.6-25.6 25.6z' />
+            <path d='M830.336 193.664c-91.869-91.869-214.014-142.464-343.936-142.464-129.923 0-252.067 50.595-343.936 142.464s-142.464 214.013-142.464 343.936c0 129.922 50.595 252.067 142.464 343.936 91.869 91.87 214.014 142.464 343.936 142.464s252.067-50.594 343.936-142.464c91.87-91.869 142.464-214.014 142.464-343.936s-50.594-252.067-142.464-343.936zM914.813 614.4h-44.413v-51.2h50.427c-1.011 17.354-3.018 34.445-6.014 51.2zM230.4 563.2c14.115 0 25.6 11.485 25.6 25.6s-11.485 25.6-25.6 25.6h-25.6v-51.2h25.6zM153.6 614.4h-95.613c-2.995-16.755-5.002-33.846-6.013-51.2h101.626v51.2zM486.4 972.8c-195.44 0-361.192-129.502-415.981-307.2h159.981c42.347 0 76.8-34.451 76.8-76.8s-34.453-76.8-76.8-76.8h-178.427c13.299-228.099 203.053-409.6 434.427-409.6s421.128 181.501 434.427 409.6h-76.027c-14.139 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h57.581c-54.79 177.698-220.541 307.2-415.981 307.2z' />
+            <path d='M793.6 665.6c-14.139 0-25.6-11.461-25.6-25.6v-51.2c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomIn.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomIn.js
new file mode 100644
index 00000000..82278f50
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomIn.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ZoomIn
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M966.070 981.101l-304.302-331.965c68.573-71.754 106.232-165.549 106.232-265.136 0-102.57-39.942-199-112.47-271.53s-168.96-112.47-271.53-112.47-199 39.942-271.53 112.47-112.47 168.96-112.47 271.53 39.942 199.002 112.47 271.53 168.96 112.47 271.53 112.47c88.362 0 172.152-29.667 240.043-84.248l304.285 331.947c5.050 5.507 11.954 8.301 18.878 8.301 6.179 0 12.378-2.226 17.293-6.728 10.421-9.555 11.126-25.749 1.571-36.171zM51.2 384c0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8-332.8-149.294-332.8-332.8z' />
+            <path d='M588.8 358.4h-179.2v-179.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v179.2h-179.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h179.2v179.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-179.2h179.2c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomOut.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomOut.js
new file mode 100644
index 00000000..0e4426cc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/Linear/svgs/ZoomOut.js
@@ -0,0 +1,13 @@
+// Icon: Linear.ZoomOut
+
+import React from 'react';
+import defaultProps from 'reactium-ui/Icon/defaultProps';
+
+export default props => (
+    <svg {...defaultProps} {...props}>
+        <g>
+            <path d='M966.070 981.101l-304.302-331.965c68.573-71.754 106.232-165.549 106.232-265.136 0-102.57-39.942-199-112.47-271.53s-168.96-112.47-271.53-112.47-199 39.942-271.53 112.47-112.47 168.96-112.47 271.53 39.942 199.002 112.47 271.53 168.96 112.47 271.53 112.47c88.362 0 172.152-29.667 240.043-84.248l304.285 331.947c5.050 5.507 11.954 8.301 18.878 8.301 6.179 0 12.378-2.226 17.293-6.728 10.421-9.555 11.126-25.749 1.571-36.171zM51.2 384c0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8-149.294 332.8-332.8 332.8-332.8-149.294-332.8-332.8z' />
+            <path d='M588.8 409.6h-409.6c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z' />
+        </g>
+    </svg>
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/_style.scss
new file mode 100644
index 00000000..6f8924b5
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/_style.scss
@@ -0,0 +1,11 @@
+$ar-icon-color: currentColor;
+
+.ar-icon {
+    fill: $ar-icon-color;
+
+    @each $clr-name, $clr-codes in $buttons {
+        &.#{$clr-name} {
+            fill: nth($clr-codes, 1);
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/defaultProps.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/defaultProps.js
new file mode 100644
index 00000000..afac9fec
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/defaultProps.js
@@ -0,0 +1,9 @@
+const Props = {
+    className: 'icon',
+    width: 24,
+    height: 24,
+    viewBox: '0 0 1024 1024',
+    xmlns: 'http://www.w3.org/2000/svg',
+};
+
+export default Props;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/index.js
new file mode 100644
index 00000000..338c2e27
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Icon/index.js
@@ -0,0 +1,59 @@
+import React from 'react';
+import op from 'object-path';
+import cn from 'classnames';
+import Linear from './Linear';
+import Feather from './Feather';
+import PropTypes from 'prop-types';
+import Button from 'reactium-ui/Button';
+
+const icons = {
+    Feather,
+    Linear,
+};
+
+const ENUMS = {
+    COLOR: { ...Button.ENUMS.COLOR },
+};
+
+delete ENUMS.COLOR.CLEAR;
+
+const Icon = ({ size, color, name, ...props }) => {
+    const { className, namespace } = props;
+
+    const Ico = op.get(Icon.icons, name);
+
+    if (!Ico) {
+        return null;
+    }
+
+    const cx = cn({
+        [className]: !!className,
+        [color]: !!color,
+        [namespace]: !!namespace,
+    });
+
+    return Ico({ ...props, width: size, height: size, className: cx });
+};
+
+Icon.ENUMS = ENUMS;
+Icon.icons = {
+    Feather,
+    Linear,
+};
+
+Object.entries(Icon.icons).forEach(([key, value]) => {
+    Icon[key] = value;
+});
+
+Icon.propTypes = {
+    className: PropTypes.string,
+    color: PropTypes.oneOf(Object.values(ENUMS.COLOR)),
+    namespace: PropTypes.string,
+    size: PropTypes.number,
+};
+Icon.defaultProps = {
+    namespace: 'ar-icon',
+    size: 24,
+};
+
+export { Icon, Icon as default, Feather, Linear };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Image/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Image/index.js
new file mode 100644
index 00000000..33faaa5e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Image/index.js
@@ -0,0 +1,234 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Breakpoint from '../Breakpoint';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const ENUMS = {
+    DEBUG: false,
+    EVENT: {
+        COMPLETE: 'complete',
+        LOAD: 'load',
+    },
+    STATUS: {
+        COMPLETE: 'COMPLETE',
+        LOADING: 'LOADING',
+        PENDING: 'PENDING',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Image
+ * -----------------------------------------------------------------------------
+ */
+let Img = (
+    {
+        highRes,
+        lowRes,
+        onComplete,
+        onLoad,
+        onResize,
+        preloader,
+        src,
+        iWindow,
+        iDocument,
+        ...otherProps
+    },
+    ref,
+) => {
+    const props = { ...otherProps };
+
+    Object.keys(Img.propTypes).forEach(key => {
+        delete props[key];
+    });
+
+    // Refs
+    const containerRef = useRef();
+    const stateRef = useRef({
+        Q: {},
+        prevState: {},
+        highRes,
+        images: {},
+        lowRes,
+        preloader,
+        status: ENUMS.STATUS.PENDING,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        if (ENUMS.DEBUG === true && caller) {
+            console.log('setState() ->', caller, stateRef.current);
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const loadComplete = () => {
+        const { Q = {} } = stateRef.current;
+
+        if (Object.keys(Q).length < 1) {
+            setState({ status: ENUMS.STATUS.COMPLETE }, 'loadComplete()');
+            onComplete({ type: ENUMS.EVENT.COMPLETE });
+        }
+    };
+
+    const loadImages = () => {
+        const { Q = {}, images = {}, status } = stateRef.current;
+
+        if (status === ENUMS.STATUS.LOADING) {
+            return;
+        }
+
+        if (highRes) {
+            Object.entries(highRes).forEach(([size, s]) => {
+                const loader = new Image();
+
+                loader.onload = function() {
+                    op.set(images, size, renderImage(s));
+                    delete Q[size];
+
+                    onLoad({ type: ENUMS.EVENT.LOAD, url: s, queue: Q });
+
+                    loadComplete();
+                };
+                loader.src = s;
+
+                Q[size] = loader;
+            });
+
+            setState({ status: ENUMS.STATUS.LOADING, Q }, 'loadImages()');
+        }
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        breakpoint: op.get(containerRef.current, 'state.active', null),
+        setState,
+        state: stateRef.current,
+        ...ref,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => {
+        const { status } = stateRef.current;
+
+        switch (status) {
+            case ENUMS.STATUS.PENDING:
+                loadImages();
+                break;
+        }
+    });
+
+    // Renderers
+    const renderComplete = () => {
+        const { images = {} } = stateRef.current;
+        return (
+            <Breakpoint
+                {...images}
+                iWindow={iWindow}
+                iDocument={iDocument}
+                onResize={onResize}
+                ref={containerRef}
+            />
+        );
+    };
+
+    const renderImage = s => {
+        return (
+            <img
+                style={{ maxWidth: '100%', height: 'auto' }}
+                {...props}
+                src={s}
+            />
+        );
+    };
+
+    const renderLoading = () => {
+        return lowRes ? (
+            <Breakpoint
+                iWindow={iWindow}
+                iDocument={iDocument}
+                onResize={onResize}
+                ref={containerRef}
+                {...Object.keys(lowRes).reduce((obj, size) => {
+                    obj[size] = renderImage(lowRes[size]);
+                    return obj;
+                }, {})}
+            />
+        ) : null;
+    };
+
+    const renderPending = () => {
+        const { preloader } = stateRef.current;
+        return preloader || null;
+    };
+
+    const render = () => {
+        if (src) {
+            return rendeImage(src);
+        }
+
+        const { status } = stateRef.current;
+
+        switch (status) {
+            case ENUMS.STATUS.COMPLETE:
+                return renderComplete();
+
+            case ENUMS.STATUS.LOADING:
+                return renderLoading();
+
+            case ENUMS.STATUS.PENDING:
+            default:
+                return renderPending();
+        }
+    };
+
+    return render();
+};
+
+Img = forwardRef(Img);
+
+Img.propTypes = {
+    highRes: PropTypes.shape(Breakpoint.propTypes),
+    lowRes: PropTypes.shape(Breakpoint.propTypes),
+    onComplete: PropTypes.func,
+    onLoad: PropTypes.func,
+    onResize: PropTypes.func,
+    preloader: PropTypes.node,
+    src: PropTypes.string,
+};
+
+Img.defaultProps = {
+    onComplete: noop,
+    onLoad: noop,
+    onResize: noop,
+};
+
+export { Img as Image, Img as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/_style.scss
new file mode 100644
index 00000000..bf0bb611
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/_style.scss
@@ -0,0 +1,50 @@
+$ar-modal-color-background: rgba($color-black, 0.8) !default;
+$ar-modal-z: 1000000000;
+
+.ar-modal {
+    top: 0;
+    left: 0;
+    width: 100vw;
+    height: 100vh;
+    display: none;
+    position: fixed;
+    z-index: $ar-modal-z;
+    opacity: 0;
+
+    &.visible {
+        opacity: 1;
+        display: block;
+    }
+
+    &-bg {
+        top: 0;
+        left: 0;
+        z-index: 1;
+        width: 100vw;
+        height: 100vh;
+        position: absolute;
+        border: none;
+        background-color: $ar-modal-color-background;
+    }
+
+    &-wrapper {
+        width: 100vw;
+        height: 100vh;
+        display: flex;
+        justify-content: center;
+        align-items: flex-start;
+        flex-wrap: wrap;
+        overflow-y: auto;
+        padding: 24px 0;
+    }
+
+    &-content {
+        z-index: 10;
+        padding: 0;
+        display: inline;
+
+        @include breakpoint(sm) {
+            top: 40px;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/index.js
new file mode 100644
index 00000000..a44ff4d2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Modal/index.js
@@ -0,0 +1,170 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import Dismissable from '../Dismissable';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+    useState,
+} from 'react';
+
+import ReactDOM from 'react-dom';
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Modal
+ * -----------------------------------------------------------------------------
+ */
+let Modal = (props, ref) => {
+    // Refs
+    const bodyRef = useRef();
+    const windowRef = useRef();
+    const dissmissableRef = useRef();
+    const stateRef = useRef({
+        animation: null,
+        ...props,
+        overflow: 'auto',
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        stateRef.current = { ...stateRef.current, ...newState };
+        setNewState(stateRef.current);
+    };
+
+    const toggleWindow = (locked = false) => {
+        const body = bodyRef.current;
+        const window = windowRef.current;
+
+        if (locked === true) {
+            window.scroll(window.scrollX, window.scrollY);
+            body.style.overflowY = 'hidden';
+        } else {
+            const { overflow } = stateRef.current;
+            body.style.overflow = overflow;
+        }
+
+        const style = body.style;
+    };
+
+    const dismiss = () => {
+        toggleWindow(false);
+        const { dismissable } = stateRef.current;
+
+        if (dismissable) {
+            return dissmissableRef.current
+                .hide()
+                .then(() => setState({ children: null }));
+        } else {
+            return Promise.resolve();
+        }
+    };
+
+    const update = content => {
+        if (content) {
+            setState({ children: content });
+        }
+    };
+
+    const show = content => {
+        toggleWindow(true);
+        update(content);
+        return dissmissableRef.current.show();
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        ...dissmissableRef.current,
+        dismiss,
+        hide: dismiss,
+        show,
+        setState,
+        state: stateRef.current,
+        update,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useLayoutEffect(() => {
+        const doc = op.get(props, 'iDocument', document);
+        const win = op.get(props, 'iWindow', window);
+
+        if (!bodyRef.current) {
+            bodyRef.current = doc.body;
+            const overflow = op.get(doc.body, 'style.overflow', 'auto');
+
+            setState({ overflow });
+        }
+
+        if (!windowRef.current) {
+            windowRef.current = win;
+        }
+    }, [bodyRef.current, windowRef.current]);
+
+    const render = () => {
+        if (!bodyRef.current) {
+            return null;
+        }
+
+        const {
+            children,
+            className,
+            dismissable,
+            namespace,
+            visible = false,
+        } = stateRef.current;
+
+        const cname = cn({
+            [className]: !!className,
+            visible,
+        });
+
+        return ReactDOM.createPortal(
+            <Dismissable
+                {...stateRef.current}
+                ref={dissmissableRef}
+                className={cname}>
+                {dismissable && (
+                    <button
+                        type='button'
+                        className={`${namespace}-bg`}
+                        onClick={dismiss}
+                    />
+                )}
+                {!dismissable && <div className={`${namespace}-bg`} />}
+                <div className={`${namespace}-wrapper`}>
+                    <div className={`${namespace}-content`}>{children}</div>
+                </div>
+            </Dismissable>,
+            bodyRef.current,
+        );
+    };
+
+    return render();
+};
+
+Modal = forwardRef(Modal);
+
+Modal.propTypes = {
+    ...Dismissable.propTypes,
+    dismissable: PropTypes.bool,
+};
+
+Modal.defaultProps = {
+    ...Dismissable.defaultProps,
+    dismissable: true,
+    namespace: 'ar-modal',
+};
+
+export { Modal, Modal as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/_style.scss
new file mode 100644
index 00000000..fb83ebad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/_style.scss
@@ -0,0 +1,15 @@
+.ar-pagination {
+    display: inline-flex;
+    justify-content: flex-start;
+    align-items: center;
+
+    &, button, span {
+        user-select: none;
+    }
+
+    .ar-dropdown {
+        button {
+            justify-content: center;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/index.js
new file mode 100644
index 00000000..054982eb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Pagination/index.js
@@ -0,0 +1,297 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import Button from 'reactium-ui/Button';
+import Dropdown from 'reactium-ui/Dropdown';
+import { Feather } from 'reactium-ui/Icon';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const DEBUG = true;
+const noop = () => {};
+
+let Pagination = (
+    { onChange, onClick, onNextClick, onPrevClick, update, ...props },
+    ref,
+) => {
+    const containerRef = useRef();
+    const stateRef = useRef({
+        ...props,
+    });
+
+    const [state, setNewState] = useState({ ...stateRef.current });
+
+    const setState = (newState, silent) => {
+        if (!containerRef.current) return;
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        if (!silent) setNewState(stateRef.current);
+    };
+
+    const next = () => {
+        const { page, pages } = stateRef.current;
+        let p = page + 1;
+        return p > pages || p < 2 ? null : p;
+    };
+
+    const prev = () => {
+        const { page, pages } = stateRef.current;
+        let p = page - 1;
+        return p > pages || p < 1 ? null : p;
+    };
+
+    const _onChange = (e, p) => {
+        const { pages } = stateRef.current;
+        if (p > pages || p < 1) return;
+        setState({ page: p }, true);
+        setState({ next: next(), prev: prev() }, true);
+        return p;
+    };
+
+    const _onClick = (e, p) => {
+        if (!_onChange(e, p)) return;
+        const h = handle();
+        onChange(e, p, h);
+        onClick(e, p, h);
+        setState({ page: p });
+        return p;
+    };
+
+    const _onNextClick = e => {
+        const p = next();
+        if (!p) return;
+        if (!_onClick(e, p)) return;
+        onNextClick(e, p, handle());
+    };
+
+    const _onPrevClick = e => {
+        const p = prev();
+        if (!p) return;
+        if (!_onClick(e, p)) return;
+        onPrevClick(e, p, handle());
+    };
+
+    const handle = () => ({
+        setState,
+        state: stateRef.current,
+    });
+
+    useEffect(() => {
+        setState(props);
+    }, Object.values(props));
+
+    useImperativeHandle(ref, () => handle());
+
+    const renderNumbers = () => {
+        const {
+            color,
+            namespace,
+            numbers,
+            page,
+            pages,
+            size,
+        } = stateRef.current;
+
+        let pgs = _.range(1, pages + 1);
+        let idx = pgs.indexOf(page) - Math.floor(numbers / 2);
+        idx = Math.max(0, idx);
+
+        let sel = Array.from(pgs).splice(idx, numbers);
+
+        if (sel.length < numbers) {
+            const diff = numbers - sel.length;
+            idx -= diff;
+            idx = Math.max(0, idx);
+
+            sel = Array.from(pgs).splice(idx, numbers);
+        }
+
+        return sel.map(n => (
+            <Button
+                key={`${namespace}-button-${n}`}
+                onClick={e => _onClick(e, n)}
+                color={color}
+                size={size}
+                type='button'
+                readOnly={Boolean(page === n)}
+                className={cn({
+                    'px-xs-8': true,
+                    active: page === n,
+                })}>
+                {n}
+            </Button>
+        ));
+    };
+
+    const renderCurrent = () => {
+        const { arrows, color, dropdown, page, pages, size } = stateRef.current;
+
+        const style = { minWidth: 50 };
+
+        if (arrows) {
+            style.paddingLeft = 2;
+            style.paddingRight = 2;
+        }
+
+        const dropdownSelector =
+            dropdown === true
+                ? { 'data-dropdown-element': true, type: 'button' }
+                : { readOnly: true };
+
+        return (
+            <Button
+                size={size}
+                style={style}
+                color={color}
+                type='button'
+                {...dropdownSelector}>
+                {page}
+                <span className='lowercase mx-xs-8'>of</span>
+                {pages}
+            </Button>
+        );
+    };
+
+    const Drop = ({ children }) => {
+        const {
+            align,
+            color,
+            page,
+            pages,
+            size,
+            verticalAlign,
+        } = stateRef.current;
+
+        const data =
+            pages < 1
+                ? []
+                : _.times(pages, i => {
+                      const n = i + 1;
+                      return { value: n, label: n };
+                  });
+
+        return pages < 1 ? (
+            children
+        ) : (
+            <Dropdown
+                align={align}
+                checkbox={false}
+                color={color}
+                data={data}
+                onItemSelect={e => _onClick(e, e.item.value)}
+                selection={[page]}
+                size={size}
+                verticalAlign={verticalAlign}>
+                {children}
+            </Dropdown>
+        );
+    };
+
+    const render = () => {
+        const {
+            arrows,
+            className,
+            color,
+            dropdown,
+            namespace,
+            numbers,
+            page,
+            pages,
+            size,
+        } = stateRef.current;
+
+        const display = pages > 1 ? null : 'none';
+
+        const pagination = () => (
+            <div className='btn-group' ref={containerRef}>
+                {arrows && (
+                    <Button
+                        color={color}
+                        size={size}
+                        type='button'
+                        readOnly={Boolean(page <= 1)}
+                        onClick={e => _onPrevClick(e)}
+                        className='px-xs-4'>
+                        <Feather.ChevronLeft width={14} height={14} />
+                    </Button>
+                )}
+                {numbers < 2 && renderCurrent()}
+                {numbers > 1 && renderNumbers()}
+                {arrows && (
+                    <Button
+                        color={color}
+                        size={size}
+                        type='button'
+                        readOnly={Boolean(page >= pages)}
+                        onClick={e => _onNextClick(e)}
+                        className='px-xs-4'>
+                        <Feather.ChevronRight width={14} height={14} />
+                    </Button>
+                )}
+            </div>
+        );
+
+        return (
+            <div
+                ref={ref}
+                style={{ display }}
+                className={cn({
+                    [namespace]: !!namespace,
+                    [className]: !!className,
+                })}>
+                {dropdown ? <Drop>{pagination()}</Drop> : pagination()}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Pagination = forwardRef(Pagination);
+
+Pagination.COLOR = Button.ENUMS.COLOR;
+
+Pagination.propTypes = {
+    align: PropTypes.oneOf(Object.values(Dropdown.ENUMS.ALIGN)),
+    arrows: PropTypes.bool,
+    className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    color: PropTypes.oneOf(Object.values(Button.ENUMS.COLOR)),
+    dropdown: PropTypes.bool,
+    namespace: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    numbers: PropTypes.number,
+    onChange: PropTypes.func,
+    onClick: PropTypes.func,
+    onNextClick: PropTypes.func,
+    onPrevClick: PropTypes.func,
+    page: PropTypes.number,
+    pages: PropTypes.number,
+    verticalAlign: PropTypes.oneOf(Object.values(Dropdown.ENUMS.VALIGN)),
+};
+
+Pagination.defaultProps = {
+    align: Dropdown.ENUMS.ALIGN.CENTER,
+    arrows: true,
+    className: null,
+    color: Button.ENUMS.COLOR.CLEAR,
+    dropdown: false,
+    namespace: 'ar-pagination',
+    numbers: 0,
+    onChange: noop,
+    onClick: noop,
+    onNextClick: noop,
+    onPrevClick: noop,
+    page: 0,
+    size: Button.ENUMS.SIZE.XS,
+    verticalAlign: Dropdown.ENUMS.VALIGN.BOTTOM,
+};
+
+export { Pagination, Pagination as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/_style.scss
new file mode 100644
index 00000000..a82353ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/_style.scss
@@ -0,0 +1,59 @@
+$ar-picker-z-button: 100 !default;
+$ar-picker-z-input: 10 !default;
+$ar-picker-z-select: 1000 !default;
+$ar-picker-color-bg: $color-white;
+
+.ar-picker {
+    position: relative;
+    display: inline-flex;
+    flex-direction: column;
+
+    > input {
+        @include inputStyle();
+
+        // z-index: $ar-picker-z-input;
+        margin: 0;
+        margin-bottom: 0 !important;
+        padding-right: 40px;
+
+        &:read-only {
+            cursor: pointer;
+        }
+    }
+
+    &.focus {
+        > input {
+            @include inputStyleFocus();
+            margin: 0;
+            margin-bottom: 0 !important;
+        }
+    }
+
+    > button {
+        @extend .btn-clear;
+
+        background-color: transparent;
+        z-index: $ar-picker-z-button;
+        position: absolute;
+        top: 0;
+        right: 0;
+        width: 40px;
+        height: 41px;
+        padding: 0;
+
+        svg {
+            width: 18px;
+            height: 18px;
+        }
+    }
+
+    &-wrapper {
+        z-index: $ar-picker-z-select;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+        transform: translateY(100%);
+        box-shadow: $ar-dropdown-shadow;
+        background-color: $ar-picker-color-bg;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/index.js
new file mode 100644
index 00000000..db61c3a9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Picker/index.js
@@ -0,0 +1,293 @@
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import Dismissable from '../Dismissable';
+import { Feather } from '../Icon';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Picker
+ * -----------------------------------------------------------------------------
+ */
+
+let Picker = (
+    {
+        children,
+        className,
+        formatter,
+        icon,
+        iDocument,
+        iWindow,
+        namespace,
+        onBeforeHide = noop,
+        onBeforeShow = noop,
+        onChange = noop,
+        onDismiss = noop,
+        onFocus = noop,
+        onHide = noop,
+        onKeyDown = noop,
+        onShow = noop,
+        selected,
+        visible: defaultVisible,
+        ...props
+    },
+    ref,
+) => {
+    // Refs
+    const containerRef = useRef();
+    const inputRef = useRef();
+    const selectRef = useRef();
+    const stateRef = useRef({
+        prevState: {},
+        selected,
+        visible: defaultVisible,
+        ...props,
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState) => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const isChild = (child) => {
+        if (!child) {
+            return true;
+        }
+
+        const parent = containerRef.current;
+        let node = child.parentNode;
+        while (node !== null) {
+            if (node == parent) {
+                return true;
+            }
+            node = node.parentNode;
+        }
+        return false;
+    };
+
+    const dismiss = (e) => {
+        if (!e) {
+            return hide({ ref });
+        }
+
+        const evt = { ...e, ref };
+
+        return !isChild(e.target) ? hide(evt) : Promise.resolve(evt);
+    };
+
+    const hide = (e) => {
+        const { disabled } = stateRef.current;
+        if (disabled === true) {
+            return;
+        }
+
+        const select = selectRef.current;
+        return select.hide().then(() => {
+            setState({ visible: false });
+            return e;
+        });
+    };
+
+    const show = (e) => {
+        const { disabled } = stateRef.current;
+        if (disabled === true) {
+            return;
+        }
+
+        const evt = { ...e, ref };
+        const select = selectRef.current;
+        return select.show().then(() => {
+            setState({ visible: true });
+            return evt;
+        });
+    };
+
+    const toggle = (e) => {
+        const { visible } = stateRef.current;
+        return visible ? hide(e) : show(e);
+    };
+
+    const handler = () => ({
+        ...ref,
+        container: containerRef.current,
+        dismissable: selectRef.current,
+        dismiss,
+        hide,
+        input: inputRef.current,
+        isChild,
+        show,
+        setState,
+        state: stateRef.current,
+        toggle,
+    });
+
+    // External Interface
+    useImperativeHandle(ref, handler);
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useLayoutEffect(() => {
+        const win = iWindow || window;
+        const doc = iDocument || document;
+
+        win.addEventListener('mousedown', dismiss);
+        doc.addEventListener('keydown', _onKeyDown);
+
+        if (win) {
+            return function cleanup() {
+                win.removeEventListener('mousedown', dismiss);
+                doc.removeEventListener('keydown', _onKeyDown);
+            };
+        }
+    });
+
+    const _onFocus = (e) => show(e).then((evt) => onFocus(evt));
+
+    const _onInputChange = (e) => {
+        const value = formatter(e.target.value);
+        setState({ value });
+        onChange({ ...e, value });
+    };
+
+    const _onKeyDown = (e) => {
+        if (isChild(e.target)) {
+            switch (e.keyCode) {
+                case 27:
+                    e.preventDefault();
+                    hide();
+
+                    break;
+            }
+        }
+
+        onKeyDown(e);
+    };
+
+    // Renderers
+    const render = () => {
+        let { disabled, focus, value, visible } = stateRef.current;
+
+        visible = disabled === true ? false : visible;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            focus: visible,
+        });
+
+        const scname = cn({
+            [`${namespace}-select`]: !!namespace,
+        });
+
+        const dismissProps = {
+            className: scname,
+            ref: selectRef,
+            onBeforeHide,
+            onBeforeShow,
+            onDismiss,
+            onHide,
+            onShow,
+            visible,
+        };
+
+        const Icon = icon ? () => (visible ? icon.opened : icon.closed) : null;
+
+        return (
+            <span ref={containerRef} className={cname}>
+                <input
+                    {...props}
+                    ref={inputRef}
+                    value={value || ''}
+                    onChange={_onInputChange}
+                    onFocus={_onFocus}
+                    onKeyDown={_onKeyDown}
+                />
+                <button type='button' onClick={toggle} disabled={disabled}>
+                    {Icon && <Icon />}
+                </button>
+                <Dismissable {...dismissProps}>
+                    {children(handler(), stateRef.current)}
+                </Dismissable>
+            </span>
+        );
+    };
+
+    return render();
+};
+
+Picker = forwardRef(Picker);
+
+Picker.propTypes = {
+    children: PropTypes.func,
+    className: PropTypes.string,
+    disabled: PropTypes.bool,
+    formatter: PropTypes.func,
+    icon: PropTypes.shape({
+        closed: PropTypes.node,
+        opened: PropTypes.node,
+    }),
+    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    namespace: PropTypes.string,
+    onBeforeHide: PropTypes.func,
+    onBeforeShow: PropTypes.func,
+    onChange: PropTypes.func,
+    onDismiss: PropTypes.func,
+    onHide: PropTypes.func,
+    onKeyDown: PropTypes.func,
+    onShow: PropTypes.func,
+    onChange: PropTypes.func,
+    onFocus: PropTypes.func,
+    selected: PropTypes.any,
+    value: PropTypes.oneOfType([
+        PropTypes.number,
+        PropTypes.string,
+        PropTypes.array,
+        PropTypes.object,
+    ]),
+};
+
+Picker.defaultProps = {
+    formatter: (val) => val,
+    icon: {
+        closed: <Feather.ChevronDown />,
+        opened: <Feather.ChevronUp />,
+    },
+    namespace: 'ar-picker',
+    onBeforeHide: noop,
+    onBeforeShow: noop,
+    onChange: noop,
+    onDismiss: noop,
+    onHide: noop,
+    onKeyDown: noop,
+    onShow: noop,
+    onFocus: noop,
+    selected: null,
+    value: null,
+};
+
+export { Picker, Picker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Portal/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Portal/index.js
new file mode 100644
index 00000000..21752f53
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Portal/index.js
@@ -0,0 +1,9 @@
+import ReactDOM from 'react-dom';
+
+const Portal = ({ children }) => {
+    return typeof document !== 'undefined'
+        ? ReactDOM.createPortal(children, document.body)
+        : children;
+};
+
+export { Portal, Portal as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Prefs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Prefs/index.js
new file mode 100644
index 00000000..51049b01
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Prefs/index.js
@@ -0,0 +1,37 @@
+import op from 'object-path';
+
+const clear = key => {
+    let prefs = get();
+
+    if (key) {
+        op.del(prefs, key);
+    } else {
+        op.set(prefs, {});
+    }
+
+    localStorage.setItem('ar-prefs', JSON.stringify(prefs));
+    return prefs;
+};
+
+const get = (key, defaultValue) => {
+    let ls = localStorage.getItem('ar-prefs') || {};
+    ls = typeof ls === 'string' ? JSON.parse(ls) : ls;
+    return key ? op.get(ls, key, defaultValue) : ls;
+};
+
+const set = (key, value) => {
+    let prefs = get();
+    op.set(prefs, key, value);
+    localStorage.setItem('ar-prefs', JSON.stringify(prefs));
+    return prefs;
+};
+
+const Prefs = {
+    clear,
+    get,
+    set,
+};
+
+export { Prefs, Prefs as default };
+
+// TODO: Make it so that prefs are loaded from a user object
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/_style.scss
new file mode 100644
index 00000000..a74afc6e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/_style.scss
@@ -0,0 +1,70 @@
+$ar-progress-color-background: $color-grey-light !default;
+$ar-progress-color-bar: $color-blue !default;
+$ar-progress-height: 32px !default;
+$ar-progress-radius: 2px !default;
+$ar-progress-radius-pill: 32px !default;
+$ar-progress-shadow: 0 0 1px 1px rgba($color-black, 0.25) !default;
+$ar-progress-shadow-inner: inset 0 0 5px 1px rgba($color-black, 0.05) !default;
+
+.ar-progress {
+    overflow: hidden;
+    width: 100%;
+    height: $ar-progress-height;
+    background-color: $ar-progress-color-background;
+    display: flex;
+    align-items: stretch;
+    box-shadow: $ar-progress-shadow-inner;
+    border-radius: $ar-progress-radius;
+
+    .bar {
+        background-color: $ar-progress-color-bar;
+        box-shadow: $ar-progress-shadow;
+        display: flex;
+        justify-content: flex-end;
+        align-items: center;
+        max-width: 100%;
+    }
+
+    .label {
+        padding-right: 8px;
+        padding-left: 8px;
+        overflow: hidden;
+        line-height: 1;
+        font-size: 12px;
+        font-family: monospace;
+        border: 2px solid transparent;
+        user-select: none;
+    }
+
+    &.pill {
+        border-radius: $ar-progress-radius-pill;
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &.#{$clr-name} {
+            .bar {
+                color: nth($clr-codes, 3);
+                box-shadow: 0 0 1px 1px rgba(nth($clr-codes, 2), 0.5);
+                @include h-gradient(nth($clr-codes, 1), nth($clr-codes, 2));
+            }
+        }
+    }
+
+    @each $size-name, $size-codes in $button-sizes {
+        $ft: nth($size-codes, 1);
+        $pt: nth($size-codes, 2);
+        $pb: nth($size-codes, 4);
+
+        &.#{$size-name} {
+            height: $pt + $pb + $ft;
+
+            .label {
+                margin-top: -1px;
+                margin-bottom: 1px;
+                padding-top: $pt;
+                padding-bottom: $pb;
+                font-size: $ft;
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/enums.js
new file mode 100644
index 00000000..4948a2af
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/enums.js
@@ -0,0 +1,13 @@
+import BTN_ENUMS from '../Button/enums';
+
+const ENUMS = {
+    APPEARANCE: BTN_ENUMS.APPEARANCE,
+    COLOR: BTN_ENUMS.COLOR,
+    EVENT: {
+        CHANGE: 'change',
+        COMPLETE: 'complete',
+    },
+    SIZE: BTN_ENUMS.SIZE,
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/index.js
new file mode 100644
index 00000000..aceb35ac
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Progress/index.js
@@ -0,0 +1,146 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+
+import ENUMS from './enums';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Progress
+ * -----------------------------------------------------------------------------
+ */
+let Progress = ({ children, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const prevStateRef = useRef();
+    const stateRef = useRef({
+        ...props,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+    const [prevState, setPrevState] = useState(prevStateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        prevStateRef.current = { ...stateRef.current };
+        stateRef.current = { ...stateRef.current, ...newState };
+        setPrevState(prevStateRef.current);
+        setNewState(stateRef.current);
+    };
+
+    const _onChange = e => {
+        const { onChange } = stateRef.current;
+        onChange(e);
+    };
+
+    const _onComplete = e => {
+        const { onComplete } = stateRef.current;
+        onComplete(e);
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        container: containerRef.current,
+        setState,
+        state: stateRef.current,
+        value: op.get(stateRef.current, 'value'),
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => {
+        const { value } = stateRef.current;
+        if (op.get(prevState, 'value') !== value) {
+            const percent = Math.min(100, Math.ceil(value * 100));
+            const evt = {
+                type: ENUMS.EVENT.CHANGE,
+                value,
+                percent,
+                target: containerRef.current,
+            };
+            _onChange(evt);
+
+            if (percent === 100) {
+                _onComplete({ ...evt, type: ENUMS.EVENT.COMPLETE });
+            }
+        }
+    }, [state.value]);
+
+    const render = () => {
+        const {
+            appearance,
+            className,
+            color,
+            name,
+            namespace,
+            size,
+            value = 0,
+        } = stateRef.current;
+
+        const cname = cn({
+            [size]: !!size,
+            [color]: !!color,
+            [namespace]: !!namespace,
+            [className]: !!className,
+            [appearance]: !!appearance,
+        });
+
+        const width = Math.min(100, value * 100) + '%';
+
+        return (
+            <div ref={containerRef} className={cname}>
+                {name && (
+                    <input
+                        type='hidden'
+                        value={value}
+                        name={name}
+                        onChange={_onChange}
+                    />
+                )}
+                <div className='bar' style={{ width }}>
+                    {children && <span className='label'>{children}</span>}
+                </div>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Progress = forwardRef(Progress);
+
+Progress.ENUMS = ENUMS;
+
+Progress.propTypes = {
+    appearance: PropTypes.oneOf(Object.values(ENUMS.APPEARANCE)),
+    className: PropTypes.string,
+    color: PropTypes.oneOf(Object.values(ENUMS.COLOR)),
+    name: PropTypes.string,
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    onComplete: PropTypes.func,
+    size: PropTypes.oneOf(Object.values(ENUMS.SIZE)),
+    value: PropTypes.number,
+};
+
+Progress.defaultProps = {
+    color: ENUMS.COLOR.PRIMARY,
+    namespace: 'ar-progress',
+    onChange: noop,
+    onComplete: noop,
+    value: 0,
+};
+
+export { Progress, Progress as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/_style.scss
new file mode 100644
index 00000000..c47da95f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/_style.scss
@@ -0,0 +1,113 @@
+$ar-radio-bg-active-color: $color-gray-dark !default;
+$ar-radio-border-color: $color-blue !default;
+$ar-radio-size: 18px !default;
+$ar-radio-dot-size: 10px !default;
+
+@mixin radio-dot($radio-color) {
+    border-radius: 100%;
+    background-color: $radio-color;
+    width: $ar-radio-dot-size;
+    height: $ar-radio-dot-size;
+}
+
+label.ar-radio {
+    position: relative;
+    display: flex;
+    min-width: $ar-radio-size;
+    flex-grow: 0;
+    flex-shrink: 0;
+    flex-direction: row;
+    align-items: center;
+    cursor: pointer;
+    user-select: none;
+
+    * {
+        pointer-events: none;
+    }
+
+    input {
+        opacity: 0;
+        position: absolute;
+        left: 0;
+        top: 0;
+    }
+
+    > span:last-child {
+        position: relative;
+        width: $ar-radio-size;
+        height: $ar-radio-size;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        border: 2px solid $ar-radio-border-color;
+        border-radius: 100%;
+        padding: 0;
+
+        > span {
+            position: relative;
+            opacity: 0;
+            margin: 0;
+            @include radio-dot($ar-radio-bg-active-color);
+        }
+    }
+
+    > span:first-child {
+        flex-grow: 1;
+    }
+
+    &.ar-radio-label-left {
+        > span:first-child {
+            margin-right: 10px;
+            text-align: left;
+        }
+    }
+
+    &.ar-radio-label-right {
+        flex-direction: row-reverse;
+
+        > span:first-child {
+            margin-left: 10px;
+            text-align: right;
+        }
+    }
+
+    input:focus + span:last-child {
+        box-shadow: 0 0 1px 2px rgba($ar-radio-bg-active-color, 0.25);
+    }
+
+    input:checked + span:last-child {
+        > span {
+            opacity: 1;
+            @include radio-dot($ar-radio-bg-active-color);
+        }
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &-#{$clr-name} {
+
+            input:focus + span:last-child {
+                box-shadow: 0 0 1px 2px rgba(nth($clr-codes, 1), 0.25);
+            }
+
+            input + span:last-child {
+                border-color: nth($clr-codes, 1);
+
+                > span {
+                    opacity: 0;
+                }
+            }
+
+            input:checked + span:last-child {
+                > span {
+                    opacity: 1;
+                }
+            }
+        }
+    }
+
+    &:hover {
+        input:focus + span:last-child {
+            box-shadow: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/index.js
new file mode 100644
index 00000000..a9a5516d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/index.js
@@ -0,0 +1,102 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Imports
+ * -----------------------------------------------------------------------------
+ */
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+import Toggle from 'reactium-ui/Toggle';
+import React, { forwardRef, useImperativeHandle, useRef } from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Radio
+ * -----------------------------------------------------------------------------
+ */
+
+const ENUMS = Toggle.ENUMS;
+
+const cn = ({ className, color = ENUMS.COLOR.PRIMARY, label, labelAlign }) => {
+    const lbl = `ar-radio-label-${labelAlign}`;
+    const clr = `ar-radio-${color}`;
+
+    return classnames({
+        [className]: !!className,
+        [lbl]: !!label,
+        [clr]: true,
+        'ar-radio': true,
+    });
+};
+
+let Radio = (
+    {
+        className,
+        htmlFor,
+        id,
+        label,
+        labelAlign,
+        labelStyle,
+        name,
+        style,
+        title,
+        ...props
+    },
+    ref,
+) => {
+    const inputRef = useRef();
+    const labelRef = useRef();
+
+    useImperativeHandle(ref, () => ({
+        blur: () => {
+            labelRef.current.blur;
+        },
+        check: () => {
+            inputRef.current.checked = true;
+        },
+        focus: () => {
+            labelRef.current.focus();
+        },
+        input: inputRef.current,
+        label: labelRef.current,
+        toggle: () => {
+            inputRef.current.checked = !inputRef.current.checked;
+        },
+        uncheck: () => {
+            inputRef.current.checked = false;
+        },
+        value: inputRef.current.value,
+    }));
+
+    return (
+        <label
+            ref={labelRef}
+            aria-label={label}
+            aria-labelledby={!label && name}
+            className={cn({ labelAlign, label, className })}
+            style={style}
+            title={title}>
+            <span
+                className={classnames({ ['sr-only']: !label })}
+                style={labelStyle}>
+                {label || title || name}
+            </span>
+            <input ref={inputRef} {...props} id={id} name={name} />
+            <span>
+                <span />
+            </span>
+        </label>
+    );
+};
+
+Radio = forwardRef(Radio);
+
+Radio.ENUMS = ENUMS;
+
+Radio.propTypes = { ...Toggle.propTypes };
+
+Radio.defaultProps = {
+    ...Toggle.defaultProps,
+    type: ENUMS.TYPE.RADIO,
+};
+
+export { Radio, Radio as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/test.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/test.js
new file mode 100644
index 00000000..41dd38b7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Radio/test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import Radio from './index';
+import { shallow } from 'reactium-core/enzyme';
+
+test('<Radio />', () => {
+    const component = shallow(<Radio />);
+
+    expect(component.html().length).toBeGreaterThan(0);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/_style.scss
new file mode 100644
index 00000000..53a0bf90
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/_style.scss
@@ -0,0 +1,25 @@
+.ar-scene {
+    width: 100%;
+    display: flex;
+    position: relative;
+    align-items: stretch;
+    justify-content: center;
+    overflow: hidden;
+
+    &-stage {
+        width: 100%;
+        height: 100%;
+    }
+
+    &-panel {
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        z-index: 1;
+        display: none;
+
+        &.active {
+            display: block;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/enums.js
new file mode 100644
index 00000000..0433360c
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/enums.js
@@ -0,0 +1,42 @@
+const ENUMS = {
+    ANIMATION: {
+        COVER: 'cover',
+        FADE: 'fade',
+        FLIP: 'flip',
+        SLIDE: 'slide',
+        REVEAL: 'reveal',
+    },
+    DEBUG: false,
+    DIRECTION: {
+        UP: 'up',
+        DOWN: 'down',
+        LEFT: 'left',
+        RIGHT: 'right',
+        IN: 'in',
+        OUT: 'out',
+    },
+    DURATION: 0.25,
+    EVENT: {
+        BEFORE_CHANGE: 'beforeChange',
+        CHANGE: 'change',
+    },
+    OPPOSITE: {
+        up: 'down',
+        down: 'up',
+        left: 'right',
+        right: 'left',
+        in: 'out',
+        out: 'in',
+        cover: 'reveal',
+        reveal: 'cover',
+        fade: 'fade',
+        flip: 'flip',
+        slide: 'slide',
+    },
+    SIZE: {
+        HEIGHT: '100vh',
+        WIDTH: '100vw',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/index.js
new file mode 100644
index 00000000..ef50a8ba
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Scene/index.js
@@ -0,0 +1,631 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Scene
+ * -----------------------------------------------------------------------------
+ */
+let Scene = (props, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const historyRef = useRef([]);
+    const panelRef = useRef({});
+    const prevStateRef = useRef({});
+    const stateRef = useRef({
+        ...props,
+        animating: false,
+        init: false,
+        staged: null,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+    const [prevState, setPrevState] = useState(prevStateRef.current);
+    const [history, setHistory] = useState(historyRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Get the previous state
+        const prvState = { ...stateRef.current };
+
+        // Update prevStateRef
+        prevStateRef.current = { ...prvState };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prvState,
+            ...newState,
+        };
+
+        if (ENUMS.DEBUG === true && caller) {
+            console.log(caller, {
+                prev: prevStateRef.current,
+                curr: stateRef.current,
+            });
+        }
+
+        // Trigger useEffect()
+        setPrevState(prevStateRef.current);
+        setNewState(stateRef.current);
+    };
+
+    const setPanelRef = (elm, key) => {
+        panelRef.current[key] = elm;
+    };
+
+    const addChildren = childs => {
+        childs = Array.isArray(childs) ? childs : [childs];
+
+        if (childs.length < 1) {
+            return;
+        }
+
+        const { panels = {} } = stateRef.current;
+
+        React.Children.forEach(childs, (child, i) => {
+            const { props: childProps = {} } = child;
+            const id = op.has(childProps, 'id') ? childProps.id : i;
+            panels[String(id)] = child;
+        });
+
+        setState({ panels }, 'addChildren()');
+    };
+
+    const removeChildren = childs => {
+        childs = Array.isArray(childs) ? childs : [childs];
+
+        if (childs.length < 1) {
+            return;
+        }
+
+        childs.sort();
+        childs.reverse();
+
+        const { panels = {} } = stateRef.current;
+
+        React.Children.forEach(childs, (child, i) => {
+            const { props: childProps = {} } = child;
+            const id = op.has(childProps, 'id') ? childProps.id : i;
+            op.del(panels, String(id));
+        });
+
+        setState({ panels }, 'removeChildren()');
+    };
+
+    const ns = suffix => {
+        const { namespace } = stateRef.current;
+        return `${namespace}-${suffix}`;
+    };
+
+    const updateHistory = params => {
+        const { active } = stateRef.current;
+        let {
+            animation = ENUMS.ANIMATION.SLIDE,
+            direction = ENUMS.DIRECTION.LEFT,
+            panel,
+        } = params;
+
+        direction = ENUMS.OPPOSITE[direction];
+        animation = ENUMS.OPPOSITE[animation];
+        panel = active;
+
+        historyRef.current.push({ ...params, panel, animation, direction });
+        setHistory(historyRef.current);
+    };
+
+    const clear = () => {
+        historyRef.current = [];
+        setHistory(historyRef.current);
+    };
+
+    const back = () => {
+        const hist = Array.from(historyRef.current);
+
+        if (hist.length < 1) {
+            return;
+        }
+
+        const last = hist.pop();
+
+        const anime = navTo(last, true);
+
+        historyRef.current = hist;
+        setHistory(historyRef.current);
+
+        return anime;
+    };
+
+    const navTo = (params = {}, noHistory, clearHistory) => {
+        if (typeof params === 'string' || typeof params === 'number') {
+            params = {
+                panel: params,
+            };
+        }
+
+        params = {
+            animation: stateRef.current.animation || ENUMS.ANIMATION.SLIDE,
+            direction: stateRef.current.direction || ENUMS.DIRECTION.LEFT,
+            animationSpeed: stateRef.current.animationSpeed || ENUMS.DURATION,
+            ...params,
+        };
+
+        const { animation, animationSpeed, panel } = params;
+        const { active, animating, onBeforeChange, tween } = stateRef.current;
+
+        if (!noHistory && !clearHistory) {
+            updateHistory(params);
+        }
+
+        if (clearHistory === true) {
+            clear();
+        }
+
+        if (String(active) === String(panel) || animating === true) {
+            return tween;
+        }
+
+        onBeforeChange({
+            type: ENUMS.EVENT.BEFORE_CHANGE,
+            active,
+            staged: panel,
+        });
+
+        // hide all panels
+        Object.values(panelRef.current).forEach(panel =>
+            TweenMax.set(panel, { display: 'none' }),
+        );
+
+        if (animationSpeed === 0 || !active) {
+            setState({ active: panel }, 'navTo()');
+            return Promise.resolve(stateRef.current);
+        }
+
+        stateRef.current.animating = true;
+        let anime;
+
+        switch (animation) {
+            case ENUMS.ANIMATION.COVER:
+                anime = cover(params);
+                break;
+
+            case ENUMS.ANIMATION.FADE:
+                anime = fade(params);
+                break;
+
+            case ENUMS.ANIMATION.FLIP:
+                anime = flip(params);
+                break;
+
+            case ENUMS.ANIMATION.REVEAL:
+                anime = reveal(params);
+                break;
+
+            case ENUMS.ANIMATION.SLIDE:
+            default:
+                anime = Promise.all([slideIN(params), slideOUT(params)]);
+                break;
+        }
+
+        stateRef.current.tween = anime;
+
+        return anime.then(() => {
+            setState(
+                { active: panel, animating: false, tween: null },
+                'navTo()',
+            );
+            return stateRef.current;
+        });
+    };
+
+    const cover = params => {
+        const { active } = stateRef.current;
+        const prev = panelRef.current[String(active)];
+
+        TweenMax.set(prev, {
+            display: 'block',
+            zIndex: 5,
+            left: 0,
+            top: 0,
+        });
+
+        return slideIN(params);
+    };
+
+    const fade = params => {
+        const { direction = ENUMS.DIRECTION.IN } = params;
+
+        switch (direction) {
+            case ENUMS.DIRECTION.OUT:
+                return fadeOut(params);
+
+            case ENUMS.DIRECTION.IN:
+            default:
+                return fadeIn(params);
+        }
+    };
+
+    const fadeIn = params =>
+        new Promise(resolve => {
+            const { active } = stateRef.current;
+            const { animationSpeed = ENUMS.DURATION, panel } = params;
+
+            const front = panelRef.current[String(panel)];
+
+            TweenMax.set(front, {
+                display: 'block',
+                zIndex: 20,
+                left: 0,
+                top: 0,
+                opacity: 1,
+            });
+
+            const back = panelRef.current[String(active)];
+
+            TweenMax.set(back, {
+                display: 'block',
+                zIndex: 10,
+                left: 0,
+                top: 0,
+                opacity: 1,
+            });
+
+            TweenMax.from(front, animationSpeed, {
+                opacity: 0,
+                ease: Power2.easeInOut,
+                onComplete: () => {
+                    TweenMax.set(back, { display: 'none' });
+                    resolve();
+                },
+            });
+        });
+
+    const fadeOut = params =>
+        new Promise(resolve => {
+            const { active } = stateRef.current;
+            const { animationSpeed = ENUMS.DURATION, panel } = params;
+
+            const back = panelRef.current[String(panel)];
+
+            TweenMax.set(back, {
+                display: 'block',
+                zIndex: 10,
+                left: 0,
+                top: 0,
+                opacity: 1,
+            });
+
+            const front = panelRef.current[String(active)];
+
+            TweenMax.set(front, {
+                display: 'block',
+                zIndex: 20,
+                left: 0,
+                top: 0,
+                opacity: 1,
+            });
+
+            TweenMax.to(front, animationSpeed, {
+                opacity: 0,
+                ease: Power2.easeInOut,
+                onComplete: () => {
+                    TweenMax.set(front, { display: 'none', opacity: 1 });
+                    resolve();
+                },
+            });
+        });
+
+    const flip = params => {
+        const { active } = stateRef.current;
+
+        const {
+            direction = ENUMS.DIRECTION.LEFT,
+            animationSpeed = ENUMS.DURATION,
+            panel,
+        } = params;
+
+        const vertical = [ENUMS.DIRECTION.UP, ENUMS.DIRECTION.DOWN].includes(
+            direction,
+        );
+        const negative = [ENUMS.DIRECTION.UP, ENUMS.DIRECTION.LEFT].includes(
+            direction,
+        );
+        const prop = vertical ? 'rotationX' : 'rotationY';
+        const rotation = negative ? -180 : 180;
+
+        return Promise.all([
+            new Promise(resolve => {
+                const back = panelRef.current[String(panel)];
+                TweenMax.set(back, {
+                    zIndex: 10,
+                    display: 'block',
+                    left: 0,
+                    top: 0,
+                    backfaceVisibility: 'visible',
+                });
+                TweenMax.from(back, animationSpeed, {
+                    [prop]: rotation,
+                    ease: Power2.easeInOut,
+                    onComplete: () => {
+                        TweenMax.set(back, { zIndex: 20 });
+                        resolve();
+                    },
+                });
+            }),
+            new Promise(resolve => {
+                const front = panelRef.current[String(active)];
+                TweenMax.set(front, {
+                    zIndex: 20,
+                    left: 0,
+                    top: 0,
+                    backfaceVisibility: 'hidden',
+                });
+                TweenMax.to(front, animationSpeed, {
+                    [prop]: rotation,
+                    ease: Power2.easeInOut,
+                    onComplete: () => {
+                        TweenMax.set(front, { display: 'none', [prop]: 0 });
+                        resolve();
+                    },
+                });
+            }),
+        ]);
+    };
+
+    const reveal = params => {
+        const { panel } = params;
+        const curr = panelRef.current[String(panel)];
+
+        TweenMax.set(curr, {
+            display: 'block',
+            zIndex: 5,
+            left: 0,
+            top: 0,
+        });
+
+        return slideOUT(params);
+    };
+
+    const slideIN = params =>
+        new Promise(resolve => {
+            const {
+                direction = ENUMS.DIRECTION.LEFT,
+                animationSpeed = ENUMS.DURATION,
+                panel,
+            } = params;
+
+            const elm = panelRef.current[String(panel)];
+            const cont = containerRef.current;
+
+            let x = 0,
+                y = 0;
+
+            switch (direction) {
+                case ENUMS.DIRECTION.UP:
+                    y = cont.offsetHeight;
+                    break;
+
+                case ENUMS.DIRECTION.DOWN:
+                    y = -cont.offsetHeight;
+                    break;
+
+                case ENUMS.DIRECTION.RIGHT:
+                    x = -cont.offsetWidth;
+                    break;
+
+                case ENUMS.DIRECTION.LEFT:
+                default:
+                    x = cont.offsetWidth;
+                    break;
+            }
+
+            TweenMax.set(elm, {
+                display: 'block',
+                zIndex: 20,
+                left: 0,
+                top: 0,
+            });
+
+            TweenMax.from(elm, animationSpeed, {
+                left: x,
+                top: y,
+                ease: Power2.easeInOut,
+                onComplete: () => resolve(),
+            });
+        });
+
+    const slideOUT = params =>
+        new Promise(resolve => {
+            const {
+                direction = ENUMS.DIRECTION.LEFT,
+                animationSpeed = ENUMS.DURATION,
+            } = params;
+
+            const { active } = stateRef.current;
+            const elm = panelRef.current[String(active)];
+            const cont = containerRef.current;
+
+            let x = 0,
+                y = 0;
+
+            switch (direction) {
+                case ENUMS.DIRECTION.UP:
+                    y = -cont.offsetHeight;
+                    break;
+
+                case ENUMS.DIRECTION.DOWN:
+                    y = cont.offsetHeight;
+                    break;
+
+                case ENUMS.DIRECTION.RIGHT:
+                    x = cont.offsetWidth;
+                    break;
+
+                case ENUMS.DIRECTION.LEFT:
+                default:
+                    x = -cont.offsetWidth;
+                    break;
+            }
+
+            TweenMax.set(elm, {
+                display: 'block',
+                zIndex: 10,
+            });
+
+            TweenMax.to(elm, animationSpeed, {
+                left: x,
+                top: y,
+                ease: Power2.easeInOut,
+                onComplete: () => {
+                    TweenMax.set(elm, { display: 'none' });
+                    resolve();
+                },
+            });
+        });
+
+    const indexOf = panel =>
+        Object.keys(stateRef.current.panels)
+            .map(key => String(key))
+            .indexOf(String(panel));
+
+    const renderPanels = () => {
+        const { active, panels, onRendered } = stateRef.current;
+
+        return Object.keys(panels).map(key => {
+            key = isNaN(key) ? key : String(key);
+
+            return (
+                <div
+                    className={cn({
+                        [ns('panel')]: true,
+                        active: String(active) === key,
+                    })}
+                    key={ns(`panel-${key}`)}
+                    ref={elm => setPanelRef(elm, key)}>
+                    {panels[key]}
+                </div>
+            );
+        });
+    };
+
+    const render = () => {
+        let {
+            className,
+            height,
+            namespace,
+            style = {},
+            width,
+        } = stateRef.current;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+        });
+
+        style = { ...style, height, width };
+
+        return (
+            <div ref={containerRef} className={cname} style={style}>
+                <div className={ns('stage')}>{renderPanels()}</div>
+            </div>
+        );
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        active: () => {
+            return stateRef.current.active;
+        },
+        addChildren,
+        back,
+        clearHistory: clear,
+        history: {
+            clear,
+        },
+        index: indexOf(stateRef.current.active),
+        indexOf,
+        navTo,
+        removeChildren,
+        setState,
+        state: stateRef.current,
+    }));
+
+    // Side Effects
+    useEffect(() => {
+        setState(props, 'useEffect(props)');
+    }, _.without(Object.values(props), props.onChange, props.onBeforeChange));
+
+    useEffect(() => {
+        const { active, children, init, panels = {} } = stateRef.current;
+
+        if (React.Children.count(children) > 0) {
+            stateRef.current.init = true;
+
+            if (!active) {
+                stateRef.current.active = Object.keys(panels)[0];
+            }
+
+            addChildren(children);
+        }
+    }, [props.children]);
+
+    // onChange Handler
+    useEffect(() => {
+        const { active, init, onChange } = stateRef.current;
+        const { active: previous } = prevStateRef.current;
+
+        if (init === true && String(active) !== String(previous)) {
+            onChange({ evt: ENUMS.EVENT.CHANGE, active, previous });
+        }
+    }, [stateRef.current.active]);
+
+    return render();
+};
+
+Scene = forwardRef(Scene);
+
+Scene.ENUMS = ENUMS;
+
+Scene.propTypes = {
+    active: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    animation: PropTypes.oneOf(Object.values(ENUMS.ANIMATION)),
+    animationSpeed: PropTypes.number,
+    className: PropTypes.string,
+    direction: PropTypes.oneOf(Object.values(ENUMS.DIRECTION)),
+    height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    namespace: PropTypes.string,
+    onBeforeChange: PropTypes.func,
+    onChange: PropTypes.func,
+    panels: PropTypes.object,
+    style: PropTypes.object,
+    width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+};
+
+Scene.defaultProps = {
+    animation: ENUMS.ANIMATION.SLIDE,
+    animationSpeed: ENUMS.DURATION,
+    direction: ENUMS.DIRECTION.LEFT,
+    height: ENUMS.SIZE.HEIGHT,
+    namespace: 'ar-scene',
+    onBeforeChange: noop,
+    onChange: noop,
+    panels: {},
+    style: {},
+    width: ENUMS.SIZE.WIDTH,
+};
+
+export { Scene, Scene as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/_style.scss
new file mode 100644
index 00000000..9b0af606
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/_style.scss
@@ -0,0 +1,283 @@
+@use 'sass:math';
+
+$ar-slider-color-bar: $color-grey-light !default;
+$ar-slider-color-range: $color-blue !default;
+$ar-slider-color-handle: $color-white !default;
+$ar-slider-color-tick: $color-gray !default;
+$ar-slider-height: 20px !default;
+$ar-slider-height-bar: 4px !default;
+$ar-slider-height-vertical: 280px !default;
+$ar-slider-shadow: 0 0 3px 1px rgba($color-black, 0.125) !default;
+$ar-slider-shadow-highlight: 0 0 3px 1px rgba($color-blue, 0.5) !default;
+$ar-slider-shadow-inset: inset 0 0 3px 1px rgba($color-black, 0.125) !default;
+
+@mixin ar-slider-handle() {
+    height: $ar-slider-height;
+    width: $ar-slider-height;
+    position: absolute;
+    left: 0;
+    top: 0;
+    box-shadow: $ar-slider-shadow;
+    border-radius: 100%;
+    background-color: $ar-slider-color-handle;
+    border: none;
+    user-select: none;
+    z-index: 10;
+    padding: 0;
+    margin: 0;
+    transition: box-shadow 0.5s ease-in-out;
+
+    * {
+        pointer-events: none;
+    }
+
+    &:hover {
+        cursor: grab;
+    }
+
+    &:focus,
+    &.dragging {
+        z-index: 100;
+        box-shadow: $ar-slider-shadow-highlight;
+    }
+
+    &.dragging {
+        cursor: grabbing;
+    }
+}
+
+.ar-slider {
+    display: inline-block;
+    position: relative;
+    width: 100%;
+    min-height: $ar-slider-height;
+
+    .ar-slider-bar {
+        display: block;
+        position: relative;
+        width: 100%;
+        max-width: 100%;
+        height: $ar-slider-height;
+
+        &:before {
+            position: absolute;
+            left: 0;
+            top: 50%;
+            width: 100%;
+            height: $ar-slider-height-bar;
+            transform: translateY(-50%);
+            content: '';
+            background-color: $ar-slider-color-bar;
+            box-shadow: $ar-slider-shadow-inset;
+        }
+    }
+
+    .ar-slider-range {
+        position: absolute;
+        height: $ar-slider-height-bar;
+        top: 50%;
+        transform: translateY(-50%);
+        background-color: $ar-slider-color-range;
+        z-index: 1;
+    }
+
+    .ar-slider-handle {
+        @include ar-slider-handle();
+        transform: translateX(-50%);
+    }
+
+    .ar-slider-ticks {
+        position: relative;
+        font-size: 12px;
+        display: block;
+        margin-top: 15px;
+        min-height: 20px;
+
+        > .ar-slider-tick {
+            font-family: monospace;
+            position: absolute;
+            transform: translateX(-50%);
+
+            &:after {
+                content: '';
+                background-color: $ar-slider-color-tick;
+                width: 1px;
+                height: 10px;
+                position: absolute;
+                left: 50%;
+                top: -5px;
+                transform: translateY(-100%) translateX(-50%);
+            }
+        }
+    }
+
+    .ar-slider-tooltip {
+        position: absolute;
+        user-select: none;
+        z-index: $ar-tooltip-z;
+        transform: translateX(-50%) translateY(-100%);
+        margin-top: -12px;
+        display: none;
+        &:empty {
+            display: none;
+        }
+
+        .container {
+            background-color: $ar-tooltip-color-background;
+            border-radius: 2px;
+            color: $ar-tooltip-color;
+            padding: 10px 14px;
+            font-family: Arial, sans-serif;
+            font-weight: normal;
+            font-size: 14px;
+            position: relative;
+            box-shadow: $ar-tooltip-shadow;
+            max-width: 200px;
+            text-align: center;
+            opacity: 0.8;
+
+            &:empty {
+                display: none;
+            }
+        }
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            left: 50%;
+            width: 0;
+            height: 0;
+            transform: translateX(-50%) translateY(100%);
+            border-style: solid;
+            border-width: 10px 7px 0 7px;
+            border-color: $ar-tooltip-color-pointer transparent transparent
+                transparent;
+        }
+    }
+}
+
+.horizontal {
+    .ar-slider-dot-1 {
+        top: 0;
+        left: 0;
+        content: '';
+        position: absolute;
+        border-radius: 100%;
+        width: math.div($ar-slider-height, 2);
+        height: math.div($ar-slider-height, 2);
+        transform: translate(-50%, 50%);
+        background-color: $ar-slider-color-bar;
+        box-shadow: $ar-slider-shadow-inset;
+    }
+
+    .ar-slider-dot-2 {
+        top: 0;
+        right: 0;
+        content: '';
+        position: absolute;
+        border-radius: 100%;
+        width: math.div($ar-slider-height, 2);
+        height: math.div($ar-slider-height, 2);
+        transform: translate(50%, 50%);
+        background-color: $ar-slider-color-bar;
+        box-shadow: $ar-slider-shadow-inset;
+    }
+}
+
+.vertical {
+    &.ar-slider {
+        display: inline-block;
+        position: relative;
+        min-height: $ar-slider-height-vertical;
+        width: $ar-slider-height;
+
+        .ar-slider-bar {
+            position: relative;
+            width: $ar-slider-height;
+            min-height: $ar-slider-height-vertical;
+
+            &:before {
+                position: absolute;
+                left: 50%;
+                top: 0;
+                height: 100%;
+                width: $ar-slider-height-bar;
+                transform: translateX(-50%);
+                content: '';
+                background-color: $ar-slider-color-bar;
+                box-shadow: $ar-slider-shadow-inset;
+            }
+        }
+
+        .ar-slider-range {
+            position: absolute;
+            width: $ar-slider-height-bar;
+            left: 50%;
+            bottom: 0;
+            top: auto;
+            transform: translateX(-50%);
+            background-color: $ar-slider-color-range;
+        }
+
+        .ar-slider-handle {
+            @include ar-slider-handle();
+            transform: translateY(-50%);
+        }
+
+        .ar-slider-ticks {
+            position: absolute;
+            font-size: 12px;
+            display: flex;
+            margin: 0;
+            margin-left: 15px;
+            width: 20px;
+            height: 100%;
+            left: 100%;
+            top: 0;
+
+            > .ar-slider-tick {
+                font-family: monospace;
+                position: absolute;
+                transform: translateY(-50%);
+
+                &:after {
+                    content: '';
+                    background-color: $ar-slider-color-tick;
+                    width: 10px;
+                    height: 1px;
+                    position: absolute;
+                    top: 50%;
+                    left: -5px;
+                    transform: translateX(-100%) translateY(-50%);
+                }
+            }
+        }
+
+        .ar-slider-tooltip {
+            position: absolute;
+            user-select: none;
+            z-index: $ar-tooltip-z;
+            margin: 0;
+            margin-top: $ar-slider-height - 4px;
+            margin-left: 10px;
+            display: none;
+            transform: translateX(0%) translateY(-100%);
+
+            .container:after {
+                content: '';
+                position: absolute;
+                bottom: 0;
+                top: 50%;
+                left: 1px;
+                width: 0;
+                height: 0;
+                transform: translateX(-100%) translateY(-50%);
+                border-style: solid;
+                border-width: 7px 10px 7px 0;
+                border-color: transparent $ar-tooltip-color-pointer transparent
+                    transparent;
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/enums.js
new file mode 100644
index 00000000..87334c14
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/enums.js
@@ -0,0 +1,15 @@
+const ENUMS = {
+    BUFFER: 2,
+    DEBUG: true,
+    DIRECTION: {
+        HORIZONTAL: 'horizontal',
+        VERTICAL: 'vertical',
+    },
+    EVENT: {
+        CHANGE: 'change',
+    },
+    MAX: 'max',
+    MIN: 'min',
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/index.js
new file mode 100644
index 00000000..afe59228
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Slider/index.js
@@ -0,0 +1,529 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import ENUMS from './enums';
+
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const Label = forwardRef(
+    ({ children, className, namespace = 'ar-slider' }, ref) => (
+        <div
+            className={cn({
+                [`${namespace}-tooltip`]: true,
+                [className]: !!className,
+            })}
+            ref={ref}
+        >
+            <div className='container'>{children}</div>
+        </div>
+    ),
+);
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Slider
+ * -----------------------------------------------------------------------------
+ */
+let Slider = ({ labelFormat, iDocument, iWindow, value, ...props }, ref) => {
+    iDocument =
+        !iDocument && typeof document !== 'undefined' ? document : iDocument;
+    iWindow = !iWindow && typeof window !== 'undefined' ? window : iWindow;
+
+    const { FormRegister } = useHookComponent('ReactiumUI');
+
+    // Refs
+    const barRef = useRef();
+    const containerRef = useRef();
+    const handleMaxRef = useRef();
+    const handleMinRef = useRef();
+    const labelRef = useRef();
+    const selRef = useRef();
+    const stateRef = useRef({
+        max: Math.ceil(op.get(props, ENUMS.MAX, 100)),
+        min: Math.floor(op.get(props, ENUMS.MIN, 0)),
+        prevState: {},
+        range: Boolean(typeof value !== 'number'),
+        value,
+        ...props,
+    });
+
+    // State
+    const [handles] = useState({
+        [ENUMS.MIN]: handleMinRef,
+        [ENUMS.MAX]: handleMaxRef,
+    });
+
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState) => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const offset = (el) => {
+        const rect = el.getBoundingClientRect(),
+            scrollLeft =
+                iWindow.pageXOffset || iDocument.documentElement.scrollLeft,
+            scrollTop =
+                iWindow.pageYOffset || iDocument.documentElement.scrollTop;
+
+        return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
+    };
+
+    const _drag = (e) => {
+        let { buffer, direction, dragging, max, min, range, value } =
+            stateRef.current;
+
+        if (!dragging) {
+            return;
+        }
+
+        if (e.type === 'touchmove') {
+            e.clientX = e.touches[0].clientX;
+            e.clientY = e.touches[0].clientY;
+        }
+
+        const handle = handles[dragging].current;
+        const handleW = handle.offsetWidth + 4;
+        const handleH = handle.offsetHeight + 4;
+        const bar = barRef.current;
+        const cont = containerRef.current;
+        const lbl = labelRef.current;
+        const sel = selRef.current;
+
+        let barW = bar.offsetWidth;
+        let barH = bar.offsetHeight;
+
+        let minX = 0;
+        let minY = 0;
+        let maxX = cont.offsetWidth;
+        let maxY = cont.offsetHeight;
+
+        if (range && direction === ENUMS.DIRECTION.HORIZONTAL) {
+            maxX =
+                dragging === ENUMS.MIN
+                    ? handles[ENUMS.MAX].current.offsetLeft - handleW
+                    : maxX;
+            minX =
+                dragging === ENUMS.MAX
+                    ? handles[ENUMS.MIN].current.offsetLeft + handleW
+                    : minX;
+        }
+
+        if (range && direction === ENUMS.DIRECTION.VERTICAL) {
+            minY =
+                dragging === ENUMS.MIN
+                    ? handles[ENUMS.MAX].current.offsetTop + handleH
+                    : minY;
+            maxY =
+                dragging === ENUMS.MAX
+                    ? handles[ENUMS.MIN].current.offsetTop - handleH
+                    : maxY;
+        }
+
+        const x =
+            direction === ENUMS.DIRECTION.HORIZONTAL
+                ? Math.min(Math.max(minX, e.clientX - offset(cont).left), maxX)
+                : 0;
+
+        const y =
+            direction === ENUMS.DIRECTION.VERTICAL
+                ? Math.min(Math.max(minY, e.clientY - offset(cont).top), maxY)
+                : 0;
+
+        const vals = _.range(min, max + 1);
+
+        if (direction === ENUMS.DIRECTION.VERTICAL) {
+            vals.reverse();
+        }
+
+        const px = x / barW;
+        const py = y / barH;
+
+        const len = vals.length - 1;
+        let pv = direction === ENUMS.DIRECTION.HORIZONTAL ? px : py;
+
+        pv = Math.floor(pv * len);
+        pv = Math.min(pv, len);
+
+        const v = vals[pv];
+
+        value = range ? { ...value, [dragging]: v } : v;
+
+        // Set value when ranged -> based on value.min/max being equal
+        if (range && op.has(value, 'max') && op.has(value, 'min')) {
+            if (value.min > value.max - buffer) {
+                value[dragging] =
+                    dragging === ENUMS.MIN
+                        ? value[ENUMS.MAX] - buffer
+                        : value[ENUMS.MIN] + buffer;
+            }
+        }
+
+        handle.style.left = `${x}px`;
+        handle.style.top = `${y}px`;
+
+        lbl.style.top =
+            direction === ENUMS.DIRECTION.HORIZONTAL ? 0 : handle.style.top;
+        lbl.style.left =
+            direction === ENUMS.DIRECTION.HORIZONTAL
+                ? handle.style.left
+                : `${handle.offsetWidth}px`;
+        lbl.style.display = 'block';
+
+        if (range) {
+            if (direction === ENUMS.DIRECTION.HORIZONTAL) {
+                const selW =
+                    offset(handles[ENUMS.MAX].current).left -
+                    offset(handles[ENUMS.MIN].current).left;
+
+                sel.style.left = handles[ENUMS.MIN].current.style.left;
+                sel.style.width = `${selW}px`;
+            } else {
+                const selH =
+                    offset(handles[ENUMS.MIN].current).top -
+                    offset(handles[ENUMS.MAX].current).top;
+                sel.style.top = handles[ENUMS.MAX].current.style.top;
+                sel.style.height = `${selH}px`;
+            }
+        }
+
+        setState({ value });
+    };
+
+    const _dragEnd = () => {
+        setState({ dragging: null });
+        iDocument.removeEventListener('mousemove', _drag);
+        iDocument.removeEventListener('mouseup', _dragEnd);
+        iDocument.removeEventListener('touchmove', _drag);
+        iDocument.removeEventListener('touchend', _dragEnd);
+    };
+
+    const _dragStart = (e) => {
+        setState({ dragging: e.target.dataset.handle, focus: e.target });
+        iDocument.addEventListener('mousemove', _drag);
+        iDocument.addEventListener('mouseup', _dragEnd);
+        iDocument.addEventListener('touchmove', _drag);
+        iDocument.addEventListener('touchend', _dragEnd);
+    };
+
+    const _move = () => {
+        const {
+            direction,
+            dragging,
+            onChange,
+            range = false,
+            value,
+        } = stateRef.current;
+
+        if (!dragging) {
+            const sel = selRef.current;
+            const v = range === true ? value : { min: value };
+
+            Object.entries(v).forEach(([key, value]) => {
+                const handle = handles[key].current;
+                const pos = _positionFromValue({ handle, value });
+                handle.style.left = pos.left;
+                handle.style.top = pos.top;
+            });
+
+            if (range === true) {
+                if (direction === ENUMS.DIRECTION.HORIZONTAL) {
+                    const left = Number(
+                        handles[ENUMS.MIN].current.style.left
+                            .split('%')
+                            .join(''),
+                    );
+                    const right = Number(
+                        handles[ENUMS.MAX].current.style.left
+                            .split('%')
+                            .join(''),
+                    );
+                    const barW = right - left;
+
+                    sel.style.left = handles[ENUMS.MIN].current.style.left;
+                    sel.style.width = `${barW}%`;
+                } else {
+                    const top = Number(
+                        handles[ENUMS.MAX].current.style.top
+                            .split('%')
+                            .join(''),
+                    );
+                    const bottom = Number(
+                        handles[ENUMS.MIN].current.style.top
+                            .split('%')
+                            .join(''),
+                    );
+                    const barH = bottom - top;
+
+                    sel.style.top = handles[ENUMS.MAX].current.style.top;
+                    sel.style.height = `${barH}%`;
+                }
+            }
+        }
+
+        onChange({
+            type: ENUMS.EVENT.CHANGE,
+            value,
+        });
+    };
+
+    const _onKeyPress = (e) => {
+        const { keyCode } = e;
+        const { handle } = e.target.dataset;
+        let { max, min, range, value } = stateRef.current;
+
+        let inc;
+
+        switch (keyCode) {
+            case 38:
+            case 39:
+                inc = 1;
+                break;
+
+            case 37:
+            case 40:
+                inc = -1;
+                break;
+        }
+
+        if (keyCode >= 37 && keyCode <= 40) {
+            e.preventDefault();
+            e.stopPropagation();
+
+            let v = range ? value[handle] + inc : value + inc;
+            v = Math.min(Math.max(min, v), max);
+
+            value = range ? { ...value, [handle]: v } : v;
+            setState({ value });
+        }
+    };
+
+    const _positionFromValue = ({ value }) => {
+        const bar = barRef.current;
+        const cont = containerRef.current;
+
+        const { direction, max, min } = stateRef.current;
+        const vals = _.range(min, max + 1);
+
+        if (direction === ENUMS.DIRECTION.VERTICAL) {
+            vals.reverse();
+        }
+
+        const len = vals.length - 1;
+        const i = vals.indexOf(value);
+        const p = Math.ceil((i / len) * 100);
+
+        return direction === ENUMS.DIRECTION.HORIZONTAL
+            ? { top: 0, left: `${p}%` }
+            : { left: 0, top: `${p}%` };
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        setState,
+        state: stateRef.current,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    // Side Effect: movement
+    useEffect(() => _move(), [stateRef.current.value]);
+
+    // Side Effect: cursor and label
+    useEffect(() => {
+        const { dragging, snap, value } = stateRef.current;
+
+        if (Boolean(dragging)) {
+            iDocument.body.style.cursor = 'grabbing';
+        } else {
+            iDocument.body.style.cursor = 'default';
+            labelRef.current.style.display = 'none';
+            if (snap) {
+                _move();
+            }
+        }
+    }, [stateRef.current.dragging]);
+
+    // Renderers
+    const renderTicks = () => {
+        let { direction, max, min, namespace, tickFormat, ticks } =
+            stateRef.current;
+
+        if (ticks.length < 1) {
+            return null;
+        }
+
+        ticks = !ticks ? [min, max] : ticks;
+
+        if (direction === ENUMS.DIRECTION.VERTICAL) {
+            ticks.reverse();
+        }
+
+        return (
+            <div className={`${namespace}-ticks`}>
+                {ticks.map((tick) => (
+                    <span
+                        className={`${namespace}-tick`}
+                        style={_positionFromValue({ value: tick })}
+                        key={`tick-${tick}`}
+                    >
+                        {tickFormat(tick)}
+                    </span>
+                ))}
+            </div>
+        );
+    };
+
+    const render = () => {
+        let { value } = stateRef.current;
+
+        const {
+            className,
+            direction,
+            dragging = false,
+            name,
+            namespace,
+            range,
+        } = stateRef.current;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            [direction]: !!direction,
+        });
+
+        const bcname = `${namespace}-bar`;
+        const scname = `${namespace}-range`;
+        const maxcname = cn({
+            dragging: dragging === ENUMS.MAX,
+            [`${namespace}-handle`]: true,
+        });
+        const mincname = cn({
+            dragging: dragging === ENUMS.MIN,
+            [`${namespace}-handle`]: true,
+        });
+
+        value = range ? value : { [ENUMS.MIN]: value };
+
+        return (
+            <div ref={containerRef} className={cname}>
+                <FormRegister>
+                    <input
+                        name={name}
+                        type='hidden'
+                        defaultValue={value[ENUMS.MIN]}
+                    />
+                    {range && (
+                        <input
+                            name={name}
+                            type='hidden'
+                            defaultValue={value[ENUMS.MAX]}
+                        />
+                    )}
+                </FormRegister>
+                <div className={bcname} ref={barRef}>
+                    <span className={`${namespace}-dot-1`} />
+                    <span className={`${namespace}-dot-2`} />
+                    <button
+                        type='button'
+                        className={mincname}
+                        ref={handleMinRef}
+                        onMouseDown={_dragStart}
+                        onTouchStart={_dragStart}
+                        onKeyDown={_onKeyPress}
+                        data-handle={ENUMS.MIN}
+                    />
+                    {range === true && op.has(value, 'max') && (
+                        <button
+                            type='button'
+                            className={maxcname}
+                            ref={handleMaxRef}
+                            onMouseDown={_dragStart}
+                            onTouchStart={_dragStart}
+                            onKeyDown={_onKeyPress}
+                            data-handle={ENUMS.MAX}
+                        />
+                    )}
+                    {range && <div className={scname} ref={selRef} />}
+                    <Label ref={labelRef} namespace={namespace}>
+                        {labelFormat(value[dragging])}
+                    </Label>
+                </div>
+                {renderTicks()}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Slider = forwardRef(Slider);
+
+Slider.ENUMS = ENUMS;
+
+Slider.propTypes = {
+    buffer: PropTypes.number,
+    className: PropTypes.string,
+    direction: PropTypes.oneOf(Object.values(ENUMS.DIRECTION)),
+    labelFormat: PropTypes.func,
+    max: PropTypes.number,
+    min: PropTypes.number,
+    name: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    snap: PropTypes.bool,
+    tickFormat: PropTypes.func,
+    ticks: PropTypes.oneOfType([
+        PropTypes.bool,
+        PropTypes.arrayOf(PropTypes.number),
+    ]),
+    value: PropTypes.oneOfType([
+        PropTypes.number,
+        PropTypes.shape({
+            max: PropTypes.number,
+            min: PropTypes.number,
+        }),
+    ]),
+};
+
+Slider.defaultProps = {
+    buffer: ENUMS.BUFFER,
+    direction: ENUMS.DIRECTION.HORIZONTAL,
+    labelFormat: (label) => label,
+    min: 0,
+    max: 100,
+    namespace: 'ar-slider',
+    onChange: noop,
+    snap: false,
+    tickFormat: (tick) => tick,
+    ticks: [],
+    value: 0,
+    iDocument: typeof document !== 'undefined' ? document : null,
+    iWindow: typeof window !== 'undefined' ? window : null,
+};
+
+export { Slider, Slider as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/_style.scss
new file mode 100644
index 00000000..ca0a1958
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/_style.scss
@@ -0,0 +1,125 @@
+@use 'sass:math';
+
+$ar-spinner-color: $color-blue;
+$ar-spinner-size: 64px;
+
+@mixin ar-spinner-dot($clr: $ar-spinner-color) {
+    content: ' ';
+    display: block;
+    position: absolute;
+    width: 6px;
+    height: 6px;
+    border-radius: 50%;
+    background: $clr;
+    margin: -3px 0 0 -3px;
+}
+
+.ar-spinner {
+    display: inline-block;
+    position: relative;
+    width: $ar-spinner-size;
+    height: $ar-spinner-size;
+
+    &-shadow {
+        > div > div:after {
+            box-shadow: 0 0 1px 1px rgba($color-black, 0.125);
+        }
+    }
+
+    div {
+        animation: ar-spinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
+        transform-origin: math.div($ar-spinner-size, 2) math.div($ar-spinner-size, 2);
+    }
+
+    div:after {
+        @include ar-spinner-dot();
+    }
+
+    @each $clr-name, $clr-code in $color {
+        &-#{$clr-name} div:after {
+            @include ar-spinner-dot($clr-code);
+        }
+    }
+
+    div:nth-child(1) {
+        animation-delay: -0.036s;
+    }
+
+    div:nth-child(1):after {
+        top: 50px;
+        left: 50px;
+    }
+
+    div:nth-child(2) {
+        animation-delay: -0.072s;
+    }
+
+    div:nth-child(2):after {
+        top: 54px;
+        left: 45px;
+    }
+
+    div:nth-child(3) {
+        animation-delay: -0.108s;
+    }
+
+    div:nth-child(3):after {
+        top: 57px;
+        left: 39px;
+    }
+
+    div:nth-child(4) {
+        animation-delay: -0.144s;
+    }
+
+    div:nth-child(4):after {
+        top: 58px;
+        left: 32px;
+    }
+
+    div:nth-child(5) {
+        animation-delay: -0.18s;
+    }
+
+    div:nth-child(5):after {
+        top: 57px;
+        left: 25px;
+    }
+
+    div:nth-child(6) {
+        animation-delay: -0.216s;
+    }
+
+    div:nth-child(6):after {
+        top: 54px;
+        left: 19px;
+    }
+
+    div:nth-child(7) {
+        animation-delay: -0.252s;
+    }
+
+    div:nth-child(7):after {
+        top: 50px;
+        left: 14px;
+    }
+
+    div:nth-child(8) {
+        animation-delay: -0.288s;
+    }
+
+    div:nth-child(8):after {
+        top: 45px;
+        left: 10px;
+    }
+}
+
+@keyframes ar-spinner {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/index.js
new file mode 100644
index 00000000..0350356d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Spinner/index.js
@@ -0,0 +1,53 @@
+import React from 'react';
+import _ from 'underscore';
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import Colors from '../colors';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: spinner
+ * -----------------------------------------------------------------------------
+ */
+
+const Spinner = ({ className, color, namespace, ...props }) => (
+    <div className={cn({ [className]: !!className })} {...props}>
+        <div
+            className={cn({
+                [namespace]: !!namespace,
+                [`${namespace}-${color}`]: !!color,
+            })}>
+            {_.times(8, i => (
+                <div key={`ar-spinner-dot-${i}`} />
+            ))}
+        </div>
+    </div>
+);
+
+Spinner.ENUMS = {
+    COLOR: Object.keys(Colors).reduce((obj, key) => {
+        const narr = key.split('-');
+        narr.shift();
+        obj[String(narr.join('_')).toUpperCase()] = narr.join('-');
+        return obj;
+    }, {}),
+};
+
+Spinner.COLOR = {};
+
+Object.entries(Spinner.ENUMS.COLOR).forEach(
+    ([key, value]) => (Spinner.COLOR[key] = value),
+);
+
+Spinner.propTypes = {
+    className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    color: PropTypes.oneOf(Object.values(Spinner.COLOR)),
+    namespace: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+};
+
+Spinner.defaultProps = {
+    color: Spinner.COLOR.BLUE,
+    namespace: 'ar-spinner',
+};
+
+export { Spinner, Spinner as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/_style.scss
new file mode 100644
index 00000000..0dbbd888
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/_style.scss
@@ -0,0 +1,80 @@
+$ar-tab-color: $color-gray-dark !default;
+$ar-tab-color-active: $color-white !default;
+$ar-tab-color-background: $color-white-dark !default;
+$ar-tab-color-border: $color-grey-light !default;
+$ar-tab-transition: 0.5s ease-in-out !default;
+
+.ar-tab {
+
+    border: none;
+    color: $ar-tab-color;
+    background-color: $ar-tab-color-background;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    padding: 10px 24px;
+    position: relative;
+    transition: background-color $ar-tab-transition;
+    user-select: none;
+    font-size: 14px;
+
+    &:disabled {
+        cursor: default;
+    }
+
+    &.active {
+        z-index: 1;
+        background-color: $ar-tab-color-active;
+        pointer-events: none;
+
+        cursor: default;
+    }
+
+    @include breakpoint(sm) {
+        border-right: 1px solid $ar-tab-color-border;
+
+        &.active {
+            border-top: none;
+            padding: 10px 24px 11px 24px;
+            margin-bottom: -1px;
+        }
+    }
+
+    &-bar {
+        display: inline-flex;
+        flex-grow: 1;
+        flex-direction: column;
+        justify-content: flex-start;
+        align-items: stretch;
+        border-bottom: 1px solid $ar-tab-color-border;
+        margin-bottom: -1px;
+
+        @include breakpoint(sm) {
+            flex-direction: row;
+        }
+
+        &:empty {
+            display: none;
+        }
+    }
+
+    &-panel {
+        display: none;
+
+        &.active {
+            display: block;
+        }
+
+        &:empty {
+            display: none;
+        }
+    }
+
+    &-panels {
+        display: block;
+
+        &:empty {
+            display: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/index.js
new file mode 100644
index 00000000..f04c1226
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tabs/index.js
@@ -0,0 +1,204 @@
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import PropTypes from 'prop-types';
+import Dialog from 'reactium-ui/Dialog';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const ENUMS = Dialog.ENUMS;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Tabs
+ * -----------------------------------------------------------------------------
+ */
+let Tabs = ({ children, data = {}, id, namespace, ...props }, ref) => {
+    // Refs
+    const dialogRef = useRef();
+    const stateRef = useRef({
+        prevState: { activeTab: -1 },
+        ...props,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const _onChange = () => {
+        const { activeTab, onChange, prevState } = stateRef.current;
+
+        if (activeTab === prevState.activeTab) {
+            return;
+        }
+
+        const evt = {
+            type: ENUMS.EVENT.CHANGE,
+            activeTab,
+            state: stateRef.current,
+        };
+        onChange(evt);
+    };
+
+    const _onTabClick = (e, index, callback = noop) => {
+        const { activeTab } = stateRef.current;
+        if (activeTab !== index) {
+            setState({ activeTab: index });
+            callback({ ...e, activeTab: index });
+        }
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        dialog: dialogRef.current,
+        setState,
+        state: stateRef.current,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => _onChange(), Object.values(state));
+
+    const renderContent = () => {
+        const { activeTab = 0 } = stateRef.current;
+        return (
+            <div className={`${namespace}-panels`} id={`${id}-panels`}>
+                {data.map((item, i) => {
+                    const { content } = item;
+
+                    if (!content) {
+                        return null;
+                    }
+
+                    const active = activeTab === i;
+                    const key = `${id}-panel-${i}`;
+                    const cname = cn({
+                        [`${namespace}-panel`]: true,
+                        active,
+                    });
+
+                    return (
+                        <div key={key} className={cname}>
+                            {content}
+                        </div>
+                    );
+                })}
+            </div>
+        );
+    };
+
+    const renderTabs = () => {
+        const { activeTab = 0, disabled = false } = stateRef.current;
+
+        return (
+            <div className={`${namespace}-bar`} id={`${id}-bar`}>
+                {data.map((item, i) => {
+                    const { tab } = item;
+
+                    if (!tab) {
+                        return null;
+                    }
+
+                    const active = activeTab === i;
+                    const key = `${id}-tab-${i}`;
+                    let cname = cn({
+                        [namespace]: true,
+                        active,
+                    });
+
+                    if (typeof tab === 'string') {
+                        return (
+                            <button
+                                disabled={disabled}
+                                key={key}
+                                type='button'
+                                className={cname}
+                                onClick={e => _onTabClick(e, i)}>
+                                {tab}
+                            </button>
+                        );
+                    } else {
+                        const { className, onClick } = tab.props;
+
+                        cname = cn({
+                            [className]: !!className,
+                            [namespace]: true,
+                            active,
+                        });
+
+                        return React.cloneElement(tab, {
+                            ...tab.props,
+                            key,
+                            disabled,
+                            className: cname,
+                            onClick: e => _onTabClick(e, i, onClick),
+                        });
+                    }
+                })}
+                {children}
+            </div>
+        );
+    };
+
+    const render = () => {
+        const header = {
+            elements: [renderTabs()],
+        };
+        const dprops = { ...props };
+        delete dprops.disabled;
+        delete dprops.activeTab;
+
+        return (
+            <Dialog {...dprops} header={header} ref={dialogRef}>
+                {renderContent()}
+            </Dialog>
+        );
+    };
+
+    return render();
+};
+
+Tabs = forwardRef(Tabs);
+
+Tabs.propTypes = {
+    ...Dialog.propTypes,
+    activeTab: PropTypes.number,
+    data: PropTypes.array.isRequired,
+    disabled: PropTypes.bool,
+    onChange: PropTypes.func,
+};
+
+Tabs.defaultProps = {
+    ...Dialog.defaultProps,
+    activeTab: 0,
+    data: [],
+    disabled: false,
+    id: `ar-tab-${uuid()}`,
+    namespace: 'ar-tab',
+    onChange: noop,
+};
+
+export { Tabs, Tabs as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/_style.scss
new file mode 100644
index 00000000..54f22d4a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/_style.scss
@@ -0,0 +1,157 @@
+$ar-tags-input-color: $color-white !default;
+$ar-tags-input-color-bg: $color-blue !default;
+$ar-tags-input-color-border: $color-grey !default;
+$ar-tags-input-color-border-focus: $color-blue !default;
+
+.ar-tags-input {
+    display: block;
+    border: 1px solid $ar-tags-input-color-border;
+    font-size: 14px;
+    border-radius: $input-radius;
+    position: relative;
+
+    &.focus {
+        box-shadow: 0 0 0 2px
+            rgba(lighten($ar-tags-input-color-border-focus, 5%), 0.25);
+        border: 1px solid $ar-tags-input-color-border-focus;
+    }
+
+    .dropping {
+        cursor: grabbing;
+
+        input {
+            opacity: 0;
+            transition: none;
+        }
+    }
+
+    &-tags {
+        display: flex;
+        align-items: center;
+        flex-wrap: wrap;
+        width: 100%;
+        line-height: 1;
+        padding: 5px;
+        z-index: 1;
+    }
+
+    input {
+        font-size: 14px;
+        line-height: 1;
+        border: none;
+        background-color: transparent;
+        outline: none;
+        width: 100%;
+        transition: opacity 0.5s ease-in-out;
+        height: 44px;
+        margin: -5px;
+        padding: 5px 10px;
+        z-index: 1000;
+    }
+
+    &-tag {
+        color: $ar-tags-input-color;
+        background-color: $ar-tags-input-color-bg;
+        display: flex;
+        align-items: center;
+        border-radius: 2px;
+        font-size: inherit;
+        flex-shrink: 0;
+        user-select: none;
+        margin: 5px;
+        padding: 0 10px;
+        outline: none;
+        min-height: 24px;
+
+        &:hover {
+            cursor: grab;
+        }
+
+        &.dragging {
+            &,
+            &:hover {
+                cursor: grabbing;
+            }
+        }
+
+        button {
+            padding: 0 8px;
+            margin: 0 -10px 0 0;
+            background-color: transparent;
+            border: none;
+            height: 24px;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+
+            &:hover {
+                opacity: 0.5;
+            }
+        }
+
+        .icon {
+            fill: $ar-tags-input-color;
+            width: 16px;
+            height: 16px;
+            flex-shrink: 0;
+        }
+    }
+
+    &-suggest {
+        position: absolute;
+        bottom: 0;
+        transform: translateY(100%);
+        z-index: 1;
+        box-shadow: $ar-dropdown-shadow;
+        border-radius: 0px 0px $ar-dropdown-border-radius
+            $ar-dropdown-border-radius;
+
+        ul,
+        li {
+            margin: 0;
+            padding: 0;
+            list-style: none;
+        }
+
+        ul {
+            li {
+                min-width: 200px;
+
+                button {
+                    padding: 10px 20px;
+                    border: none;
+                    border-bottom: 1px solid darken($ar-dropdown-menu-color, 1%);
+                    border-top: 1px solid darken($ar-dropdown-menu-color, 1%);
+                    width: 100%;
+                    display: flex;
+                    justify-content: flex-start;
+                    align-items: center;
+                    color: $ar-dropdown-item-color;
+                    background-color: $ar-dropdown-menu-color;
+                    transition: background-color 0.25s ease-in-out,
+                        color 0.25s ease-in-out;
+
+                    &:focus {
+                        border-top: 1px solid $ar-dropdown-border-color;
+                        border-bottom: 1px solid $ar-dropdown-border-color;
+                        background-color: darken($ar-dropdown-border-color, 2%);
+                    }
+
+                    &:hover {
+                        z-index: 3;
+                        color: $ar-dropdown-item-hover;
+                        background-color: $ar-dropdown-item-hover-bg;
+
+                        svg {
+                            fill: $ar-dropdown-item-hover;
+                        }
+                    }
+                }
+            }
+        }
+
+        &:empty {
+            display: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/index.js
new file mode 100644
index 00000000..3902e9d1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TagsInput/index.js
@@ -0,0 +1,606 @@
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Feather } from 'reactium-ui/Icon';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
+
+import {
+    useDerivedState,
+    useIsContainer,
+} from '@atomic-reactor/reactium-sdk-core';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+
+const noop = () => {};
+
+const ENUMS = {
+    DIRECTION: {
+        HORIZONTAL: 'horizontal',
+        VERTICAL: 'vertical',
+    },
+    EVENT: {
+        ADD: 'add',
+        BLUR: 'blur',
+        CHANGE: 'change',
+        ERROR: 'error',
+        FOCUS: 'focus',
+        INIT: 'init',
+        REMOVE: 'remove',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: TagsInput
+ * -----------------------------------------------------------------------------
+ */
+let TagsInput = (
+    {
+        className,
+        data,
+        direction,
+        editable,
+        id,
+        name,
+        namespace,
+        onAdd,
+        onBlur,
+        onChange,
+        onError,
+        onFocus,
+        onKeyDown,
+        onInit,
+        onRemove,
+        sortable,
+        validator,
+        value,
+        ...props
+    },
+    ref,
+) => {
+    // Refs
+    const containerRef = useRef();
+    const inputRef = useRef();
+    const suggestRef = useRef();
+    const valueRef = useRef();
+
+    const isContainer = useIsContainer();
+
+    // State
+    const [state, setState] = useDerivedState({
+        prevState: {},
+        data,
+        dismissable: true,
+        editable,
+        focus: false,
+        index: null,
+        initialized: false,
+        search: null,
+        suggest: [],
+        suggestIndex: -1,
+        value,
+        ...props,
+    });
+
+    const _onArrowKey = e => {
+        if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 9) {
+            const { suggest = [], suggestIndex = -1 } = state;
+            if (suggestIndex >= suggest.length - 1 && e.keyCode === 9) {
+                setState({ dismissable: true });
+                setTimeout(_suggestHide, 1);
+                return;
+            }
+
+            e.preventDefault();
+            setState({ dismissable: false });
+
+            let inc = e.keyCode === 38 ? -1 : 1;
+            inc = e.shiftKey && e.keyCode === 9 ? -1 : inc;
+
+            _suggestFocus(inc);
+            setTimeout(() => setState({ dismissable: true }), 100);
+        }
+
+        if (e.keyCode === 27) {
+            e.preventDefault();
+            setState({ dismissable: true });
+            setTimeout(_suggestHide, 1);
+        }
+    };
+
+    const _onChange = () => {
+        const { initialized } = state;
+
+        const evt = {
+            type: ENUMS.EVENT.CHANGE,
+            value: _value(),
+            target: valueRef.current,
+        };
+
+        // Trigger onInit() instead of onChange on first load.
+        if (initialized !== true) {
+            state.initialized = true;
+            evt.type = ENUMS.EVENT.INIT;
+            onInit(evt);
+            return;
+        }
+
+        onChange(evt);
+    };
+
+    const _onFocus = e => {
+        const { type } = e;
+        const focus = type === ENUMS.EVENT.FOCUS;
+
+        setState({ focus });
+
+        if (type === ENUMS.EVENT.FOCUS) {
+            _suggestShow();
+            onFocus(e);
+        }
+
+        if (type === ENUMS.EVENT.BLUR) {
+            onBlur(e);
+        }
+    };
+
+    const _onKeyDown = e => {
+        if (e.keyCode === 13) {
+            e.preventDefault();
+            _addTag(e.target.value);
+        }
+
+        if (
+            e.keyCode === 8 &&
+            e.target.value.length < 1 &&
+            e.shiftKey &&
+            editable === true
+        ) {
+            _onRemove(_value().length - 1);
+        }
+
+        if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 27) {
+            _onArrowKey(e);
+        }
+
+        if (e.keyCode === 9) {
+            const { suggest = [] } = state;
+            if (suggest.length > 0) {
+                _onArrowKey(e);
+            }
+        }
+
+        onKeyDown(e);
+    };
+
+    const _onRemove = index => {
+        if (index < 0) return;
+
+        const value = _value();
+        const list = Array.from(value);
+        const item = list[index];
+        list.splice(index, 1);
+        setState({ value: list, changed: Date.now(), backspace: false });
+
+        const evt = {
+            type: ENUMS.EVENT.REMOVE,
+            value: _value(),
+            item,
+            target: valueRef.current,
+        };
+
+        try {
+            onRemove(evt);
+        } catch (err) {}
+
+        inputRef.current.focus();
+    };
+
+    const _onReorder = e => {
+        const value = _value();
+
+        const startIndex = op.get(e, 'source.index');
+        const endIndex = op.get(e, 'destination.index');
+        const list = Array.from(value);
+        const [item] = list.splice(startIndex, 1);
+
+        if (typeof endIndex === 'undefined') {
+            setState({ value: list, changed: Date.now() });
+            return;
+        }
+
+        list.splice(endIndex, 0, item);
+        setState({ value: list, changed: Date.now() });
+    };
+
+    const _addTag = val => {
+        val = _.isObject(val) ? op.get(val, 'value') : val;
+        val = isNaN(val) ? val : Number(val);
+
+        const isValid = validator(val, { state, ref });
+
+        let evt;
+
+        if (isValid !== true) {
+            evt = {
+                type: ENUMS.EVENT.ERROR,
+                value: val,
+                error: isValid,
+                target: inputRef,
+            };
+
+            onError(evt);
+            return;
+        }
+
+        const value = _value();
+        value.push(val);
+
+        evt = {
+            type: ENUMS.EVENT.ADD,
+            value: _value(),
+            item: val,
+            target: valueRef.current,
+        };
+
+        setState({ value, changed: Date.now(), suggest: [], suggestIndex: -1 });
+
+        try {
+            onAdd(evt);
+        } catch (err) {
+            console.log(err);
+        }
+
+        inputRef.current.value = '';
+        inputRef.current.focus();
+    };
+
+    const _index = () => {
+        const { data = [] } = state;
+
+        if (data.length > 0) {
+            const index = data.map((item, i) => {
+                if (typeof item === 'string') {
+                    item = {
+                        search: String(item)
+                            .trim()
+                            .split(' '),
+                        value: item,
+                        label: item,
+                    };
+                } else {
+                    let sarr = item.value.split(' ');
+                    sarr = sarr.concat(item.label.split(' '));
+                    item.search = sarr.join(' ').split(' ');
+                }
+
+                item['search'] = _.compact(_.uniq(item.search)).join(' ');
+                item['id'] = i;
+
+                return item;
+            });
+
+            setState({ index });
+        }
+    };
+
+    const _isChild = child => isContainer(child, containerRef.current);
+
+    const _search = search => {
+        if (!search || String(search).length < 2) {
+            setState({ suggest: [] });
+            _suggestHide();
+            return;
+        }
+
+        const { index } = state;
+
+        if (!index) {
+            setState({ suggest: [] });
+            return;
+        }
+
+        const exp = new RegExp(search, 'i');
+        const results = index.filter(
+            item => String(item.search).search(exp) > -1,
+        );
+
+        setState({ suggest: results });
+        _suggestShow();
+    };
+
+    const _suggestDismiss = e => {
+        if (!e) {
+            return;
+        }
+
+        if (_isChild(e.target)) {
+            return;
+        }
+
+        _suggestHide();
+    };
+
+    const _suggestFocus = inc => {
+        if (!suggestRef.current) return;
+
+        _suggestShow();
+        let { suggest = [], suggestIndex = -1 } = state;
+
+        const selector = `.${namespace}-suggest-btn`;
+        const btns = suggestRef.current.querySelectorAll(selector);
+
+        suggestIndex += inc;
+        suggestIndex = Math.max(-2, suggestIndex);
+        suggestIndex = Math.min(suggest.length, suggestIndex);
+        suggestIndex = suggestIndex === suggest.length ? -1 : suggestIndex;
+        suggestIndex = suggestIndex === -2 ? suggest.length - 1 : suggestIndex;
+
+        const elm = suggestIndex === -1 ? inputRef.current : btns[suggestIndex];
+
+        setState({ suggestIndex });
+
+        elm.focus();
+    };
+
+    const _suggestHide = () => {
+        if (!suggestRef.current) return;
+        const { dismissable = false } = state;
+
+        if (dismissable === true) {
+            suggestRef.current.style.display = 'none';
+            setState({ suggestIndex: -1 });
+        }
+    };
+
+    const _suggestShow = () => {
+        if (!suggestRef.current) return;
+        suggestRef.current.style.display = 'block';
+    };
+
+    const _value = value => {
+        value = value || op.get(state, 'value', []) || [];
+        return Array.isArray(value) ? value : JSON.parse(value);
+    };
+
+    const _valueString = value => JSON.stringify(_value(value));
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        container: containerRef.current,
+        setState,
+        state: state,
+        value: _value(),
+    }));
+
+    // Renderers
+    const renderTag = (label, index) => (
+        <span key={`${namespace}-tag-${index}`} className={`${namespace}-tag`}>
+            <span className='label'>{state.formatter(label)}</span>
+            {editable && !props.disabled && !props.readOnly && (
+                <button type='button' onClick={() => _onRemove(index)}>
+                    <Feather.X />
+                </button>
+            )}
+        </span>
+    );
+
+    const renderDraggableTag = (label, index) => (
+        <Draggable
+            key={`${namespace}-tag-${index}`}
+            draggableId={`${namespace}-tag-${index}`}
+            index={index}>
+            {(provided, snapshot) => (
+                <span
+                    ref={provided.innerRef}
+                    {...provided.draggableProps}
+                    {...provided.dragHandleProps}
+                    className={cn({
+                        [`${namespace}-tag`]: true,
+                        dragging: snapshot.isDragging,
+                    })}>
+                    <span className='label'>{state.formatter(label)}</span>
+                    {editable && !props.disabled && !props.readOnly && (
+                        <button type='button' onClick={() => _onRemove(index)}>
+                            <Feather.X />
+                        </button>
+                    )}
+                </span>
+            )}
+        </Draggable>
+    );
+
+    const renderSuggestions = () => {
+        const { suggest = [] } = state;
+
+        return (
+            <div className={`${namespace}-suggest`} ref={suggestRef}>
+                {suggest.length > 0 && (
+                    <Scrollbars
+                        autoHeight
+                        autoHeightMin={0}
+                        autoHeightMax={245}
+                        thumbMinSize={5}>
+                        <ul>
+                            {suggest.map((item, i) => (
+                                <li key={`suggest-${i}`}>
+                                    <button
+                                        type='button'
+                                        onKeyDown={_onArrowKey}
+                                        className={`${namespace}-suggest-btn`}
+                                        onClick={() =>
+                                            _addTag(
+                                                item.value || item,
+                                                'suggest',
+                                            )
+                                        }>
+                                        {item.label || item}
+                                    </button>
+                                </li>
+                            ))}
+                        </ul>
+                    </Scrollbars>
+                )}
+            </div>
+        );
+    };
+
+    const renderTags = () => {
+        const value = _value();
+        const inputProps = { ...props };
+        delete inputProps.formatter;
+
+        return sortable && editable && !props.disabled && !props.readOnly ? (
+            <DragDropContext onDragEnd={_onReorder}>
+                <Droppable
+                    droppableId={`${id}-${uuid()}`}
+                    direction={direction}>
+                    {(provided, snapshot) => (
+                        <div
+                            className={cn({
+                                [`${namespace}-tags`]: true,
+                                dropping: snapshot.isDraggingOver,
+                            })}
+                            {...provided.droppableProps}
+                            ref={provided.innerRef}>
+                            {value.map(renderDraggableTag)}
+                            <span className='flex-grow'>
+                                <input
+                                    type='text'
+                                    autoComplete='off'
+                                    {...inputProps}
+                                    ref={inputRef}
+                                    onBlur={_onFocus}
+                                    onFocus={_onFocus}
+                                    onKeyDown={_onKeyDown}
+                                    onChange={e => _search(e.target.value)}
+                                />
+                                {renderSuggestions()}
+                            </span>
+                            {provided.placeholder}
+                        </div>
+                    )}
+                </Droppable>
+            </DragDropContext>
+        ) : (
+            <div className={`${namespace}-tags`}>
+                {value.map(renderTag)}
+                <span className='flex-grow'>
+                    <input
+                        type='text'
+                        autoComplete='off'
+                        {...inputProps}
+                        ref={inputRef}
+                        onBlur={_onFocus}
+                        onFocus={_onFocus}
+                        onKeyDown={_onKeyDown}
+                        onChange={e => _search(e.target.value)}
+                    />
+                    {renderSuggestions()}
+                </span>
+            </div>
+        );
+    };
+
+    const render = () => {
+        const { focus = false } = state;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            focus,
+        });
+
+        return (
+            <>
+                {name && (
+                    <input
+                        type='hidden'
+                        id={id}
+                        name={name}
+                        value={_valueString()}
+                        ref={valueRef}
+                    />
+                )}
+                <div ref={containerRef} className={cname}>
+                    {renderTags()}
+                </div>
+            </>
+        );
+    };
+
+    // Side Effects
+    useEffect(() => {
+        setState({ data });
+        _index();
+    }, [data]);
+
+    useEffect(() => {
+        setState({ value });
+    }, [value]);
+
+    useEffect(() => _onChange(), [state.changed]);
+
+    useEffect(() => setState(props), Object.values(props));
+
+    useEffect(() => {
+        if (!containerRef.current || typeof window === 'undefined') return;
+
+        window.addEventListener('mouseup', _suggestDismiss);
+        window.addEventListener('touchend', _suggestDismiss);
+
+        return () => {
+            window.removeEventListener('mouseup', _suggestDismiss);
+            window.removeEventListener('touchend', _suggestDismiss);
+        };
+    }, [containerRef.current]);
+
+    return render();
+};
+
+TagsInput = forwardRef(TagsInput);
+
+TagsInput.propTypes = {
+    className: PropTypes.string,
+    editable: PropTypes.bool,
+    formatter: PropTypes.func,
+    namespace: PropTypes.string,
+    sortable: PropTypes.bool,
+    onAdd: PropTypes.func,
+    onBlur: PropTypes.func,
+    onChange: PropTypes.func,
+    onError: PropTypes.func,
+    onFocus: PropTypes.func,
+    onKeyDown: PropTypes.func,
+    onInit: PropTypes.func,
+    onRemove: PropTypes.func,
+    validator: PropTypes.func,
+};
+
+TagsInput.defaultProps = {
+    direction: ENUMS.DIRECTION.HORIZONTAL,
+    editable: true,
+    id: uuid(),
+    formatter: value => value,
+    namespace: 'ar-tags-input',
+    onAdd: noop,
+    onBlur: noop,
+    onChange: noop,
+    onError: noop,
+    onFocus: noop,
+    onKeyDown: noop,
+    onInit: noop,
+    onRemove: noop,
+    sortable: false,
+    validator: value => value.length > 0,
+};
+
+export { TagsInput, TagsInput as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/_style.scss
new file mode 100644
index 00000000..1bdbd966
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/_style.scss
@@ -0,0 +1,88 @@
+$ar-timepicker-color-highlight: $color-blue;
+$ar-timepicker-color-text: $color-gray-dark;
+
+.ar-timepicker {
+    @extend .ar-picker-wrapper;
+    width: 100%;
+
+    &-nav {
+        width: 100%;
+
+        button {
+            @extend .btn-clear;
+
+            width: 100%;
+            padding: 5px 0;
+
+            &:hover {
+                svg {
+                    fill: $ar-timepicker-color-highlight;
+                }
+            }
+        }
+    }
+
+    &-input {
+        width: 100%;
+        display: flex;
+        overflow: hidden;
+        position: relative;
+        justify-content: center;
+
+        input {
+            padding: 10px 0;
+            border: none;
+            background-color: transparent;
+            font-size: 22px;
+            font-family: $font-family-monospace;
+            text-align: center;
+            text-shadow: 0 0 0 $ar-timepicker-color-highlight;
+            text-transform: uppercase;
+            width: 100%;
+            color: $ar-timepicker-color-text;
+
+            &:hover {
+                cursor: pointer;
+            }
+
+            &.active,
+            &:focus {
+                outline: none;
+                color: transparent;
+            }
+        }
+
+        span {
+            position: relative;
+            width: 40px;
+
+            &.colon {
+                &:before {
+                    content: ':';
+                    position: absolute;
+                    top: 50%;
+                    right: -3px;
+                    transform: translateY(-50%);
+                    font-family: $font-family-base;
+                    font-size: 22px;
+                    margin-top: -2px;
+                    padding: 0;
+                }
+            }
+
+            &.dot {
+                &:before {
+                    content: '.';
+                    position: absolute;
+                    top: 50%;
+                    right: -3px;
+                    transform: translateY(-50%);
+                    font-family: $font-family-base;
+                    font-size: 22px;
+                    margin-top: -2px;
+                    padding: 0;
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/index.js
new file mode 100644
index 00000000..0ab0baa2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/TimePicker/index.js
@@ -0,0 +1,424 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import moment from 'moment';
+import op from 'object-path';
+import Picker from '../Picker';
+import { Feather } from '../Icon';
+import PropTypes from 'prop-types';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+const formatTime = str => {
+    const lookups = [
+        /((1[0-2]|0?[1-9]):([0-5][0-9]):([0-5][0-9]) ?([AaPp][Mm]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9]):([0-5][0-9])?([AaPp][Mm]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9]):([0-5][0-9]) ?([AaPp]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9]):([0-5][0-9])?([AaPp]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9])?([AaPp][Mm]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp]))/gi,
+        /((1[0-2]|0?[1-9]):([0-5][0-9])?([AaPp]))/gi,
+    ];
+
+    let match;
+
+    while (lookups.length > 0 && !match) {
+        let regex = lookups[0];
+        match = String(str).match(regex);
+
+        if (Array.isArray(match)) {
+            match = String(match[0]);
+            match = match.split(' ').join(':');
+            match = match.replace(/([AaPp][Mm])/gi, ' $1').trim();
+            match = match.replace(/([AaPp]$)/gi, ' $1M');
+            match = match.split(': ').join(' ');
+            match = match.toUpperCase();
+        }
+
+        lookups.shift();
+    }
+
+    return match || str;
+};
+
+const DEBUG = false;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: TimePicker
+ * -----------------------------------------------------------------------------
+ */
+let TimePicker = ({ iDocument, iWindow, ...props }, ref) => {
+    // Refs
+    const ampmRef = useRef();
+    const containerRef = useRef();
+    const hourRef = useRef();
+    const minuteRef = useRef();
+    const pickerRef = useRef();
+    const secondsRef = useRef();
+    const stateRef = useRef({
+        ival: null,
+        prevState: {},
+        value: props.value ? formatTime(props.value) : null,
+        ...props,
+    });
+
+    // State
+    const [state, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Get the previous state
+        const prevState = { ...stateRef.current };
+
+        let { value } = newState;
+
+        if (value) {
+            newState.value = formatTime(value);
+        }
+
+        // Update the stateRef
+        stateRef.current = {
+            ...prevState,
+            ...newState,
+            prevState,
+        };
+
+        if (DEBUG) {
+            console.log('setstate()', caller, stateRef.current);
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    // External Interface
+    const _handle = () => ({
+        Picker: pickerRef.current,
+        setState,
+        state: stateRef.current,
+    });
+
+    const [handle, setHandle] = useState(_handle());
+
+    // External Interface
+    useImperativeHandle(ref, () => handle, [handle]);
+
+    // Side Effects
+    useEffect(() => {
+        if (!pickerRef.current) return;
+        if (!handle.Picker) {
+            handle.Picker = pickerRef.current;
+            setHandle(_handle());
+        }
+    }, [pickerRef.current]);
+
+    useEffect(() => setState(props, 'useEffect()'), Object.values(props));
+
+    useLayoutEffect(() => {
+        const container = pickerRef.current.container;
+        container.addEventListener('keydown', _onKeyPress);
+        container.addEventListener('keyup', _onTimeSetRelease);
+
+        return function cleanup() {
+            container.removeEventListener('keydown', _onKeyPress);
+            container.removeEventListener('keyup', _onTimeSetRelease);
+        };
+    });
+
+    const _onInputFocus = e => {
+        const refs = [hourRef, minuteRef, secondsRef, ampmRef];
+        let { index, type, values } = e.target.dataset;
+
+        index = Number(index);
+        values = values
+            .split(',')
+            .map(item => (isNaN(item) ? item : Number(item)));
+
+        const value = isNaN(e.target.value)
+            ? e.target.value
+            : Number(e.target.value);
+
+        const active = {
+            ref: refs[index].current,
+            selection: index,
+            value,
+            values,
+        };
+
+        setState({ active }, '_onInputFocus()');
+    };
+
+    const _onKeyPress = e => {
+        const keys = [40, 38];
+
+        if (keys.includes(e.keyCode)) {
+            e.preventDefault();
+
+            pickerRef.current.show();
+            const inc = e.keyCode === 38 ? 1 : -1;
+            try {
+                _onTimeSet(inc);
+            } catch (err) {}
+        }
+    };
+
+    const _onPickerInputChange = e => {
+        const { value } = e;
+        const { onChange } = stateRef.current;
+        setState({ value }, '_onPickerInputChange()');
+        onChange({ ...e, value });
+    };
+
+    const _onTimeSet = inc => {
+        let { active, ival, selected } = stateRef.current;
+
+        if (!active && hourRef.current) {
+            _onInputFocus({ target: hourRef.current });
+            setTimeout(() => _onTimeSet(inc), 1);
+            return;
+        }
+
+        let { selection = null, value, values = [] } = active;
+
+        value = isNaN(value) ? value : Number(value);
+
+        inc = Number(inc);
+
+        const curr = values.indexOf(value);
+        let index = curr + inc;
+        index = index < 0 ? values.length - 1 : index;
+        index = index === values.length ? 0 : index;
+
+        value = values[index];
+        value = isNaN(value) ? value : value < 10 ? `0${value}` : value;
+
+        active.ref.value = value;
+        selected[selection] = value;
+
+        let pval = formatTime(
+            selected
+                .join(':')
+                .split(':PM')
+                .join(' PM')
+                .split(':AM')
+                .join(' AM'),
+        );
+
+        if (ival) {
+            clearInterval(ival);
+        }
+
+        ival = setInterval(() => _onTimeSet(inc), 250);
+
+        setState({ value: pval, ival }, '_onTimeSet()');
+
+        _onInputFocus({ target: active.ref });
+        _onPickerInputChange({
+            type: 'change',
+            target: pickerRef.current.input,
+            value: pval,
+        });
+    };
+
+    const _onTimeSetRelease = () => {
+        const { ival } = stateRef.current;
+
+        if (ival) {
+            clearInterval(ival);
+        }
+    };
+
+    // Renderers
+    const renderUI = (provided, snapshot) => {
+        let { active, namespace, selected = [], value } = stateRef.current;
+
+        value = !value ? moment().format('LT') : value;
+
+        if (typeof value === 'string') {
+            value = String(value)
+                .split(' ')
+                .join(':');
+
+            selected = _.compact(value.split(':'));
+            stateRef.current.selected = selected;
+        }
+
+        if (selected.length < 2) {
+            return null;
+        }
+
+        const cname = cn({
+            [namespace]: !!namespace,
+        });
+
+        const refs = [hourRef, minuteRef, secondsRef, ampmRef];
+        const seconds = selected.length > 3;
+        const nums = selected.filter(item => !isNaN(item));
+        const len = selected.length - 1;
+        const activeIndex = active ? active.selection : null;
+
+        const elms = selected.map((v, i) => {
+            if (isNaN(v)) {
+                // string
+                return (
+                    <span key={`time-piece-${i}`}>
+                        <input
+                            ref={refs[i]}
+                            maxLength={2}
+                            data-index={i}
+                            data-restrict='[^pm|^am]'
+                            data-type='string'
+                            data-values='AM,PM'
+                            readOnly
+                            type='text'
+                            value={v || ''}
+                            onChange={noop}
+                            onClick={_onInputFocus}
+                            onFocus={_onInputFocus}
+                            className={cn({ active: activeIndex === i })}
+                        />
+                    </span>
+                );
+            } else {
+                // number
+                const cname = cn({
+                    colon: i !== len && i !== nums.length - 1,
+                });
+                const max = i === 0 ? 13 : 60;
+                const min = i === 0 ? 1 : 0;
+                const values = _.range(min, max);
+                v = Number(v) < 10 && v.length < 2 ? `0${v}` : v;
+                v = String(v).substr(0, 2);
+
+                return (
+                    <span key={`time-piece-${i}`} className={cname}>
+                        <input
+                            ref={refs[i]}
+                            maxLength={2}
+                            data-index={i}
+                            data-restrict='[a-zA-Z]'
+                            data-type='number'
+                            data-values={values.join(',')}
+                            readOnly
+                            type='text'
+                            value={v || ''}
+                            onChange={noop}
+                            onClick={_onInputFocus}
+                            onFocus={_onInputFocus}
+                            className={cn({ active: activeIndex === i })}
+                        />
+                    </span>
+                );
+            }
+        });
+
+        return (
+            <div ref={containerRef} className={cname}>
+                <div className={`${namespace}-nav`}>
+                    <button
+                        type='button'
+                        onMouseDown={() => _onTimeSet(1)}
+                        onMouseUp={_onTimeSetRelease}>
+                        <Feather.ChevronUp />
+                    </button>
+                </div>
+                <div className={`${namespace}-input`}>
+                    {elms.map(item => item)}
+                </div>
+                <div className={`${namespace}-nav`}>
+                    <button
+                        type='button'
+                        onMouseDown={() => _onTimeSet(-1)}
+                        onMouseUp={_onTimeSetRelease}>
+                        <Feather.ChevronDown />
+                    </button>
+                </div>
+            </div>
+        );
+    };
+
+    const render = () => {
+        let {
+            className,
+            id,
+            icon,
+            name,
+            picker = {},
+            placeholder,
+            readOnly,
+            style = {},
+            width,
+            value,
+        } = stateRef.current;
+
+        style = { ...style, width };
+
+        return (
+            <Picker
+                placeholder={placeholder}
+                icon={icon}
+                id={id}
+                {...picker}
+                name={name}
+                readOnly={readOnly}
+                children={renderUI}
+                ref={pickerRef}
+                className={className}
+                style={style}
+                iDocument={iDocument}
+                iWindow={iWindow}
+                value={value}
+                onChange={_onPickerInputChange}
+            />
+        );
+    };
+
+    return render();
+};
+
+TimePicker = forwardRef(TimePicker);
+
+TimePicker.formatTime = formatTime;
+
+TimePicker.propTypes = {
+    className: PropTypes.string,
+    icon: PropTypes.shape({
+        closed: PropTypes.node,
+        opened: PropTypes.node,
+    }),
+    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    name: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    picker: PropTypes.shape(Picker.propTypes),
+    readOnly: PropTypes.bool,
+    style: PropTypes.object,
+    value: PropTypes.string,
+    width: PropTypes.number,
+};
+
+TimePicker.defaultProps = {
+    namespace: 'ar-timepicker',
+    onChange: noop,
+    style: {},
+    width: 180,
+    icon: {
+        closed: <Feather.Clock />,
+        opened: <Feather.Clock />,
+    },
+    picker: {},
+    placeholder: 'Select Time',
+    readOnly: false,
+};
+
+export { TimePicker, TimePicker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/_style.scss
new file mode 100644
index 00000000..a31c08c8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/_style.scss
@@ -0,0 +1,11 @@
+@import "./scss/variables";
+@import "./scss/toastContainer";
+@import "./scss/toast";
+@import "./scss/closeButton";
+@import "./scss/progressBar";
+
+// entrance and exit animations
+@import "./scss/bounce.scss";
+@import "./scss/zoom.scss";
+@import "./scss/flip.scss";
+@import "./scss/slide.scss";
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/index.js
new file mode 100644
index 00000000..362cfa7f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/index.js
@@ -0,0 +1,84 @@
+import { ToastContainer, toast } from 'react-toastify';
+import Button from 'reactium-ui/Button';
+import Icon from 'reactium-ui/Icon';
+import ReactDOM from 'react-dom';
+import op from 'object-path';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+} from 'react';
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+const CloseButton = () => (
+    <Button
+        className='Toastify__close-button'
+        color={Button.ENUMS.COLOR.CLEAR}
+        size={Button.ENUMS.SIZE.XS}>
+        <Icon name='Feather.X' className='close' size={18} />
+    </Button>
+);
+
+let Toast = (props, ref) => {
+    if (typeof window === 'undefined') return null;
+
+    const doc = op.get(props, 'iDocument', document) || document;
+    return doc
+        ? ReactDOM.createPortal(
+              <div>
+                  <ToastContainer
+                      ref={ref}
+                      {...props}
+                      closeButton={<CloseButton />}
+                  />
+              </div>,
+              doc.body,
+          )
+        : null;
+};
+
+Toast = forwardRef(Toast);
+
+Toast[toast.TYPE.DEFAULT] = toast;
+
+Toast.show = ({
+    icon,
+    message = null,
+    position = Toast.POSITION.TOP_RIGHT,
+    type = Toast.TYPE.DEFAULT,
+    ...props
+}) => {
+    if (!message) {
+        return;
+    }
+
+    icon =
+        typeof icon === 'string' ? (
+            <Icon name={icon} style={{ marginRight: 8 }} />
+        ) : (
+            icon
+        );
+
+    const Ico = icon ? () => icon : () => <span style={{ marginLeft: 4 }} />;
+
+    message = (
+        <>
+            {Ico && <Ico />}
+            {message}
+        </>
+    );
+
+    type = Object.values(Toast.TYPE).includes(type) ? type : Toast.TYPE.DEFAULT;
+
+    const config = { ...props, position };
+
+    return Toast[type](message, config);
+};
+
+Object.keys(toast).forEach(key => (Toast[key] = toast[key]));
+
+export { Toast, Toast as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_bounce.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_bounce.scss
new file mode 100755
index 00000000..ccb4e783
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_bounce.scss
@@ -0,0 +1,197 @@
+@mixin timing-function {
+    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+}
+
+@keyframes #{$rt-namespace}__bounceInRight {
+    from,
+    60%,
+    75%,
+    90%,
+    to {
+        @include timing-function;
+    }
+    from {
+        opacity: 0;
+        transform: translate3d(3000px, 0, 0);
+    }
+    60% {
+        opacity: 1;
+        transform: translate3d(-25px, 0, 0);
+    }
+    75% {
+        transform: translate3d(10px, 0, 0);
+    }
+    90% {
+        transform: translate3d(-5px, 0, 0);
+    }
+    to {
+        transform: none;
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceOutRight {
+    20% {
+        opacity: 1;
+        transform: translate3d(-20px, 0, 0);
+    }
+    to {
+        opacity: 0;
+        transform: translate3d(2000px, 0, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceInLeft {
+    from,
+    60%,
+    75%,
+    90%,
+    to {
+        @include timing-function;
+    }
+    0% {
+        opacity: 0;
+        transform: translate3d(-3000px, 0, 0);
+    }
+    60% {
+        opacity: 1;
+        transform: translate3d(25px, 0, 0);
+    }
+    75% {
+        transform: translate3d(-10px, 0, 0);
+    }
+    90% {
+        transform: translate3d(5px, 0, 0);
+    }
+    to {
+        transform: none;
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceOutLeft {
+    20% {
+        opacity: 1;
+        transform: translate3d(20px, 0, 0);
+    }
+    to {
+        opacity: 0;
+        transform: translate3d(-2000px, 0, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceInUp {
+    from,
+    60%,
+    75%,
+    90%,
+    to {
+        @include timing-function;
+    }
+    from {
+        opacity: 0;
+        transform: translate3d(0, 3000px, 0);
+    }
+    60% {
+        opacity: 1;
+        transform: translate3d(0, -20px, 0);
+    }
+    75% {
+        transform: translate3d(0, 10px, 0);
+    }
+    90% {
+        transform: translate3d(0, -5px, 0);
+    }
+    to {
+        transform: translate3d(0, 0, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceOutUp {
+    20% {
+        transform: translate3d(0, -10px, 0);
+    }
+    40%,
+    45% {
+        opacity: 1;
+        transform: translate3d(0, 20px, 0);
+    }
+    to {
+        opacity: 0;
+        transform: translate3d(0, -2000px, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceInDown {
+    from,
+    60%,
+    75%,
+    90%,
+    to {
+        @include timing-function;
+    }
+    0% {
+        opacity: 0;
+        transform: translate3d(0, -3000px, 0);
+    }
+    60% {
+        opacity: 1;
+        transform: translate3d(0, 25px, 0);
+    }
+    75% {
+        transform: translate3d(0, -10px, 0);
+    }
+    90% {
+        transform: translate3d(0, 5px, 0);
+    }
+    to {
+        transform: none;
+    }
+}
+
+@keyframes #{$rt-namespace}__bounceOutDown {
+    20% {
+        transform: translate3d(0, 10px, 0);
+    }
+    40%,
+    45% {
+        opacity: 1;
+        transform: translate3d(0, -20px, 0);
+    }
+    to {
+        opacity: 0;
+        transform: translate3d(0, 2000px, 0);
+    }
+}
+
+.#{$rt-namespace}__bounce-enter {
+    &--top-left,
+    &--bottom-left {
+        animation-name: #{$rt-namespace}__bounceInLeft;
+    }
+    &--top-right,
+    &--bottom-right {
+        animation-name: #{$rt-namespace}__bounceInRight;
+    }
+    &--top-center {
+        animation-name: #{$rt-namespace}__bounceInDown;
+    }
+    &--bottom-center {
+        animation-name: #{$rt-namespace}__bounceInUp;
+    }
+}
+
+.#{$rt-namespace}__bounce-exit {
+    &--top-left,
+    &--bottom-left {
+        animation-name: #{$rt-namespace}__bounceOutLeft;
+    }
+    &--top-right,
+    &--bottom-right {
+        animation-name: #{$rt-namespace}__bounceOutRight;
+    }
+    &--top-center {
+        animation-name: #{$rt-namespace}__bounceOutUp;
+    }
+    &--bottom-center {
+        animation-name: #{$rt-namespace}__bounceOutDown;
+    }
+}
\ No newline at end of file
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_closeButton.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_closeButton.scss
new file mode 100755
index 00000000..0d10ec61
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_closeButton.scss
@@ -0,0 +1,27 @@
+.#{$rt-namespace}__close-button {
+    color: $rt-text-color-default;
+    font-weight: bold;
+    font-size: 14px;
+    background: transparent;
+    outline: none;
+    border: none;
+    padding: 0;
+    cursor: pointer;
+    opacity: 0.7;
+    transition: 0.3s ease;
+    align-self: flex-start;
+    height: 32px;
+
+    svg {
+        fill: $rt-text-color-default;
+    }
+
+    &--default {
+        opacity: 0.3;
+    }
+
+    &:hover,
+    &:focus {
+        opacity: 1;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_flip.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_flip.scss
new file mode 100755
index 00000000..d00e5be8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_flip.scss
@@ -0,0 +1,43 @@
+@keyframes #{$rt-namespace}__flipIn {
+    from {
+        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+        animation-timing-function: ease-in;
+        opacity: 0;
+    }
+    40% {
+        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+        animation-timing-function: ease-in;
+    }
+    60% {
+        transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+        opacity: 1
+    }
+    80% {
+        transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    }
+    to {
+        transform: perspective(400px);
+    }
+}
+
+@keyframes #{$rt-namespace}__flipOut {
+    from {
+        transform: perspective(400px);
+    }
+    30% {
+        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+        opacity: 1
+    }
+    to {
+        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+        opacity: 0
+    }
+}
+
+.#{$rt-namespace}__flip-enter {
+    animation-name: #{$rt-namespace}__flipIn;
+}
+
+.#{$rt-namespace}__flip-exit {
+    animation-name: #{$rt-namespace}__flipOut;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_main.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_main.scss
new file mode 100755
index 00000000..49ecd18f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_main.scss
@@ -0,0 +1,13 @@
+@charset "UTF-8";
+
+@import "variables";
+@import "toastContainer";
+@import "toast";
+@import "closeButton";
+@import "progressBar";
+
+// entrance and exit animations
+@import "animations/bounce.scss";
+@import "animations/zoom.scss";
+@import "animations/flip.scss";
+@import "animations/slide.scss";
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_progressBar.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_progressBar.scss
new file mode 100755
index 00000000..03319681
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_progressBar.scss
@@ -0,0 +1,42 @@
+@keyframes #{$rt-namespace}__trackProgress {
+  0%{
+    transform: scaleX(1);
+  }
+  100%{
+    transform: scaleX(0);
+  }
+}
+
+.#{$rt-namespace}__progress-bar {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 5px;
+  z-index: $rt-z-index;
+  opacity: 0.7;
+  background-color: rgba(255,255,255,.7);
+  transform-origin: left;
+
+  &--animated {
+    animation: #{$rt-namespace}__trackProgress linear 1 forwards;
+  }
+
+  &--controlled {
+    transition: transform .2s;
+  }
+
+  &--rtl {
+    right: 0;
+    left: initial;
+    transform-origin: right;
+  }
+  &--default{
+    background: $rt-color-progress-default;
+  }
+
+  &--info{}
+  &--success{}
+  &--warning{}
+  &--error{}
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_slide.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_slide.scss
new file mode 100755
index 00000000..b7ba3f21
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_slide.scss
@@ -0,0 +1,117 @@
+@mixin transform {
+    transform: translate3d(0, 0, 0);
+}
+
+@keyframes #{$rt-namespace}__slideInRight {
+    from {
+        transform: translate3d(110%, 0, 0);
+        visibility: visible;
+    }
+    to {
+        @include transform;
+    }
+}
+
+@keyframes #{$rt-namespace}__slideInLeft {
+    from {
+        transform: translate3d(-110%, 0, 0);
+        visibility: visible;
+    }
+    to {
+        @include transform;
+    }
+}
+
+@keyframes #{$rt-namespace}__slideInUp {
+    from {
+        transform: translate3d(0, 110%, 0);
+        visibility: visible;
+    }
+    to {
+        @include transform;
+    }
+}
+
+@keyframes #{$rt-namespace}__slideInDown {
+    from {
+        transform: translate3d(0, -110%, 0);
+        visibility: visible;
+    }
+    to {
+        @include transform;
+    }
+}
+
+@keyframes #{$rt-namespace}__slideOutRight {
+    from {
+        @include transform;
+    }
+    to {
+        visibility: hidden;
+        transform: translate3d(110%, 0, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__slideOutLeft {
+    from {
+        @include transform;
+    }
+    to {
+        visibility: hidden;
+        transform: translate3d(-110%, 0, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__slideOutDown {
+    from {
+        @include transform;
+    }
+    to {
+        visibility: hidden;
+        transform: translate3d(0, 500px, 0);
+    }
+}
+
+@keyframes #{$rt-namespace}__slideOutUp {
+    from {
+        @include transform;
+    }
+    to {
+        visibility: hidden;
+        transform: translate3d(0, -500px, 0);
+    }
+}
+
+.#{$rt-namespace}__slide-enter {
+    &--top-left,
+    &--bottom-left {
+        animation-name: #{$rt-namespace}__slideInLeft;
+    }
+    &--top-right,
+    &--bottom-right {
+        animation-name: #{$rt-namespace}__slideInRight;
+    }
+    &--top-center {
+        animation-name: #{$rt-namespace}__slideInDown;
+    }
+    &--bottom-center {
+        animation-name: #{$rt-namespace}__slideInUp;
+    }
+}
+
+.#{$rt-namespace}__slide-exit {
+    &--top-left,
+    &--bottom-left {
+        animation-name: #{$rt-namespace}__slideOutLeft;
+    }
+    &--top-right,
+    &--bottom-right {
+        animation-name: #{$rt-namespace}__slideOutRight;
+    }
+    &--top-center {
+        animation-name: #{$rt-namespace}__slideOutUp;
+    }
+    &--bottom-center {
+        animation-name: #{$rt-namespace}__slideOutDown;
+    }
+}
\ No newline at end of file
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toast.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toast.scss
new file mode 100755
index 00000000..3db86236
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toast.scss
@@ -0,0 +1,51 @@
+.#{$rt-namespace}__toast {
+    position: relative;
+    min-height: $rt-toast-min-height;
+    box-sizing: border-box;
+    margin-bottom: 1rem;
+    padding: 8px 8px 8px 12px;
+    box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1),
+        0 2px 15px 0 rgba(0, 0, 0, 0.05);
+    display: flex;
+    justify-content: space-between;
+    max-height: $rt-toast-max-height;
+    overflow: hidden;
+    font-family: $rt-font-family;
+    font-size: 14px;
+    cursor: pointer;
+    direction: ltr;
+
+    &--rtl {
+        direction: rtl;
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &--#{$clr-name} {
+            border-left: 4px solid nth($clr-codes, 2);
+            background-color: $rt-toast-background;
+            color: $rt-text-color-default;
+
+            svg.icon {
+                fill: nth($clr-codes, 2);
+            }
+        }
+    }
+
+    &-body {
+        margin: auto 0;
+        flex: 1;
+    }
+
+    .icon {
+        margin-right: 10px;
+        margin-bottom: 2px;
+        width: 18px;
+        height: 18px;
+    }
+}
+
+@media #{$rt-mobile} {
+    .#{$rt-namespace}__toast {
+        margin-bottom: 0;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toastContainer.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toastContainer.scss
new file mode 100755
index 00000000..bf85af1f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_toastContainer.scss
@@ -0,0 +1,69 @@
+@use 'sass:math';
+
+.#{$rt-namespace}__toast-container {
+    z-index: $rt-z-index;
+    -webkit-transform: translate3d(0, 0, #{$rt-z-index}px);
+    position: fixed;
+    padding: 4px;
+    width: $rt-toast-width;
+    box-sizing: border-box;
+    color: #fff;
+
+    &--top-left {
+        top: 1em;
+        left: 1em;
+    }
+
+    &--top-center {
+        top: 1em;
+        left: 50%;
+        margin-left: -(math.div($rt-toast-width, 2));
+    }
+
+    &--top-right {
+        top: 1em;
+        right: 1em;
+    }
+
+    &--bottom-left {
+        bottom: 1em;
+        left: 1em;
+    }
+
+    &--bottom-center {
+        bottom: 1em;
+        left: 50%;
+        margin-left: -(math.div($rt-toast-width, 2));
+    }
+
+    &--bottom-right {
+        bottom: 1em;
+        right: 1em;
+    }
+}
+
+@media #{$rt-mobile} {
+    .#{$rt-namespace}__toast-container {
+        width: 100vw;
+        padding: 0;
+        left: 0;
+        margin: 0;
+
+        &--top-left,
+        &--top-center,
+        &--top-right {
+            top: 0;
+        }
+
+        &--bottom-left,
+        &--bottom-center,
+        &--bottom-right {
+            bottom: 0;
+        }
+
+        &--rtl {
+            right: 0;
+            left: initial;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_variables.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_variables.scss
new file mode 100755
index 00000000..26cf5622
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_variables.scss
@@ -0,0 +1,11 @@
+$rt-namespace: 'Toastify';
+$rt-toast-width: 320px !default;
+$rt-toast-background: $color-white !default;
+$rt-toast-min-height: 50px !default;
+$rt-toast-max-height: 800px !default;
+$rt-text-color-default: lighten($color-gray-dark, 10%) !default;
+$rt-color-progress-default: $color-gray !default;
+
+$rt-mobile: "only screen and (max-width : 480px)" !default;
+$rt-font-family: Helvetica, Arial, sans-serif !default;
+$rt-z-index: 9999 !default;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_zoom.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_zoom.scss
new file mode 100755
index 00000000..8fa80071
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toast/scss/_zoom.scss
@@ -0,0 +1,30 @@
+@keyframes #{$rt-namespace}__zoomIn {
+    from {
+        opacity: 0;
+        transform: scale3d(0.3, 0.3, 0.3);
+    }
+    50% {
+        opacity: 1;
+    }
+}
+
+@keyframes #{$rt-namespace}__zoomOut {
+    from {
+        opacity: 1;
+    }
+    50% {
+        opacity: 0;
+        transform: scale3d(0.3, 0.3, 0.3);
+    }
+    to {
+        opacity: 0
+    }
+}
+
+.#{$rt-namespace}__zoom-enter {
+    animation-name: #{$rt-namespace}__zoomIn;
+}
+
+.#{$rt-namespace}__zoom-exit {
+    animation-name: #{$rt-namespace}__zoomOut;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/_style.scss
new file mode 100644
index 00000000..07208f83
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/_style.scss
@@ -0,0 +1,104 @@
+$ar-toggle-bg-color: $color-grey !default;
+$ar-toggle-bg-active-color: $color-blue !default;
+$ar-toggle-handle-color: $color-white !default;
+
+label.ar-toggle {
+    position: relative;
+    display: flex;
+    min-width: 38px;
+    height: 24px;
+    flex-grow: 0;
+    flex-shrink: 0;
+    flex-direction: row;
+    align-items: center;
+    cursor: pointer;
+    user-select: none;
+
+    * {
+        pointer-events: none;
+    }
+
+    input {
+        opacity: 0;
+        position: absolute;
+        left: 0;
+        top: 0;
+    }
+
+    span:last-child {
+        position: relative;
+        width: 38px;
+        height: 100%;
+        top: 0;
+        right: 0;
+        border-radius: 24px;
+        display: block;
+        background-color: $ar-toggle-bg-color;
+        transition: all 0.25s ease-in-out;
+
+        &:after {
+            position: absolute;
+            content: '';
+            height: 18px;
+            width: 18px;
+            right: 35px;
+            bottom: 3px;
+            background-color: $ar-toggle-handle-color;
+            transition: all 0.25s ease-in-out;
+            border-radius: 100%;
+            transform: translateX(100%);
+        }
+    }
+
+    span:first-child {
+        flex-grow: 1;
+    }
+
+    &.ar-toggle-label-left {
+        span:first-child {
+            margin-right: 10px;
+            text-align: left;
+        }
+    }
+
+    &.ar-toggle-label-right {
+        flex-direction: row-reverse;
+
+        span:first-child {
+            margin-left: 10px;
+            text-align: right;
+        }
+    }
+
+    input:focus + span:last-child {
+        box-shadow: 0 0 1px 2px rgba($ar-toggle-bg-active-color, 0.25);
+    }
+
+    input:checked + span:last-child {
+        background-color: $ar-toggle-bg-active-color;
+
+        &:after {
+            left: auto;
+            right: 3px;
+            transform: translateX(0%);
+        }
+    }
+
+    @each $clr-name, $clr-codes in $buttons {
+        &-#{$clr-name} {
+            input:focus + span:last-child {
+                box-shadow: 0 0 1px 2px rgba(nth($clr-codes, 1), 0.25);
+            }
+
+            input:checked + span:last-child {
+                background-color: nth($clr-codes, 1);
+            }
+        }
+    }
+
+    &:hover {
+        input:focus + span:last-child {
+            box-shadow: none;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/enums.js
new file mode 100644
index 00000000..b7a7b83a
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/enums.js
@@ -0,0 +1,13 @@
+import { Button } from 'reactium-ui/Button';
+
+export default {
+    ALIGN: {
+        LEFT: 'left',
+        RIGHT: 'right',
+    },
+    COLOR: { ...Button.ENUMS.COLOR },
+    TYPE: {
+        CHECKBOX: 'checkbox',
+        RADIO: 'radio',
+    },
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/index.js
new file mode 100644
index 00000000..4ac8a3e8
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/index.js
@@ -0,0 +1,104 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Imports
+ * -----------------------------------------------------------------------------
+ */
+import ENUMS from './enums';
+import PropTypes from 'prop-types';
+import classnames from 'classnames';
+import React, { forwardRef, useImperativeHandle, useRef } from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Toggle
+ * -----------------------------------------------------------------------------
+ */
+const cn = ({ className, color = ENUMS.COLOR.PRIMARY, label, labelAlign }) => {
+    const lbl = `ar-toggle-label-${labelAlign}`;
+    const clr = `ar-toggle-${color}`;
+
+    return classnames({
+        [className]: !!className,
+        [lbl]: !!label,
+        [clr]: true,
+        'ar-toggle': true,
+    });
+};
+
+let Toggle = (
+    {
+        className,
+        id,
+        label,
+        labelAlign,
+        labelStyle,
+        name,
+        style,
+        title,
+        ...props
+    },
+    ref,
+) => {
+    const inputRef = useRef();
+    const labelRef = useRef();
+
+    useImperativeHandle(ref, () => ({
+        blur: () => {
+            labelRef.current.blur;
+        },
+        check: () => {
+            inputRef.current.checked = true;
+        },
+        focus: () => {
+            labelRef.current.focus();
+        },
+        input: inputRef.current,
+        label: labelRef.current,
+        toggle: () => {
+            inputRef.current.checked = !inputRef.current.checked;
+        },
+        uncheck: () => {
+            inputRef.current.checked = false;
+        },
+        value: inputRef.current.value,
+    }));
+
+    return (
+        <label
+            ref={labelRef}
+            aria-label={label}
+            aria-labelledby={!label && name}
+            className={cn({ labelAlign, label, className })}
+            style={style}
+            title={title}>
+            <span
+                className={classnames({ ['sr-only']: !label })}
+                style={labelStyle}>
+                {label || title || name}
+            </span>
+            <input ref={inputRef} {...props} id={id} name={name} />
+            <span />
+        </label>
+    );
+};
+
+Toggle = forwardRef(Toggle);
+
+Toggle.ENUMS = ENUMS;
+
+Toggle.propTypes = {
+    className: PropTypes.string,
+    label: PropTypes.any,
+    labelAlign: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    labelStyle: PropTypes.object,
+    style: PropTypes.object,
+    title: PropTypes.string,
+    type: PropTypes.oneOf(Object.values(ENUMS.TYPE)),
+};
+
+Toggle.defaultProps = {
+    labelAlign: ENUMS.ALIGN.LEFT,
+    type: ENUMS.TYPE.CHECKBOX,
+};
+
+export { Toggle, Toggle as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/test.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/test.js
new file mode 100644
index 00000000..04b9a67f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Toggle/test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import Toggle from './index';
+import { shallow } from 'reactium-core/enzyme';
+
+test('<Toggle />', () => {
+    const component = shallow(<Toggle />);
+
+    expect(component.html().length).toBeGreaterThan(0);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/_style.scss
new file mode 100644
index 00000000..25fe73bd
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/_style.scss
@@ -0,0 +1,197 @@
+$ar-tooltip-color: $color-white !default;
+$ar-tooltip-color-background: lighten($color-black, 5%) !default;
+$ar-tooltip-color-pointer: lighten($color-black, 5%) !default;
+$ar-tooltip-shadow: none !default;
+
+$ar-tooltip-z: 10000000;
+
+.ar-tooltip {
+    position: absolute;
+    user-select: none;
+    z-index: $ar-tooltip-z;
+    display: none;
+
+    &,
+    * {
+        pointer-events: none;
+    }
+
+    .container {
+        background-color: $ar-tooltip-color-background;
+        border-radius: 2px;
+        color: $ar-tooltip-color;
+        padding: 10px 14px;
+        font-family: Arial, sans-serif;
+        font-weight: normal;
+        font-size: 14px;
+        position: relative;
+        box-shadow: $ar-tooltip-shadow;
+        opacity: 0.8;
+        white-space: nowrap;
+    }
+
+    &.visible {
+        display: block;
+    }
+
+    // Default & Top Center layout
+    &.top.center {
+        transform: translateX(-50%) translateY(-100%);
+        margin-top: -12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            left: 50%;
+            width: 0;
+            height: 0;
+            transform: translateX(-50%) translateY(100%);
+            border-style: solid;
+            border-width: 10px 7px 0 7px;
+            border-color: $ar-tooltip-color-pointer transparent transparent
+                transparent;
+        }
+    }
+
+    &.top.left {
+        transform: translateY(-100%);
+        margin-top: -12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            left: 7px;
+            width: 0;
+            height: 0;
+            transform: translateY(100%);
+            border-style: solid;
+            border-width: 10px 7px 0 7px;
+            border-color: $ar-tooltip-color-pointer transparent transparent
+                transparent;
+        }
+    }
+
+    &.top.right {
+        transform: translateX(-100%) translateY(-100%);
+        margin-top: -12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            right: 7px;
+            width: 0;
+            height: 0;
+            transform: translateY(100%);
+            border-style: solid;
+            border-width: 10px 7px 0 7px;
+            border-color: $ar-tooltip-color-pointer transparent transparent
+                transparent;
+        }
+    }
+
+    &.middle.left {
+        transform: translateX(-100%) translateY(-50%);
+        margin-left: -14px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            top: 50%;
+            right: 1px;
+            width: 0;
+            height: 0;
+            transform: translateX(100%) translateY(-50%);
+            border-style: solid;
+            border-width: 7px 0 7px 10px;
+            border-color: transparent transparent transparent
+                $ar-tooltip-color-pointer;
+        }
+    }
+
+    &.middle.center {
+        transform: translateX(-50%) translateY(-50%);
+    }
+
+    &.middle.right {
+        transform: translateY(-50%);
+        margin-left: 14px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            top: 50%;
+            left: 0;
+            width: 0;
+            height: 0;
+            transform: translateX(-100%) translateY(-50%);
+            border-style: solid;
+            border-width: 7px 10px 7px 0;
+            border-color: transparent $ar-tooltip-color-pointer transparent
+                transparent;
+        }
+    }
+
+    &.bottom.left {
+        margin-top: 12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            top: 0;
+            left: 7px;
+            width: 0;
+            height: 0;
+            transform: translateY(-100%);
+            border-style: solid;
+            border-width: 0 7px 10px 7px;
+            border-color: transparent transparent $ar-tooltip-color-pointer
+                transparent;
+        }
+    }
+
+    &.bottom.center {
+        transform: translateX(-50%);
+        margin-top: 12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            top: 0;
+            left: 50%;
+            width: 0;
+            height: 0;
+            transform: translateX(-50%) translateY(-100%);
+            border-style: solid;
+            border-width: 0 7px 10px 7px;
+            border-color: transparent transparent $ar-tooltip-color-pointer
+                transparent;
+        }
+    }
+
+    &.bottom.right {
+        transform: translateX(-100%);
+        margin-top: 12px;
+
+        .container:after {
+            content: '';
+            position: absolute;
+            bottom: 0;
+            top: 0;
+            right: 7px;
+            width: 0;
+            height: 0;
+            transform: translateY(-100%);
+            border-style: solid;
+            border-width: 0 7px 10px 7px;
+            border-color: transparent transparent $ar-tooltip-color-pointer
+                transparent;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/enums.js
new file mode 100644
index 00000000..bfc0b33d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/enums.js
@@ -0,0 +1,18 @@
+const ENUMS = {
+    ALIGN: {
+        LEFT: 'left',
+        RIGHT: 'right',
+        CENTER: 'center',
+    },
+    EVENT: {
+        HIDE: 'hide',
+        SHOW: 'show',
+    },
+    VERTICAL_ALIGN: {
+        TOP: 'top',
+        BOTTOM: 'bottom',
+        MIDDLE: 'middle',
+    },
+};
+
+export default ENUMS;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/index.js
new file mode 100644
index 00000000..29041b2b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/Tooltip/index.js
@@ -0,0 +1,290 @@
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+
+import ENUMS from './enums';
+
+import ReactDOM from 'react-dom';
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+} from 'react';
+
+import { useDerivedState } from '@atomic-reactor/reactium-sdk-core';
+
+const noop = () => {};
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Tooltip
+ * -----------------------------------------------------------------------------
+ */
+let Tooltip = ({ onHide, onShow, ...props }, ref) => {
+    // Refs
+    const bodyRef = useRef();
+    const containerRef = useRef();
+
+    const [state, setState] = useDerivedState({
+        timer: null,
+        ...props,
+    });
+
+    const getPosition = ({ align, verticalAlign, element }) => {
+        let x = 0,
+            y = 0;
+
+        const w = element.offsetWidth;
+        const h = element.offsetHeight;
+        const rect = element.getBoundingClientRect();
+
+        switch (align) {
+            case ENUMS.ALIGN.LEFT:
+                x = rect.x;
+                break;
+
+            case ENUMS.ALIGN.CENTER:
+                x = rect.x + w / 2;
+                break;
+
+            case ENUMS.ALIGN.RIGHT:
+                x = rect.x + w;
+                break;
+        }
+
+        switch (verticalAlign) {
+            case ENUMS.VERTICAL_ALIGN.TOP:
+                y = rect.y;
+                break;
+
+            case ENUMS.VERTICAL_ALIGN.MIDDLE:
+                y = rect.y + h / 2;
+                break;
+
+            case ENUMS.VERTICAL_ALIGN.BOTTOM:
+                y = rect.y + h;
+                break;
+        }
+
+        y += window.scrollY;
+        x += window.scrollX;
+
+        return { x: Math.floor(x), y: Math.floor(y) };
+    };
+
+    const unMounted = () => !containerRef.current;
+
+    const hide = e => {
+        if (unMounted()) return;
+
+        const { autohide } = e;
+        const element = e.target;
+        const { tooltip } = element.dataset;
+
+        if (tooltip) {
+            let { timer } = state;
+
+            if (timer) {
+                clearTimeout(timer);
+                timer = null;
+            }
+
+            if (!autohide) {
+                element.removeEventListener('mouseleave', hide);
+                element.removeEventListener('focus', hide);
+            }
+
+            setState({
+                visible: false,
+                timer,
+                align: props.align || Tooltip.defaultProps.align,
+                verticalAlign:
+                    props.verticalAlign || Tooltip.defaultProps.verticalAlign,
+            });
+
+            onHide({ event: ENUMS.EVENT.HIDE, target: e.target, ref });
+        }
+    };
+
+    const show = e => {
+        const dataset = e.target.dataset;
+        const element = e.target;
+
+        if (!element) {
+            return;
+        }
+
+        const { tooltip } = dataset;
+
+        let title =
+            element.getAttribute('title') ||
+            element.getAttribute('aria-title') ||
+            tooltip;
+        title = typeof title === 'boolean' ? null : title;
+
+        if (!title || !tooltip) {
+            return;
+        }
+
+        let {
+            align: defaultAlign,
+            autohide: defaultAutohide,
+            timer,
+            verticalAlign: defaultVerticalAlign,
+        } = state;
+
+        if (timer) {
+            clearTimeout(timer);
+        }
+
+        const align = op.get(dataset, 'align', defaultAlign);
+        const autohide = op.get(dataset, 'autohide', defaultAutohide);
+        const verticalAlign = op.get(
+            dataset,
+            'verticalAlign',
+            defaultVerticalAlign,
+        );
+
+        // Give screen readers a chance to read the title before we clip it off.
+        // setTimeout(() => element.removeAttribute('title'), 1);
+        element.removeAttribute('title');
+        if (!element.getAttribute('aria-title')) {
+            element.setAttribute('aria-title', title);
+        }
+
+        const newState = { visible: true, children: title };
+
+        if (align && Object.values(ENUMS.ALIGN).includes(align)) {
+            newState.align = align;
+        }
+
+        if (
+            verticalAlign &&
+            Object.values(ENUMS.VERTICAL_ALIGN).includes(verticalAlign)
+        ) {
+            newState.verticalAlign = verticalAlign;
+        }
+
+        dataset.tooltip = title;
+
+        // position the tooltip to the target element
+        const pos = getPosition({ align, verticalAlign, element, e });
+
+        containerRef.current.style.left = `${pos.x}px`;
+        containerRef.current.style.top = `${pos.y}px`;
+
+        element.addEventListener('mouseleave', hide);
+        element.addEventListener('focus', hide);
+
+        if (autohide) {
+            timer = setTimeout(
+                () => hide({ target: element, autohide: true }),
+                autohide,
+            );
+            newState.timer = timer;
+        }
+
+        onShow({ event: ENUMS.EVENT.SHOW, target: e.target, ref });
+
+        setState(newState);
+    };
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        hide,
+        setState,
+        show,
+        state: state,
+    }));
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    useLayoutEffect(() => {
+        // const win = op.has(props, 'iWindow') ? props.iWindow : window;
+        const win = op.get(props, 'iWindow', window);
+
+        win.addEventListener('mouseover', show);
+
+        return () => {
+            const { timer } = state;
+            if (timer) {
+                clearTimeout(timer);
+            }
+            win.removeEventListener('mouseover', show);
+        };
+    });
+
+    useLayoutEffect(() => {
+        const doc = op.get(props, 'iDocument', document);
+        if (!bodyRef.current && typeof doc !== 'undefined') {
+            bodyRef.current = doc.body;
+        }
+    }, [bodyRef.current]);
+
+    // Renderers
+    const render = () => {
+        if (!bodyRef.current) {
+            return null;
+        }
+
+        const {
+            align = ENUMS.ALIGN.CENTER,
+            children,
+            className,
+            namespace,
+            verticalAlign = ENUMS.VERTICAL_ALIGN.CENTER,
+            visible = false,
+        } = state;
+
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+            [align]: !!align,
+            [verticalAlign]: !!verticalAlign,
+            visible,
+        });
+
+        return ReactDOM.createPortal(
+            <div ref={containerRef} className={cname}>
+                <div className='container'>{children}</div>
+            </div>,
+            bodyRef.current,
+        );
+    };
+
+    return render();
+};
+
+Tooltip = forwardRef(Tooltip);
+
+Tooltip.ENUMS = ENUMS;
+
+Tooltip.propTypes = {
+    align: PropTypes.oneOf(Object.values(ENUMS.ALIGN)),
+    autohide: PropTypes.number,
+    autoshow: PropTypes.bool,
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    onHide: PropTypes.func,
+    onShow: PropTypes.func,
+    verticalAlign: PropTypes.oneOf(Object.values(ENUMS.VERTICAL_ALIGN)),
+    visible: PropTypes.bool,
+};
+
+Tooltip.defaultProps = {
+    align: ENUMS.ALIGN.CENTER,
+    autoshow: true,
+    namespace: 'ar-tooltip',
+    onHide: noop,
+    onShow: noop,
+    verticalAlign: ENUMS.VERTICAL_ALIGN.TOP,
+    visible: false,
+};
+
+export { Tooltip, Tooltip as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/WebForm/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/WebForm/index.js
new file mode 100644
index 00000000..a2225780
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/WebForm/index.js
@@ -0,0 +1,411 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import React, {
+    forwardRef,
+    useEffect,
+    useLayoutEffect as useWindowEffect,
+    useImperativeHandle,
+    useRef,
+    useState,
+} from 'react';
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+const noop = () => {};
+
+const ENUMS = {
+    DEPRECATED:
+        'Reactium UI -> WebForm has been deprecated. You should use the EventForm component instead.',
+    STATUS: {
+        COMPLETE: 'COMPLETE',
+        READY: 'READY',
+        SENDING: 'SENDING',
+        ERROR: 'ERROR',
+    },
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: WebForm
+ * -----------------------------------------------------------------------------
+ */
+let warned = false;
+let WebForm = (props, ref) => {
+    const {
+        className,
+        namespace,
+        required,
+        onChange: onFormChange,
+        onBeforeSubmit,
+        onComplete,
+        onError,
+        onSubmit,
+        onUpdate,
+        showError,
+        validator,
+        value,
+        valueUpdated,
+        name,
+        id,
+        children,
+        ...formProps
+    } = props;
+
+    // Refs
+    const formRef = useRef();
+    const stateRef = useRef({
+        value,
+        errors: null,
+        mounted: false,
+        status: ENUMS.STATUS.READY,
+        elements: {},
+    });
+
+    // State
+    const [, setNewState] = useState(new Date());
+
+    // Internal Interface
+    const setState = (newState, rerender = true) => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        // Trigger useEffect()
+        if (rerender) setNewState(new Date());
+    };
+
+    const getElements = () => {
+        const elements = formRef.current.elements;
+        const ids = Object.keys(elements).filter(key => !isNaN(key));
+        const formElements = ids.reduce((obj, i) => {
+            const element = elements[i];
+            const name = element.name;
+
+            if (name) {
+                if (op.has(obj, name)) {
+                    if (!Array.isArray(obj[name])) {
+                        obj[name] = [obj[name]];
+                    }
+                    obj[name].push(element);
+                } else {
+                    obj[name] = element;
+                }
+            }
+
+            return obj;
+        }, {});
+
+        setState({
+            elements: formElements,
+        });
+    };
+
+    const applyValue = value => {
+        value = value || stateRef.current.value;
+
+        const elements = _.flatten(
+            Object.values(stateRef.current.elements).map(element => {
+                if (Array.isArray(element)) {
+                    return element;
+                } else {
+                    return [element];
+                }
+            }),
+        );
+
+        const isBoolean = val =>
+            typeof val === 'boolean' ||
+            String(val).toLowerCase() === 'true' ||
+            String(val).toLowerCase() === 'false';
+
+        Object.entries(elements).forEach(([, element]) => {
+            const name = element.name;
+            const type = element.type;
+            const val = op.get(value, name, '');
+
+            if (Array.isArray(val)) {
+                // Checkbox & Radio
+                if (['checkbox', 'radio'].includes(type)) {
+                    const v = !isNaN(element.value)
+                        ? Number(element.value)
+                        : element.value;
+
+                    if (isBoolean(val)) {
+                        element.checked = val;
+                    } else {
+                        element.checked = val.includes(v);
+                    }
+                }
+
+                // Select: Multiple
+                if (type === 'select-multiple') {
+                    const ids = Object.keys(element.options).filter(
+                        key => !isNaN(key),
+                    );
+                    const options = ids.map(i => element.options[i]);
+
+                    options.forEach(option => {
+                        const v = !isNaN(option.value)
+                            ? Number(option.value)
+                            : option.value;
+                        option.selected = val.includes(v);
+                    });
+                }
+            } else {
+                element.value = val;
+
+                if (isBoolean(val)) {
+                    element.value = true;
+                    element.checked = Boolean(val);
+                }
+            }
+        });
+
+        onUpdate({ value, elements });
+    };
+
+    const update = value => {
+        value = value || stateRef.current.value;
+        setState({ value });
+        getElements();
+        applyValue(value);
+    };
+
+    const focus = fieldName => {
+        if (fieldName in stateRef.current.elements) {
+            stateRef.current.elements[fieldName].focus();
+        }
+    };
+
+    // Side Effects
+    const errorFields = op.get(stateRef.current, 'errors.fields', []);
+
+    useLayoutEffect(() => {
+        const { mounted } = stateRef.current;
+        if (mounted !== true) {
+            op.set(stateRef.current, 'mounted', true);
+
+            update(value);
+            Object.entries(stateRef.current.elements).forEach(
+                ([fieldName, field]) => {
+                    if (errorFields.find(error => error === fieldName)) {
+                        field.classList.add('error');
+                    } else {
+                        field.classList.remove('error');
+                    }
+                },
+            );
+        }
+    }, [op.get(stateRef.current, 'mounted')]);
+
+    useEffect(() => {
+        const value = op.get(props, 'value');
+        update(value);
+    }, [valueUpdated]);
+
+    const onChange = async e => {
+        const value = getValue(null, true);
+        if (onFormChange) {
+            await onFormChange(e, value);
+        }
+        update(value);
+    };
+
+    const getValue = (k, rerender = false) => {
+        const elements = stateRef.current.elements;
+        const keys = Object.keys(elements);
+
+        const formData = new FormData(formRef.current);
+        for (const key of formData.keys()) {
+            keys.push(key);
+        }
+
+        const value = keys.reduce((obj, key) => {
+            let v = _.compact(_.uniq(formData.getAll(key))) || [];
+
+            v = v.length === 1 && v.length !== 0 ? v[0] : v;
+            v = v.length === 0 ? null : v;
+
+            op.set(obj, key, v);
+
+            return obj;
+        }, {});
+
+        setState({ value }, rerender);
+
+        if (k) {
+            return stateRef.current.value[k];
+        }
+
+        return stateRef.current.value;
+    };
+
+    const validate = async value => {
+        value = value || getValue();
+
+        let valid = true;
+        let errors = { focus: null, fields: [], errors: [] };
+
+        const missing = required.filter(k => _.isEmpty(value[k]));
+
+        if (missing.length > 0) {
+            valid = false;
+            missing.reduce((errors, field) => {
+                errors.fields.push(field);
+                errors.errors.push(`${field} is a required field`);
+
+                return errors;
+            }, errors);
+        }
+
+        if (validator) {
+            const validatorResult = await validator(value, valid, errors);
+            valid = op.get(validatorResult, 'valid', true) && valid;
+            const newErrors = op.get(validatorResult, 'errors', {});
+            errors = {
+                focus: newErrors.focus || null,
+                fields: _.unique([...errors.fields, ...newErrors.fields]),
+                errors: _.unique([...errors.errors, ...newErrors.errors]),
+            };
+        }
+
+        return { valid, errors };
+    };
+
+    const complete = () => {
+        const { value, error, status } = stateRef.current;
+        onComplete({ value, error, status });
+    };
+
+    const submit = async e => {
+        if (e) {
+            e.preventDefault();
+        }
+
+        const { status } = stateRef.current;
+        if (status === ENUMS.STATUS.SENDING) {
+            return;
+        }
+
+        setState({ errors: null });
+
+        const value = getValue();
+
+        const { valid, errors } = await validate(value);
+
+        await onBeforeSubmit({ value, valid, errors });
+
+        if (valid !== true) {
+            setState({ errors });
+            onError({ errors, value });
+            return;
+        }
+
+        if (!op.has(value, 'type')) {
+            value.type = id || name || 'form';
+        }
+
+        setState({ status: ENUMS.STATUS.SENDING });
+
+        try {
+            await onSubmit({ value, valid });
+
+            setState({ status: ENUMS.STATUS.COMPLETE });
+        } catch (error) {
+            setState({ error, status: ENUMS.STATUS.ERROR });
+        }
+
+        complete();
+    };
+
+    const render = () => {
+        const cname = cn({
+            [className]: !!className,
+            [namespace]: !!namespace,
+        });
+        const errors = op.get(stateRef, 'current.errors');
+
+        return (
+            <form
+                className={cname}
+                {...formProps}
+                onChange={onChange}
+                onSubmit={submit}
+                ref={formRef}>
+                {errors && showError === true && (
+                    <ul className='webform-error'>
+                        {errors.errors.map(error => (
+                            <li className='webform-error-item' key={error}>
+                                {error}
+                            </li>
+                        ))}
+                    </ul>
+                )}
+                {children}
+            </form>
+        );
+    };
+
+    const getFormRef = () => formRef.current;
+
+    const getChildren = () => children;
+
+    // External Interface
+    useImperativeHandle(ref, () => ({
+        children: getChildren(),
+        errors: op.get(stateRef.current, 'errors'),
+        setState,
+        update,
+        getValue,
+        focus,
+        form: getFormRef(),
+        submit,
+        validate,
+        refresh: () => applyValue(),
+    }));
+
+    return render();
+};
+
+WebForm = forwardRef(WebForm);
+
+WebForm.ENUMS = ENUMS;
+
+WebForm.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    required: PropTypes.array.isRequired,
+    onChange: PropTypes.func,
+    onBeforeSubmit: PropTypes.func,
+    onComplete: PropTypes.func,
+    onError: PropTypes.func,
+    onSubmit: PropTypes.func,
+    onUpdate: PropTypes.func,
+    showError: PropTypes.bool,
+    validator: PropTypes.func,
+    value: PropTypes.object,
+    name: PropTypes.string.isRequired,
+    id: PropTypes.string,
+};
+
+WebForm.defaultProps = {
+    className: 'webform',
+    required: [],
+    onBeforeSubmit: noop,
+    onComplete: noop,
+    onError: noop,
+    onSubmit: null,
+    onUpdate: noop,
+    showError: true,
+    validator: (value, valid = true, errors) => ({ valid, errors }),
+    name: 'form',
+    value: {},
+    valueUpdated: null,
+};
+
+export { WebForm, WebForm as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/_reactium-style-variables-colors.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/_reactium-style-variables-colors.scss
new file mode 100644
index 00000000..6f1db4b9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/_reactium-style-variables-colors.scss
@@ -0,0 +1,41 @@
+
+// 
+// DO NOT EDIT!
+// This file is generated by gulp styles:colors task.
+// Modify colors.json in this directory to effect this file.
+//
+@use "sass:map";
+
+$color-black: #000000 !default;
+$color-gray-dark: #333333 !default;
+$color-gray: #999999 !default;
+$color-grey: #CFCFCF !default;
+$color-grey-light: #F7F7F7 !default;
+$color-white: #FFFFFF !default;
+$color-white-dark: #FDFDFD !default;
+$color-yellow: #F4F19C !default;
+$color-orange: #E69840 !default;
+$color-pink: #D877A0 !default;
+$color-red: #E09797 !default;
+$color-purple: #7A7CEF !default;
+$color-blue: #4F82BA !default;
+$color-green: #659A3F !default;
+$color-green-light: #B2BB50 !default;
+
+$color: () !default;
+
+$color: map.set($color, "color-black", $color-black);
+$color: map.set($color, "color-gray-dark", $color-gray-dark);
+$color: map.set($color, "color-gray", $color-gray);
+$color: map.set($color, "color-grey", $color-grey);
+$color: map.set($color, "color-grey-light", $color-grey-light);
+$color: map.set($color, "color-white", $color-white);
+$color: map.set($color, "color-white-dark", $color-white-dark);
+$color: map.set($color, "color-yellow", $color-yellow);
+$color: map.set($color, "color-orange", $color-orange);
+$color: map.set($color, "color-pink", $color-pink);
+$color: map.set($color, "color-red", $color-red);
+$color: map.set($color, "color-purple", $color-purple);
+$color: map.set($color, "color-blue", $color-blue);
+$color: map.set($color, "color-green", $color-green);
+$color: map.set($color, "color-green-light", $color-green-light);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/feather-icons.json b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/feather-icons.json
new file mode 100644
index 00000000..d5720187
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/feather-icons.json
@@ -0,0 +1,6146 @@
+{
+    "icons": [
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 469.333h-170.667c-17.067 0-34.133 12.8-38.4 29.867l-89.6 260.267-217.6-644.267c-4.267-17.067-21.333-29.867-38.4-29.867s-34.133 12.8-38.4 29.867l-119.467 354.133h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c17.067 0 34.133-12.8 38.4-29.867l89.6-260.267 217.6 648.533c4.267 17.067 21.333 29.867 38.4 29.867s34.133-12.8 38.4-29.867l119.467-354.133h140.8c25.6 0 42.667-17.067 42.667-42.667s-17.067-46.933-42.667-46.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["activity"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 1,
+                "order": 2,
+                "prevSize": 24,
+                "name": "activity"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 0
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v426.667c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128z",
+                    "M546.133 614.4c-17.067-21.333-51.2-21.333-64 0l-213.333 256c-8.533 12.8-12.8 29.867-4.267 46.933 4.267 12.8 17.067 21.333 34.133 21.333h426.667c17.067 0 29.867-8.533 38.4-25.6s4.267-34.133-4.267-46.933l-213.333-251.733zM388.267 853.333l123.733-145.067 123.733 145.067h-247.467z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["airplay"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 2,
+                "order": 3,
+                "prevSize": 24,
+                "name": "airplay"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 1
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M512 298.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M482.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["alert-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 3,
+                "order": 4,
+                "prevSize": 24,
+                "name": "alert-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 2
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M968.533 307.2l-251.733-251.733c-4.267-8.533-17.067-12.8-29.867-12.8h-349.867c-12.8 0-25.6 4.267-29.867 12.8l-251.733 251.733c-8.533 4.267-12.8 17.067-12.8 29.867v354.133c0 12.8 4.267 21.333 12.8 29.867l251.733 251.733c4.267 4.267 17.067 8.533 29.867 8.533h354.133c12.8 0 21.333-4.267 29.867-12.8l251.733-251.733c8.533-8.533 12.8-17.067 12.8-29.867v-349.867c-4.267-12.8-8.533-25.6-17.067-29.867zM896 669.867l-226.133 226.133h-315.733l-226.133-226.133v-315.733l226.133-226.133h320l221.867 226.133v315.733z",
+                    "M512 298.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M482.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["alert-octagon"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 4,
+                "order": 5,
+                "prevSize": 24,
+                "name": "alert-octagon"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 3
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 746.667l-358.4-605.867c-17.067-29.867-46.933-51.2-81.067-59.733s-68.267-4.267-98.133 12.8c-17.067 8.533-34.133 25.6-42.667 42.667 0 0 0 0 0 0l-358.4 610.133c-34.133 59.733-12.8 140.8 46.933 174.933 17.067 12.8 38.4 17.067 59.733 17.067h725.333c34.133 0 68.267-12.8 89.6-38.4 25.6-25.6 38.4-55.467 38.4-89.6-4.267-21.333-8.533-46.933-21.333-64zM904.533 840.533c-8.533 8.533-21.333 12.8-29.867 12.8h-725.333c-8.533 0-12.8 0-21.333-4.267-21.333-12.8-25.6-38.4-17.067-59.733l362.667-601.6c4.267-4.267 8.533-12.8 12.8-12.8 21.333-12.8 46.933-4.267 59.733 12.8l362.667 601.6c4.267 4.267 4.267 12.8 4.267 21.333 4.267 12.8-4.267 21.333-8.533 29.867z",
+                    "M512 341.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M482.133 695.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["alert-triangle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 5,
+                "order": 6,
+                "prevSize": 24,
+                "name": "alert-triangle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 4
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M256 384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-512z",
+                    "M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M768 725.333h-512c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["align-center"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 6,
+                "order": 7,
+                "prevSize": 24,
+                "name": "align-center"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 5
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 384h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M896 725.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["align-justify"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 7,
+                "order": 8,
+                "prevSize": 24,
+                "name": "align-justify"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 6
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M128 469.333h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M725.333 725.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["align-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 8,
+                "order": 9,
+                "prevSize": 24,
+                "name": "align-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 7
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 384h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 554.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M896 725.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["align-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 9,
+                "order": 10,
+                "prevSize": 24,
+                "name": "align-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 8
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 469.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h81.067c-21.333 179.2-162.133 320-337.067 337.067v-512c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667c0 81.067 55.467 145.067 128 166.4v516.267c-179.2-21.333-320-162.133-337.067-337.067h81.067c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-25.6 0-42.667 17.067-42.667 42.667 0 260.267 209.067 469.333 469.333 469.333s469.333-209.067 469.333-469.333c0-29.867-17.067-46.933-42.667-46.933zM426.667 213.333c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333c-46.933 0-85.333-38.4-85.333-85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["anchor"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 10,
+                "order": 11,
+                "prevSize": 24,
+                "name": "anchor"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 9
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 785.067c55.467-76.8 89.6-170.667 89.6-273.067 0-64-12.8-128-38.4-183.467 0 0 0-4.267 0-4.267-64-149.333-204.8-256-375.467-277.333 0 0-4.267 0-4.267 0-17.067-4.267-34.133-4.267-51.2-4.267-153.6 0-290.133 72.533-375.467 187.733 0 4.267-4.267 4.267-4.267 8.533-55.467 76.8-89.6 170.667-89.6 273.067 0 64 12.8 128 38.4 187.733 0 0 0 4.267 0 4.267 64 145.067 204.8 256 371.2 277.333 0 0 4.267 0 4.267 0 17.067 0 34.133 4.267 51.2 4.267 153.6 0 290.133-72.533 375.467-187.733 4.267-4.267 8.533-8.533 8.533-12.8zM584.533 640h-149.333l-72.533-128 72.533-128h149.333l72.533 128-72.533 128zM128 512c0-59.733 12.8-119.467 38.4-170.667l170.667 298.667h-187.733c-12.8-38.4-21.333-81.067-21.333-128zM682.667 384h187.733c12.8 38.4 21.333 81.067 21.333 128 0 59.733-12.8 119.467-38.4 170.667l-170.667-298.667zM832 298.667h-345.6l93.867-162.133c106.667 17.067 196.267 76.8 251.733 162.133zM486.4 128l-170.667 298.667-93.867-162.133c64-76.8 157.867-128 264.533-136.533zM192 725.333h345.6l-93.867 162.133c-106.667-17.067-196.267-76.8-251.733-162.133zM537.6 896l170.667-298.667 93.867 162.133c-64 76.8-157.867 128-264.533 136.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["aperture"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 11,
+                "order": 12,
+                "prevSize": 24,
+                "name": "aperture"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 10
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 85.333h-938.667c-25.6 0-42.667 17.067-42.667 42.667v213.333c0 25.6 17.067 42.667 42.667 42.667h42.667v512c0 25.6 17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667v-512h42.667c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-25.6-17.067-42.667-42.667-42.667zM853.333 853.333h-682.667v-469.333h682.667v469.333zM938.667 298.667h-853.333v-128h853.333v128z",
+                    "M426.667 554.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["archive"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 12,
+                "order": 13,
+                "prevSize": 24,
+                "name": "archive"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 11
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M840.533 482.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-494.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v494.933l-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l298.667 298.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l298.667-298.667c17.067-17.067 17.067-42.667-0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 13,
+                "order": 14,
+                "prevSize": 24,
+                "name": "arrow-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 12
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M652.8 482.133l-98.133 98.133v-238.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v238.933l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-down-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 14,
+                "order": 15,
+                "prevSize": 24,
+                "name": "arrow-down-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 13
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M725.333 682.667h-324.267l354.133-354.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-354.133 354.133v-324.267c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v426.667c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h426.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-down-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 15,
+                "order": 16,
+                "prevSize": 24,
+                "name": "arrow-down-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 14
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v324.267l-354.133-354.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l354.133 354.133h-324.267c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h426.667c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-426.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-down-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 16,
+                "order": 17,
+                "prevSize": 24,
+                "name": "arrow-down-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 15
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 469.333h-494.933l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-298.667 298.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l298.667 298.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133h494.933c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 17,
+                "order": 18,
+                "prevSize": 24,
+                "name": "arrow-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 16
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M682.667 469.333h-238.933l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-170.667 170.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l170.667 170.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133h238.933c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-left-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 18,
+                "order": 19,
+                "prevSize": 24,
+                "name": "arrow-left-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 17
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M849.067 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-298.667-298.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133h-494.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h494.933l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l298.667-298.667c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 19,
+                "order": 20,
+                "prevSize": 24,
+                "name": "arrow-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 18
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M721.067 494.933c-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-238.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h238.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8 4.267-12.8 4.267-21.333 0-34.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-right-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 20,
+                "order": 21,
+                "prevSize": 24,
+                "name": "arrow-right-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 19
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M840.533 482.133l-298.667-298.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-298.667 298.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l226.133-226.133v494.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-494.933l226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 21,
+                "order": 22,
+                "prevSize": 24,
+                "name": "arrow-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 20
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M541.867 311.467c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l98.133-98.133v238.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-238.933l98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-up-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 22,
+                "order": 23,
+                "prevSize": 24,
+                "name": "arrow-up-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 21
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M401.067 341.333h324.267c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-426.667c-4.267 0-12.8 0-17.067 4.267-8.533 4.267-17.067 12.8-21.333 21.333-4.267 4.267-4.267 12.8-4.267 17.067v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-324.267l354.133 354.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-354.133-354.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-up-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 23,
+                "order": 24,
+                "prevSize": 24,
+                "name": "arrow-up-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 22
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M763.733 281.6c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-426.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h324.267l-354.133 354.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l354.133-354.133v324.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-4.267 0-12.8-4.267-17.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["arrow-up-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 24,
+                "order": 25,
+                "prevSize": 24,
+                "name": "arrow-up-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 23
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-123.733 0-243.2 46.933-332.8 136.533s-136.533 209.067-136.533 332.8c0 260.267 209.067 469.333 469.333 469.333 102.4 0 204.8-34.133 285.867-98.133 17.067-12.8 21.333-42.667 8.533-59.733s-42.667-21.333-59.733-8.533c-68.267 51.2-149.333 81.067-234.667 81.067-213.333 0-384-170.667-384-384 0-102.4 38.4-200.533 110.933-273.067s170.667-110.933 273.067-110.933c213.333 0 384 170.667 384 384v42.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-213.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v0c-34.133-25.6-81.067-42.667-128-42.667-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333c64 0 119.467-29.867 157.867-72.533 29.867 42.667 81.067 72.533 140.8 72.533 93.867 0 170.667-76.8 170.667-170.667v-42.667c0-260.267-209.067-469.333-469.333-469.333zM512 640c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["at-sign"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 25,
+                "order": 26,
+                "prevSize": 24,
+                "name": "at-sign"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 24
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 341.333c0-187.733-153.6-341.333-341.333-341.333s-341.333 153.6-341.333 341.333c0 110.933 51.2 209.067 132.267 268.8l-46.933 366.933c-4.267 17.067 4.267 34.133 17.067 42.667s29.867 8.533 46.933 0l192-115.2 192 115.2c4.267 4.267 12.8 4.267 21.333 4.267s17.067-4.267 21.333-8.533 21.333-25.6 17.067-42.667l-46.933-362.667c85.333-59.733 136.533-157.867 136.533-268.8zM256 341.333c0-140.8 115.2-256 256-256s256 115.2 256 256-115.2 256-256 256-256-115.2-256-256zM669.867 900.267l-136.533-81.067c-12.8-8.533-29.867-8.533-42.667 0l-136.533 81.067 29.867-243.2c38.4 17.067 81.067 25.6 128 25.6s89.6-8.533 128-25.6l29.867 243.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["award"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 26,
+                "order": 27,
+                "prevSize": 24,
+                "name": "award"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 25
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 384c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M768 128c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M256 640c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bar-chart"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 27,
+                "order": 28,
+                "prevSize": 24,
+                "name": "bar-chart"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 26
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 384c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M512 128c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M256 554.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bar-chart-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 28,
+                "order": 29,
+                "prevSize": 24,
+                "name": "bar-chart-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 27
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M725.333 213.333h-597.333c-72.533 0-128 55.467-128 128v341.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-341.333c0-72.533-55.467-128-128-128zM768 682.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v341.333z",
+                    "M981.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["battery"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 29,
+                "order": 30,
+                "prevSize": 24,
+                "name": "battery"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 28
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M213.333 725.333h-85.333c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6 17.067-42.667 42.667-42.667h136.533c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-136.533c-72.533 0-128 55.467-128 128v341.333c0 72.533 55.467 128 128 128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M725.333 213.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667 17.067 42.667 42.667v341.333c0 25.6-17.067 42.667-42.667 42.667h-136.533c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h136.533c72.533 0 128-55.467 128-128v-341.333c0-72.533-55.467-128-128-128z",
+                    "M981.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M593.067 490.667c-8.533-12.8-21.333-21.333-38.4-21.333h-174.933l128-187.733c12.8-21.333 8.533-46.933-12.8-59.733s-46.933-8.533-59.733 12.8l-170.667 256c-8.533 12.8-8.533 29.867 0 42.667 4.267 12.8 17.067 21.333 34.133 21.333h174.933l-128 187.733c-12.8 21.333-8.533 46.933 12.8 59.733 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-8.533 34.133-17.067l170.667-256c8.533-17.067 12.8-29.867 4.267-46.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["battery-charging"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 30,
+                "order": 31,
+                "prevSize": 24,
+                "name": "battery-charging"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 29
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M605.867 857.6c-21.333-12.8-46.933-4.267-59.733 17.067s-38.4 25.6-59.733 17.067c-8.533-4.267-12.8-8.533-17.067-17.067-12.8-21.333-38.4-25.6-59.733-17.067-21.333 12.8-25.6 38.4-17.067 59.733 12.8 21.333 25.6 34.133 46.933 46.933s42.667 17.067 64 17.067c42.667 0 85.333-21.333 110.933-64 21.333-21.333 12.8-46.933-8.533-59.733z",
+                    "M938.667 682.667c-46.933 0-85.333-38.4-85.333-85.333v-213.333c0-187.733-153.6-341.333-341.333-341.333s-341.333 153.6-341.333 341.333v213.333c0 46.933-38.4 85.333-85.333 85.333-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h853.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM234.667 682.667c12.8-25.6 21.333-55.467 21.333-85.333v-213.333c0-140.8 115.2-256 256-256s256 115.2 256 256v213.333c0 29.867 8.533 59.733 21.333 85.333h-554.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bell"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 31,
+                "order": 32,
+                "prevSize": 24,
+                "name": "bell"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 30
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M605.867 857.6c-21.333-12.8-46.933-4.267-59.733 17.067s-38.4 25.6-59.733 17.067c-8.533-4.267-12.8-8.533-17.067-17.067-12.8-21.333-38.4-25.6-59.733-17.067-21.333 12.8-25.6 38.4-17.067 59.733 12.8 21.333 25.6 34.133 46.933 46.933s42.667 17.067 64 17.067c42.667 0 85.333-21.333 110.933-64 21.333-21.333 12.8-46.933-8.533-59.733z",
+                    "M388.267 162.133c123.733-68.267 277.333-25.6 349.867 98.133 17.067 34.133 29.867 81.067 29.867 123.733v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-59.733-17.067-115.2-42.667-166.4-93.867-162.133-302.933-221.867-465.067-128-21.333 8.533-29.867 34.133-17.067 55.467s38.4 25.6 59.733 17.067z",
+                    "M1011.2 951.467l-256-256c0 0 0 0 0 0l-682.667-682.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467c-17.067 42.667-25.6 85.333-25.6 128v213.333c0 46.933-38.4 85.333-85.333 85.333-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h622.933l243.2 243.2c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM234.667 682.667c12.8-25.6 21.333-55.467 21.333-85.333v-213.333c0-21.333 4.267-42.667 8.533-59.733l358.4 358.4h-388.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bell-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 32,
+                "order": 33,
+                "prevSize": 24,
+                "name": "bell-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 31
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M571.733 512l204.8-204.8c17.067-17.067 17.067-42.667 0-59.733l-234.667-234.667c-12.8-12.8-29.867-17.067-46.933-8.533-17.067 4.267-25.6 21.333-25.6 38.4v366.933l-162.133-162.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l204.8 204.8-204.8 204.8c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l162.133-162.133v366.933c0 17.067 8.533 34.133 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8l234.667-234.667c17.067-17.067 17.067-42.667 0-59.733l-204.8-204.8zM554.667 145.067l132.267 132.267-132.267 132.267v-264.533zM554.667 878.933v-264.533l132.267 132.267-132.267 132.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bluetooth"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 33,
+                "order": 34,
+                "prevSize": 24,
+                "name": "bluetooth"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 32
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M742.4 494.933c42.667-38.4 68.267-93.867 68.267-153.6 0-119.467-93.867-213.333-213.333-213.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h384c119.467 0 213.333-93.867 213.333-213.333 0-81.067-46.933-149.333-110.933-187.733zM298.667 213.333h298.667c72.533 0 128 55.467 128 128s-55.467 128-128 128h-298.667v-256zM640 810.667h-341.333v-256h341.333c72.533 0 128 55.467 128 128s-55.467 128-128 128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bold"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 34,
+                "order": 35,
+                "prevSize": 24,
+                "name": "bold"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 33
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 42.667h-576c-81.067 0-149.333 68.267-149.333 149.333v640c0 81.067 68.267 149.333 149.333 149.333h576c25.6 0 42.667-17.067 42.667-42.667v-853.333c0-25.6-17.067-42.667-42.667-42.667zM277.333 128h533.333v554.667h-533.333c-21.333 0-42.667 4.267-64 17.067v-507.733c0-34.133 29.867-64 64-64zM277.333 896c-34.133 0-64-29.867-64-64s29.867-64 64-64h533.333v128h-533.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["book"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 35,
+                "order": 36,
+                "prevSize": 24,
+                "name": "book"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 34
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 85.333h-256c-68.267 0-132.267 34.133-170.667 85.333-38.4-51.2-102.4-85.333-170.667-85.333h-256c-25.6 0-42.667 17.067-42.667 42.667v640c0 25.6 17.067 42.667 42.667 42.667h298.667c46.933 0 85.333 38.4 85.333 85.333 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-46.933 38.4-85.333 85.333-85.333h298.667c25.6 0 42.667-17.067 42.667-42.667v-640c0-25.6-17.067-42.667-42.667-42.667zM469.333 746.667c-25.6-12.8-55.467-21.333-85.333-21.333h-256v-554.667h213.333c72.533 0 128 55.467 128 128v448zM896 725.333h-256c-29.867 0-59.733 8.533-85.333 21.333v-448c0-72.533 55.467-128 128-128h213.333v554.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["book-open"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 36,
+                "order": 37,
+                "prevSize": 24,
+                "name": "book-open"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 35
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M725.333 85.333h-426.667c-72.533 0-128 55.467-128 128v682.667c0 17.067 8.533 29.867 21.333 38.4s29.867 4.267 42.667-4.267l273.067-196.267 273.067 196.267c8.533 4.267 17.067 8.533 25.6 8.533s12.8 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-682.667c4.267-72.533-51.2-128-123.733-128zM768 814.933l-230.4-166.4c-8.533-4.267-17.067-8.533-25.6-8.533s-17.067 4.267-25.6 8.533l-230.4 166.4v-601.6c0-25.6 17.067-42.667 42.667-42.667h426.667c25.6 0 42.667 17.067 42.667 42.667v601.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["bookmark"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 37,
+                "order": 38,
+                "prevSize": 24,
+                "name": "bookmark"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 36
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M908.8 196.267l-341.333-170.667c0 0 0 0 0 0-34.133-17.067-76.8-17.067-115.2 0l-341.333 170.667c-42.667 21.333-68.267 64-68.267 110.933v405.333c0 46.933 25.6 93.867 72.533 115.2l341.333 170.667c17.067 8.533 38.4 12.8 55.467 12.8 21.333 0 38.4-4.267 55.467-12.8l341.333-170.667c42.667-21.333 72.533-64 72.533-115.2v-405.333c0-46.933-25.6-89.6-72.533-110.933zM494.933 98.133c4.267-4.267 12.8-4.267 17.067-4.267 8.533 0 12.8 0 17.067 4.267l315.733 157.867-332.8 166.4-332.8-166.4 315.733-157.867zM149.333 755.2c-12.8-8.533-21.333-25.6-21.333-38.4v-392.533l341.333 170.667v418.133l-320-157.867zM870.4 755.2l-315.733 157.867v-418.133l341.333-170.667v392.533c0 17.067-8.533 29.867-25.6 38.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["box"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 38,
+                "order": 39,
+                "prevSize": 24,
+                "name": "box"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 37
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 256h-128v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-128c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM384 213.333c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM640 341.333v512h-256v-512h256zM128 810.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h128v512h-128c-25.6 0-42.667-17.067-42.667-42.667zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-128v-512h128c25.6 0 42.667 17.067 42.667 42.667v426.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["briefcase"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 39,
+                "order": 40,
+                "prevSize": 24,
+                "name": "briefcase"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 38
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 128h-85.333v-42.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v42.667h-256v-42.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v42.667h-85.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM213.333 213.333h85.333v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667h256v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667h85.333c25.6 0 42.667 17.067 42.667 42.667v128h-682.667v-128c0-25.6 17.067-42.667 42.667-42.667zM810.667 896h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-384h682.667v384c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["calendar"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 40,
+                "order": 41,
+                "prevSize": 24,
+                "name": "calendar"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 39
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 213.333h-149.333l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-256c-12.8 0-25.6 8.533-34.133 17.067l-72.533 110.933h-149.333c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h768c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM938.667 810.667c0 25.6-17.067 42.667-42.667 42.667h-768c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h170.667c12.8 0 25.6-8.533 34.133-17.067l72.533-110.933h209.067l72.533 110.933c12.8 8.533 25.6 17.067 38.4 17.067h170.667c25.6 0 42.667 17.067 42.667 42.667v469.333z",
+                    "M512 341.333c-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333 213.333-93.867 213.333-213.333-93.867-213.333-213.333-213.333zM512 682.667c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["camera"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 41,
+                "order": 42,
+                "prevSize": 24,
+                "name": "camera"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 40
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 866.133c0 0 0 0 0 0l-640-640c0 0 0 0 0 0l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-25.6c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h750.933l72.533 72.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-85.333-85.333zM405.333 482.133c4.267-4.267 4.267-4.267 8.533-8.533l179.2 179.2c-17.067 12.8-38.4 25.6-59.733 29.867-34.133 4.267-68.267 0-93.867-21.333-29.867-21.333-46.933-46.933-55.467-81.067-4.267-34.133 4.267-68.267 21.333-98.133zM128 853.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h110.933l115.2 115.2c-8.533 8.533-12.8 12.8-17.067 21.333-34.133 46.933-42.667 102.4-34.133 157.867s42.667 106.667 89.6 136.533c34.133 25.6 76.8 38.4 119.467 38.4 12.8 0 25.6 0 38.4-4.267 38.4-8.533 72.533-25.6 102.4-51.2l140.8 140.8h-665.6z",
+                    "M896 213.333h-149.333l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h234.667l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h170.667c25.6 0 42.667 17.067 42.667 42.667v396.8c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-396.8c0-72.533-55.467-128-128-128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["camera-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 42,
+                "order": 43,
+                "prevSize": 24,
+                "name": "camera-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 41
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M93.867 644.267c-21.333-4.267-46.933 12.8-51.2 34.133s8.533 46.933 34.133 51.2c68.267 12.8 119.467 64 132.267 132.267 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 21.333-4.267 38.4-25.6 34.133-51.2-21.333-102.4-98.133-179.2-200.533-200.533z",
+                    "M853.333 128h-682.667c-72.533 0-128 55.467-128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v512c0 25.6-17.067 42.667-42.667 42.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128z",
+                    "M89.6 473.6c-21.333-4.267-42.667 12.8-46.933 38.4-4.267 21.333 12.8 42.667 38.4 46.933 157.867 17.067 281.6 140.8 302.933 302.933 0 17.067 17.067 34.133 38.4 34.133 0 0 4.267 0 4.267 0 21.333-4.267 38.4-25.6 38.4-46.933-21.333-200.533-174.933-354.133-375.467-375.467z",
+                    "M55.467 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cast"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 43,
+                "order": 44,
+                "prevSize": 24,
+                "name": "cast"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 42
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M883.2 226.133c-17.067-17.067-42.667-17.067-59.733 0l-439.467 439.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l469.333-469.333c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["check"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 44,
+                "order": 45,
+                "prevSize": 24,
+                "name": "check"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 43
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 430.933c-25.6 0-42.667 17.067-42.667 42.667v38.4c0 213.333-170.667 384-384 384 0 0 0 0 0 0-213.333 0-384-170.667-384-384s170.667-384 384-384c0 0 0 0 0 0 55.467 0 106.667 12.8 157.867 34.133 21.333 8.533 46.933 0 55.467-21.333s0-46.933-21.333-55.467c-59.733-25.6-123.733-42.667-192-42.667 0 0 0 0 0 0-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333c0 0 0 0 0 0 260.267 0 469.333-209.067 469.333-469.333v-38.4c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M413.867 439.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-396.8 396.8-98.133-98.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["check-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 45,
+                "order": 46,
+                "prevSize": 24,
+                "name": "check-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 44
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M968.533 140.8c-17.067-17.067-42.667-17.067-59.733 0l-396.8 396.8-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M896 469.333c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h469.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-469.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["check-square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 46,
+                "order": 47,
+                "prevSize": 24,
+                "name": "check-square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 45
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M797.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l256 256c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevron-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 47,
+                "order": 48,
+                "prevSize": 24,
+                "name": "chevron-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 46
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M443.733 512l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733l256 256c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevron-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 48,
+                "order": 49,
+                "prevSize": 24,
+                "name": "chevron-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 47
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M669.867 482.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevron-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 49,
+                "order": 50,
+                "prevSize": 24,
+                "name": "chevron-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 48
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M797.867 610.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l226.133-226.133 226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevron-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 50,
+                "order": 51,
+                "prevSize": 24,
+                "name": "chevron-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 49
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M695.467 524.8l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733-0z",
+                    "M482.133 499.2c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevrons-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 51,
+                "order": 52,
+                "prevSize": 24,
+                "name": "chevrons-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 50
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M315.733 512l183.467-183.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-183.467-183.467z",
+                    "M614.4 512l183.467-183.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733l213.333 213.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-183.467-183.467z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevrons-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 52,
+                "order": 53,
+                "prevSize": 24,
+                "name": "chevrons-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 51
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M797.867 482.133l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467-183.467 183.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M499.2 482.133l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467-183.467 183.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevrons-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 53,
+                "order": 54,
+                "prevSize": 24,
+                "name": "chevrons-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 52
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M328.533 499.2l183.467-183.467 183.467 183.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z",
+                    "M541.867 524.8c-17.067-17.067-42.667-17.067-59.733 0l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l183.467-183.467 183.467 183.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chevrons-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 54,
+                "order": 55,
+                "prevSize": 24,
+                "name": "chevrons-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 53
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M942.933 328.533c0-4.267 0-4.267 0 0-76.8-170.667-238.933-285.867-430.933-285.867-153.6 0-290.133 72.533-375.467 187.733 0 4.267-4.267 4.267-4.267 8.533-55.467 76.8-89.6 170.667-89.6 273.067 0 238.933 179.2 435.2 409.6 465.067 0 0 4.267 0 4.267 0 17.067 0 34.133 4.267 51.2 4.267 260.267 0 469.333-209.067 469.333-469.333 4.267-64-8.533-128-34.133-183.467zM512 128c132.267 0 251.733 68.267 320 170.667h-320c-89.6 0-162.133 55.467-196.267 128l-93.867-162.133c68.267-85.333 174.933-136.533 290.133-136.533zM640 512c0 72.533-55.467 128-128 128s-128-55.467-128-128 55.467-128 128-128 128 55.467 128 128zM128 512c0-59.733 12.8-119.467 38.4-170.667l157.867 277.333c0 0 0 4.267 4.267 4.267 38.4 59.733 106.667 102.4 183.467 102.4 8.533 0 17.067 0 25.6-4.267l-98.133 166.4c-174.933-29.867-311.467-187.733-311.467-375.467zM537.6 896l157.867-277.333c0 0 0-4.267 0-4.267 17.067-29.867 25.6-64 25.6-102.4 0-46.933-17.067-93.867-42.667-128h192c12.8 38.4 21.333 81.067 21.333 128 4.267 204.8-153.6 371.2-354.133 384z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["chrome"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 55,
+                "order": 56,
+                "prevSize": 24,
+                "name": "chrome"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 54
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 56,
+                "order": 57,
+                "prevSize": 24,
+                "name": "circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 55
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 128h-42.667c0-46.933-38.4-85.333-85.333-85.333h-256c-46.933 0-85.333 38.4-85.333 85.333h-42.667c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM384 128h256v85.333h-256v-42.667c0 0 0 0 0 0s0 0 0 0v-42.667zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h42.667c0 46.933 38.4 85.333 85.333 85.333h256c46.933 0 85.333-38.4 85.333-85.333h42.667c25.6 0 42.667 17.067 42.667 42.667v597.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["clipboard"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 57,
+                "order": 58,
+                "prevSize": 24,
+                "name": "clipboard"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 56
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M699.733 558.933l-145.067-72.533v-230.4c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 17.067 8.533 29.867 25.6 38.4l170.667 85.333c4.267 4.267 8.533 4.267 17.067 4.267 17.067 0 29.867-8.533 38.4-25.6s0-42.667-21.333-55.467z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["clock"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 58,
+                "order": 59,
+                "prevSize": 24,
+                "name": "clock"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 57
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 384h-21.333c-29.867-85.333-89.6-157.867-166.4-204.8-89.6-51.2-192-68.267-290.133-42.667-102.4 29.867-183.467 93.867-238.933 179.2-51.2 89.6-68.267 192-42.667 290.133 42.667 170.667 196.267 290.133 371.2 290.133 0 0 0 0 0 0h384c140.8 0 256-115.2 256-256s-110.933-256-251.733-256zM768 810.667h-384c0 0 0 0 0 0-136.533 0-256-93.867-290.133-221.867-21.333-81.067-8.533-157.867 34.133-230.4s106.667-119.467 183.467-136.533c21.333-4.267 46.933-8.533 72.533-8.533 132.267 0 256 89.6 290.133 226.133 4.267 17.067 21.333 34.133 42.667 34.133h51.2c93.867 0 170.667 76.8 170.667 170.667 0 89.6-76.8 166.4-170.667 166.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 59,
+                "order": 60,
+                "prevSize": 24,
+                "name": "cloud"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 58
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M341.333 768c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M341.333 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M682.667 768c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M682.667 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M512 853.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M512 597.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M1002.667 409.6c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud-drizzle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 60,
+                "order": 61,
+                "prevSize": 24,
+                "name": "cloud-drizzle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 59
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 460.8c-25.6-119.467-132.267-204.8-251.733-204.8 0 0 0 0 0 0h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 89.6-238.933 174.933-51.2 89.6-68.267 192-42.667 290.133 25.6 102.4 93.867 187.733 187.733 238.933 21.333 12.8 46.933 8.533 59.733-12.8s4.267-46.933-17.067-59.733c-72.533-38.4-123.733-106.667-145.067-187.733-21.333-76.8-8.533-153.6 34.133-226.133 38.4-68.267 106.667-119.467 183.467-136.533 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 81.067 0 149.333 55.467 166.4 136.533 17.067 93.867-42.667 183.467-132.267 200.533-21.333 4.267-38.4 25.6-34.133 51.2 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 136.533-29.867 226.133-166.4 200.533-302.933z",
+                    "M640 682.667h-174.933l128-187.733c12.8-21.333 8.533-46.933-12.8-59.733s-46.933-8.533-59.733 12.8l-170.667 256c-8.533 12.8-8.533 29.867 0 42.667 4.267 12.8 17.067 21.333 34.133 21.333h174.933l-128 187.733c-12.8 21.333-8.533 46.933 12.8 59.733 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-8.533 34.133-17.067l170.667-256c8.533-12.8 8.533-29.867 0-42.667s-17.067-25.6-34.133-25.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud-lightning"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 61,
+                "order": 62,
+                "prevSize": 24,
+                "name": "cloud-lightning"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 60
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M409.6 213.333c128 12.8 230.4 102.4 264.533 221.867 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 21.333 0 46.933 4.267 68.267 12.8 85.333 38.4 128 136.533 89.6 221.867-8.533 21.333 0 46.933 21.333 55.467 4.267 4.267 12.8 4.267 17.067 4.267 17.067 0 34.133-8.533 38.4-25.6 55.467-128-4.267-281.6-136.533-337.067-29.867-8.533-64-17.067-98.133-17.067h-21.333c-51.2-140.8-179.2-243.2-328.533-256-25.6 0-42.667 17.067-46.933 38.4-4.267 25.6 17.067 42.667 38.4 46.933z",
+                    "M72.533 12.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l132.267 132.267c-64 51.2-110.933 119.467-136.533 200.533-29.867 98.133-17.067 200.533 34.133 290.133 68.267 123.733 196.267 200.533 337.067 200.533 0 0 4.267 0 4.267 0h384c21.333 0 38.4-4.267 59.733-8.533l123.733 123.733c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-938.667-938.667zM384 810.667c-110.933 4.267-213.333-55.467-264.533-153.6-38.4-68.267-46.933-149.333-25.6-226.133 17.067-68.267 59.733-123.733 115.2-162.133l541.867 541.867h-366.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 62,
+                "order": 63,
+                "prevSize": 24,
+                "name": "cloud-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 61
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 512c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M341.333 512c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M512 597.333c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M1002.667 409.6c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud-rain"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 63,
+                "order": 64,
+                "prevSize": 24,
+                "name": "cloud-rain"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 62
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1002.667 452.267c-42.667-93.867-132.267-153.6-234.667-153.6h-21.333c-64-187.733-264.533-294.4-456.533-243.2-209.067 51.2-332.8 260.267-277.333 469.333 21.333 81.067 68.267 153.6 132.267 204.8 17.067 12.8 46.933 12.8 59.733-8.533 12.8-17.067 12.8-46.933-8.533-59.733-51.2-38.4-85.333-98.133-102.4-157.867-42.667-157.867 55.467-324.267 213.333-362.667 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h55.467c68.267 0 128 38.4 157.867 102.4 17.067 42.667 21.333 89.6 4.267 132.267s-46.933 76.8-89.6 93.867c-21.333 8.533-29.867 34.133-21.333 55.467 8.533 17.067 21.333 25.6 38.4 25.6 4.267 0 12.8 0 17.067-4.267 64-25.6 110.933-76.8 136.533-140.8 21.333-68.267 17.067-136.533-8.533-200.533z",
+                    "M311.467 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M311.467 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M482.133 908.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M652.8 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M652.8 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cloud-snow"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 64,
+                "order": 65,
+                "prevSize": 24,
+                "name": "cloud-snow"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 63
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M968.533 482.133l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M371.2 226.133c-17.067-17.067-42.667-17.067-59.733 0l-256 256c-17.067 17.067-17.067 42.667 0 59.733l256 256c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133 226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["code"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 65,
+                "order": 66,
+                "prevSize": 24,
+                "name": "code"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 64
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 669.867c0-4.267 0-4.267 0-8.533v-298.667c0-4.267 0-4.267 0-8.533 0 0 0 0 0-4.267s-4.267-8.533-4.267-12.8c0 0 0 0 0 0s0 0 0 0c-4.267-4.267-4.267-8.533-8.533-8.533v0c0 0 0 0 0 0l-426.667-277.333c0 0-4.267 0-4.267 0s-4.267 0-4.267 0c-8.533-4.267-21.333-4.267-29.867 0 0 0-4.267 0-4.267 0s-4.267 0-4.267 0l-426.667 277.333c-8.533-0-12.8 4.267-17.067 8.533 0 0 0 0 0 0s0 0 0 0c-4.267 8.533-4.267 12.8-8.533 17.067 0 0 0 0 0 4.267s0 4.267 0 8.533v298.667c0 4.267 0 4.267 0 8.533 0 0 0 0 0 4.267s4.267 8.533 4.267 12.8c0 0 0 0 0 0s0 0 0 0c4.267 4.267 4.267 8.533 8.533 8.533l426.667 277.333c0 0 4.267 0 4.267 0s4.267 0 4.267 0 8.533 4.267 12.8 4.267 8.533 0 12.8-4.267c0 0 4.267 0 4.267 0s4.267 0 4.267 0l426.667-277.333c4.267-4.267 8.533-8.533 12.8-8.533 0 0 0 0 0 0s0 0 0 0c12.8-12.8 12.8-17.067 17.067-21.333 0 0 0 0 0 0zM128 443.733l98.133 68.267-98.133 68.267v-136.533zM512 610.133l-140.8-98.133 140.8-98.133 140.8 98.133-140.8 98.133zM554.667 341.333v-179.2l307.2 200.533-136.533 98.133-170.667-119.467zM469.333 341.333l-170.667 119.467-136.533-98.133 307.2-200.533v179.2zM298.667 563.2l170.667 119.467v174.933l-307.2-200.533 136.533-93.867zM554.667 682.667l170.667-119.467 136.533 93.867-307.2 204.8v-179.2zM797.867 512l98.133-68.267v136.533l-98.133-68.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["codepen"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 66,
+                "order": 67,
+                "prevSize": 24,
+                "name": "codepen"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 65
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 597.333h-85.333v-170.667h85.333c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667-170.667 76.8-170.667 170.667v85.333h-170.667v-85.333c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667 76.8 170.667 170.667 170.667h85.333v170.667h-85.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667v-85.333h170.667v85.333c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667-76.8-170.667-170.667-170.667zM682.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333h-85.333v-85.333zM341.333 768c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333h85.333v85.333zM341.333 341.333h-85.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333v85.333zM597.333 597.333h-170.667v-170.667h170.667v170.667zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333v-85.333h85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["command"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 67,
+                "order": 68,
+                "prevSize": 24,
+                "name": "command"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 66
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M678.4 290.133l-268.8 89.6c-12.8 4.267-25.6 17.067-29.867 29.867l-89.6 273.067c-4.267 17.067 0 34.133 8.533 42.667s17.067 12.8 29.867 12.8c4.267 0 8.533 0 12.8-4.267l273.067-89.6c12.8-4.267 21.333-12.8 25.6-25.6l89.6-273.067c4.267-17.067 0-34.133-8.533-42.667-8.533-12.8-25.6-17.067-42.667-12.8zM567.467 567.467l-170.667 55.467 55.467-170.667 170.667-55.467-55.467 170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["compass"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 68,
+                "order": 69,
+                "prevSize": 24,
+                "name": "compass"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 67
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 341.333h-384c-72.533 0-128 55.467-128 128v384c0 72.533 55.467 128 128 128h384c72.533 0 128-55.467 128-128v-384c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-384c-25.6 0-42.667-17.067-42.667-42.667v-384c0-25.6 17.067-42.667 42.667-42.667h384c25.6 0 42.667 17.067 42.667 42.667v384z",
+                    "M213.333 597.333h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-384c0-25.6 17.067-42.667 42.667-42.667h384c25.6 0 42.667 17.067 42.667 42.667v42.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-42.667c0-72.533-55.467-128-128-128h-384c-72.533 0-128 55.467-128 128v384c0 72.533 55.467 128 128 128h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["copy"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 69,
+                "order": 70,
+                "prevSize": 24,
+                "name": "copy"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 68
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 128c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 72.533-55.467 128-128 128h-409.6l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-140.8-140.8h409.6c119.467 0 213.333-93.867 213.333-213.333v-298.667c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-down-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 70,
+                "order": 71,
+                "prevSize": 24,
+                "name": "corner-down-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 69
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 657.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-72.533 0-128-55.467-128-128v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 119.467 93.867 213.333 213.333 213.333h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-down-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 71,
+                "order": 72,
+                "prevSize": 24,
+                "name": "corner-down-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 70
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 128h-298.667c-119.467 0-213.333 93.867-213.333 213.333v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-72.533 55.467-128 128-128h298.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-left-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 72,
+                "order": 73,
+                "prevSize": 24,
+                "name": "corner-left-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 71
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 810.667h-298.667c-72.533 0-128-55.467-128-128v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-12.8-4.267-21.333-4.267-34.133 0-4.267 0-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l140.8-140.8v409.6c0 119.467 93.867 213.333 213.333 213.333h298.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-left-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 73,
+                "order": 74,
+                "prevSize": 24,
+                "name": "corner-left-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 72
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M883.2 610.133c-17.067-17.067-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-119.467-93.867-213.333-213.333-213.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h298.667c72.533 0 128 55.467 128 128v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667-0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-right-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 74,
+                "order": 75,
+                "prevSize": 24,
+                "name": "corner-right-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 73
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M883.2 354.133l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l140.8-140.8v409.6c0 72.533-55.467 128-128 128h-298.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h298.667c119.467 0 213.333-93.867 213.333-213.333v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-right-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 75,
+                "order": 76,
+                "prevSize": 24,
+                "name": "corner-right-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 74
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 341.333h-409.6l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-213.333 213.333c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 12.8-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l213.333 213.333c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-140.8-140.8h409.6c72.533 0 128 55.467 128 128v298.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-298.667c0-119.467-93.867-213.333-213.333-213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-up-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 76,
+                "order": 77,
+                "prevSize": 24,
+                "name": "corner-up-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 75
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 401.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-119.467 0-213.333 93.867-213.333 213.333v298.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-298.667c0-72.533 55.467-128 128-128h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["corner-up-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 77,
+                "order": 78,
+                "prevSize": 24,
+                "name": "corner-up-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 76
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M640 341.333h-256c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667zM597.333 597.333h-170.667v-170.667h170.667v170.667z",
+                    "M981.333 554.667h-85.333v-128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333v-85.333c0-72.533-55.467-128-128-128h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-170.667v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-72.533 0-128 55.467-128 128v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v128h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v128c0 72.533 55.467 128 128 128h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h170.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c72.533 0 128-55.467 128-128v-128h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM810.667 768c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-512c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v512z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["cpu"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 78,
+                "order": 79,
+                "prevSize": 24,
+                "name": "cpu"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 77
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 128h-768c-72.533 0-128 55.467-128 128v512c0 72.533 55.467 128 128 128h768c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM128 213.333h768c25.6 0 42.667 17.067 42.667 42.667v128h-853.333v-128c0-25.6 17.067-42.667 42.667-42.667zM896 810.667h-768c-25.6 0-42.667-17.067-42.667-42.667v-298.667h853.333v298.667c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["credit-card"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 79,
+                "order": 80,
+                "prevSize": 24,
+                "name": "credit-card"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 78
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 725.333h-170.667v-384c0-72.533-55.467-128-128-128l-379.733 4.267v-174.933c0-25.6-17.067-42.667-42.667-42.667 0 0 0 0 0 0-21.333 0-42.667 17.067-42.667 42.667v174.933h-174.933c-25.6 0-42.667 21.333-42.667 42.667s21.333 42.667 42.667 42.667c0 0 0 0 0 0h174.933l-4.267 379.733c0 72.533 55.467 128 128 128h384v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM341.333 725.333c-25.6 0-42.667-17.067-42.667-42.667l4.267-379.733 379.733-4.267c25.6 0 42.667 17.067 42.667 42.667v384h-384z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["crop"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 80,
+                "order": 81,
+                "prevSize": 24,
+                "name": "crop"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 79
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM554.667 891.733v-123.733c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v123.733c-179.2-21.333-320-162.133-337.067-337.067h123.733c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-123.733c17.067-179.2 157.867-320 337.067-337.067v123.733c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-123.733c179.2 21.333 320 162.133 337.067 337.067h-123.733c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h123.733c-17.067 179.2-157.867 320-337.067 337.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["crosshair"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 81,
+                "order": 82,
+                "prevSize": 24,
+                "name": "crosshair"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 80
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-204.8 0-426.667 55.467-426.667 170.667v597.333c0 115.2 221.867 170.667 426.667 170.667s426.667-55.467 426.667-170.667v-597.333c0-115.2-221.867-170.667-426.667-170.667zM853.333 512c0 21.333-106.667 85.333-341.333 85.333s-341.333-64-341.333-85.333v-192c81.067 42.667 213.333 64 341.333 64s260.267-21.333 341.333-64v192zM512 128c221.867 0 341.333 64 341.333 85.333s-119.467 85.333-341.333 85.333c-221.867 0-341.333-64-341.333-85.333s119.467-85.333 341.333-85.333zM512 896c-234.667 0-341.333-64-341.333-85.333v-192c81.067 42.667 213.333 64 341.333 64s260.267-21.333 341.333-64v192c0 21.333-106.667 85.333-341.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["database"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 82,
+                "order": 83,
+                "prevSize": 24,
+                "name": "database"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 81
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 128h-554.667c-12.8 0-25.6 4.267-34.133 12.8l-298.667 341.333c-12.8 17.067-12.8 38.4 0 55.467l298.667 341.333c8.533 12.8 21.333 17.067 34.133 17.067h554.667c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM938.667 768c0 25.6-17.067 42.667-42.667 42.667h-533.333l-260.267-298.667 260.267-298.667h533.333c25.6 0 42.667 17.067 42.667 42.667v512z",
+                    "M797.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["delete"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 83,
+                "order": 84,
+                "prevSize": 24,
+                "name": "delete"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 82
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["disc"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 84,
+                "order": 85,
+                "prevSize": 24,
+                "name": "disc"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 83
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M618.667 469.333h-64v-213.333h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-64c-106.667 0-192 85.333-192 192s85.333 192 192 192h64v213.333h-213.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h213.333v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h64c106.667 0 192-85.333 192-192s-85.333-192-192-192zM405.333 469.333c-59.733 0-106.667-46.933-106.667-106.667s46.933-106.667 106.667-106.667h64v213.333h-64zM618.667 768h-64v-213.333h64c59.733 0 106.667 46.933 106.667 106.667s-46.933 106.667-106.667 106.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["dollar-sign"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 85,
+                "order": 86,
+                "prevSize": 24,
+                "name": "dollar-sign"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 84
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 597.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M482.133 669.867c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l213.333-213.333c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-140.8 140.8v-409.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v409.6l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["download"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 86,
+                "order": 87,
+                "prevSize": 24,
+                "name": "download"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 85
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M652.8 695.467l-98.133 98.133v-281.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v281.6l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z",
+                    "M977.067 448c-46.933-64-123.733-106.667-209.067-106.667 0 0 0 0 0 0h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 85.333-238.933 174.933-51.2 89.6-68.267 192-42.667 290.133 17.067 59.733 42.667 115.2 85.333 157.867 17.067 17.067 42.667 21.333 59.733 4.267s21.333-42.667 4.267-59.733c-29.867-34.133-55.467-76.8-64-123.733-21.333-76.8-8.533-157.867 34.133-226.133s106.667-119.467 183.467-136.533c157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 34.133 42.667 34.133h51.2c0 0 0 0 0 0 55.467 0 106.667 25.6 140.8 72.533 25.6 38.4 38.4 81.067 29.867 128s-34.133 85.333-68.267 110.933c-21.333 12.8-25.6 38.4-8.533 59.733 8.533 12.8 21.333 17.067 34.133 17.067 8.533 0 17.067-4.267 25.6-8.533 55.467-38.4 93.867-98.133 106.667-166.4s-12.8-132.267-51.2-192z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["download-cloud"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 87,
+                "order": 88,
+                "prevSize": 24,
+                "name": "download-cloud"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 86
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M785.067 324.267l-243.2-238.933c-8.533-8.533-17.067-12.8-29.867-12.8v0c-12.8 0-21.333 4.267-29.867 12.8l-238.933 238.933c0 0 0 0 0 0-76.8 72.533-115.2 170.667-115.2 273.067s38.4 200.533 110.933 273.067c72.533 72.533 170.667 110.933 273.067 110.933 0 0 0 0 0 0 102.4 0 200.533-38.4 273.067-110.933 149.333-149.333 149.333-392.533 0-546.133zM725.333 810.667c-59.733 55.467-132.267 85.333-213.333 85.333 0 0 0 0 0 0-81.067 0-153.6-29.867-209.067-85.333-59.733-59.733-89.6-132.267-89.6-213.333s29.867-153.6 85.333-209.067c0 0 0 0 0 0l209.067-213.333 213.333 213.333c119.467 115.2 119.467 302.933 4.267 422.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["droplet"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 88,
+                "order": 89,
+                "prevSize": 24,
+                "name": "droplet"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 87
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 584.533c-25.6 0-42.667 17.067-42.667 42.667v226.133c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h226.133c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-226.133c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-226.133c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M968.533 226.133l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0l-426.667 426.667c-8.533 8.533-12.8 17.067-12.8 29.867v170.667c0 25.6 17.067 42.667 42.667 42.667h170.667c12.8 0 21.333-4.267 29.867-12.8l426.667-426.667c17.067-17.067 17.067-42.667 0-59.733zM494.933 640h-110.933v-110.933l384-384 110.933 110.933-384 384z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["edit"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 89,
+                "order": 90,
+                "prevSize": 24,
+                "name": "edit"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 88
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 311.467l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0l-554.667 554.667c-8.533 8.533-12.8 17.067-12.8 29.867v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333c12.8 0 21.333-4.267 29.867-12.8l554.667-554.667c17.067-17.067 17.067-42.667 0-59.733zM324.267 853.333h-153.6v-153.6l512-512 153.6 153.6-512 512z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["edit-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 90,
+                "order": 91,
+                "prevSize": 24,
+                "name": "edit-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 89
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M128 768h170.667c12.8 0 21.333-4.267 29.867-12.8l469.333-469.333c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0l-469.333 469.333c-8.533 8.533-12.8 17.067-12.8 29.867v170.667c0 25.6 17.067 42.667 42.667 42.667zM170.667 571.733l426.667-426.667 110.933 110.933-426.667 426.667h-110.933v-110.933z",
+                    "M896 896h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["edit-3"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 91,
+                "order": 92,
+                "prevSize": 24,
+                "name": "edit-3"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 90
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 512c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-256c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-396.8 396.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l396.8-396.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["external-link"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 92,
+                "order": 93,
+                "prevSize": 24,
+                "name": "external-link"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 91
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 494.933c-8.533-17.067-187.733-366.933-507.733-366.933s-499.2 349.867-507.733 366.933c-4.267 12.8-4.267 25.6 0 38.4 8.533 12.8 187.733 362.667 507.733 362.667s499.2-349.867 507.733-366.933c4.267-8.533 4.267-25.6 0-34.133zM512 810.667c-230.4 0-379.733-230.4-422.4-298.667 38.4-68.267 192-298.667 422.4-298.667s379.733 230.4 422.4 298.667c-42.667 68.267-192 298.667-422.4 298.667z",
+                    "M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["eye"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 93,
+                "order": 94,
+                "prevSize": 24,
+                "name": "eye"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 92
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M430.933 221.867c25.6-4.267 55.467-8.533 81.067-8.533 230.4 0 379.733 230.4 422.4 298.667-21.333 38.4-46.933 76.8-76.8 106.667-17.067 17.067-12.8 46.933 4.267 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 38.4-42.667 68.267-93.867 98.133-145.067 8.533-12.8 8.533-25.6 0-38.4-8.533-8.533-187.733-358.4-507.733-358.4-34.133 0-68.267 4.267-98.133 12.8-25.6 4.267-38.4 25.6-34.133 51.2 8.533 21.333 29.867 34.133 51.2 29.867z",
+                    "M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467c-76.8 68.267-140.8 145.067-192 234.667-8.533 12.8-8.533 25.6 0 38.4 8.533 17.067 187.733 366.933 507.733 366.933 89.6 0 174.933-25.6 247.467-76.8l192 192c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM426.667 486.4l106.667 106.667c-8.533 4.267-17.067 4.267-25.6 4.267-21.333 0-42.667-8.533-59.733-21.333-17.067-17.067-25.6-38.4-25.6-59.733 0-8.533 4.267-17.067 4.267-29.867zM512 810.667c-230.4 0-379.733-230.4-422.4-298.667 42.667-76.8 98.133-140.8 166.4-196.267l106.667 110.933c-17.067 29.867-25.6 64-25.6 98.133 0 46.933 21.333 89.6 55.467 119.467 29.867 29.867 72.533 46.933 115.2 46.933 0 0 4.267 0 4.267 0 29.867 0 59.733-12.8 85.333-25.6l98.133 98.133c-55.467 29.867-119.467 46.933-183.467 46.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["eye-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 94,
+                "order": 95,
+                "prevSize": 24,
+                "name": "eye-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 93
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 298.667c25.6 0 42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667h-128c-140.8 0-256 115.2-256 256v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667h85.333v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667h85.333c21.333 0 38.4-12.8 42.667-34.133l42.667-170.667c4.267-12.8 0-25.6-8.533-38.4s-21.333-12.8-34.133-12.8h-128v-85.333h128zM597.333 469.333h115.2l-21.333 85.333h-93.867c-25.6 0-42.667 17.067-42.667 42.667v298.667h-85.333v-298.667c0-25.6-17.067-42.667-42.667-42.667h-85.333v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667v-128c0-93.867 76.8-170.667 170.667-170.667h85.333v85.333h-85.333c-46.933 0-85.333 38.4-85.333 85.333v128c0 25.6 17.067 42.667 42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["facebook"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 95,
+                "order": 96,
+                "prevSize": 24,
+                "name": "facebook"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 94
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M964.267 477.867l-384-298.667c-12.8-8.533-29.867-12.8-46.933-4.267-12.8 8.533-21.333 21.333-21.333 38.4v597.333c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l384-298.667c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133zM597.333 725.333v-426.667l273.067 213.333-273.067 213.333z",
+                    "M110.933 179.2c-12.8-8.533-29.867-12.8-42.667-4.267-17.067 8.533-25.6 21.333-25.6 38.4v597.333c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l384-298.667c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133l-384-298.667zM128 725.333v-426.667l273.067 213.333-273.067 213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["fast-forward"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 96,
+                "order": 97,
+                "prevSize": 24,
+                "name": "fast-forward"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 95
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 128c-115.2-115.2-307.2-115.2-422.4 0l-285.867 290.133c-8.533 8.533-12.8 17.067-12.8 29.867v345.6l-115.2 115.2c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l115.2-115.2h345.6c12.8 0 21.333-4.267 29.867-12.8l285.867-290.133c119.467-115.2 119.467-302.933 0-422.4zM558.933 768h-243.2l85.333-85.333h243.2l-85.333 85.333zM832 490.667c0 0 0 0 0 0l-102.4 106.667c0 0 0 0-4.267 0h-238.933l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-298.667 298.667c0 0 0 0 0 0l-98.133 98.133v-243.2l277.333-277.333c85.333-85.333 217.6-85.333 302.933 0 81.067 85.333 81.067 221.867-4.267 302.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["feather"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 97,
+                "order": 98,
+                "prevSize": 24,
+                "name": "feather"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 96
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 366.933c-4.267-4.267-4.267-8.533-8.533-12.8l-298.667-298.667c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-298.667c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-469.333c0-4.267 0-12.8-4.267-17.067zM597.333 187.733l153.6 153.6h-153.6v-153.6zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h256v256c0 25.6 17.067 42.667 42.667 42.667h256v426.667c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["file"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 98,
+                "order": 99,
+                "prevSize": 24,
+                "name": "file"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 97
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M640 597.333h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["file-minus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 99,
+                "order": 100,
+                "prevSize": 24,
+                "name": "file-minus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 98
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M640 597.333h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["file-plus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 100,
+                "order": 101,
+                "prevSize": 24,
+                "name": "file-plus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 99
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M891.733 324.267c-4.267-4.267-4.267-8.533-8.533-12.8l-256-256c-4.267-4.267-8.533-8.533-12.8-8.533-4.267-4.267-12.8-4.267-17.067-4.267h-341.333c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-512c0-4.267 0-12.8-4.267-17.067zM640 187.733l110.933 110.933h-110.933v-110.933zM768 896h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h298.667v213.333c0 25.6 17.067 42.667 42.667 42.667h213.333v469.333c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M682.667 512h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M682.667 682.667h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M341.333 426.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["file-text"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 101,
+                "order": 102,
+                "prevSize": 24,
+                "name": "file-text"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 100
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M844.8 42.667h-665.6c-76.8 0-136.533 59.733-136.533 136.533v665.6c0 76.8 59.733 136.533 136.533 136.533h665.6c76.8 0 136.533-59.733 136.533-136.533v-665.6c0-76.8-59.733-136.533-136.533-136.533zM768 341.333h128v128h-128v-128zM682.667 469.333h-341.333v-341.333h341.333v341.333zM256 469.333h-128v-128h128v128zM128 554.667h128v128h-128v-128zM341.333 554.667h341.333v341.333h-341.333v-341.333zM768 554.667h128v128h-128v-128zM896 179.2v76.8h-128v-128h76.8c29.867 0 51.2 21.333 51.2 51.2zM179.2 128h76.8v128h-128v-76.8c0-29.867 21.333-51.2 51.2-51.2zM128 844.8v-76.8h128v128h-76.8c-29.867 0-51.2-21.333-51.2-51.2zM844.8 896h-76.8v-128h128v76.8c0 29.867-21.333 51.2-51.2 51.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["film"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 102,
+                "order": 103,
+                "prevSize": 24,
+                "name": "film"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 101
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M977.067 110.933c-8.533-17.067-21.333-25.6-38.4-25.6h-853.333c-17.067 0-29.867 8.533-38.4 25.6-8.533 12.8-4.267 29.867 4.267 42.667l332.8 392.533v264.533c0 17.067 8.533 29.867 25.6 38.4l170.667 85.333c4.267 4.267 8.533 4.267 17.067 4.267s17.067 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-349.867l332.8-392.533c8.533-12.8 12.8-29.867 4.267-42.667zM563.2 503.467c-4.267 8.533-8.533 17.067-8.533 29.867v294.4l-85.333-42.667v-251.733c0-8.533-4.267-21.333-8.533-25.6l-281.6-337.067h669.867l-285.867 332.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["filter"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 103,
+                "order": 104,
+                "prevSize": 24,
+                "name": "filter"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 102
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M870.4 89.6c-17.067-8.533-34.133-4.267-46.933 8.533 0 0-38.4 29.867-140.8 29.867-55.467 0-102.4-21.333-153.6-38.4-55.467-25.6-115.2-46.933-187.733-46.933-136.533 0-192 46.933-200.533 55.467s-12.8 17.067-12.8 29.867v810.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-277.333c17.067-8.533 59.733-21.333 128-21.333 55.467 0 102.4 21.333 153.6 38.4 55.467 21.333 115.2 46.933 187.733 46.933 136.533 0 192-46.933 200.533-55.467s12.8-17.067 12.8-29.867v-512c0-17.067-8.533-29.867-25.6-38.4zM810.667 618.667c-17.067 8.533-59.733 21.333-128 21.333-55.467 0-102.4-21.333-153.6-38.4-55.467-25.6-115.2-46.933-187.733-46.933-55.467 0-98.133 8.533-128 17.067v-422.4c17.067-8.533 59.733-21.333 128-21.333 55.467 0 102.4 21.333 153.6 38.4 55.467 25.6 115.2 46.933 187.733 46.933 55.467 0 98.133-8.533 128-17.067v422.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["flag"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 104,
+                "order": 105,
+                "prevSize": 24,
+                "name": "flag"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 103
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["folder"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 105,
+                "order": 106,
+                "prevSize": 24,
+                "name": "folder"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 104
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z",
+                    "M640 554.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["folder-minus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 106,
+                "order": 107,
+                "prevSize": 24,
+                "name": "folder-minus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 105
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 213.333h-362.667l-72.533-110.933c-8.533-8.533-21.333-17.067-34.133-17.067h-213.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 810.667c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h384c25.6 0 42.667 17.067 42.667 42.667v469.333z",
+                    "M640 554.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["folder-plus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 107,
+                "order": 108,
+                "prevSize": 24,
+                "name": "folder-plus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 106
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 256h-102.4c12.8-21.333 17.067-42.667 17.067-64 0-81.067-68.267-149.333-149.333-149.333-98.133 0-157.867 68.267-192 132.267-34.133-64-93.867-132.267-192-132.267-81.067 0-149.333 68.267-149.333 149.333 0 21.333 4.267 42.667 17.067 64h-102.4c-25.6 0-42.667 17.067-42.667 42.667v213.333c0 25.6 17.067 42.667 42.667 42.667h42.667v384c0 25.6 17.067 42.667 42.667 42.667h682.667c25.6 0 42.667-17.067 42.667-42.667v-384h42.667c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-25.6-17.067-42.667-42.667-42.667zM704 128c34.133 0 64 29.867 64 64s-29.867 64-64 64h-136.533c21.333-51.2 64-128 136.533-128zM256 192c0-34.133 29.867-64 64-64 72.533 0 115.2 76.8 136.533 128h-136.533c-34.133 0-64-29.867-64-64zM128 341.333h341.333v128h-341.333v-128zM213.333 554.667h256v341.333h-256v-341.333zM810.667 896h-256v-341.333h256v341.333zM896 469.333h-341.333v-128h341.333v128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["gift"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 108,
+                "order": 109,
+                "prevSize": 24,
+                "name": "gift"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 107
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 256c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667c0 76.8 55.467 145.067 128 162.133-17.067 157.867-145.067 285.867-302.933 302.933-17.067-59.733-64-106.667-119.467-119.467v-473.6c0-25.6-17.067-42.667-42.667-42.667s-46.933 17.067-46.933 42.667v473.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667 81.067 0 145.067-55.467 166.4-128 204.8-17.067 371.2-183.467 388.267-388.267 72.533-21.333 128-85.333 128-166.4zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 341.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["git-branch"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 109,
+                "order": 110,
+                "prevSize": 24,
+                "name": "git-branch"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 108
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 469.333h-256c0 0-4.267 0-4.267 0-21.333-98.133-106.667-170.667-209.067-170.667s-187.733 72.533-209.067 170.667c0 0-4.267 0-4.267 0h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c0 0 4.267 0 4.267 0 21.333 98.133 106.667 170.667 209.067 170.667s187.733-72.533 209.067-170.667c0 0 4.267 0 4.267 0h256c25.6 0 42.667-17.067 42.667-42.667s-21.333-42.667-42.667-42.667zM512 640c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["git-commit"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 110,
+                "order": 111,
+                "prevSize": 24,
+                "name": "git-commit"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 109
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 597.333c-76.8 0-145.067 55.467-162.133 128-157.867-17.067-285.867-145.067-302.933-302.933 72.533-21.333 128-85.333 128-162.133 0-93.867-76.8-170.667-170.667-170.667s-174.933 72.533-174.933 166.4c0 81.067 55.467 145.067 128 166.4v473.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c72.533 93.867 179.2 157.867 302.933 170.667 17.067 72.533 85.333 132.267 166.4 132.267 93.867 0 170.667-76.8 170.667-170.667s-76.8-174.933-170.667-174.933zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["git-merge"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 111,
+                "order": 112,
+                "prevSize": 24,
+                "name": "git-merge"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 110
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 601.6v-260.267c0-72.533-55.467-128-128-128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v260.267c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667c0-81.067-55.467-145.067-128-166.4zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z",
+                    "M256 85.333c-93.867 0-170.667 76.8-170.667 170.667 0 81.067 55.467 145.067 128 166.4v473.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-473.6c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667zM256 341.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["git-pull-request"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 112,
+                "order": 113,
+                "prevSize": 24,
+                "name": "git-pull-request"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 111
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M960 362.667c0-64-21.333-119.467-59.733-170.667 12.8-55.467 8.533-115.2-12.8-166.4-4.267-12.8-12.8-21.333-25.6-25.6-17.067-4.267-72.533-12.8-187.733 59.733-93.867-21.333-192-21.333-281.6 0-115.2-72.533-170.667-64-187.733-59.733-12.8 4.267-21.333 12.8-25.6 25.6-25.6 55.467-29.867 110.933-12.8 166.4-38.4 51.2-59.733 110.933-59.733 170.667 0 230.4 128 302.933 247.467 328.533-8.533 29.867-12.8 55.467-12.8 81.067v4.267c-89.6 17.067-119.467-17.067-153.6-64-21.333-29.867-46.933-64-93.867-72.533-21.333-4.267-46.933 8.533-51.2 29.867s8.533 46.933 29.867 51.2c12.8 4.267 29.867 21.333 46.933 42.667 38.4 51.2 93.867 119.467 221.867 102.4v72.533c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-123.733c0 0 0-4.267 0-4.267v-38.4c0-29.867 8.533-55.467 29.867-76.8 12.8-12.8 17.067-29.867 8.533-42.667-4.267-17.067-17.067-25.6-34.133-29.867-123.733-17.067-238.933-55.467-238.933-256 0-51.2 17.067-93.867 51.2-132.267 12.8-12.8 12.8-29.867 8.533-42.667-12.8-38.4-12.8-72.533-4.267-106.667 21.333 4.267 59.733 17.067 110.933 55.467 12.8 8.533 25.6 8.533 38.4 4.267 89.6-25.6 187.733-25.6 277.333 0 12.8 4.267 25.6 0 34.133-4.267 55.467-38.4 93.867-51.2 110.933-55.467 8.533 34.133 8.533 68.267-4.267 102.4-4.267 17.067-4.267 34.133 8.533 42.667 34.133 34.133 51.2 81.067 51.2 132.267 0 200.533-115.2 243.2-238.933 256-17.067 0-29.867 12.8-34.133 29.867s0 34.133 8.533 42.667c21.333 21.333 29.867 51.2 29.867 81.067v166.4c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-162.133c4.267-29.867 0-55.467-12.8-81.067 102.4-21.333 247.467-89.6 247.467-332.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["github"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 113,
+                "order": 114,
+                "prevSize": 24,
+                "name": "github"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 112
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 558.933l-157.867-477.867c-4.267-8.533-8.533-17.067-17.067-25.6-21.333-21.333-59.733-21.333-81.067 0-8.533 4.267-12.8 12.8-17.067 25.6l-93.867 290.133h-281.6l-93.867-290.133c-4.267-8.533-8.533-17.067-17.067-25.6-21.333-21.333-59.733-21.333-81.067 0-8.533 4.267-12.8 12.8-17.067 25.6l-157.867 477.867c-12.8 34.133 0 68.267 29.867 89.6l452.267 328.533c8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533l452.267-328.533c29.867-17.067 42.667-55.467 29.867-89.6zM512 891.733l-426.667-307.2 132.267-405.333 81.067 247.467c4.267 17.067 21.333 29.867 42.667 29.867h341.333c17.067 0 34.133-12.8 42.667-29.867l81.067-247.467 81.067 247.467 51.2 153.6-426.667 311.467z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["gitlab"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 114,
+                "order": 115,
+                "prevSize": 24,
+                "name": "gitlab"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 113
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM891.733 469.333h-170.667c-8.533-119.467-46.933-230.4-115.2-328.533 153.6 38.4 268.8 170.667 285.867 328.533zM388.267 554.667h251.733c-12.8 115.2-55.467 226.133-123.733 315.733-76.8-89.6-119.467-200.533-128-315.733zM388.267 469.333c12.8-115.2 55.467-226.133 123.733-315.733 72.533 93.867 115.2 204.8 123.733 315.733h-247.467zM413.867 140.8c-64 98.133-102.4 209.067-110.933 328.533h-170.667c17.067-157.867 132.267-290.133 281.6-328.533zM132.267 554.667h170.667c8.533 119.467 46.933 230.4 115.2 328.533-153.6-38.4-268.8-170.667-285.867-328.533zM610.133 883.2c64-98.133 102.4-209.067 115.2-328.533h170.667c-21.333 157.867-136.533 290.133-285.867 328.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["globe"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 115,
+                "order": 116,
+                "prevSize": 24,
+                "name": "globe"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 114
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M426.667 85.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM384 384h-213.333v-213.333h213.333v213.333z",
+                    "M896 85.333h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM853.333 384h-213.333v-213.333h213.333v213.333z",
+                    "M896 554.667h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM853.333 853.333h-213.333v-213.333h213.333v213.333z",
+                    "M426.667 554.667h-298.667c-25.6 0-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h298.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667zM384 853.333h-213.333v-213.333h213.333v213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["grid"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 116,
+                "order": 117,
+                "prevSize": 24,
+                "name": "grid"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 115
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M977.067 494.933c0 0 0 0 0 0l-149.333-294.4c-21.333-42.667-64-72.533-115.2-72.533h-405.333c-46.933 0-89.6 25.6-110.933 72.533l-145.067 294.4c0 0 0 0 0 0-8.533 4.267-8.533 8.533-8.533 17.067v256c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-256c0-8.533 0-12.8-4.267-17.067zM268.8 238.933c0 0 0 0 0 0 8.533-17.067 25.6-25.6 38.4-25.6h405.333c17.067 0 29.867 8.533 38.4 25.6l115.2 230.4h-712.533l115.2-230.4zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333h768v213.333c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M226.133 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M396.8 652.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["hard-drive"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 117,
+                "order": 118,
+                "prevSize": 24,
+                "name": "hard-drive"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 116
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 597.333h-179.2l17.067-170.667h162.133c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-149.333l21.333-209.067c4.267-21.333-12.8-42.667-38.4-46.933-21.333-4.267-42.667 12.8-46.933 38.4l-25.6 217.6h-170.667l25.6-209.067c4.267-21.333-12.8-42.667-38.4-46.933-21.333-4.267-42.667 12.8-46.933 38.4l-25.6 217.6h-187.733c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h179.2l-17.067 170.667h-162.133c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h149.333l-21.333 209.067c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l25.6-217.6h170.667l-25.6 209.067c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l25.6-217.6h187.733c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM418.133 597.333l17.067-170.667h170.667l-17.067 170.667h-170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["hash"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 118,
+                "order": 119,
+                "prevSize": 24,
+                "name": "hash"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 117
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 85.333c-234.667 0-426.667 192-426.667 426.667v298.667c0 72.533 55.467 128 128 128h42.667c72.533 0 128-55.467 128-128v-128c0-72.533-55.467-128-128-128h-85.333v-42.667c0-187.733 153.6-341.333 341.333-341.333s341.333 153.6 341.333 341.333v42.667h-85.333c-72.533 0-128 55.467-128 128v128c0 72.533 55.467 128 128 128h42.667c72.533 0 128-55.467 128-128v-298.667c0-234.667-192-426.667-426.667-426.667zM256 640c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667h85.333zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h85.333v170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["headphones"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 119,
+                "order": 120,
+                "prevSize": 24,
+                "name": "headphones"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 118
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M917.333 166.4v0c-51.2-51.2-119.467-81.067-192-81.067v0c-72.533 0-145.067 29.867-196.267 81.067 0 0 0 0 0 0l-17.067 17.067-17.067-17.067c-51.2-51.2-119.467-81.067-196.267-81.067-72.533 0-140.8 29.867-192 81.067s-85.333 123.733-85.333 196.267 29.867 145.067 81.067 196.267l375.467 375.467c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l375.467-375.467c115.2-106.667 115.2-285.867 4.267-392.533zM857.6 499.2l-345.6 345.6-345.6-345.6c-76.8-76.8-76.8-196.267 0-273.067 34.133-38.4 85.333-55.467 132.267-55.467 51.2 0 98.133 17.067 136.533 55.467l46.933 46.933c17.067 17.067 42.667 17.067 59.733 0l42.667-46.933c0 0 0 0 0 0 38.4-34.133 85.333-55.467 140.8-55.467 0 0 0 0 0 0 51.2 0 98.133 21.333 136.533 55.467v0c34.133 38.4 55.467 85.333 55.467 136.533s-21.333 98.133-59.733 136.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["heart"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 120,
+                "order": 121,
+                "prevSize": 24,
+                "name": "heart"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 119
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M563.2 264.533c-89.6-29.867-187.733 17.067-217.6 102.4-4.267 25.6 4.267 51.2 29.867 55.467 21.333 8.533 46.933-4.267 55.467-25.6 17.067-42.667 64-68.267 110.933-51.2 34.133 12.8 55.467 42.667 55.467 81.067 0 42.667-72.533 76.8-98.133 89.6-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 17.067-4.267 157.867-55.467 157.867-166.4-4.267-76.8-51.2-140.8-119.467-166.4z",
+                    "M482.133 695.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["help-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 121,
+                "order": 122,
+                "prevSize": 24,
+                "name": "help-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 120
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M921.6 349.867l-384-298.667c-17.067-12.8-38.4-12.8-51.2 0l-384 298.667c-12.8 8.533-17.067 21.333-17.067 34.133v469.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-469.333c0-12.8-4.267-25.6-17.067-34.133zM597.333 896h-170.667v-341.333h170.667v341.333zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-128v-384c0-25.6-17.067-42.667-42.667-42.667h-256c-25.6 0-42.667 17.067-42.667 42.667v384h-128c-25.6 0-42.667-17.067-42.667-42.667v-448l341.333-264.533 341.333 264.533v448z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["home"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 122,
+                "order": 123,
+                "prevSize": 24,
+                "name": "home"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 121
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM170.667 213.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v324.267l-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0l-452.267 452.267c-17.067-4.267-29.867-21.333-29.867-38.4v-597.333zM810.667 853.333h-494.933l366.933-366.933 170.667 170.667v153.6c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M362.667 469.333c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667-106.667 46.933-106.667 106.667 46.933 106.667 106.667 106.667zM362.667 341.333c12.8 0 21.333 8.533 21.333 21.333s-8.533 21.333-21.333 21.333-21.333-8.533-21.333-21.333 8.533-21.333 21.333-21.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["image"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 123,
+                "order": 124,
+                "prevSize": 24,
+                "name": "image"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 122
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M977.067 494.933c0 0 0 0 0 0l-149.333-294.4c-21.333-42.667-64-72.533-115.2-72.533h-405.333c-46.933 0-89.6 25.6-110.933 72.533l-145.067 294.4c0 0 0 0 0 0-8.533 4.267-8.533 8.533-8.533 17.067v256c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-256c0-8.533 0-12.8-4.267-17.067zM268.8 238.933c0 0 0 0 0 0 8.533-17.067 25.6-25.6 38.4-25.6h405.333c17.067 0 29.867 8.533 38.4 25.6l115.2 230.4h-183.467c-12.8 0-25.6 8.533-34.133 17.067l-72.533 110.933h-123.733l-72.533-110.933c-12.8-8.533-25.6-17.067-38.4-17.067h-187.733l115.2-230.4zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333h192l72.533 110.933c8.533 8.533 21.333 17.067 34.133 17.067h170.667c12.8 0 25.6-8.533 34.133-17.067l72.533-110.933h192v213.333c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["inbox"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 124,
+                "order": 125,
+                "prevSize": 24,
+                "name": "inbox"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 123
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M512 469.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M482.133 311.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["info"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 125,
+                "order": 126,
+                "prevSize": 24,
+                "name": "info"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 124
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M725.333 42.667h-426.667c-140.8 0-256 115.2-256 256v426.667c0 140.8 115.2 256 256 256h426.667c140.8 0 256-115.2 256-256v-426.667c0-140.8-115.2-256-256-256zM896 725.333c0 93.867-76.8 170.667-170.667 170.667h-426.667c-93.867 0-170.667-76.8-170.667-170.667v-426.667c0-93.867 76.8-170.667 170.667-170.667h426.667c93.867 0 170.667 76.8 170.667 170.667v426.667z",
+                    "M546.133 298.667c-21.333-4.267-42.667-4.267-64 0-115.2 17.067-196.267 128-179.2 243.2 8.533 55.467 38.4 106.667 85.333 140.8 38.4 25.6 81.067 42.667 128 42.667 8.533 0 21.333 0 29.867-4.267 55.467-8.533 106.667-38.4 140.8-85.333s46.933-102.4 38.4-157.867c-12.8-93.867-85.333-166.4-179.2-179.2zM618.667 584.533c-21.333 25.6-51.2 46.933-85.333 51.2-68.267 8.533-136.533-38.4-145.067-106.667-12.8-68.267 38.4-136.533 106.667-145.067 4.267 0 12.8 0 17.067 0s12.8 0 17.067 0c55.467 8.533 98.133 51.2 106.667 106.667 8.533 34.133 0 68.267-17.067 93.867z",
+                    "M716.8 247.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 21.333 12.8 29.867 12.8 12.8 0 21.333-4.267 29.867-12.8s12.8-21.333 12.8-29.867c0-12.8-4.267-21.333-12.8-29.867-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["instagram"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 126,
+                "order": 127,
+                "prevSize": 24,
+                "name": "instagram"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 125
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 128h-384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 597.333h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h384c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l221.867-597.333h145.067c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["italic"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 127,
+                "order": 128,
+                "prevSize": 24,
+                "name": "italic"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 126
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M68.267 337.067l426.667 213.333c4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 17.067-4.267l426.667-213.333c17.067-8.533 25.6-21.333 25.6-38.4s-8.533-29.867-25.6-38.4l-426.667-213.333c-12.8-4.267-25.6-4.267-38.4 0l-426.667 213.333c-12.8 8.533-21.333 21.333-21.333 38.4s8.533 29.867 25.6 38.4zM512 132.267l332.8 166.4-332.8 166.4-332.8-166.4 332.8-166.4z",
+                    "M921.6 686.933l-409.6 204.8-409.6-204.8c-21.333-8.533-46.933 0-55.467 17.067s0 46.933 17.067 55.467l426.667 213.333c8.533 8.533 12.8 8.533 21.333 8.533s12.8 0 17.067-4.267l426.667-213.333c21.333-8.533 29.867-34.133 17.067-55.467-8.533-21.333-34.133-29.867-51.2-21.333z",
+                    "M921.6 473.6l-409.6 204.8-409.6-204.8c-21.333-8.533-46.933 0-55.467 17.067-8.533 21.333 0 46.933 17.067 55.467l426.667 213.333c8.533 8.533 12.8 8.533 21.333 8.533s12.8 0 17.067-4.267l426.667-213.333c21.333-8.533 29.867-34.133 17.067-55.467-8.533-21.333-34.133-29.867-51.2-21.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["layers"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 128,
+                "order": 129,
+                "prevSize": 24,
+                "name": "layers"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 127
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM213.333 170.667h597.333c25.6 0 42.667 17.067 42.667 42.667v128h-682.667v-128c0-25.6 17.067-42.667 42.667-42.667zM170.667 810.667v-384h170.667v426.667h-128c-25.6 0-42.667-17.067-42.667-42.667zM810.667 853.333h-384v-426.667h426.667v384c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["layout"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 129,
+                "order": 130,
+                "prevSize": 24,
+                "name": "layout"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 128
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M844.8 844.8c85.333-85.333 136.533-200.533 136.533-332.8 0-128-51.2-247.467-136.533-332.8 0 0 0 0 0 0s0 0 0 0c-85.333-85.333-204.8-136.533-332.8-136.533s-247.467 51.2-332.8 136.533c0 0 0 0 0 0s0 0 0 0c-85.333 85.333-136.533 204.8-136.533 332.8s51.2 247.467 136.533 332.8c0 0 0 0 0 0s0 0 0 0c85.333 85.333 200.533 136.533 332.8 136.533 128 0 247.467-51.2 332.8-136.533 0 0 0 0 0 0s0 0 0 0zM810.667 750.933l-123.733-123.733c25.6-29.867 38.4-72.533 38.4-115.2s-12.8-85.333-34.133-119.467l119.467-119.467c51.2 64 85.333 149.333 85.333 238.933s-29.867 174.933-85.333 238.933zM384 512c0-72.533 55.467-128 128-128s128 55.467 128 128-55.467 128-128 128-128-55.467-128-128zM750.933 213.333l-123.733 123.733c-29.867-25.6-72.533-38.4-115.2-38.4s-85.333 12.8-119.467 34.133l-119.467-119.467c64-55.467 149.333-85.333 238.933-85.333s174.933 29.867 238.933 85.333zM213.333 273.067l123.733 123.733c-25.6 29.867-38.4 72.533-38.4 115.2s12.8 85.333 34.133 119.467l-119.467 119.467c-51.2-64-85.333-149.333-85.333-238.933s29.867-174.933 85.333-238.933zM273.067 810.667l123.733-123.733c29.867 25.6 72.533 38.4 115.2 38.4s85.333-12.8 119.467-34.133l123.733 123.733c-64 51.2-149.333 85.333-238.933 85.333-93.867-4.267-179.2-34.133-243.2-89.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["life-buoy"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 130,
+                "order": 131,
+                "prevSize": 24,
+                "name": "life-buoy"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 129
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M900.267 119.467c-98.133-98.133-256-98.133-354.133 0l-76.8 72.533c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l72.533-72.533c68.267-64 170.667-64 238.933 0s68.267 174.933 4.267 238.933l-128 128c-4.267 4.267-12.8 12.8-17.067 17.067-76.8 55.467-183.467 42.667-238.933-34.133-12.8-17.067-42.667-21.333-59.733-8.533s-21.333 42.667-8.533 59.733c51.2 68.267 128 102.4 204.8 102.4 51.2 0 106.667-17.067 153.6-51.2 8.533-8.533 17.067-17.067 29.867-25.6l128-128c98.133-98.133 93.867-264.533-8.533-358.4z",
+                    "M490.667 772.267l-72.533 72.533c-68.267 64-170.667 64-238.933 0s-68.267-174.933-4.267-238.933l128-128c4.267-4.267 12.8-12.8 17.067-17.067 38.4-25.6 81.067-38.4 128-34.133 46.933 8.533 85.333 29.867 110.933 68.267 12.8 17.067 42.667 21.333 59.733 8.533s21.333-42.667 8.533-59.733c-42.667-55.467-102.4-89.6-166.4-98.133-64-12.8-132.267 4.267-187.733 46.933-8.533 8.533-17.067 17.067-25.6 25.6l-128 128c-98.133 102.4-93.867 264.533 4.267 362.667 51.2 46.933 115.2 72.533 179.2 72.533s128-25.6 179.2-72.533l72.533-72.533c17.067-17.067 17.067-42.667 0-59.733s-46.933-21.333-64-4.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["link"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 131,
+                "order": 132,
+                "prevSize": 24,
+                "name": "link"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 130
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M384 682.667h-128c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-140.8 0-256 115.2-256 256s115.2 256 256 256h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M768 256h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c140.8 0 256-115.2 256-256s-115.2-256-256-256z",
+                    "M298.667 512c0 25.6 17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-341.333c-25.6 0-42.667 17.067-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["link-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 132,
+                "order": 133,
+                "prevSize": 24,
+                "name": "link-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 131
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 298.667c-166.4 0-298.667 132.267-298.667 298.667v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-166.4-132.267-298.667-298.667-298.667zM896 853.333h-85.333v-256c0-72.533-55.467-128-128-128s-128 55.467-128 128v256h-85.333v-256c0-119.467 93.867-213.333 213.333-213.333s213.333 93.867 213.333 213.333v256z",
+                    "M256 341.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667v512c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-512c0-25.6-17.067-42.667-42.667-42.667zM213.333 853.333h-85.333v-426.667h85.333v426.667z",
+                    "M170.667 42.667c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM170.667 213.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["linkedin"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 133,
+                "order": 134,
+                "prevSize": 24,
+                "name": "linkedin"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 132
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M341.333 298.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 469.333h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M896 725.333h-554.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h554.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M98.133 226.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M98.133 482.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M98.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["list"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 134,
+                "order": 135,
+                "prevSize": 24,
+                "name": "list"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 133
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M512 725.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M238.933 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-119.467-119.467z",
+                    "M721.067 661.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-119.467-119.467z",
+                    "M298.667 512c0-25.6-17.067-42.667-42.667-42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667z",
+                    "M938.667 469.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M302.933 661.333l-119.467 119.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l119.467-119.467c17.067-17.067 17.067-42.667 0-59.733s-46.933-17.067-59.733 0z",
+                    "M691.2 375.467c12.8 0 21.333-4.267 29.867-12.8l119.467-119.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-119.467 119.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["loader"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 135,
+                "order": 136,
+                "prevSize": 24,
+                "name": "loader"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 134
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 426.667h-42.667v-128c0-140.8-115.2-256-256-256s-256 115.2-256 256v128h-42.667c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-72.533-55.467-128-128-128zM341.333 298.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667v128h-341.333v-128zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v298.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["lock"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 136,
+                "order": 137,
+                "prevSize": 24,
+                "name": "lock"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 135
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v597.333c0 25.6-17.067 42.667-42.667 42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h170.667c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128z",
+                    "M678.4 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["log-in"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 137,
+                "order": 138,
+                "prevSize": 24,
+                "name": "log-in"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 136
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M384 853.333h-170.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-170.667c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h170.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M934.4 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-409.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h409.6l-140.8 140.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l213.333-213.333c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["log-out"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 138,
+                "order": 139,
+                "prevSize": 24,
+                "name": "log-out"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 137
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 128h-682.667c-72.533 0-128 55.467-128 128v512c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-512c0-72.533-55.467-128-128-128zM170.667 213.333h682.667c17.067 0 29.867 8.533 38.4 25.6l-379.733 264.533-379.733-264.533c8.533-17.067 21.333-25.6 38.4-25.6zM853.333 810.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-430.933l358.4 251.733c8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533l358.4-251.733v430.933c0 25.6-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["mail"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 139,
+                "order": 140,
+                "prevSize": 24,
+                "name": "mail"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 138
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1002.667 46.933c-12.8-8.533-29.867-8.533-42.667 0l-277.333 162.133-324.267-162.133c0 0 0 0 0 0s0 0-4.267 0c-4.267-4.267-8.533-4.267-12.8-4.267 0 0 0 0 0 0s0 0 0 0c-4.267 0-8.533 0-17.067 4.267 0 0 0 0-4.267 0 0 0-4.267 0-4.267 0l-298.667 170.667c-8.533 8.533-17.067 21.333-17.067 38.4v682.667c0 17.067 8.533 29.867 21.333 38.4s29.867 8.533 42.667 0l277.333-162.133 320 162.133c0 0 0 0 0 0 8.533 4.267 12.8 4.267 21.333 4.267 4.267 0 8.533 0 12.8-4.267 0 0 4.267 0 4.267 0s0 0 4.267 0l298.667-170.667c12.8-8.533 21.333-21.333 21.333-38.4v-682.667c0-17.067-8.533-29.867-21.333-38.4zM384 153.6l256 128v588.8l-256-128v-588.8zM85.333 281.6l213.333-123.733v584.533l-213.333 123.733v-584.533zM938.667 742.4l-213.333 123.733v-584.533l213.333-123.733v584.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["map"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 140,
+                "order": 141,
+                "prevSize": 24,
+                "name": "map"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 139
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 0c-234.667 0-426.667 192-426.667 426.667 0 315.733 388.267 580.267 401.067 588.8 8.533 4.267 17.067 8.533 25.6 8.533s17.067-4.267 25.6-8.533c12.8-8.533 401.067-273.067 401.067-588.8 0-234.667-192-426.667-426.667-426.667zM512 930.133c-81.067-59.733-341.333-273.067-341.333-503.467 0-187.733 153.6-341.333 341.333-341.333s341.333 153.6 341.333 341.333c0 230.4-260.267 443.733-341.333 503.467z",
+                    "M512 256c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["map-pin"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 141,
+                "order": 142,
+                "prevSize": 24,
+                "name": "map-pin"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 140
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M341.333 853.333h-128c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 72.533 55.467 128 128 128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M341.333 85.333h-128c-72.533 0-128 55.467-128 128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M810.667 85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-72.533-55.467-128-128-128z",
+                    "M896 640c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c72.533 0 128-55.467 128-128v-128c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["maximize"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 142,
+                "order": 143,
+                "prevSize": 24,
+                "name": "maximize"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 141
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z",
+                    "M396.8 567.467l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["maximize-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 143,
+                "order": 144,
+                "prevSize": 24,
+                "name": "maximize-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 142
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 469.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M128 298.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M896 725.333h-768c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h768c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["menu"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 144,
+                "order": 145,
+                "prevSize": 24,
+                "name": "menu"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 143
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M938.667 465.067c-12.8-204.8-174.933-371.2-384-379.733h-21.333c0 0 0 0 0 0-64 0-123.733 12.8-179.2 42.667-140.8 68.267-226.133 209.067-226.133 362.667 0 55.467 12.8 115.2 34.133 166.4l-76.8 226.133c-4.267 17.067 0 34.133 8.533 42.667 12.8 8.533 21.333 12.8 34.133 12.8 4.267 0 8.533 0 12.8-4.267l226.133-76.8c51.2 21.333 106.667 34.133 166.4 34.133 153.6 0 294.4-85.333 362.667-221.867 29.867-55.467 42.667-119.467 42.667-183.467v-21.333zM853.333 490.667c0 0 0 0 0 0 0 51.2-12.8 98.133-34.133 145.067-55.467 110.933-162.133 174.933-285.867 174.933-51.2 0-98.133-12.8-140.8-34.133-8.533-4.267-21.333-4.267-34.133-4.267l-162.133 55.467 55.467-162.133c4.267-12.8 4.267-21.333-4.267-34.133-21.333-42.667-34.133-93.867-34.133-140.8 0-123.733 68.267-230.4 179.2-285.867 42.667-21.333 93.867-34.133 140.8-34.133 0 0 0 0 0 0h17.067c162.133 8.533 290.133 136.533 302.933 298.667v21.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["message-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 145,
+                "order": 146,
+                "prevSize": 24,
+                "name": "message-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 144
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v682.667c0 17.067 8.533 34.133 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8l157.867-157.867h494.933c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM853.333 640c0 25.6-17.067 42.667-42.667 42.667h-512c-12.8 0-21.333 4.267-29.867 12.8l-98.133 98.133v-580.267c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v426.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["message-square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 146,
+                "order": 147,
+                "prevSize": 24,
+                "name": "message-square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 145
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 682.667c93.867 0 170.667-76.8 170.667-170.667v-341.333c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667v341.333c0 93.867 76.8 170.667 170.667 170.667zM426.667 170.667c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-341.333z",
+                    "M810.667 384c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 140.8-115.2 256-256 256s-256-115.2-256-256v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 174.933 132.267 315.733 298.667 337.067v89.6h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-89.6c166.4-21.333 298.667-166.4 298.667-337.067v-85.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["mic"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 147,
+                "order": 148,
+                "prevSize": 24,
+                "name": "mic"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 146
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1011.2 951.467l-251.733-251.733c0-4.267-4.267-4.267-4.267-8.533 0 0-4.267-4.267-4.267-4.267l-337.067-332.8c0 0 0 0 0 0l-341.333-341.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l328.533 328.533v110.933c0 46.933 17.067 89.6 51.2 119.467 29.867 34.133 72.533 51.2 119.467 51.2 0 0 0 0 0 0 29.867 0 59.733-8.533 85.333-25.6l64 64c-42.667 29.867-89.6 46.933-140.8 46.933-4.267 0-4.267 0-8.533 0s-4.267 0-8.533 0c-64 0-123.733-25.6-170.667-72.533-51.2-46.933-76.8-115.2-76.8-183.467v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 93.867 38.4 183.467 102.4 247.467 55.467 55.467 123.733 85.333 196.267 93.867v85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-85.333c59.733-8.533 119.467-29.867 166.4-68.267l230.4 230.4c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-21.333 17.067-46.933 0-64zM512 597.333c0 0 0 0 0 0-21.333 0-42.667-8.533-59.733-25.6s-25.6-38.4-25.6-59.733v-25.6l106.667 106.667c-8.533 4.267-12.8 4.267-21.333 4.267z",
+                    "M379.733 187.733c21.333 4.267 42.667-12.8 46.933-34.133 8.533-38.4 42.667-68.267 85.333-68.267 0 0 0 0 0 0 21.333 0 42.667 8.533 59.733 25.6s25.6 38.4 25.6 59.733v226.133c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-226.133c0-46.933-17.067-89.6-51.2-119.467-29.867-34.133-72.533-51.2-119.467-51.2 0 0 0 0 0 0-81.067 0-149.333 55.467-166.4 136.533-4.267 21.333 8.533 46.933 34.133 51.2z",
+                    "M797.867 605.867c4.267 0 4.267 0 8.533 0 21.333 0 38.4-12.8 42.667-34.133s4.267-38.4 4.267-59.733v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 17.067 0 29.867-4.267 46.933-4.267 21.333 12.8 42.667 34.133 46.933z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["mic-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 148,
+                "order": 149,
+                "prevSize": 24,
+                "name": "mic-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 147
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M256 640h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c25.6 0 42.667 17.067 42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-72.533-55.467-128-128-128z",
+                    "M768 384h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128c-25.6 0-42.667-17.067-42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 72.533 55.467 128 128 128z",
+                    "M896 640h-128c-72.533 0-128 55.467-128 128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6 17.067-42.667 42.667-42.667h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M341.333 85.333c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6-17.067 42.667-42.667 42.667h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128c72.533 0 128-55.467 128-128v-128c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["minimize"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 149,
+                "order": 150,
+                "prevSize": 24,
+                "name": "minimize"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 148
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M443.733 558.933c-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067-4.267-8.533-12.8-17.067-21.333-21.333z",
+                    "M925.867 98.133c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["minimize-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 150,
+                "order": 151,
+                "prevSize": 24,
+                "name": "minimize-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 149
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 469.333h-597.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h597.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["minus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 151,
+                "order": 152,
+                "prevSize": 24,
+                "name": "minus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 150
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["minus-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 152,
+                "order": 153,
+                "prevSize": 24,
+                "name": "minus-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 151
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z",
+                    "M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["minus-square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 153,
+                "order": 154,
+                "prevSize": 24,
+                "name": "minus-square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 152
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h298.667v85.333h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-128v-85.333h298.667c72.533 0 128-55.467 128-128v-426.667c0-72.533-55.467-128-128-128zM896 640c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v426.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["monitor"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 154,
+                "order": 155,
+                "prevSize": 24,
+                "name": "monitor"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 153
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M917.333 507.733c-12.8-8.533-34.133-8.533-46.933 4.267-89.6 68.267-213.333 68.267-302.933 0-115.2-85.333-140.8-243.2-55.467-358.4 8.533-12.8 12.8-29.867 4.267-46.933-8.533-12.8-25.6-21.333-42.667-21.333-204.8 17.067-366.933 179.2-384 384-21.333 234.667 149.333 443.733 384 465.067 12.8 0 25.6 0 38.4 0 98.133 0 196.267-34.133 273.067-98.133 89.6-72.533 140.8-174.933 153.6-290.133 0-12.8-8.533-29.867-21.333-38.4zM733.867 772.267c-68.267 59.733-157.867 85.333-247.467 76.8-187.733-17.067-324.267-183.467-307.2-371.2 12.8-132.267 102.4-247.467 221.867-290.133-51.2 136.533-4.267 298.667 119.467 392.533 93.867 68.267 213.333 85.333 320 46.933-25.6 55.467-59.733 106.667-106.667 145.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["moon"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 155,
+                "order": 156,
+                "prevSize": 24,
+                "name": "moon"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 154
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M597.333 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M896 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M298.667 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["more-horizontal"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 156,
+                "order": 157,
+                "prevSize": 24,
+                "name": "more-horizontal"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 155
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M597.333 512c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M597.333 213.333c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M597.333 810.667c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["more-vertical"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 157,
+                "order": 158,
+                "prevSize": 24,
+                "name": "more-vertical"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 156
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M977.067 529.067c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-128-128c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l55.467 55.467h-281.6v-281.6l55.467 55.467c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-128-128c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-128 128c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l55.467-55.467v281.6h-281.6l55.467-55.467c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-128 128c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l128 128c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-55.467-55.467h281.6v281.6l-55.467-55.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l128 128c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l128-128c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-55.467 55.467v-281.6h281.6l-55.467 55.467c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l128-128c4.267-4.267 8.533-8.533 8.533-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["move"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 158,
+                "order": 159,
+                "prevSize": 24,
+                "name": "move"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 157
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M921.6 93.867c-8.533-8.533-21.333-8.533-34.133-8.533l-512 85.333c-17.067 4.267-34.133 21.333-34.133 42.667v469.333h-128c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333c72.533 0 128-55.467 128-128v-563.2l426.667-72.533v422.4h-128c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333c72.533 0 128-55.467 128-128v-597.333c0-12.8-4.267-25.6-17.067-34.133zM341.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-85.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h128v42.667zM853.333 725.333c0 25.6-17.067 42.667-42.667 42.667h-85.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h128v42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["music"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 159,
+                "order": 160,
+                "prevSize": 24,
+                "name": "music"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 158
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M968.533 55.467c-12.8-12.8-29.867-17.067-46.933-8.533l-810.667 384c-17.067 8.533-25.6 25.6-25.6 42.667s12.8 34.133 34.133 38.4l315.733 81.067 81.067 315.733c4.267 17.067 21.333 29.867 38.4 34.133 0 0 4.267 0 4.267 0 17.067 0 29.867-8.533 38.4-25.6l384-810.667c4.267-21.333-0-38.4-12.8-51.2zM567.467 768l-55.467-221.867c-4.267-17.067-17.067-25.6-29.867-29.867l-226.133-59.733 593.067-281.6-281.6 593.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["navigation"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 160,
+                "order": 161,
+                "prevSize": 24,
+                "name": "navigation"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 159
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M849.067 883.2l-298.667-810.667c-4.267-17.067-21.333-29.867-38.4-29.867s-34.133 12.8-38.4 29.867l-298.667 810.667c-4.267 17.067 0 34.133 12.8 46.933s34.133 12.8 46.933 4.267l277.333-157.867 277.333 157.867c8.533 4.267 12.8 4.267 21.333 4.267s21.333-4.267 25.6-8.533c17.067-12.8 21.333-34.133 12.8-46.933zM533.333 686.933c-8.533-4.267-12.8-4.267-21.333-4.267s-12.8 0-21.333 4.267l-196.267 110.933 217.6-588.8 217.6 593.067-196.267-115.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["navigation-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 161,
+                "order": 162,
+                "prevSize": 24,
+                "name": "navigation-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 160
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M968.533 307.2l-251.733-251.733c-4.267-8.533-17.067-12.8-29.867-12.8h-349.867c-12.8 0-25.6 4.267-29.867 12.8l-251.733 251.733c-8.533 4.267-12.8 17.067-12.8 29.867v354.133c0 12.8 4.267 21.333 12.8 29.867l251.733 251.733c4.267 4.267 17.067 8.533 29.867 8.533h354.133c12.8 0 21.333-4.267 29.867-12.8l251.733-251.733c8.533-8.533 12.8-17.067 12.8-29.867v-349.867c-4.267-12.8-8.533-25.6-17.067-29.867zM896 669.867l-226.133 226.133h-315.733l-226.133-226.133v-315.733l226.133-226.133h320l221.867 226.133v315.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["octagon"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 162,
+                "order": 163,
+                "prevSize": 24,
+                "name": "octagon"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 161
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M908.8 196.267l-341.333-170.667c0 0 0 0 0 0-34.133-17.067-76.8-17.067-115.2 0l-341.333 170.667c-42.667 21.333-68.267 64-68.267 110.933v405.333c0 46.933 25.6 93.867 72.533 115.2l341.333 170.667c17.067 8.533 38.4 12.8 55.467 12.8 21.333 0 38.4-4.267 55.467-12.8l341.333-170.667c42.667-21.333 72.533-64 72.533-115.2v-405.333c0-46.933-25.6-89.6-72.533-110.933zM494.933 98.133c4.267-4.267 12.8-4.267 17.067-4.267 8.533 0 12.8 0 17.067 4.267l315.733 157.867-119.467 59.733-332.8-166.4 102.4-51.2zM512 422.4l-332.8-166.4 119.467-59.733 332.8 166.4-119.467 59.733zM149.333 755.2c-12.8-8.533-21.333-25.6-21.333-38.4v-392.533l341.333 170.667v418.133l-320-157.867zM870.4 755.2l-315.733 157.867v-418.133l341.333-170.667v392.533c0 17.067-8.533 29.867-25.6 38.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["package"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 163,
+                "order": 164,
+                "prevSize": 24,
+                "name": "package"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 162
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M942.933 439.467c-17.067-17.067-42.667-17.067-59.733 0l-392.533 392.533c-85.333 85.333-217.6 85.333-302.933 0s-85.333-217.6 0-302.933l392.533-392.533c46.933-46.933 132.267-46.933 179.2 0 51.2 51.2 51.2 132.267 0 179.2l-392.533 392.533c-17.067 17.067-42.667 17.067-59.733 0-4.267-4.267-8.533-12.8-8.533-25.6s4.267-21.333 12.8-29.867l362.667-362.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-362.667 362.667c-25.6 21.333-38.4 55.467-38.4 89.6s12.8 68.267 38.4 89.6c51.2 51.2 132.267 51.2 179.2 0l392.533-392.533c85.333-85.333 85.333-217.6 0-302.933-38.4-38.4-93.867-64-149.333-64s-110.933 21.333-149.333 64l-392.533 392.533c-115.2 115.2-115.2 307.2 0 422.4 59.733 59.733 136.533 85.333 213.333 85.333s153.6-29.867 213.333-85.333l392.533-392.533c8.533-12.8 8.533-42.667-8.533-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["paperclip"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 164,
+                "order": 165,
+                "prevSize": 24,
+                "name": "paperclip"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 163
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M426.667 128h-170.667c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667zM384 810.667h-85.333v-597.333h85.333v597.333z",
+                    "M768 128h-170.667c-25.6 0-42.667 17.067-42.667 42.667v682.667c0 25.6 17.067 42.667 42.667 42.667h170.667c25.6 0 42.667-17.067 42.667-42.667v-682.667c0-25.6-17.067-42.667-42.667-42.667zM725.333 810.667h-85.333v-597.333h85.333v597.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["pause"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 165,
+                "order": 166,
+                "prevSize": 24,
+                "name": "pause"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 164
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M426.667 341.333c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M597.333 341.333c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["pause-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 166,
+                "order": 167,
+                "prevSize": 24,
+                "name": "pause-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 165
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M840.533 183.467c-17.067-17.067-42.667-17.067-59.733 0l-597.333 597.333c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l597.333-597.333c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M277.333 426.667c81.067 0 149.333-68.267 149.333-149.333s-68.267-149.333-149.333-149.333-149.333 68.267-149.333 149.333 68.267 149.333 149.333 149.333zM277.333 213.333c34.133 0 64 29.867 64 64s-29.867 64-64 64-64-29.867-64-64 29.867-64 64-64z",
+                    "M746.667 597.333c-81.067 0-149.333 68.267-149.333 149.333s68.267 149.333 149.333 149.333 149.333-68.267 149.333-149.333-68.267-149.333-149.333-149.333zM746.667 810.667c-34.133 0-64-29.867-64-64s29.867-64 64-64 64 29.867 64 64-29.867 64-64 64z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["percent"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 167,
+                "order": 168,
+                "prevSize": 24,
+                "name": "percent"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 166
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 168,
+                "order": 169,
+                "prevSize": 24,
+                "name": "phone"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 167
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z",
+                    "M648.533 0c-21.333-4.267-42.667 12.8-46.933 38.4-4.267 21.333 12.8 42.667 38.4 46.933 157.867 17.067 281.6 140.8 302.933 302.933 4.267 21.333 21.333 38.4 42.667 38.4 0 0 4.267 0 4.267 0 21.333-4.267 38.4-25.6 38.4-46.933-25.6-200.533-183.467-358.4-379.733-379.733z",
+                    "M768 388.267c4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 4.267 0 8.533 0 21.333-4.267 38.4-25.6 34.133-51.2-21.333-102.4-98.133-183.467-200.533-200.533-21.333-4.267-46.933 8.533-51.2 34.133s8.533 46.933 34.133 51.2c68.267 12.8 119.467 64 132.267 132.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-call"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 169,
+                "order": 170,
+                "prevSize": 24,
+                "name": "phone-call"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 168
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 230.4c4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-238.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h238.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8z",
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-forwarded"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 170,
+                "order": 171,
+                "prevSize": 24,
+                "name": "phone-forwarded"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 169
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1011.2 12.8c-17.067-17.067-42.667-17.067-59.733 0l-226.133 226.133v-153.6c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 4.267 0 12.8 4.267 17.067 4.267 8.533 12.8 17.067 21.333 21.333 4.267 4.267 12.8 4.267 17.067 4.267h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-153.6l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-incoming"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 171,
+                "order": 172,
+                "prevSize": 24,
+                "name": "phone-incoming"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 170
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M913.067 170.667l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133z",
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-missed"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 172,
+                "order": 173,
+                "prevSize": 24,
+                "name": "phone-missed"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 171
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M221.867 588.8c8.533 0 17.067-4.267 21.333-8.533 21.333-12.8 25.6-38.4 12.8-59.733-68.267-102.4-110.933-221.867-123.733-345.6 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l55.467-55.467c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-12.8-59.733-68.267-106.667-132.267-106.667 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 8.533 8.533 25.6 17.067 38.4 17.067z",
+                    "M1011.2 12.8c-17.067-17.067-42.667-17.067-59.733 0l-524.8 524.8c0 0 0 0 0 0s0 0 0 0l-413.867 413.867c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l264.533-264.533c38.4 34.133 76.8 64 119.467 89.6 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c0-64-46.933-119.467-110.933-128-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-25.6-17.067-51.2-38.4-76.8-59.733l490.667-490.667c17.067-17.067 17.067-42.667 0-59.733zM580.267 716.8c17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 21.333 4.267 38.4 21.333 38.4 42.667v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-38.4-21.333-72.533-51.2-102.4-81.067l59.733-59.733c34.133 34.133 76.8 64 119.467 89.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 173,
+                "order": 174,
+                "prevSize": 24,
+                "name": "phone-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 172
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 25.6c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z",
+                    "M870.4 593.067c-38.4-4.267-76.8-12.8-110.933-25.6-46.933-17.067-98.133-4.267-136.533 29.867l-29.867 29.867c-76.8-51.2-145.067-115.2-196.267-196.267l29.867-29.867c34.133-34.133 46.933-89.6 29.867-136.533-12.8-34.133-21.333-72.533-25.6-110.933-8.533-64-64-110.933-128-110.933 0 0 0 0 0 0h-128c-4.267 0-8.533 0-12.8 0-34.133 4.267-64 21.333-85.333 46.933s-29.867 59.733-29.867 93.867c12.8 136.533 64 273.067 136.533 388.267 68.267 106.667 162.133 200.533 268.8 268.8 115.2 76.8 251.733 123.733 388.267 136.533 4.267 0 8.533 0 12.8 0 0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4s38.4-55.467 38.4-89.6v-128c-0-64-46.933-119.467-110.933-128zM896 721.067v128c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-34.133 12.8c-123.733-12.8-243.2-55.467-349.867-123.733-98.133-59.733-179.2-145.067-243.2-243.2-68.267-106.667-110.933-226.133-123.733-349.867 0-12.8 4.267-21.333 8.533-29.867 8.533-8.533 21.333-17.067 34.133-17.067h128c0 0 0 0 0 0 21.333 0 38.4 17.067 42.667 38.4 4.267 42.667 17.067 89.6 34.133 128 4.267 17.067 0 34.133-8.533 46.933l-55.467 51.2c-12.8 12.8-17.067 34.133-8.533 51.2 64 115.2 157.867 209.067 273.067 273.067 17.067 8.533 38.4 8.533 51.2-8.533l55.467-55.467c12.8-12.8 29.867-17.067 46.933-8.533 42.667 17.067 85.333 25.6 128 34.133 17.067 4.267 34.133 21.333 34.133 42.667 0 0 0 0 0 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["phone-outgoing"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 174,
+                "order": 175,
+                "prevSize": 24,
+                "name": "phone-outgoing"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 173
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M921.6 640c-21.333-8.533-46.933 0-55.467 21.333-81.067 196.267-307.2 285.867-503.467 204.8s-285.867-307.2-204.8-503.467c38.4-89.6 110.933-162.133 200.533-200.533 21.333-8.533 29.867-34.133 21.333-55.467s-34.133-34.133-55.467-25.6c-110.933 46.933-196.267 136.533-243.2 247.467-102.4 238.933 12.8 516.267 247.467 614.4 59.733 25.6 123.733 38.4 183.467 38.4 183.467 0 358.4-106.667 430.933-285.867 8.533-21.333 0-46.933-21.333-55.467z",
+                    "M512 42.667c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667h426.667c25.6 0 42.667-17.067 42.667-42.667 0-260.267-209.067-469.333-469.333-469.333zM554.667 469.333v-337.067c179.2 21.333 320 162.133 337.067 337.067h-337.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["pie-chart"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 175,
+                "order": 176,
+                "prevSize": 24,
+                "name": "pie-chart"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 174
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M832 477.867l-597.333-384c-12.8-8.533-29.867-8.533-42.667 0-12.8 4.267-21.333 17.067-21.333 34.133v768c0 17.067 8.533 29.867 21.333 38.4 8.533 4.267 12.8 4.267 21.333 4.267s17.067-4.267 21.333-8.533l597.333-384c12.8-8.533 21.333-21.333 21.333-34.133s-8.533-29.867-21.333-34.133zM256 819.2v-614.4l477.867 307.2-477.867 307.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["play"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 176,
+                "order": 177,
+                "prevSize": 24,
+                "name": "play"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 175
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M708.267 477.867l-256-170.667c-12.8-8.533-29.867-8.533-42.667 0-17.067 4.267-25.6 17.067-25.6 34.133v341.333c0 17.067 8.533 29.867 21.333 38.4 8.533 4.267 12.8 4.267 21.333 4.267s17.067-4.267 25.6-8.533l256-170.667c12.8-8.533 17.067-21.333 17.067-34.133s-8.533-25.6-17.067-34.133zM469.333 601.6v-179.2l136.533 89.6-136.533 89.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["play-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 177,
+                "order": 178,
+                "prevSize": 24,
+                "name": "play-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 176
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 469.333h-256v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["plus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 178,
+                "order": 179,
+                "prevSize": 24,
+                "name": "plus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 177
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["plus-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 179,
+                "order": 180,
+                "prevSize": 24,
+                "name": "plus-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 178
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z",
+                    "M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["plus-square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 180,
+                "order": 181,
+                "prevSize": 24,
+                "name": "plus-square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 179
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 85.333h-682.667c-72.533 0-128 55.467-128 128v256c0 260.267 209.067 469.333 469.333 469.333s469.333-209.067 469.333-469.333v-256c0-72.533-55.467-128-128-128zM896 469.333c0 213.333-170.667 384-384 384s-384-170.667-384-384v-256c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v256z",
+                    "M652.8 396.8l-140.8 140.8-140.8-140.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["pocket"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 181,
+                "order": 182,
+                "prevSize": 24,
+                "name": "pocket"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 180
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M814.933 251.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c132.267 132.267 132.267 349.867 0 482.133s-349.867 132.267-482.133 0c-132.267-132.267-132.267-349.867 0-482.133 17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0c-170.667 166.4-170.667 439.467-4.267 605.867 85.333 81.067 192 123.733 302.933 123.733s217.6-42.667 302.933-123.733c166.4-166.4 166.4-439.467 0-605.867z",
+                    "M512 554.667c25.6 0 42.667-17.067 42.667-42.667v-426.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v426.667c0 25.6 17.067 42.667 42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["power"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 182,
+                "order": 183,
+                "prevSize": 24,
+                "name": "power"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 181
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 341.333h-42.667v-256c0-25.6-17.067-42.667-42.667-42.667h-512c-25.6 0-42.667 17.067-42.667 42.667v256h-42.667c-72.533 0-128 55.467-128 128v213.333c0 72.533 55.467 128 128 128h42.667v128c0 25.6 17.067 42.667 42.667 42.667h512c25.6 0 42.667-17.067 42.667-42.667v-128h42.667c72.533 0 128-55.467 128-128v-213.333c0-72.533-55.467-128-128-128zM298.667 128h426.667v213.333h-426.667v-213.333zM725.333 896h-426.667v-256h426.667v256zM896 682.667c0 25.6-17.067 42.667-42.667 42.667h-42.667v-128c0-25.6-17.067-42.667-42.667-42.667h-512c-25.6 0-42.667 17.067-42.667 42.667v128h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-213.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["printer"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 183,
+                "order": 184,
+                "prevSize": 24,
+                "name": "printer"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 182
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 384c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM512 554.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z",
+                    "M844.8 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c149.333 149.333 149.333 392.533 0 541.867-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c183.467-179.2 183.467-477.867 0-661.333z",
+                    "M238.933 238.933c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0c-183.467 183.467-183.467 482.133 0 665.6 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733-149.333-149.333-149.333-396.8 0-546.133z",
+                    "M298.667 512c0-55.467 21.333-110.933 64-149.333 0 0 0 0 0 0 17.067-17.067 12.8-42.667 0-59.733-17.067-17.067-42.667-17.067-59.733 0 0 0 0 0 0 0-115.2 115.2-115.2 307.2 0 422.4 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733-42.667-42.667-64-98.133-64-153.6z",
+                    "M721.067 302.933c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c85.333 81.067 85.333 217.6 4.267 298.667-4.267 4.267-8.533 8.533-12.8 12.8-8.533 21.333 0 46.933 17.067 55.467 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 21.333-4.267 29.867-12.8 123.733-115.2 123.733-302.933 4.267-418.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["radio"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 184,
+                "order": 185,
+                "prevSize": 24,
+                "name": "radio"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 183
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M42.667 469.333h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-149.333l119.467-115.2c34.133-34.133 81.067-64 128-81.067 85.333-29.867 179.2-25.6 260.267 12.8s145.067 106.667 174.933 196.267c8.533 21.333 34.133 34.133 55.467 25.6s34.133-34.133 25.6-55.467c-38.4-106.667-115.2-192-217.6-243.2s-217.6-55.467-324.267-17.067c-59.733 25.6-115.2 59.733-157.867 102.4l-128 119.467v-157.867c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 0 0 4.267 0 4.267 0 4.267 0 8.533 0 8.533 0 4.267 4.267 4.267 4.267 8.533 0 0 0 4.267 4.267 4.267 0 0 0 0 0 0 4.267 4.267 8.533 8.533 12.8 8.533 0 0 0 0 0 0 8.533 8.533 17.067 8.533 21.333 8.533z",
+                    "M1024 588.8c0-4.267 0-4.267 0-8.533s-4.267-4.267-4.267-8.533c0 0 0-4.267-4.267-4.267 0 0 0 0 0 0-4.267-4.267-4.267-4.267-8.533-4.267 0 0-4.267-4.267-4.267-4.267s-4.267 0-4.267 0-8.533 0-12.8-4.267c0 0 0 0 0 0h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h149.333l-119.467 115.2c-132.267 132.267-349.867 132.267-482.133 0-34.133-34.133-64-81.067-81.067-128-8.533-21.333-34.133-34.133-55.467-25.6s-34.133 34.133-25.6 55.467c21.333 59.733 55.467 115.2 102.4 157.867 85.333 85.333 192 123.733 302.933 123.733s217.6-42.667 298.667-123.733l128-119.467v157.867c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c-8.533-4.267-8.533-4.267-8.533-8.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["refresh-ccw"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 185,
+                "order": 186,
+                "prevSize": 24,
+                "name": "refresh-ccw"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 184
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M887.467 601.6c-21.333-8.533-46.933 4.267-55.467 25.6-17.067 46.933-42.667 93.867-81.067 128-59.733 64-149.333 98.133-238.933 98.133 0 0 0 0 0 0-89.6 0-174.933-34.133-243.2-102.4l-119.467-110.933h149.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c0 0 0 0 0 0-4.267 0-8.533 0-8.533 4.267 0 0-4.267 0-4.267 0s-4.267 0-4.267 4.267c-4.267 0-8.533 4.267-8.533 8.533 0 0 0 0 0 0s0 4.267-4.267 4.267c0 4.267-4.267 4.267-4.267 8.533s0 4.267 0 8.533c0 0 0 4.267 0 4.267v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-157.867l123.733 119.467c72.533 81.067 179.2 123.733 294.4 123.733 0 0 0 0 0 0 115.2 0 221.867-42.667 302.933-123.733 42.667-42.667 81.067-98.133 102.4-157.867 4.267-25.6-8.533-51.2-29.867-55.467z",
+                    "M1024 430.933c0 0 0-4.267 0-4.267v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v157.867l-123.733-119.467c-42.667-42.667-98.133-81.067-157.867-102.4-110.933-34.133-226.133-29.867-328.533 21.333-102.4 46.933-179.2 132.267-217.6 243.2-8.533 21.333 4.267 46.933 25.6 51.2 21.333 8.533 46.933-4.267 55.467-25.6 29.867-85.333 93.867-153.6 174.933-196.267 81.067-38.4 174.933-42.667 260.267-12.8 46.933 17.067 93.867 42.667 128 81.067l119.467 115.2h-149.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c4.267 0 12.8 0 17.067-4.267 0 0 0 0 0 0 4.267-4.267 8.533-4.267 12.8-8.533 0 0 0 0 0 0s0-4.267 4.267-4.267c0-4.267 4.267-4.267 4.267-8.533 4.267-4.267 4.267-8.533 4.267-12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["refresh-cw"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 186,
+                "order": 187,
+                "prevSize": 24,
+                "name": "refresh-cw"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 185
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M128 512c25.6 0 42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h494.933l-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c4.267-4.267 8.533-8.533 8.533-12.8 4.267-8.533 4.267-21.333 0-34.133-4.267-4.267-4.267-8.533-8.533-12.8l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133h-494.933c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667z",
+                    "M896 512c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 72.533-55.467 128-128 128h-494.933l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-170.667 170.667c-4.267 4.267-8.533 8.533-8.533 12.8-4.267 8.533-4.267 21.333 0 34.133 4.267 4.267 4.267 8.533 8.533 12.8l170.667 170.667c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133h494.933c119.467 0 213.333-93.867 213.333-213.333v-85.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["repeat"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 187,
+                "order": 188,
+                "prevSize": 24,
+                "name": "repeat"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 186
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-384 298.667c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l384 298.667c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c0-17.067-8.533-29.867-25.6-38.4zM426.667 725.333l-273.067-213.333 273.067-213.333v426.667z",
+                    "M955.733 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-384 298.667c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l384 298.667c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c0-17.067-8.533-29.867-25.6-38.4zM896 725.333l-273.067-213.333 273.067-213.333v426.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["rewind"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 188,
+                "order": 189,
+                "prevSize": 24,
+                "name": "rewind"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 187
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M913.067 371.2c-38.4-106.667-115.2-192-217.6-243.2s-217.6-55.467-324.267-17.067c-59.733 21.333-115.2 55.467-157.867 98.133l-128 119.467v-157.867c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v256c0 0 0 4.267 0 4.267 0 4.267 0 8.533 0 8.533 0 4.267 4.267 4.267 4.267 8.533 0 0 0 4.267 4.267 4.267 0 0 0 0 0 0 4.267 4.267 4.267 4.267 8.533 4.267 0 0 4.267 4.267 4.267 4.267s4.267 0 4.267 0 8.533 0 8.533 0c0 0 0 0 0 0h256c25.6 0 42.667-17.067 42.667-42.667s-8.533-34.133-34.133-34.133h-149.333l119.467-115.2c34.133-34.133 81.067-64 128-81.067 85.333-29.867 179.2-25.6 260.267 12.8s145.067 106.667 174.933 196.267c29.867 85.333 25.6 179.2-12.8 260.267s-106.667 145.067-196.267 174.933c-179.2 64-371.2-29.867-435.2-209.067-8.533-21.333-34.133-34.133-55.467-25.6s-34.133 34.133-25.6 55.467c64 174.933 230.4 285.867 405.333 285.867 46.933 0 93.867-8.533 140.8-25.6 221.867-76.8 341.333-320 260.267-541.867z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["rotate-ccw"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 189,
+                "order": 190,
+                "prevSize": 24,
+                "name": "rotate-ccw"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 188
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1024 430.933c0 0 0-4.267 0-4.267v-256c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v157.867l-123.733-119.467c-42.667-42.667-98.133-81.067-157.867-102.4-226.133-76.8-469.333 42.667-546.133 264.533s38.4 465.067 260.267 546.133c46.933 12.8 93.867 21.333 140.8 21.333 174.933 0 341.333-110.933 401.067-285.867 8.533-21.333-4.267-46.933-25.6-55.467s-46.933 4.267-55.467 25.6c-64 179.2-256 268.8-435.2 209.067-179.2-64-268.8-256-209.067-435.2 64-174.933 260.267-268.8 439.467-204.8 46.933 17.067 93.867 42.667 128 81.067l119.467 110.933h-149.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c0 0 0 0 0 0 4.267 0 8.533 0 8.533-4.267 0 0 4.267 0 4.267 0s4.267-4.267 4.267-4.267c4.267 0 8.533-4.267 8.533-8.533 0 0 0 0 0 0s0-4.267 4.267-4.267c0-4.267 4.267-4.267 4.267-8.533 8.533-0 8.533-4.267 8.533-8.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["rotate-cw"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 190,
+                "order": 191,
+                "prevSize": 24,
+                "name": "rotate-cw"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 189
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M170.667 426.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667c187.733 0 341.333 153.6 341.333 341.333 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-234.667-192-426.667-426.667-426.667z",
+                    "M170.667 128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667c354.133 0 640 285.867 640 640 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-401.067-324.267-725.333-725.333-725.333z",
+                    "M298.667 810.667c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["rss"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 191,
+                "order": 192,
+                "prevSize": 24,
+                "name": "rss"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 190
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 311.467l-213.333-213.333c-8.533-8.533-17.067-12.8-29.867-12.8h-469.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-469.333c0-12.8-4.267-21.333-12.8-29.867zM682.667 853.333h-341.333v-256h341.333v256zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667h-426.667c-25.6 0-42.667 17.067-42.667 42.667v298.667h-42.667c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h42.667v170.667c0 25.6 17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-298.667v-128h324.267l187.733 187.733v452.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["save"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 192,
+                "order": 193,
+                "prevSize": 24,
+                "name": "save"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 191
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M883.2 200.533c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-311.467 311.467-110.933-110.933c17.067-25.6 25.6-55.467 25.6-85.333 0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667 76.8 170.667 170.667 170.667c29.867 0 59.733-8.533 85.333-25.6l110.933 110.933-110.933 110.933c-25.6-17.067-55.467-25.6-85.333-25.6-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-29.867-8.533-59.733-25.6-85.333l482.133-482.133zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 25.6-8.533 42.667-25.6 59.733 0 0 0 0 0 0s0 0 0 0c-17.067 17.067-34.133 25.6-59.733 25.6-46.933 0-85.333-38.4-85.333-85.333zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c25.6 0 42.667 8.533 59.733 25.6 0 0 0 0 0 0s0 0 0 0c17.067 17.067 25.6 34.133 25.6 59.733 0 46.933-38.4 85.333-85.333 85.333z",
+                    "M648.533 588.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l234.667 234.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-234.667-234.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["scissors"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 193,
+                "order": 194,
+                "prevSize": 24,
+                "name": "scissors"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 192
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["search"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 194,
+                "order": 195,
+                "prevSize": 24,
+                "name": "search"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 193
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 81.067c0-4.267 0-8.533-4.267-12.8 0 0 0-4.267 0-4.267 0-4.267-4.267-8.533-8.533-12.8s-8.533-4.267-12.8-8.533c0 0-4.267 0-4.267 0-4.267 0-8.533 0-12.8-4.267 0 4.267 0 4.267 0 4.267-4.267 0-8.533 0-12.8 4.267l-853.333 298.667c-17.067 4.267-29.867 17.067-29.867 38.4 0 17.067 8.533 34.133 25.6 42.667l366.933 162.133 162.133 366.933c8.533 17.067 21.333 25.6 38.4 25.6 0 0 0 0 0 0 17.067 0 34.133-12.8 38.4-29.867l298.667-853.333c8.533-4.267 8.533-8.533 8.533-17.067 0 4.267 0 4.267 0 0zM776.533 187.733l-315.733 315.733-260.267-115.2 576-200.533zM635.733 823.467l-115.2-260.267 315.733-315.733-200.533 576z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["send"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 195,
+                "order": 196,
+                "prevSize": 24,
+                "name": "send"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 194
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 42.667h-682.667c-72.533 0-128 55.467-128 128v170.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-170.667c0-72.533-55.467-128-128-128zM896 341.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v170.667z",
+                    "M853.333 554.667h-682.667c-72.533 0-128 55.467-128 128v170.667c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-170.667c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v170.667z",
+                    "M226.133 226.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z",
+                    "M226.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["server"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 196,
+                "order": 197,
+                "prevSize": 24,
+                "name": "server"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 195
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667zM512 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z",
+                    "M866.133 657.067c4.267-8.533 12.8-17.067 29.867-17.067 72.533 0 128-55.467 128-128s-55.467-128-128-128h-8.533c-8.533 0-17.067-4.267-21.333-12.8 0-4.267 0-4.267-4.267-8.533-4.267-8.533-4.267-21.333 8.533-34.133 51.2-51.2 51.2-132.267 0-179.2v0c0 0 0 0 0 0-25.6-25.6-55.467-38.4-89.6-38.4 0 0 0 0 0 0-34.133 0-68.267 12.8-93.867 38.4-8.533 8.533-21.333 8.533-29.867 4.267-8.533 0-17.067-12.8-17.067-25.6 0-72.533-55.467-128-128-128s-128 55.467-128 128v8.533c0 8.533-4.267 17.067-12.8 21.333-4.267 0-4.267 0-8.533 4.267-8.533 4.267-21.333 0-34.133-8.533-51.2-51.2-132.267-51.2-179.2 0-51.2 51.2-51.2 132.267 4.267 183.467 8.533 8.533 8.533 21.333 4.267 34.133-4.267 8.533-17.067 17.067-29.867 17.067-72.533 0-128 55.467-128 128s55.467 128 128 128h8.533c12.8 0 21.333 8.533 25.6 17.067s4.267 21.333-8.533 34.133c-25.6 25.6-38.4 55.467-38.4 89.6s12.8 64 38.4 89.6c0 0 0 0 0 0 51.2 51.2 132.267 51.2 183.467-4.267 8.533-8.533 21.333-8.533 34.133-4.267s17.067 12.8 17.067 29.867c0 72.533 55.467 128 128 128s128-55.467 128-128v-8.533c0-12.8 8.533-21.333 17.067-25.6s21.333-4.267 34.133 8.533c51.2 51.2 132.267 51.2 179.2 0 51.2-51.2 51.2-132.267-4.267-183.467-4.267-8.533-8.533-21.333-4.267-29.867 0 0 0 0 0 0zM789.333 622.933c-17.067 42.667-8.533 89.6 25.6 128 8.533 8.533 12.8 17.067 12.8 29.867s-4.267 21.333-12.8 29.867c-8.533 8.533-17.067 12.8-29.867 12.8 0 0 0 0 0 0-12.8 0-21.333-4.267-34.133-17.067-34.133-34.133-81.067-42.667-123.733-21.333-42.667 17.067-68.267 59.733-68.267 102.4v8.533c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667c0 0 0-4.267 0-4.267 0-46.933-29.867-85.333-72.533-102.4-12.8-8.533-29.867-8.533-46.933-8.533-29.867 0-59.733 12.8-81.067 34.133-17.067 17.067-42.667 17.067-59.733 0 0 0 0 0 0 0v0c-8.533-8.533-12.8-17.067-12.8-29.867s4.267-21.333 17.067-34.133c34.133-34.133 42.667-81.067 21.333-123.733-17.067-42.667-59.733-68.267-102.4-68.267h-8.533c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667c0 0 4.267 0 4.267 0 46.933 0 85.333-29.867 102.4-72.533s8.533-89.6-25.6-128c-17.067-17.067-17.067-42.667 0-59.733s42.667-17.067 64 4.267c29.867 29.867 76.8 38.4 115.2 25.6 4.267 0 8.533 0 12.8-4.267 42.667-17.067 68.267-59.733 68.267-102.4v-8.533c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 46.933c0 46.933 25.6 85.333 68.267 102.4s89.6 8.533 128-25.6c8.533-8.533 17.067-12.8 29.867-12.8v0c12.8 0 21.333 4.267 29.867 12.8 0 0 0 0 0 0 17.067 17.067 17.067 42.667-4.267 64-29.867 29.867-38.4 76.8-25.6 115.2 0 4.267 0 8.533 4.267 12.8 17.067 42.667 59.733 68.267 102.4 68.267h8.533c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-46.933 42.667c-42.667-0-85.333 25.6-102.4 68.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["settings"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 197,
+                "order": 198,
+                "prevSize": 24,
+                "name": "settings"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 196
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 469.333c-25.6 0-42.667 17.067-42.667 42.667v341.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-341.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v341.333c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-341.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M371.2 285.867l98.133-98.133v452.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-452.267l98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["share"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 198,
+                "order": 199,
+                "prevSize": 24,
+                "name": "share"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 197
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 640c-46.933 0-89.6 21.333-119.467 51.2l-226.133-132.267c0-17.067 4.267-29.867 4.267-46.933s-4.267-29.867-8.533-46.933l226.133-132.267c34.133 29.867 76.8 51.2 123.733 51.2 93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667-170.667 76.8-170.667 170.667c0 17.067 4.267 29.867 8.533 46.933l-230.4 132.267c-29.867-29.867-72.533-51.2-119.467-51.2-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667c46.933 0 89.6-21.333 119.467-51.2l226.133 132.267c-0 17.067-4.267 29.867-4.267 46.933 0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667-76.8-170.667-170.667-170.667zM768 128c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM256 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333zM768 896c-46.933 0-85.333-38.4-85.333-85.333 0-17.067 4.267-29.867 12.8-42.667 0 0 0 0 0 0s0 0 0 0c12.8-25.6 42.667-42.667 72.533-42.667 46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["share-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 199,
+                "order": 200,
+                "prevSize": 24,
+                "name": "share-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 198
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M870.4 174.933l-341.333-128c-8.533-4.267-21.333-4.267-29.867 0l-341.333 128c-17.067 4.267-29.867 21.333-29.867 38.4v298.667c0 277.333 349.867 456.533 366.933 465.067 4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 17.067-4.267c17.067-8.533 366.933-187.733 366.933-465.067v-298.667c0-17.067-12.8-34.133-25.6-38.4zM810.667 512c0 192-230.4 337.067-298.667 379.733-68.267-38.4-298.667-183.467-298.667-379.733v-268.8l298.667-110.933 298.667 110.933v268.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["shield"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 200,
+                "order": 201,
+                "prevSize": 24,
+                "name": "shield"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 199
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M392.533 174.933l119.467-42.667 298.667 110.933v268.8c0 25.6-4.267 51.2-12.8 72.533s4.267 46.933 29.867 51.2c4.267 0 8.533 0 12.8 0 17.067 0 34.133-12.8 42.667-29.867 8.533-29.867 12.8-64 17.067-98.133v-294.4c0-17.067-12.8-34.133-25.6-38.4l-341.333-128c-8.533-4.267-21.333-4.267-29.867 0l-140.8 46.933c-21.333 8.533-34.133 34.133-25.6 55.467s34.133 34.133 55.467 25.6z",
+                    "M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l119.467 119.467c0 8.533-4.267 12.8-4.267 21.333v298.667c0 277.333 349.867 456.533 366.933 465.067 4.267 4.267 8.533 4.267 17.067 4.267s12.8 0 21.333-4.267c81.067-42.667 153.6-98.133 221.867-162.133l200.533 200.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c12.8-21.333 12.8-46.933-4.267-64zM512 891.733c-68.267-38.4-298.667-183.467-298.667-379.733v-238.933l477.867 477.867c-51.2 55.467-110.933 102.4-179.2 140.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["shield-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 201,
+                "order": 202,
+                "prevSize": 24,
+                "name": "shield-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 200
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M934.4 238.933c0 0 0-4.267-4.267-4.267 0 0 0-4.267-4.267-4.267l-128-170.667c-4.267-12.8-17.067-17.067-29.867-17.067h-512c-12.8 0-25.6 4.267-34.133 17.067l-128 170.667c0 0 0 4.267-4.267 4.267 0 0 0 4.267-4.267 4.267 0 8.533 0 12.8 0 17.067v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-4.267 0-8.533-4.267-17.067zM277.333 128h469.333l64 85.333h-597.333l64-85.333zM810.667 896h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-554.667h682.667v554.667c0 25.6-17.067 42.667-42.667 42.667z",
+                    "M682.667 384c-25.6 0-42.667 17.067-42.667 42.667 0 72.533-55.467 128-128 128s-128-55.467-128-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667c0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["shopping-bag"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 202,
+                "order": 203,
+                "prevSize": 24,
+                "name": "shopping-bag"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 201
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M469.333 896c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M938.667 896c0 47.128-38.205 85.333-85.333 85.333s-85.333-38.205-85.333-85.333c0-47.128 38.205-85.333 85.333-85.333s85.333 38.205 85.333 85.333z",
+                    "M1015.467 230.4c-8.533-12.8-21.333-17.067-34.133-17.067h-691.2l-34.133-179.2c-4.267-21.333-21.333-34.133-42.667-34.133h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h136.533l34.133 179.2c0 0 0 4.267 0 4.267l72.533 354.133c12.8 59.733 64 102.4 123.733 102.4 0 0 0 0 4.267 0h413.867c64 0 115.2-42.667 128-102.4l68.267-358.4c0-12.8 0-25.6-8.533-34.133zM870.4 605.867c-4.267 21.333-21.333 34.133-42.667 34.133h-413.867c-21.333 0-38.4-12.8-42.667-34.133l-64-307.2h622.933l-59.733 307.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["shopping-cart"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 203,
+                "order": 204,
+                "prevSize": 24,
+                "name": "shopping-cart"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 202
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-213.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h110.933l-652.8 652.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l652.8-652.8v110.933c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-213.333c0-4.267 0-12.8-4.267-17.067z",
+                    "M896 640c-25.6 0-42.667 17.067-42.667 42.667v110.933l-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l183.467 183.467h-110.933c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h213.333c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-213.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M354.133 413.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l213.333 213.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["shuffle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 204,
+                "order": 205,
+                "prevSize": 24,
+                "name": "shuffle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 203
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM170.667 810.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h128v682.667h-128c-25.6 0-42.667-17.067-42.667-42.667zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-384v-682.667h384c25.6 0 42.667 17.067 42.667 42.667v597.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["sidebar"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 205,
+                "order": 206,
+                "prevSize": 24,
+                "name": "sidebar"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 204
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M827.733 132.267c-12.8-8.533-34.133-4.267-46.933 4.267l-426.667 341.333c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 17.067 34.133l426.667 341.333c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-682.667c0-17.067-8.533-29.867-25.6-38.4zM768 763.733l-315.733-251.733 315.733-251.733v503.467z",
+                    "M213.333 170.667c-25.6 0-42.667 17.067-42.667 42.667v597.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-597.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["skip-back"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 206,
+                "order": 207,
+                "prevSize": 24,
+                "name": "skip-back"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 205
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M238.933 136.533c-12.8-8.533-29.867-12.8-42.667-4.267-17.067 8.533-25.6 21.333-25.6 38.4v682.667c0 17.067 8.533 29.867 25.6 38.4 4.267 4.267 12.8 4.267 17.067 4.267 8.533 0 17.067-4.267 25.6-8.533l426.667-341.333c8.533-8.533 17.067-21.333 17.067-34.133s-4.267-25.6-17.067-34.133l-426.667-341.333zM256 763.733v-503.467l315.733 251.733-315.733 251.733z",
+                    "M810.667 170.667c-25.6 0-42.667 17.067-42.667 42.667v597.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-597.333c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["skip-forward"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 207,
+                "order": 208,
+                "prevSize": 24,
+                "name": "skip-forward"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 206
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 371.2c-55.467-179.2-119.467-281.6-217.6-332.8-89.6-51.2-213.333-51.2-392.533 4.267-345.6 102.4-435.2 268.8-328.533 610.133 76.8 256 187.733 371.2 379.733 371.2 68.267 0 140.8-12.8 230.4-38.4 341.333-106.667 435.2-273.067 328.533-614.4zM627.2 900.267c-298.667 89.6-413.867 25.6-503.467-273.067-89.6-294.4-25.6-413.867 273.067-503.467 85.333-25.6 153.6-38.4 209.067-38.4 46.933 0 89.6 8.533 123.733 25.6 72.533 38.4 128 128 174.933 281.6 0 0 0 0 0 0 85.333 298.667 21.333 418.133-277.333 507.733z",
+                    "M755.2 494.933l-81.067 29.867-42.667-119.467 81.067-29.867c21.333-8.533 34.133-29.867 25.6-55.467-8.533-21.333-29.867-34.133-55.467-25.6l-81.067 29.867-29.867-81.067c-8.533-21.333-29.867-34.133-55.467-25.6-21.333 8.533-34.133 29.867-25.6 55.467l29.867 81.067-119.467 42.667-25.6-85.333c-8.533-21.333-34.133-34.133-55.467-25.6-21.333 4.267-34.133 29.867-25.6 51.2l29.867 81.067-81.067 29.867c-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267l81.067-29.867 42.667 119.467-81.067 29.867c-21.333 8.533-34.133 29.867-25.6 55.467 4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267l81.067-29.867 29.867 81.067c4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 21.333-8.533 34.133-29.867 25.6-55.467l-29.867-81.067 119.467-42.667 29.867 81.067c4.267 17.067 21.333 29.867 38.4 29.867 4.267 0 8.533 0 12.8-4.267 21.333-8.533 34.133-29.867 25.6-55.467l-29.867-81.067 81.067-29.867c21.333-8.533 34.133-29.867 25.6-55.467 4.267-12.8-21.333-25.6-42.667-17.067zM473.6 593.067l-42.667-119.467 119.467-42.667 42.667 119.467-119.467 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["slack"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 208,
+                "order": 209,
+                "prevSize": 24,
+                "name": "slack"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 207
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M844.8 844.8c85.333-85.333 136.533-200.533 136.533-332.8 0-260.267-209.067-469.333-469.333-469.333-128 0-247.467 51.2-332.8 136.533 0 0 0 0 0 0s0 0 0 0c-85.333 85.333-136.533 204.8-136.533 332.8 0 260.267 209.067 469.333 469.333 469.333 128 0 247.467-51.2 332.8-136.533 0 0 0 0 0 0s0 0 0 0zM896 512c0 89.6-29.867 174.933-85.333 238.933l-537.6-537.6c64-55.467 149.333-85.333 238.933-85.333 213.333 0 384 170.667 384 384zM128 512c0-89.6 29.867-174.933 85.333-238.933l537.6 537.6c-64 51.2-149.333 85.333-238.933 85.333-213.333 0-384-170.667-384-384z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["slash"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 209,
+                "order": 210,
+                "prevSize": 24,
+                "name": "slash"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 208
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M170.667 469.333c25.6 0 42.667-17.067 42.667-42.667v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 25.6 17.067 42.667 42.667 42.667z",
+                    "M512 469.333c-25.6 0-42.667 17.067-42.667 42.667v384c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-384c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M853.333 554.667c25.6 0 42.667-17.067 42.667-42.667v-384c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v384c0 25.6 17.067 42.667 42.667 42.667z",
+                    "M298.667 554.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M640 298.667h-85.333v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M981.333 640h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-170.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["sliders"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 210,
+                "order": 211,
+                "prevSize": 24,
+                "name": "sliders"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 209
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M725.333 42.667h-426.667c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h426.667c25.6 0 42.667 17.067 42.667 42.667v682.667z",
+                    "M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["smartphone"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 211,
+                "order": 212,
+                "prevSize": 24,
+                "name": "smartphone"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 210
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 42.667h-512c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v682.667z",
+                    "M512 384c-119.467 0-213.333 93.867-213.333 213.333s93.867 213.333 213.333 213.333 213.333-93.867 213.333-213.333-93.867-213.333-213.333-213.333zM512 725.333c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128z",
+                    "M512 298.667c12.8 0 21.333-4.267 29.867-12.8s12.8-17.067 12.8-29.867c0-12.8-4.267-21.333-12.8-29.867-17.067-17.067-46.933-17.067-59.733 0-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["speaker"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 212,
+                "order": 213,
+                "prevSize": 24,
+                "name": "speaker"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 211
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 213,
+                "order": 214,
+                "prevSize": 24,
+                "name": "square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 212
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 384c-4.267-17.067-17.067-25.6-34.133-29.867l-273.067-38.4-123.733-247.467c-12.8-29.867-64-29.867-76.8 0l-123.733 243.2-268.8 42.667c-17.067 0-29.867 12.8-38.4 29.867-4.267 17.067 0 34.133 12.8 42.667l196.267 192-46.933 273.067c-4.267 17.067 4.267 34.133 17.067 42.667s29.867 12.8 46.933 4.267l243.2-128 243.2 128c8.533 0 12.8 0 21.333 0s17.067-4.267 25.6-8.533c12.8-8.533 21.333-25.6 17.067-42.667l-46.933-273.067 196.267-192c12.8-8.533 17.067-25.6 12.8-38.4zM695.467 571.733c-8.533 12.8-12.8 25.6-12.8 38.4l34.133 209.067-187.733-98.133c-12.8-8.533-25.6-8.533-38.4 0l-187.733 98.133 38.4-209.067c0-12.8-4.267-25.6-12.8-38.4l-153.6-145.067 209.067-29.867c12.8 0 25.6-12.8 34.133-21.333l93.867-192 93.867 187.733c4.267 12.8 17.067 21.333 34.133 21.333l209.067 29.867-153.6 149.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["star"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 214,
+                "order": 215,
+                "prevSize": 24,
+                "name": "star"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 213
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M640 341.333h-256c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667zM597.333 597.333h-170.667v-170.667h170.667v170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["stop-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 215,
+                "order": 216,
+                "prevSize": 24,
+                "name": "stop-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 214
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 256c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM512 682.667c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667c93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667z",
+                    "M512 170.667c25.6 0 42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667z",
+                    "M512 853.333c-25.6 0-42.667 17.067-42.667 42.667v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M209.067 268.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z",
+                    "M814.933 755.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733z",
+                    "M170.667 512c0-25.6-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667z",
+                    "M981.333 469.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M209.067 755.2l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0z",
+                    "M785.067 281.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["sun"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 216,
+                "order": 217,
+                "prevSize": 24,
+                "name": "sun"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 215
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 512c-140.8 0-256 115.2-256 256 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-140.8-115.2-256-256-256z",
+                    "M209.067 524.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z",
+                    "M42.667 810.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M853.333 768c0 25.6 17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667z",
+                    "M785.067 537.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z",
+                    "M981.333 896h-938.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h938.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M371.2 285.867l98.133-98.133v196.267c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-196.267l98.133 98.133c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["sunrise"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 217,
+                "order": 218,
+                "prevSize": 24,
+                "name": "sunrise"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 216
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 512c-140.8 0-256 115.2-256 256 0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-93.867 76.8-170.667 170.667-170.667s170.667 76.8 170.667 170.667c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667c0-140.8-115.2-256-256-256z",
+                    "M209.067 524.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-59.733-59.733c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l59.733 59.733z",
+                    "M42.667 810.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M853.333 768c0 25.6 17.067 42.667 42.667 42.667h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333c-25.6 0-42.667 17.067-42.667 42.667z",
+                    "M785.067 537.6c12.8 0 21.333-4.267 29.867-12.8l59.733-59.733c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-59.733 59.733c-17.067 17.067-17.067 42.667 0 59.733 4.267 8.533 17.067 12.8 29.867 12.8z",
+                    "M981.333 896h-938.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h938.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z",
+                    "M482.133 413.867c4.267 4.267 8.533 8.533 12.8 8.533 4.267 4.267 12.8 4.267 17.067 4.267s12.8 0 17.067-4.267c4.267-4.267 8.533-4.267 12.8-8.533l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133v-196.267c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v196.267l-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l170.667 170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["sunset"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 218,
+                "order": 219,
+                "prevSize": 24,
+                "name": "sunset"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 217
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M768 42.667h-512c-72.533 0-128 55.467-128 128v682.667c0 72.533 55.467 128 128 128h512c72.533 0 128-55.467 128-128v-682.667c0-72.533-55.467-128-128-128zM810.667 853.333c0 25.6-17.067 42.667-42.667 42.667h-512c-25.6 0-42.667-17.067-42.667-42.667v-682.667c0-25.6 17.067-42.667 42.667-42.667h512c25.6 0 42.667 17.067 42.667 42.667v682.667z",
+                    "M482.133 738.133c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["tablet"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 219,
+                "order": 220,
+                "prevSize": 24,
+                "name": "tablet"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 218
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M908.8 422.4l-366.933-366.933c-8.533-8.533-17.067-12.8-29.867-12.8h-426.667c-25.6 0-42.667 17.067-42.667 42.667v426.667c0 12.8 4.267 21.333 12.8 29.867l366.933 366.933c25.6 25.6 59.733 38.4 89.6 38.4 34.133 0 64-12.8 89.6-38.4l307.2-307.2c0 0 0 0 0 0 51.2-51.2 51.2-128 0-179.2zM849.067 541.867l-307.2 307.2c-17.067 17.067-42.667 17.067-59.733 0l-354.133-354.133v-366.933h366.933l354.133 354.133c17.067 17.067 17.067 42.667 0 59.733z",
+                    "M268.8 268.8c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["tag"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 220,
+                "order": 221,
+                "prevSize": 24,
+                "name": "tag"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 219
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M512 213.333c-166.4 0-298.667 132.267-298.667 298.667s132.267 298.667 298.667 298.667c166.4 0 298.667-132.267 298.667-298.667s-132.267-298.667-298.667-298.667zM512 725.333c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333 213.333 93.867 213.333 213.333-93.867 213.333-213.333 213.333z",
+                    "M512 384c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM512 554.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["target"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 221,
+                "order": 222,
+                "prevSize": 24,
+                "name": "target"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 220
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M456.533 439.467l-256-256c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l256-256c17.067-17.067 17.067-42.667 0-59.733z",
+                    "M853.333 768h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["terminal"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 222,
+                "order": 223,
+                "prevSize": 24,
+                "name": "terminal"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 221
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M686.933 657.067c-12.8-21.333-29.867-34.133-46.933-51.2v-456.533c0-81.067-68.267-149.333-149.333-149.333s-149.333 68.267-149.333 149.333v460.8c-93.867 76.8-115.2 209.067-46.933 311.467 34.133 51.2 89.6 89.6 149.333 98.133 17.067 4.267 29.867 4.267 46.933 4.267 46.933 0 89.6-12.8 128-38.4 110.933-72.533 140.8-217.6 68.267-328.533zM571.733 913.067c-68.267 46.933-162.133 25.6-209.067-42.667-21.333-34.133-29.867-72.533-21.333-110.933s29.867-72.533 64-93.867c12.8-8.533 17.067-21.333 17.067-34.133v-482.133c4.267-34.133 34.133-64 68.267-64s64 29.867 64 64v482.133c0 12.8 8.533 25.6 17.067 34.133 17.067 12.8 29.867 25.6 42.667 42.667 46.933 68.267 25.6 157.867-42.667 204.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["thermometer"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 223,
+                "order": 224,
+                "prevSize": 24,
+                "name": "thermometer"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 222
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 166.4c-8.533-72.533-68.267-123.733-140.8-123.733 0 0 0 0-4.267 0h-593.067c-64 0-115.2 46.933-128 106.667l-59.733 384c-8.533 68.267 38.4 136.533 106.667 145.067 8.533 0 12.8 0 21.333 0h200.533v128c0 93.867 76.8 170.667 170.667 170.667 17.067 0 34.133-8.533 38.4-25.6l157.867-358.4h85.333c72.533 0 132.267-51.2 140.8-123.733 0 0 0-4.267 0-4.267v-294.4c4.267 0 4.267-4.267 4.267-4.267zM682.667 546.133l-153.6 345.6c-34.133-12.8-59.733-42.667-59.733-81.067v-170.667c0-25.6-17.067-42.667-42.667-42.667h-243.2c0 0-4.267 0-8.533 0-21.333-4.267-38.4-25.6-34.133-46.933l59.733-384c4.267-21.333 21.333-38.4 42.667-38.4h439.467v418.133zM896 465.067c-4.267 25.6-29.867 46.933-55.467 46.933h-72.533v-384h72.533c25.6-4.267 51.2 17.067 55.467 46.933v290.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["thumbs-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 224,
+                "order": 225,
+                "prevSize": 24,
+                "name": "thumbs-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 223
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M942.933 392.533c-21.333-25.6-51.2-46.933-85.333-51.2-8.533 0-12.8 0-21.333 0h-196.267v-128c0-93.867-76.8-170.667-170.667-170.667-17.067 0-34.133 8.533-38.4 25.6l-157.867 358.4h-102.4c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h610.133c0 0 0 0 0 0 64 0 115.2-46.933 128-106.667l59.733-384c4.267-34.133-4.267-68.267-25.6-98.133zM256 896h-85.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h85.333v384zM823.467 861.867c-4.267 21.333-21.333 34.133-42.667 34.133 0 0 0 0 0 0h-439.467v-418.133l153.6-345.6c34.133 12.8 59.733 42.667 59.733 81.067v170.667c0 25.6 17.067 42.667 42.667 42.667h243.2c4.267 0 4.267 0 8.533 0 12.8 0 21.333 8.533 29.867 17.067s8.533 21.333 8.533 29.867l-64 388.267z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["thumbs-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 225,
+                "order": 226,
+                "prevSize": 24,
+                "name": "thumbs-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 224
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 170.667h-341.333c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333h341.333c187.733 0 341.333-153.6 341.333-341.333s-153.6-341.333-341.333-341.333zM682.667 768h-341.333c-140.8 0-256-115.2-256-256s115.2-256 256-256h341.333c140.8 0 256 115.2 256 256s-115.2 256-256 256z",
+                    "M341.333 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-93.867-76.8-170.667-170.667-170.667zM341.333 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["toggle-left"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 226,
+                "order": 227,
+                "prevSize": 24,
+                "name": "toggle-left"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 225
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 170.667h-341.333c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333h341.333c187.733 0 341.333-153.6 341.333-341.333s-153.6-341.333-341.333-341.333zM682.667 768h-341.333c-140.8 0-256-115.2-256-256s115.2-256 256-256h341.333c140.8 0 256 115.2 256 256s-115.2 256-256 256z",
+                    "M682.667 341.333c-93.867 0-170.667 76.8-170.667 170.667s76.8 170.667 170.667 170.667 170.667-76.8 170.667-170.667c0-93.867-76.8-170.667-170.667-170.667zM682.667 597.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333c0 46.933-38.4 85.333-85.333 85.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["toggle-right"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 227,
+                "order": 228,
+                "prevSize": 24,
+                "name": "toggle-right"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 226
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 213.333h-170.667v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667v554.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-554.667h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM384 170.667c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-554.667h512v554.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["trash"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 228,
+                "order": 229,
+                "prevSize": 24,
+                "name": "trash"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 227
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 213.333h-170.667v-42.667c0-72.533-55.467-128-128-128h-170.667c-72.533 0-128 55.467-128 128v42.667h-170.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h42.667v554.667c0 72.533 55.467 128 128 128h426.667c72.533 0 128-55.467 128-128v-554.667h42.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667zM384 170.667c0-25.6 17.067-42.667 42.667-42.667h170.667c25.6 0 42.667 17.067 42.667 42.667v42.667h-256v-42.667zM768 853.333c0 25.6-17.067 42.667-42.667 42.667h-426.667c-25.6 0-42.667-17.067-42.667-42.667v-554.667h512v554.667z",
+                    "M426.667 426.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M597.333 426.667c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["trash-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 229,
+                "order": 230,
+                "prevSize": 24,
+                "name": "trash-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 228
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1024 512c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v153.6l-332.8-332.8c-17.067-17.067-42.667-17.067-59.733 0l-183.467 183.467-290.133-290.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l320 320c17.067 17.067 42.667 17.067 59.733 0l183.467-183.467 302.933 302.933h-153.6c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c4.267 0 12.8 0 17.067-4.267 8.533-4.267 17.067-12.8 21.333-21.333 4.267-4.267 4.267-12.8 4.267-17.067v-256z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["trending-down"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 230,
+                "order": 231,
+                "prevSize": 24,
+                "name": "trending-down"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 229
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1019.733 238.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-302.933 302.933-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0l-320 320c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l290.133-290.133 183.467 183.467c17.067 17.067 42.667 17.067 59.733 0l332.8-332.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["trending-up"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 231,
+                "order": 232,
+                "prevSize": 24,
+                "name": "trending-up"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 230
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M981.333 746.667l-358.4-605.867c-17.067-29.867-46.933-51.2-81.067-59.733s-68.267-4.267-98.133 12.8c-17.067 8.533-34.133 25.6-42.667 42.667 0 0 0 0 0 0l-358.4 610.133c-34.133 59.733-12.8 140.8 46.933 174.933 17.067 12.8 38.4 17.067 59.733 17.067h725.333c34.133 0 68.267-12.8 89.6-38.4 25.6-25.6 38.4-55.467 38.4-89.6-4.267-21.333-8.533-46.933-21.333-64zM904.533 840.533c-8.533 8.533-21.333 12.8-29.867 12.8h-725.333c-8.533 0-12.8 0-21.333-4.267-21.333-12.8-25.6-38.4-17.067-59.733l362.667-601.6c4.267-4.267 8.533-12.8 12.8-12.8 21.333-12.8 46.933-4.267 59.733 12.8l362.667 601.6c4.267 4.267 4.267 12.8 4.267 21.333 4.267 12.8-4.267 21.333-8.533 29.867z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["triangle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 232,
+                "order": 233,
+                "prevSize": 24,
+                "name": "triangle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 231
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1011.2 439.467l-128-128c-8.533-8.533-17.067-12.8-29.867-12.8h-128v-170.667c0-25.6-17.067-42.667-42.667-42.667h-640c-25.6 0-42.667 17.067-42.667 42.667v554.667c0 25.6 17.067 42.667 42.667 42.667h59.733c-12.8 21.333-17.067 42.667-17.067 64 0 81.067 68.267 149.333 149.333 149.333s149.333-68.267 149.333-149.333c0-21.333-4.267-42.667-17.067-64h285.867c-8.533 21.333-17.067 42.667-17.067 64 0 81.067 68.267 149.333 149.333 149.333s149.333-68.267 149.333-149.333c0-21.333-4.267-42.667-17.067-64h64c25.6 0 42.667-17.067 42.667-42.667v-213.333c0-12.8-4.267-21.333-12.8-29.867zM85.333 170.667h554.667v469.333h-554.667v-469.333zM298.667 789.333c0 34.133-29.867 64-64 64s-64-29.867-64-64 29.867-64 64-64 64 29.867 64 64zM853.333 789.333c0 34.133-29.867 64-64 64s-64-29.867-64-64 29.867-64 64-64 64 29.867 64 64zM938.667 640h-213.333v-256h110.933l102.4 102.4v153.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["truck"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 233,
+                "order": 234,
+                "prevSize": 24,
+                "name": "truck"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 232
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 256h-238.933l140.8-140.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-183.467 183.467-183.467-183.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l140.8 140.8h-238.933c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h682.667c72.533 0 128-55.467 128-128v-469.333c0-72.533-55.467-128-128-128zM896 853.333c0 25.6-17.067 42.667-42.667 42.667h-682.667c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h682.667c25.6 0 42.667 17.067 42.667 42.667v469.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["tv"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 234,
+                "order": 235,
+                "prevSize": 24,
+                "name": "tv"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 233
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1006.933 93.867c-12.8-8.533-34.133-8.533-46.933 0-29.867 21.333-64 38.4-98.133 51.2-85.333-76.8-217.6-81.067-307.2-4.267-55.467 46.933-85.333 110.933-85.333 179.2-123.733-8.533-234.667-72.533-307.2-174.933-8.533-12.8-21.333-17.067-38.4-17.067s-29.867 12.8-34.133 25.6c-4.267 4.267-46.933 106.667-42.667 230.4 4.267 106.667 46.933 243.2 204.8 341.333-64 29.867-136.533 42.667-209.067 42.667-17.067 0-38.4 12.8-42.667 29.867s4.267 38.4 21.333 46.933c106.667 59.733 221.867 89.6 328.533 89.6s209.067-25.6 302.933-81.067c183.467-102.4 285.867-298.667 285.867-533.333 0-8.533 0-12.8 0-21.333 42.667-46.933 72.533-102.4 85.333-162.133 4.267-17.067-4.267-34.133-17.067-42.667zM861.867 256c-8.533 8.533-12.8 25.6-12.8 38.4 4.267 8.533 4.267 17.067 4.267 25.6 0 204.8-89.6 371.2-243.2 460.8-119.467 68.267-260.267 85.333-401.067 51.2 55.467-17.067 106.667-38.4 153.6-72.533 17.067-8.533 21.333-21.333 21.333-38.4s-12.8-29.867-25.6-34.133c-247.467-110.933-238.933-320-213.333-426.667 93.867 93.867 226.133 149.333 366.933 145.067 21.333 0 42.667-21.333 42.667-42.667v-42.667c0-42.667 17.067-85.333 51.2-115.2 59.733-55.467 157.867-46.933 209.067 12.8 12.8 12.8 29.867 17.067 42.667 12.8 8.533-4.267 21.333-4.267 29.867-8.533-8.533 12.8-17.067 21.333-25.6 34.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["twitter"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 235,
+                "order": 236,
+                "prevSize": 24,
+                "name": "twitter"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 234
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 128h-682.667c-25.6 0-42.667 17.067-42.667 42.667v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h256v597.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-85.333v-597.333h256v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128c0-25.6-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["type"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 236,
+                "order": 237,
+                "prevSize": 24,
+                "name": "type"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 235
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M465.067 46.933c-247.467 21.333-439.467 217.6-465.067 460.8 0 12.8 4.267 25.6 12.8 34.133 4.267 8.533 17.067 12.8 29.867 12.8h426.667v256c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-256h426.667c12.8 0 25.6-4.267 29.867-12.8s12.8-21.333 12.8-34.133c-25.6-281.6-277.333-490.667-558.933-460.8zM512 469.333h-418.133c34.133-183.467 187.733-320 375.467-341.333 217.6-21.333 418.133 128 460.8 341.333h-418.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["umbrella"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 237,
+                "order": 238,
+                "prevSize": 24,
+                "name": "umbrella"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 236
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 725.333c166.4 0 298.667-132.267 298.667-298.667v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 119.467-93.867 213.333-213.333 213.333s-213.333-93.867-213.333-213.333v-298.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v298.667c0 166.4 132.267 298.667 298.667 298.667z",
+                    "M853.333 853.333h-682.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h682.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["underline"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 238,
+                "order": 239,
+                "prevSize": 24,
+                "name": "underline"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 237
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 426.667h-469.333v-128c0-46.933 17.067-89.6 51.2-119.467 29.867-34.133 72.533-51.2 119.467-51.2 0 0 0 0 0 0 81.067 0 149.333 55.467 166.4 136.533 4.267 21.333 29.867 38.4 51.2 34.133s38.4-25.6 34.133-51.2c-25.6-119.467-132.267-204.8-251.733-204.8 0 0 0 0 0 0-68.267 0-132.267 25.6-179.2 76.8-51.2 46.933-76.8 110.933-76.8 179.2v128h-42.667c-72.533 0-128 55.467-128 128v298.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-298.667c0-72.533-55.467-128-128-128zM853.333 853.333c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-298.667c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v298.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["unlock"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 239,
+                "order": 240,
+                "prevSize": 24,
+                "name": "unlock"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 238
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M896 597.333c-25.6 0-42.667 17.067-42.667 42.667v170.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v170.667c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-170.667c0-25.6-17.067-42.667-42.667-42.667z",
+                    "M328.533 371.2l140.8-140.8v409.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-409.6l140.8 140.8c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-213.333-213.333c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-213.333 213.333c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["upload"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 240,
+                "order": 241,
+                "prevSize": 24,
+                "name": "upload"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 239
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M994.133 473.6c-46.933-81.067-132.267-132.267-226.133-132.267h-21.333c-64-187.733-264.533-294.4-456.533-243.2-102.4 25.6-183.467 89.6-238.933 174.933s-68.267 192-42.667 290.133c17.067 59.733 42.667 110.933 85.333 157.867 17.067 17.067 42.667 21.333 59.733 4.267s21.333-42.667 4.267-59.733c-29.867-34.133-55.467-76.8-64-123.733-21.333-76.8-8.533-153.6 34.133-226.133 38.4-68.267 106.667-119.467 183.467-136.533 157.867-42.667 324.267 55.467 362.667 213.333 4.267 17.067 21.333 29.867 42.667 29.867h51.2c64 0 119.467 34.133 149.333 89.6 21.333 38.4 25.6 85.333 12.8 128s-42.667 81.067-81.067 102.4c-21.333 12.8-29.867 38.4-17.067 59.733 8.533 12.8 21.333 21.333 38.4 21.333 8.533 0 12.8 0 21.333-4.267 59.733-34.133 102.4-85.333 123.733-153.6 17.067-59.733 8.533-132.267-21.333-192z",
+                    "M541.867 482.133c-4.267-4.267-8.533-8.533-12.8-8.533-8.533-4.267-21.333-4.267-34.133 0-4.267 4.267-8.533 4.267-12.8 8.533l-170.667 170.667c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0l98.133-98.133v281.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-281.6l98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-170.667-170.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["upload-cloud"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 241,
+                "order": 242,
+                "prevSize": 24,
+                "name": "upload-cloud"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 240
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M682.667 597.333h-341.333c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h341.333c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M512 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM512 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["user"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 242,
+                "order": 243,
+                "prevSize": 24,
+                "name": "user"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 241
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z",
+                    "M1011.2 354.133c-17.067-17.067-42.667-17.067-59.733 0l-140.8 140.8-55.467-55.467c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l85.333 85.333c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l170.667-170.667c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["user-check"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 243,
+                "order": 244,
+                "prevSize": 24,
+                "name": "user-check"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 242
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z",
+                    "M981.333 426.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["user-minus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 244,
+                "order": 245,
+                "prevSize": 24,
+                "name": "user-minus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 243
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z",
+                    "M981.333 426.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["user-plus"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 245,
+                "order": 246,
+                "prevSize": 24,
+                "name": "user-plus"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 244
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 597.333h-298.667c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h298.667c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M362.667 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM362.667 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z",
+                    "M934.4 448l76.8-76.8c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-76.8 76.8-76.8-76.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l76.8 76.8-76.8 76.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l76.8-76.8 76.8 76.8c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-76.8-76.8z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["user-x"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 246,
+                "order": 247,
+                "prevSize": 24,
+                "name": "user-x"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 245
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M554.667 597.333h-341.333c-119.467 0-213.333 93.867-213.333 213.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-72.533 55.467-128 128-128h341.333c72.533 0 128 55.467 128 128v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c0-119.467-93.867-213.333-213.333-213.333z",
+                    "M384 512c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333-213.333 93.867-213.333 213.333 93.867 213.333 213.333 213.333zM384 170.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128z",
+                    "M861.867 605.867c-21.333-4.267-46.933 8.533-51.2 29.867s8.533 46.933 29.867 51.2c55.467 12.8 93.867 64 93.867 123.733v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333c4.267-98.133-59.733-183.467-157.867-204.8z",
+                    "M691.2 93.867c-21.333-8.533-42.667 4.267-51.2 29.867-4.267 21.333 8.533 46.933 29.867 51.2 68.267 17.067 110.933 85.333 93.867 157.867-12.8 46.933-46.933 81.067-93.867 93.867-21.333 4.267-38.4 29.867-29.867 51.2 4.267 21.333 21.333 34.133 42.667 34.133 4.267 0 8.533 0 8.533 0 76.8-21.333 136.533-76.8 153.6-153.6 29.867-119.467-38.4-238.933-153.6-264.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["users"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 247,
+                "order": 248,
+                "prevSize": 24,
+                "name": "users"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 246
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1002.667 260.267c-12.8-8.533-29.867-4.267-42.667 4.267l-234.667 166.4v-132.267c0-72.533-55.467-128-128-128h-469.333c-72.533 0-128 55.467-128 128v426.667c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-132.267l230.4 166.4c8.533 4.267 17.067 8.533 25.6 8.533s12.8 0 21.333-4.267c12.8-8.533 21.333-21.333 21.333-38.4v-426.667c0-17.067-8.533-29.867-21.333-38.4zM640 725.333c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h469.333c25.6 0 42.667 17.067 42.667 42.667v426.667zM938.667 644.267l-183.467-132.267 183.467-132.267v264.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["video"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 248,
+                "order": 249,
+                "prevSize": 24,
+                "name": "video"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 247
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1002.667 260.267c-12.8-8.533-29.867-4.267-42.667 4.267l-230.4 162.133-4.267-4.267v-123.733c0-72.533-55.467-128-128-128h-140.8c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h140.8c25.6 0 42.667 17.067 42.667 42.667v140.8c0 12.8 4.267 21.333 12.8 29.867l42.667 42.667c12.8 12.8 38.4 17.067 55.467 4.267l187.733-132.267v341.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-426.667c0-17.067-8.533-29.867-21.333-38.4z",
+                    "M712.533 652.8c0 0 0 0 0 0l-469.333-469.333c0 0 0 0 0 0l-170.667-170.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133c-64 8.533-110.933 64-110.933 128v426.667c0 72.533 55.467 128 128 128h469.333c51.2 0 98.133-34.133 119.467-76.8l234.667 234.667c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-298.667-298.667zM640 725.333c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-426.667c0-25.6 17.067-42.667 42.667-42.667h68.267l443.733 443.733v25.6z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["video-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 249,
+                "order": 250,
+                "prevSize": 24,
+                "name": "video-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 248
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M789.333 256c-128 0-234.667 106.667-234.667 234.667 0 55.467 21.333 106.667 55.467 149.333h-196.267c34.133-42.667 55.467-93.867 55.467-149.333 0-128-106.667-234.667-234.667-234.667s-234.667 106.667-234.667 234.667c0 128 106.667 234.667 234.667 234.667h554.667c128 0 234.667-106.667 234.667-234.667s-106.667-234.667-234.667-234.667zM85.333 490.667c0-81.067 68.267-149.333 149.333-149.333s149.333 68.267 149.333 149.333-68.267 149.333-149.333 149.333-149.333-68.267-149.333-149.333zM789.333 640c-81.067 0-149.333-68.267-149.333-149.333s68.267-149.333 149.333-149.333 149.333 68.267 149.333 149.333-68.267 149.333-149.333 149.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["voicemail"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 250,
+                "order": 251,
+                "prevSize": 24,
+                "name": "voicemail"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 249
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["volume"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 251,
+                "order": 252,
+                "prevSize": 24,
+                "name": "volume"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 250
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z",
+                    "M691.2 332.8c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c68.267 68.267 68.267 174.933 0 243.2-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c102.4-102.4 102.4-264.533 0-362.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["volume-1"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 252,
+                "order": 253,
+                "prevSize": 24,
+                "name": "volume-1"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 251
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z",
+                    "M631.467 332.8c-17.067 17.067-17.067 42.667 0 59.733 68.267 68.267 68.267 174.933 0 243.2-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c98.133-98.133 98.133-260.267 0-362.667-12.8-17.067-42.667-17.067-59.733 0z",
+                    "M844.8 179.2c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c149.333 149.333 149.333 392.533 0 541.867-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c183.467-179.2 183.467-477.867 0-661.333z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["volume-2"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 253,
+                "order": 254,
+                "prevSize": 24,
+                "name": "volume-2"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 252
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M486.4 174.933c-12.8-8.533-34.133-4.267-46.933 4.267l-200.533 162.133h-153.6c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6 17.067 42.667 42.667 42.667h153.6l200.533 162.133c8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 12.8 0 17.067-4.267 12.8-8.533 25.6-21.333 25.6-38.4v-597.333c4.267-17.067-4.267-29.867-21.333-38.4zM426.667 721.067l-145.067-115.2c-8.533-4.267-17.067-8.533-25.6-8.533h-128v-170.667h128c8.533 0 17.067-4.267 25.6-8.533l145.067-115.2v418.133z",
+                    "M913.067 512l98.133-98.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["volume-x"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 254,
+                "order": 255,
+                "prevSize": 24,
+                "name": "volume-x"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 253
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M853.333 512c0-98.133-42.667-183.467-106.667-247.467l-12.8-149.333c-8.533-64-59.733-115.2-128-115.2 0 0 0 0 0 0h-187.733c-64 0-119.467 51.2-128 115.2l-12.8 149.333c-64 59.733-106.667 149.333-106.667 247.467s42.667 187.733 106.667 247.467l12.8 149.333c8.533 64 64 115.2 128 115.2 0 0 0 0 0 0h183.467c0 0 0 0 0 0 68.267 0 119.467-51.2 128-115.2l12.8-145.067c68.267-64 110.933-153.6 110.933-251.733zM375.467 123.733c0-21.333 21.333-38.4 42.667-38.4h187.733c21.333 0 42.667 17.067 42.667 38.4l8.533 76.8c-46.933-17.067-93.867-29.867-145.067-29.867s-98.133 12.8-140.8 29.867l4.267-76.8zM256 512c0-140.8 115.2-256 256-256s256 115.2 256 256-115.2 256-256 256-256-115.2-256-256zM648.533 900.267c0 21.333-21.333 38.4-42.667 38.4 0 0 0 0 0 0h-187.733c0 0 0 0 0 0-21.333 0-38.4-17.067-42.667-38.4l-8.533-76.8c42.667 21.333 89.6 29.867 140.8 29.867s98.133-12.8 140.8-29.867l-0 76.8z",
+                    "M546.133 605.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-51.2-51.2v-110.933c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128c0 12.8 4.267 21.333 12.8 29.867l64 64z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["watch"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 255,
+                "order": 256,
+                "prevSize": 24,
+                "name": "watch"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 254
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M187.733 503.467c-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 25.6-8.533 157.867-132.267 388.267-132.267 546.133 0 17.067 17.067 46.933 12.8 59.733-4.267 17.067-17.067 12.8-46.933-4.267-59.733-192-162.133-469.333-162.133-657.067-4.267z",
+                    "M989.867 349.867c-273.067-238.933-686.933-238.933-960 0-17.067 17.067-21.333 42.667-4.267 59.733 12.8 12.8 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 29.867-8.533 243.2-213.333 605.867-213.333 844.8 0 17.067 17.067 42.667 12.8 59.733-4.267 17.067-21.333 17.067-46.933-4.267-64z",
+                    "M341.333 652.8c-21.333 12.8-25.6 38.4-8.533 59.733 12.8 17.067 38.4 25.6 59.733 8.533 72.533-51.2 174.933-51.2 247.467 0 8.533 4.267 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 12.8-21.333 8.533-46.933-8.533-59.733-110.933-72.533-247.467-72.533-349.867 0z",
+                    "M482.133 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["wifi"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 256,
+                "order": 257,
+                "prevSize": 24,
+                "name": "wifi"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 255
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1011.2 951.467l-721.067-721.067c0 0 0 0 0 0l-217.6-217.6c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l174.933 174.933c-55.467 29.867-106.667 64-153.6 106.667-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 17.067 12.8 29.867 12.8 8.533 0 21.333-4.267 29.867-12.8 46.933-42.667 102.4-76.8 162.133-102.4l98.133 98.133c-59.733 21.333-115.2 51.2-166.4 89.6-17.067 17.067-21.333 42.667-4.267 59.733 8.533 8.533 21.333 17.067 34.133 17.067 8.533 0 21.333-4.267 25.6-8.533 51.2-42.667 115.2-72.533 179.2-89.6l119.467 119.467c-68.267-4.267-140.8 12.8-196.267 55.467-21.333 12.8-25.6 38.4-8.533 59.733 12.8 17.067 38.4 25.6 59.733 8.533 72.533-51.2 174.933-51.2 247.467 0 8.533 4.267 17.067 8.533 25.6 8.533 4.267 0 4.267 0 8.533 0l281.6 281.6c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c12.8-17.067 12.8-42.667-4.267-59.733z",
+                    "M674.133 452.267c-8.533 21.333 0 46.933 21.333 55.467 29.867 17.067 59.733 34.133 89.6 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067 17.067-17.067 12.8-46.933-4.267-59.733-34.133-25.6-68.267-51.2-106.667-68.267-21.333-8.533-46.933 0-59.733 21.333z",
+                    "M460.8 256c170.667-12.8 345.6 42.667 473.6 157.867 8.533 8.533 17.067 8.533 29.867 8.533s25.6-4.267 34.133-12.8c17.067-17.067 12.8-42.667-4.267-59.733-145.067-128-341.333-196.267-537.6-179.2-25.6 0-42.667 21.333-38.4 46.933 0 25.6 17.067 42.667 42.667 38.4z",
+                    "M482.133 823.467c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 12.8 29.867c8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8c8.533-8.533 12.8-21.333 12.8-29.867s-4.267-21.333-12.8-29.867c-17.067-17.067-42.667-17.067-59.733 0z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["wifi-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 257,
+                "order": 258,
+                "prevSize": 24,
+                "name": "wifi-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 256
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M597.333 640c0 0 0 0 0 0h-512c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h512c0 0 0 0 0 0 12.8 0 21.333 4.267 29.867 12.8s12.8 17.067 12.8 29.867c0 12.8-4.267 21.333-12.8 29.867s-17.067 12.8-29.867 12.8c0 0 0 0 0 0-12.8 0-21.333-4.267-29.867-12.8-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733c25.6 25.6 55.467 38.4 89.6 38.4 0 0 0 0 0 0 34.133 0 64-12.8 89.6-38.4s38.4-55.467 38.4-89.6c0-34.133-12.8-68.267-38.4-89.6-21.333-25.6-55.467-38.4-89.6-38.4z",
+                    "M85.333 384h384c0 0 0 0 0 0 34.133 0 68.267-12.8 89.6-38.4 51.2-51.2 51.2-132.267 0-179.2-21.333-25.6-55.467-38.4-89.6-38.4s-68.267 12.8-89.6 38.4c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0c8.533-8.533 17.067-12.8 29.867-12.8 0 0 0 0 0 0 12.8 0 21.333 4.267 29.867 12.8 17.067 17.067 17.067 42.667 0 59.733-8.533 8.533-17.067 12.8-29.867 12.8 0 0 0 0 0 0h-384c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M938.667 298.667c-59.733-59.733-153.6-59.733-209.067 0-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 59.733 0c25.6-25.6 64-25.6 89.6 0s25.6 64 0 89.6c-12.8 12.8-29.867 17.067-46.933 17.067h-746.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h746.667c38.4 0 76.8-17.067 106.667-42.667 55.467-55.467 55.467-149.333 0-209.067z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["wind"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 258,
+                "order": 259,
+                "prevSize": 24,
+                "name": "wind"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 257
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M571.733 512l226.133-226.133c17.067-17.067 17.067-42.667 0-59.733s-42.667-17.067-59.733 0l-226.133 226.133-226.133-226.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l226.133 226.133-226.133 226.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l226.133-226.133 226.133 226.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-226.133-226.133z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["x"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 259,
+                "order": 260,
+                "prevSize": 24,
+                "name": "x"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 258
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M512 42.667c-260.267 0-469.333 209.067-469.333 469.333s209.067 469.333 469.333 469.333 469.333-209.067 469.333-469.333-209.067-469.333-469.333-469.333zM512 896c-213.333 0-384-170.667-384-384s170.667-384 384-384c213.333 0 384 170.667 384 384s-170.667 384-384 384z",
+                    "M669.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["x-circle"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 260,
+                "order": 261,
+                "prevSize": 24,
+                "name": "x-circle"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 259
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z",
+                    "M669.867 354.133c-17.067-17.067-42.667-17.067-59.733 0l-98.133 98.133-98.133-98.133c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l98.133 98.133-98.133 98.133c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l98.133-98.133 98.133 98.133c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733l-98.133-98.133 98.133-98.133c17.067-17.067 17.067-42.667 0-59.733z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["x-square"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 261,
+                "order": 262,
+                "prevSize": 24,
+                "name": "x-square"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 260
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M1002.667 264.533c0 0 0 0 0 0-12.8-59.733-59.733-102.4-115.2-119.467-72.533-17.067-345.6-17.067-375.467-17.067s-302.933 0-379.733 21.333c-55.467 17.067-98.133 59.733-110.933 119.467-12.8 76.8-21.333 153.6-21.333 230.4s4.267 157.867 21.333 238.933c17.067 55.467 59.733 98.133 110.933 110.933 76.8 21.333 345.6 21.333 379.733 21.333s302.933 0 379.733-21.333c55.467-17.067 98.133-59.733 115.2-119.467 12.8-76.8 21.333-153.6 21.333-230.4-4.267-76.8-8.533-153.6-25.6-234.667zM921.6 716.8c-8.533 25.6-25.6 46.933-51.2 55.467-51.2 12.8-238.933 17.067-354.133 17.067s-311.467-8.533-358.4-21.333c-25.6-8.533-46.933-25.6-51.2-46.933-17.067-72.533-21.333-145.067-21.333-221.867 0-72.533 4.267-145.067 17.067-213.333 8.533-25.6 25.6-46.933 51.2-55.467 51.2-12.8 243.2-17.067 358.4-17.067 81.067 0 298.667 4.267 354.133 17.067 25.6 8.533 46.933 25.6 51.2 55.467 17.067 68.267 21.333 140.8 21.333 217.6 0 72.533-4.267 145.067-17.067 213.333z",
+                    "M682.667 465.067l-247.467-140.8c-12.8-8.533-29.867-8.533-42.667 0s-17.067 21.333-17.067 38.4v277.333c0 17.067 8.533 29.867 21.333 38.4 4.267 4.267 12.8 4.267 21.333 4.267s12.8 0 21.333-4.267l247.467-140.8c12.8-8.533 21.333-21.333 21.333-38.4-4.267-12.8-12.8-25.6-25.6-34.133zM460.8 567.467v-132.267l115.2 68.267-115.2 64z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["youtube"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 262,
+                "order": 263,
+                "prevSize": 24,
+                "name": "youtube"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 261
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M934.4 409.6c-8.533-17.067-21.333-25.6-38.4-25.6h-337.067l38.4-294.4c4.267-17.067-8.533-38.4-25.6-42.667-17.067-8.533-38.4-4.267-51.2 12.8l-426.667 512c-8.533 12.8-12.8 29.867-4.267 46.933 8.533 12.8 21.333 21.333 38.4 21.333h337.067l-38.4 294.4c-4.267 17.067 8.533 38.4 25.6 42.667 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 25.6-4.267 34.133-17.067l426.667-512c8.533-12.8 12.8-29.867 4.267-42.667zM529.067 797.867l25.6-196.267c0-12.8-4.267-25.6-8.533-34.133-8.533-8.533-21.333-12.8-34.133-12.8h-294.4l273.067-328.533-21.333 196.267c0 12.8 4.267 25.6 8.533 34.133 8.533 8.533 21.333 12.8 29.867 12.8h294.4l-273.067 328.533z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["zap"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 263,
+                "order": 264,
+                "prevSize": 24,
+                "name": "zap"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 262
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M482.133 238.933l8.533-12.8-8.533 59.733c-4.267 21.333 12.8 42.667 38.4 46.933 0 0 4.267 0 4.267 0 21.333 0 38.4-17.067 42.667-38.4l29.867-204.8c4.267-17.067-8.533-38.4-25.6-42.667-17.067-8.533-38.4-4.267-51.2 12.8l-102.4 123.733c-17.067 17.067-12.8 42.667 4.267 59.733 21.333 12.8 46.933 12.8 59.733-4.267z",
+                    "M669.867 469.333h136.533l-46.933 55.467c-17.067 17.067-12.8 46.933 4.267 59.733 8.533 8.533 17.067 8.533 25.6 8.533 12.8 0 25.6-4.267 34.133-17.067l102.4-123.733c8.533-12.8 12.8-29.867 4.267-46.933-4.267-12.8-17.067-21.333-34.133-21.333h-226.133c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667z",
+                    "M1011.2 951.467l-938.667-938.667c-17.067-17.067-42.667-17.067-59.733 0s-17.067 42.667 0 59.733l273.067 273.067-187.733 226.133c-8.533 12.8-12.8 29.867-4.267 46.933 4.267 12.8 17.067 21.333 34.133 21.333h337.067l-38.4 294.4c-4.267 17.067 8.533 38.4 25.6 42.667 4.267 4.267 12.8 4.267 17.067 4.267 12.8 0 25.6-4.267 34.133-17.067l183.467-221.867 264.533 264.533c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-12.8 17.067-38.4 0-55.467zM217.6 554.667l123.733-149.333 149.333 149.333h-273.067zM529.067 797.867l21.333-187.733 72.533 72.533-93.867 115.2z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["zap-off"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 264,
+                "order": 265,
+                "prevSize": 24,
+                "name": "zap-off"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 263
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z",
+                    "M597.333 426.667h-85.333v-85.333c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v85.333h-85.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h85.333v85.333c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-85.333h85.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["zoom-in"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 265,
+                "order": 266,
+                "prevSize": 24,
+                "name": "zoom-in"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 264
+        },
+        {
+            "icon": {
+                "paths": [
+                    "M925.867 866.133l-157.867-157.867c51.2-64 85.333-149.333 85.333-238.933 0-213.333-170.667-384-384-384s-384 170.667-384 384c0 213.333 170.667 384 384 384 89.6 0 174.933-29.867 238.933-85.333l157.867 157.867c8.533 8.533 21.333 12.8 29.867 12.8s21.333-4.267 29.867-12.8c17.067-17.067 17.067-42.667 0-59.733zM170.667 469.333c0-166.4 132.267-298.667 298.667-298.667s298.667 132.267 298.667 298.667c0 81.067-34.133 157.867-85.333 209.067 0 0 0 0 0 0s0 0 0 0c-55.467 55.467-128 85.333-209.067 85.333-170.667 4.267-302.933-128-302.933-294.4z",
+                    "M597.333 426.667h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"
+                ],
+                "attrs": [],
+                "isMulticolor": false,
+                "isMulticolor2": false,
+                "tags": ["zoom-out"],
+                "grid": 24
+            },
+            "attrs": [],
+            "properties": {
+                "id": 266,
+                "order": 267,
+                "prevSize": 24,
+                "name": "zoom-out"
+            },
+            "setIdx": 0,
+            "setId": 0,
+            "iconIdx": 265
+        }
+    ],
+    "height": 1024,
+    "preferences": {
+        "showGlyphs": true,
+        "showQuickUse": true,
+        "showQuickUse2": true,
+        "showSVGs": true,
+        "fontPref": {
+            "prefix": "icon-",
+            "metadata": {
+                "fontFamily": "icomoon"
+            },
+            "metrics": {
+                "emSize": 1024,
+                "baseline": 6.25,
+                "whitespace": 50
+            },
+            "embed": false
+        },
+        "imagePref": {
+            "prefix": "icon-",
+            "png": false,
+            "useClassSelector": true,
+            "color": 0,
+            "bgColor": 16777215,
+            "classSelector": ".icon",
+            "name": "icomoon",
+            "height": 32,
+            "columns": 16,
+            "margin": 16
+        },
+        "historySize": 50,
+        "showCodes": true,
+        "gridSize": 16
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2
new file mode 100644
index 00000000..529d2c5c
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2
new file mode 100644
index 00000000..7873555b
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2
new file mode 100644
index 00000000..9c56557f
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2
new file mode 100644
index 00000000..75f37368
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2
new file mode 100644
index 00000000..1003fbcf
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2
new file mode 100644
index 00000000..8a67448c
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2
new file mode 100644
index 00000000..4abe8ca9
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2
new file mode 100644
index 00000000..a957af35
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2
new file mode 100644
index 00000000..1ea1c868
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..7b63dc55
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..c1e564ae
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..b7c0803b
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..d0c55c63
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..d02dcb84
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..a3446d26
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..93b627f7
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..8f1b0b2b
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..ad02a2fa
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..8166f34f
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..1d1286e7
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..64af7bb2
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..f8b45060
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..eabc5f23
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..f8de7c00
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..8b520f6e
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..9fc422f8
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..b4945527
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..2045db00
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..30eb5d4a
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..b459826a
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..069f0c72
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..17a6195d
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..45edd103
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..65a6a89a
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..b70d69d6
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..b59de519
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..0863f831
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..65480a98
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..a325eeb8
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2
new file mode 100644
index 00000000..a2b908db
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2
new file mode 100644
index 00000000..789fdf20
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2
new file mode 100644
index 00000000..4f8b9776
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2
new file mode 100644
index 00000000..f2d53a50
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2
new file mode 100644
index 00000000..8f2d45a0
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2
new file mode 100644
index 00000000..1db03c26
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2
new file mode 100644
index 00000000..2bdb0712
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2
new file mode 100644
index 00000000..a9ca0351
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2
new file mode 100644
index 00000000..876311c7
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2
new file mode 100644
index 00000000..69364622
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2
new file mode 100644
index 00000000..e49598a4
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2
new file mode 100644
index 00000000..b7ceee34
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2
new file mode 100644
index 00000000..4beef1d7
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2
new file mode 100644
index 00000000..3991a91d
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2
new file mode 100644
index 00000000..e292c068
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2
new file mode 100644
index 00000000..77121000
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2
new file mode 100644
index 00000000..0e6ec15c
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2
new file mode 100644
index 00000000..84e5394e
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Udc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2
new file mode 100644
index 00000000..4d255775
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Vdc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2
new file mode 100644
index 00000000..19a55e94
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Wdc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2
new file mode 100644
index 00000000..b4846a19
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Xdc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2
new file mode 100644
index 00000000..8eebeb2c
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0Zdc1GAK6b.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2
new file mode 100644
index 00000000..bf72a71d
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0adc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2
new file mode 100644
index 00000000..291e6cd7
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem6YaGs126MiZpBA-UFUK0ddc1GAK6bt6o.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2
new file mode 100644
index 00000000..1cd3a404
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2
new file mode 100644
index 00000000..a4f55037
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2
new file mode 100644
index 00000000..cb1733aa
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2
new file mode 100644
index 00000000..890123b2
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2
new file mode 100644
index 00000000..e36f4aa6
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2
new file mode 100644
index 00000000..0a168968
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2 b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2
new file mode 100644
index 00000000..ee0ee8a3
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/fonts/opensans/v15/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2 differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/atomic-reactor-logo.svg b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/atomic-reactor-logo.svg
new file mode 100644
index 00000000..72f42fd7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/atomic-reactor-logo.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 70 70">
+    <mask id="a">
+        <path fill="#fff" d="M0 0h70v70H0z" />
+        <g stroke="#000" stroke-width="8">
+            <path id="b" fill="#4F82BA" d="M0 70l30-50 10 13L70 0 40 50 30 37 0 70z"/>
+        </g>
+    </mask>
+  <circle mask="url(#a)" fill="none" stroke="#000" stroke-width="8" cx="35" cy="35" r="30"/>
+    <use xlink:href="#b" fill="#4F82BA" />
+</svg>
\ No newline at end of file
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/favicon.ico b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/favicon.ico
new file mode 100644
index 00000000..8aca035b
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/favicon.ico differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/logo.png b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/logo.png
new file mode 100644
index 00000000..0c3a8ce0
Binary files /dev/null and b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/images/logo.png differ
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_reactium-style-mixins-base-rui.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_reactium-style-mixins-base-rui.scss
new file mode 100644
index 00000000..2ff7bbbb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_reactium-style-mixins-base-rui.scss
@@ -0,0 +1,56 @@
+/**
+    Reactium-UI
+*/
+
+// Variables
+@import './_scss/variables';
+
+// Colors
+@import './_scss/colors';
+
+// Normalize
+@import './_scss/reboot';
+
+// Fonts
+@import './_scss/_fonts';
+
+// Mixins
+@import './_scss/mixins/px2rem';
+@import './_scss/mixins/text-align';
+@import './_scss/mixins/headings';
+@import './_scss/mixins/colors';
+
+// Global
+@import './_scss/grid/grid';
+@import './_scss/layout';
+@import './_scss/typography';
+@import './_scss/form';
+
+@import '../../Button/style';
+@import '../../Tabs/style';
+@import '../../Toggle/style';
+@import '../../Checkbox/style';
+@import '../../Collapsible/style';
+@import '../../Radio/style';
+@import '../../Dropdown/style';
+@import '../../Dropzone/style';
+@import '../../DataTable/style';
+@import '../../Dialog/style';
+@import '../../Dismissable/style';
+@import '../../Icon/style';
+@import '../../Progress/style';
+@import '../../Alert/style';
+@import '../../TagsInput/style';
+@import '../../Modal/style';
+@import '../../Tooltip/style';
+@import '../../Toast/style';
+@import '../../Picker/style';
+@import '../../TimePicker/style';
+@import '../../DatePicker/style';
+@import '../../Slider/style';
+@import '../../Spinner/style';
+@import '../../Pagination/style';
+@import '../../Carousel/style';
+@import '../../Charts/style';
+@import '../../Checkpoints/style';
+@import '../../Scene/style';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_colors.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_colors.scss
new file mode 100644
index 00000000..a1ef2859
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_colors.scss
@@ -0,0 +1,41 @@
+// WARNING: Do not directly edit this file !!!!
+// File generated by gulp styles:colors task
+
+
+// ~/src/app/reactium-ui/colors.json
+$color-black: #000000 !default;
+$color-gray-dark: #333333 !default;
+$color-gray: #999999 !default;
+$color-grey: #CFCFCF !default;
+$color-grey-light: #F7F7F7 !default;
+$color-white: #FFFFFF !default;
+$color-white-dark: #FDFDFD !default;
+$color-yellow: #F4F19C !default;
+$color-orange: #E69840 !default;
+$color-pink: #D877A0 !default;
+$color-red: #E09797 !default;
+$color-purple: #7A7CEF !default;
+$color-blue: #4F82BA !default;
+$color-green: #659A3F !default;
+$color-green-light: #B2BB50 !default;
+
+
+$color: (
+	"black": $color-black,
+	"gray-dark": $color-gray-dark,
+	"gray": $color-gray,
+	"grey": $color-grey,
+	"grey-light": $color-grey-light,
+	"white": $color-white,
+	"white-dark": $color-white-dark,
+	"yellow": $color-yellow,
+	"orange": $color-orange,
+	"pink": $color-pink,
+	"red": $color-red,
+	"purple": $color-purple,
+	"blue": $color-blue,
+	"green": $color-green,
+	"green-light": $color-green-light
+) !default;
+
+
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_fonts.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_fonts.scss
new file mode 100644
index 00000000..938fcd8f
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_fonts.scss
@@ -0,0 +1,408 @@
+$fonts: (
+    "opensans": "Montserrat, Helvetica, Arial, sans-serif",
+    "sans-serif": "Montserrat, Helvetica, Arial, sans-serif",
+    "cardo": "Cardo, 'Times New Roman', Gotham, serif",
+    "serif": "Cardo, 'Times New Roman', Gotham, serif",
+    "mono": "'Courier New', Courier, monospace",
+) !default;
+
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Montserrat Thin'), local('Montserrat-Thin'), url(/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxC7m0dR9pBOi.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Montserrat Thin'), local('Montserrat-Thin'), url(/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRzS7m0dR9pBOi.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Montserrat Thin'), local('Montserrat-Thin'), url(/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxi7m0dR9pBOi.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Montserrat Thin'), local('Montserrat-Thin'), url(/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRxy7m0dR9pBOi.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Montserrat Thin'), local('Montserrat-Thin'), url(/assets/fonts/montserrat/v12/JTUQjIg1_i6t8kCHKm45_QpRyS7m0dR9pA.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 200;
+  src: local('Montserrat ExtraLight'), local('Montserrat-ExtraLight'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 200;
+  src: local('Montserrat ExtraLight'), local('Montserrat-ExtraLight'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 200;
+  src: local('Montserrat ExtraLight'), local('Montserrat-ExtraLight'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 200;
+  src: local('Montserrat ExtraLight'), local('Montserrat-ExtraLight'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 200;
+  src: local('Montserrat ExtraLight'), local('Montserrat-ExtraLight'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_aZA3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Montserrat Light'), local('Montserrat-Light'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Montserrat Light'), local('Montserrat-Light'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Montserrat Light'), local('Montserrat-Light'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Montserrat Light'), local('Montserrat-Light'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Montserrat Light'), local('Montserrat-Light'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_cJD3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/assets/fonts/montserrat/v12/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_ZpC3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 600;
+  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 600;
+  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 600;
+  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 600;
+  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 600;
+  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_bZF3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 800;
+  src: local('Montserrat ExtraBold'), local('Montserrat-ExtraBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 800;
+  src: local('Montserrat ExtraBold'), local('Montserrat-ExtraBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 800;
+  src: local('Montserrat ExtraBold'), local('Montserrat-ExtraBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 800;
+  src: local('Montserrat ExtraBold'), local('Montserrat-ExtraBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 800;
+  src: local('Montserrat ExtraBold'), local('Montserrat-ExtraBold'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_c5H3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Montserrat Black'), local('Montserrat-Black'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gTD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Montserrat Black'), local('Montserrat-Black'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3g3D_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Montserrat Black'), local('Montserrat-Black'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gbD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Montserrat Black'), local('Montserrat-Black'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gfD_vx3rCubqg.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Montserrat Black'), local('Montserrat-Black'), url(/assets/fonts/montserrat/v12/JTURjIg1_i6t8kCHKm45_epG3gnD_vx3rCs.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+/* greek-ext */
+@font-face {
+  font-family: 'Cardo';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Cardo'), local('Cardo-Regular'), url(/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv03IE7225PUCk.woff2) format('woff2');
+  unicode-range: U+1F00-1FFF;
+}
+
+/* greek */
+@font-face {
+  font-family: 'Cardo';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Cardo'), local('Cardo-Regular'), url(/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv73IE7225PUCk.woff2) format('woff2');
+  unicode-range: U+0370-03FF;
+}
+
+/* latin-ext */
+@font-face {
+  font-family: 'Cardo';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Cardo'), local('Cardo-Regular'), url(/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv23IE7225PUCk.woff2) format('woff2');
+  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+/* latin */
+@font-face {
+  font-family: 'Cardo';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Cardo'), local('Cardo-Regular'), url(/assets/fonts/cardo/v10/wlp_gwjKBV1pqhv43IE7225P.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@each $selector, $font in $fonts {
+    .#{$selector} { font-family: #{$font}; }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_form.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_form.scss
new file mode 100644
index 00000000..6f410e78
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_form.scss
@@ -0,0 +1,241 @@
+$input-color-focus: $color-blue !default;
+$input-color-border: $color-grey !default;
+$input-color-error: $color-red !default;
+$input-color-border: $color-grey-light !default;
+$input-radius: 2px !default;
+$select-arrow: url('data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgo8cGF0aCBmaWxsPSIjNjY2NjY1IiBkPSJNNS4yOTMgOS43MDdsNiA2YzAuMzkxIDAuMzkxIDEuMDI0IDAuMzkxIDEuNDE0IDBsNi02YzAuMzkxLTAuMzkxIDAuMzkxLTEuMDI0IDAtMS40MTRzLTEuMDI0LTAuMzkxLTEuNDE0IDBsLTUuMjkzIDUuMjkzLTUuMjkzLTUuMjkzYy0wLjM5MS0wLjM5MS0xLjAyNC0wLjM5MS0xLjQxNCAwcy0wLjM5MSAxLjAyNCAwIDEuNDE0eiI+PC9wYXRoPgo8L3N2Zz4K') !default;
+$select-color-bg: $color-white !default;
+
+@mixin inputStyleFocus($clr: $input-color-focus) {
+    box-shadow: 0 0 0 2px rgba(lighten($clr, 5%), 0.25);
+    border: 1px solid $clr;
+    transition: box-shadow 0.125s;
+}
+
+@mixin inputStyle(
+    $clr: $input-color-focus,
+    $clr-border: $input-color-border,
+    $radius: $input-radius
+) {
+    flex-grow: 1;
+    font-family: inherit;
+    font-size: inherit;
+    font-weight: 200;
+    outline: none;
+    border: 1px solid $clr-border;
+    border-radius: $radius;
+    line-height: 1;
+    padding: 10px;
+
+    &:not(:last-child) {
+        margin-bottom: 6px;
+    }
+
+    &:focus,
+    &.focus {
+        @include inputStyleFocus($clr);
+    }
+
+    &:disabled {
+        opacity: 0.8;
+    }
+}
+
+.form-group {
+    display: flex;
+    flex-direction: column;
+    line-height: 1.5;
+    margin: px2rem(20) 0;
+
+    &:first-of-type {
+        margin-top: 0;
+    }
+
+    &:last-of-type {
+        margin-bottom: 0;
+    }
+
+    label {
+        user-select: none;
+        cursor: pointer;
+        display: flex;
+        flex-direction: column;
+        font-weight: 500;
+
+        * {
+            font-weight: normal;
+        }
+    }
+
+    &,
+    label {
+        input,
+        textarea,
+        select {
+            @include inputStyle();
+        }
+
+        textarea {
+            line-height: 1.25;
+        }
+    }
+
+    .inline,
+    &.inline {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        flex-direction: row !important;
+    }
+
+    .small,
+    small {
+        &:last-child {
+            @extend .em;
+            margin-top: 8px;
+            font-weight: normal;
+        }
+    }
+
+    &.row {
+        label {
+            flex-direction: row;
+            align-items: center;
+        }
+
+        input,
+        textarea,
+        select {
+            margin: 0;
+        }
+    }
+
+    &.error {
+        input,
+        textarea,
+        select {
+            @include inputStyleFocus($input-color-error);
+
+            &:focus,
+            &.focus {
+                border: 1px solid $input-color-error;
+                box-shadow: none !important;
+            }
+        }
+
+        .small,
+        small {
+            color: $input-color-error;
+        }
+    }
+}
+
+.input-group {
+    display: flex;
+    align-items: stretch;
+    flex-direction: row;
+
+    input,
+    textarea,
+    select {
+        flex-grow: 1;
+        font-family: inherit;
+        font-size: inherit;
+        font-weight: 200;
+        outline: none;
+        border: none;
+        line-height: 1;
+        padding: 10px;
+
+        &:disabled {
+            opacity: 0.8;
+        }
+
+        &:first-child {
+            &:last-child {
+                margin-bottom: 0;
+            }
+        }
+    }
+
+    input,
+    textarea {
+        z-index: 1;
+        background-color: none;
+        border-top: 1px solid $input-color-border;
+        border-bottom: 1px solid $input-color-border;
+        border-left: 1px solid $input-color-border;
+
+        &:last-child {
+            border-right: 1px solid $input-color-border;
+        }
+
+        &:hover {
+            cursor: pointer;
+        }
+    }
+
+    textarea {
+        line-height: 1.25;
+    }
+
+    > * {
+        z-index: 1;
+
+        &:last-child {
+            border-radius: 0 $input-radius $input-radius 0;
+        }
+
+        &:first-child {
+            border-radius: $input-radius 0 0 $input-radius;
+
+            &:last-child {
+                border-radius: $input-radius;
+            }
+        }
+    }
+
+    button,
+    label {
+        flex-grow: 0;
+        border-radius: 0;
+        margin-right: -1px;
+        z-index: 10;
+    }
+}
+
+select:not([multiple]) {
+    display: block;
+    line-height: 1.3;
+    width: auto;
+    max-width: 100%;
+    margin: 0;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    appearance: none;
+    background-color: $select-color-bg;
+    background-image: $select-arrow;
+    background-repeat: no-repeat, repeat;
+    background-position: right 10px top 50%, 0 0;
+    background-size: 24px 24px, 100%;
+    padding-right: 40px;
+
+    option {
+        font-weight: normal;
+
+        &:hover {
+            cursor: pointer;
+        }
+    }
+}
+
+select::-ms-expand {
+    display: none;
+}
+
+select {
+    &:hover,
+    option:hover {
+        cursor: pointer;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_layout.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_layout.scss
new file mode 100644
index 00000000..da2420ef
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_layout.scss
@@ -0,0 +1,38 @@
+
+.flex {
+    @include flex-factory();
+
+    @each $prefix in $breakpoint-all-prefixes {
+        @include breakpoint($prefix) {
+            &-#{$prefix} {
+                @include flex-factory();
+            }
+        }
+    }
+}
+
+.fullwidth {
+    width: 100% !important;
+}
+
+.fullheight {
+    height: 100% !important;
+}
+
+.sr-only {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+hr, .hr {
+    margin: 24px 0;
+    display: block;
+    border: none;
+    border-bottom: 1px solid $color-grey-light;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_reboot.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_reboot.scss
new file mode 100644
index 00000000..deb022ad
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_reboot.scss
@@ -0,0 +1,446 @@
+$dt-font-weight: 400 !default;
+$headings-margin-bottom: 0 !default;
+$label-margin-bottom: 0 !default;
+$line-height-base: 1 !default;
+$paragraph-margin-bottom: 15px !default;
+$table-caption-color: inherit !default;
+$table-cell-padding: 10px !default;
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box; // 1
+}
+
+html {
+  font-family: sans-serif; // 2
+  line-height: 1.15; // 3
+  -webkit-text-size-adjust: 100%; // 4
+  -ms-text-size-adjust: 100%; // 4
+  -ms-overflow-style: scrollbar; // 5
+  -webkit-tap-highlight-color: rgba($color-black, 0); // 6
+}
+
+// IE10+ doesn't honor `<meta name="viewport">` in some cases.
+@at-root {
+  @-ms-viewport {
+    width: device-width;
+  }
+}
+
+// stylelint-disable selector-list-comma-newline-after
+// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+  display: block;
+}
+// stylelint-enable selector-list-comma-newline-after
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Set an explicit initial text-align value so that we can later use the
+//    the `inherit` value on things like `<th>` elements.
+
+
+// Suppress the focus outline on elements that cannot be accessed via keyboard.
+// This prevents an unwanted focus outline from appearing around elements that
+// might still respond to pointer events.
+//
+// Credit: https://github.com/suitcss/base
+[tabindex="-1"]:focus {
+  outline: 0 !important;
+}
+
+
+// Content grouping
+//
+// 1. Add the correct box sizing in Firefox.
+// 2. Show the overflow in Edge and IE.
+
+hr {
+  box-sizing: content-box; // 1
+  height: 0; // 1
+  overflow: visible; // 2
+}
+
+
+//
+// Typography
+//
+
+// Remove top margins from headings
+//
+// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
+// margin for easier control within type scales as it avoids margin collapsing.
+// stylelint-disable selector-list-comma-newline-after
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: $headings-margin-bottom;
+}
+// stylelint-enable selector-list-comma-newline-after
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on `<p>`s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+p {
+  margin-top: 0;
+  margin-bottom: $paragraph-margin-bottom;
+}
+
+// Abbreviations
+//
+// 1. Remove the bottom border in Firefox 39-.
+// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+// 3. Add explicit cursor to indicate changed behavior.
+// 4. Duplicate behavior to the data-* attribute for our tooltip plugin
+
+abbr[title],
+abbr[data-original-title] { // 4
+  text-decoration: underline; // 2
+  text-decoration: underline dotted; // 2
+  cursor: help; // 3
+  border-bottom: 0; // 1
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: $dt-font-weight;
+}
+
+dd {
+  margin-bottom: .5rem;
+  margin-left: 0; // Undo browser default
+}
+
+dfn {
+  font-style: italic; // Add the correct font style in Android 4.3-
+}
+
+
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+//
+
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub, .sub { bottom: -.25rem; }
+sup, .sup { top: -.5rem; }
+
+
+//
+// Links
+//
+
+a {
+  color: inherit;
+  text-decoration: none;
+  background-color: transparent; // Remove the gray background on active links in IE 10.
+  -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.
+
+  &:hover {
+    color: inherit;
+    text-decoration: underline;
+  }
+}
+
+// And undo these styles for placeholder links/named anchors (without href)
+// which have not been made explicitly keyboard-focusable (without tabindex).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([tabindex]) {
+  color: inherit;
+  text-decoration: none;
+
+  &:hover,
+  &:focus {
+    color: inherit;
+    text-decoration: none;
+  }
+
+  &:focus {
+    outline: 0;
+  }
+}
+
+
+//
+// Code
+//
+
+pre,
+code,
+kbd,
+samp {
+  font-family: monospace;
+  font-size: 1em; // Correct the odd `em` font sizing in all browsers.
+}
+
+
+pre {
+    margin: 0;
+
+  // Don't allow content to break outside
+  overflow: auto;
+  // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so
+  // we force a non-overlapping, non-auto-hiding scrollbar to counteract.
+  -ms-overflow-style: scrollbar;
+}
+
+
+//
+// Figures
+//
+
+figure {
+  // Apply a consistent margin strategy (matches our type styles).
+  margin: 0 0 1rem;
+}
+
+
+//
+// Images and content
+//
+
+img {
+  vertical-align: middle;
+  border-style: none; // Remove the border on images inside links in IE 10-.
+}
+
+svg {
+  // Workaround for the SVG overflow bug in IE10/11 is still required.
+  // See https://github.com/twbs/bootstrap/issues/26878
+  overflow: hidden;
+  vertical-align: middle;
+}
+
+
+//
+// Tables
+//
+
+table {
+  border-collapse: collapse; // Prevent double borders
+}
+
+caption {
+  padding-top: $table-cell-padding;
+  padding-bottom: $table-cell-padding;
+  color: $table-caption-color;
+  text-align: left;
+  caption-side: bottom;
+}
+
+th {
+  // Matches default `<td>` alignment by inheriting from the `<body>`, or the
+  // closest parent with a set `text-align`.
+  text-align: inherit;
+}
+
+
+//
+// Forms
+//
+
+label {
+  // Allow labels to use `margin` for spacing.
+  display: inline-block;
+  margin-bottom: $label-margin-bottom;
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24093
+button {
+  border-radius: 0;
+}
+
+// Work around a Firefox/IE bug where the transparent `button` background
+// results in a loss of the default `button` focus styles.
+//
+// Credit: https://github.com/suitcss/base/
+button:focus {
+  outline: none;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0; // Remove the margin in Firefox and Safari
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+button,
+input {
+  overflow: visible; // Show the overflow in Edge
+}
+
+button,
+select {
+  text-transform: none; // Remove the inheritance of text transform in Firefox
+}
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+//    controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+button,
+html [type="button"], // 1
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; // 2
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
+  padding: 0; // 2. Remove the padding in IE 10-
+}
+
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+  // Remove the default appearance of temporal inputs to avoid a Mobile Safari
+  // bug where setting a custom line-height prevents text from being vertically
+  // centered within the input.
+  // See https://bugs.webkit.org/show_bug.cgi?id=139848
+  // and https://github.com/twbs/bootstrap/issues/11266
+  -webkit-appearance: listbox;
+}
+
+textarea {
+  overflow: auto; // Remove the default vertical scrollbar in IE.
+  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
+  resize: vertical;
+}
+
+fieldset {
+  // Browsers set a default `min-width: min-content;` on fieldsets,
+  // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
+  // So we reset that to ensure fieldsets behave more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/12359
+  // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+  min-width: 0;
+  // Reset the default outline behavior of fieldsets so they don't affect page layout.
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+// 1. Correct the text wrapping in Edge and IE.
+// 2. Correct the color inheritance from `fieldset` elements in IE.
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%; // 1
+  padding: 0;
+  margin-bottom: .5rem;
+  font-size: 1.5rem;
+  line-height: inherit;
+  color: inherit; // 2
+  white-space: normal; // 1
+}
+
+progress {
+  vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
+}
+
+// Correct the cursor style of increment and decrement buttons in Chrome.
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+[type="search"] {
+  // This overrides the extra rounded corners on search inputs in iOS so that our
+  // `.form-control` class can properly style them. Note that this cannot simply
+  // be added to `.form-control` as it's not specific enough. For details, see
+  // https://github.com/twbs/bootstrap/issues/11586.
+  outline-offset: -2px; // 2. Correct the outline style in Safari.
+  -webkit-appearance: none;
+}
+
+//
+// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+//
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// 1. Correct the inability to style clickable types in iOS and Safari.
+// 2. Change font properties to `inherit` in Safari.
+//
+
+::-webkit-file-upload-button {
+  font: inherit; // 2
+  -webkit-appearance: button; // 1
+}
+
+//
+// Correct element displays
+//
+
+output {
+  display: inline-block;
+}
+
+summary {
+  display: list-item; // Add the correct display in all browsers
+  cursor: pointer;
+}
+
+template {
+  display: none; // Add the correct display in IE
+}
+
+// Always hide an element with the `hidden` HTML attribute (from PureCSS).
+// Needed for proper display in IE 10-.
+[hidden] {
+  display: none !important;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_typography.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_typography.scss
new file mode 100644
index 00000000..1f0d7040
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_typography.scss
@@ -0,0 +1,120 @@
+
+$headings: (
+    h1: (map-get($fonts, sans-serif), 2rem, 400),
+    h2: (map-get($fonts, sans-serif), 1.5rem, 400),
+    h3: (map-get($fonts, sans-serif), 1.17rem, 400),
+    h4: (map-get($fonts, sans-serif), 1rem, 400),
+    h5: (map-get($fonts, sans-serif), 0.83rem, 400),
+    h6: (map-get($fonts, sans-serif), 0.67rem, 400)
+) !default;
+
+$font-family-base: #{map-get($fonts, sans-serif)} !default;
+$font-size-base: 16px !default;
+$font-weight-base: 400 !default;
+$font-family-monospace: #{map-get($fonts, mono)} !default;
+$text-alignment: ('left', 'right', 'center', 'justify') !default;
+
+
+html, body {
+  margin: 0;
+  font-family: #{$font-family-base};
+  font-size: $font-size-base;
+  font-weight: $font-weight-base;
+  line-height: $line-height-base;
+  text-align: left;
+}
+
+* {
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.number {
+    font-family: $font-family-monospace;
+}
+
+.upper, .uppercase {
+    text-transform: uppercase
+}
+
+.lower, .lowercase {
+    text-transform: lowercase;
+}
+
+.proper, .propercase, .capitalize {
+    text-transform: capitalize;
+}
+
+u, .u, .underline {
+    text-decoration: underline;
+}
+
+strike,
+.strike,
+.strikethrough {
+    text-decoration: line-through;
+}
+
+p, .p {
+    line-height: 1.5;
+}
+
+.b,
+.bold,
+.strong,
+strong {
+    font-weight: 600;
+}
+
+em,
+.em,
+.italic,
+.i {
+    font-style: italic;
+}
+
+small,
+.small {
+    font-size: px2rem(11);
+}
+
+blockquote {
+    padding          : px2rem(20);
+    margin           : px2rem(20) 0;
+    background-color : $color-grey-light;
+    font-family      : 'Montserrat', sans-serif;
+    border-radius    : 0 px2rem(50) px2rem(50) 0;
+    border-left      : 5px solid $color-grey;
+}
+
+ul li,
+ol li {
+    line-height: 2;
+    padding: 0;
+    margin: 0;
+}
+
+ul, ol {
+    margin: 0 0 0 px2rem(20);
+    padding: 0;
+}
+
+.light {
+    font-weight: 100;
+}
+
+.medium {
+    font-weight: 500;
+}
+
+kbd,
+.kbd {
+    color: $color-blue;
+    margin: 0 0 0;
+    padding: 2px;
+    font-family: monospace;
+}
+
+
+@include heading-factory();
+@include text-align();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_variables.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_variables.scss
new file mode 100644
index 00000000..22b1e54b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/_variables.scss
@@ -0,0 +1 @@
+// Use this file to overwrite any variables used in other .scss files
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid-variables.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid-variables.scss
new file mode 100644
index 00000000..94a06385
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid-variables.scss
@@ -0,0 +1,106 @@
+// Grid
+$grid-columns: 12 !default; // Set number of columns in the grid
+
+// smallest to largest
+$breakpoints-max: (
+    'xs': 640,
+    'sm': 990,
+    'md': 1280,
+    'lg': 1440,
+    'xl': 1920,
+) !default;
+
+$xs-max: '#{map-get($breakpoints-max, 'xs')}px' !default; // Set xs breakpoint's max width
+$sm-max: '#{map-get($breakpoints-max, 'sm')}px' !default; // Set sm breakpoint's max width
+$md-max: '#{map-get($breakpoints-max, 'md')}px' !default; // Set md breakpoint's max width
+$lg-max: '#{map-get($breakpoints-max, 'xl')}px' !default; // Set lg breakpoint's max width
+
+$gutter: 0 !default;
+
+$sm-start: '#{map-get($breakpoints-max, 'xs') + 1}px' !default; // Set sm breakpoint's min width
+$md-start: '#{map-get($breakpoints-max, 'sm') + 1}px' !default; // Set md breakpoint's min width
+$lg-start: '#{map-get($breakpoints-max, 'md') + 1}px' !default; // Set lg breakpoint's min width
+$xl-start: '#{map-get($breakpoints-max, 'xl') + 1}px' !default; // Set xl breakpoint's min width
+
+$content-well-max-width: 'none' !default; // Set the max-width of the content well
+
+// Breakpoints
+// Create breakpoint range statements to be used in media queries
+$breakpoint-xs-up: 'only screen' !default;
+$breakpoint-xs-only: 'only screen and (max-width: #{$xs-max})' !default; // 0 -> xs-max range
+$breakpoint-sm-up: 'only screen and (min-width: #{$sm-start})' !default; // sm-start -> up range
+$breakpoint-sm-only: 'only screen and (min-width: #{$sm-start}) and (max-width: #{$sm-max})' !default; // sm-start -> sm-max range
+$breakpoint-md-up: 'only screen and (min-width: #{$md-start})' !default; // md-start -> up range
+$breakpoint-md-only: 'only screen and (min-width: #{$md-start}) and (max-width: #{$md-max})' !default; // md-start -> md-max range
+$breakpoint-lg-up: 'only screen and (min-width: #{$lg-start})' !default; // lg-start -> up range
+$breakpoint-lg-only: 'only screen and (min-width: #{$lg-start}) and (max-width: #{$lg-max})' !default; // lg-start -> lg-max range
+$breakpoint-xl-up: 'only screen and (min-width: #{$xl-start})' !default; // xl-start -> up range
+
+$breakpoint-sm-down: 'only screen and (max-width: #{$sm-max})' !default; // sm -> down
+$breakpoint-md-down: 'only screen and (max-width: #{$md-max})' !default; // md -> down
+$breakpoint-lg-down: 'only screen and (max-width: #{$lg-max})' !default; // lg -> down
+
+$breakpoints-all: (
+    $breakpoint-xs-only,
+    $breakpoint-sm-up,
+    $breakpoint-sm-only,
+    $breakpoint-md-up,
+    $breakpoint-md-only,
+    $breakpoint-lg-up,
+    $breakpoint-lg-only,
+    $breakpoint-xl-up
+) !default;
+$breakpoint-ups: (
+    $breakpoint-sm-up,
+    $breakpoint-md-up,
+    $breakpoint-lg-up,
+    $breakpoint-xl-up
+) !default;
+$breakpoint-all-prefixes: (
+    'xs',
+    'xs-only',
+    'sm',
+    'sm-only',
+    'md',
+    'md-only',
+    'lg',
+    'lg-only',
+    'xl'
+) !default;
+$breakpoint-up-prefixes: ('xs', 'sm', 'md', 'lg', 'xl') !default;
+
+$breakpoints: (
+    'xs': $breakpoint-xs-up,
+    'xs-only': $breakpoint-xs-only,
+    'sm': $breakpoint-sm-up,
+    'sm-only': $breakpoint-sm-only,
+    'sm-down': $breakpoint-sm-down,
+    'md': $breakpoint-md-up,
+    'md-only': $breakpoint-md-only,
+    'md-down': $breakpoint-md-down,
+    'lg': $breakpoint-lg-up,
+    'lg-only': $breakpoint-lg-only,
+    'lg-down': $breakpoint-lg-down,
+    'xl': $breakpoint-xl-up,
+) !default;
+
+// no longer works
+// body {
+//     &::before {
+//         display: block;
+//         height: 0;
+//         width: 0;
+//         overflow: hidden;
+//         visibility: hidden;
+//         content: json-encode($breakpoints);
+//     }
+
+//     &::after {
+//         display: block;
+//         height: 0;
+//         width: 0;
+//         overflow: hidden;
+//         visibility: hidden;
+//         content: json-encode($breakpoints-max);
+//     }
+// }
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid.scss
new file mode 100755
index 00000000..2d5f52a2
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_grid.scss
@@ -0,0 +1,153 @@
+@use 'sass:math';
+
+// Based on Flexbox Grid https://github.com/kristoferjoseph/flexboxgrid
+@import "grid-variables";
+@import 'mixins/breakpoint';
+@import 'mixins/grid-mixins';
+@import 'mixins/flex';
+@import 'visibility';
+@import 'size';
+
+// No gutters
+// No text alignment with justified container classes (center-xs, for example)
+
+.row {
+    @include row();
+}
+
+.row.reverse {
+    @include row-reverse();
+}
+
+.row.eq-height {
+    @include row-eq-height();
+}
+
+.row.auto-height {
+    @include row-auto-height();
+}
+
+.row.flex-column {
+    flex-direction: column;
+}
+
+.col {
+    @include col();
+}
+
+.col.reverse {
+    @include col-reverse();
+}
+
+@each $prefix in $breakpoint-all-prefixes {
+    @include breakpoint($prefix) {
+        .col.reverse-#{$prefix} {
+            @include col-reverse();
+        }
+        .row.reverse-#{$prefix} {
+            @include row-reverse();
+        }
+    }
+}
+
+.first {
+    order: -1;
+}
+
+.last {
+    order: 1;
+}
+
+.align-start {
+    align-self: flex-start;
+}
+
+.align-end {
+    align-self: flex-end;
+}
+
+.align-center {
+    align-self: center;
+}
+
+.align-baseline {
+    align-self: baseline;
+}
+
+.align-stretch {
+    align-self: stretch;
+}
+// Mixin to run inside of for loop - creates col/breakpoint classes * Not for developer use *
+@mixin col-factory($thisPrefix) {
+    .col-#{$thisPrefix} {
+        flex-grow: 1;
+        flex-basis: 0;
+        max-width: 100%;
+        padding: $gutter;
+    }
+    @for $i from 1 through $grid-columns {
+        .col-#{$thisPrefix}-#{$i} {
+            flex-basis: math.div(100%, $grid-columns) * $i;
+            max-width: math.div(100%, $grid-columns) * $i;
+            padding: $gutter;
+        }
+
+        .col-#{$thisPrefix}-offset-#{$i} {
+            margin-left: math.div(100%, $grid-columns) * $i;
+        }
+    }
+
+    .start-#{$thisPrefix} {
+        justify-content: flex-start;
+    }
+
+    .center-#{$thisPrefix} {
+        justify-content: center;
+    }
+
+    .end-#{$thisPrefix} {
+        justify-content: flex-end;
+    }
+
+    .top-#{$thisPrefix} {
+        align-items: flex-start;
+    }
+
+    .middle-#{$thisPrefix} {
+        align-items: center;
+    }
+
+    .bottom-#{$thisPrefix} {
+        align-items: flex-end;
+    }
+
+    .around-#{$thisPrefix} {
+        justify-content: space-around;
+    }
+
+    .between-#{$thisPrefix} {
+        justify-content: space-between;
+    }
+
+    .first-#{$thisPrefix} {
+        order: -1;
+    }
+
+    .last-#{$thisPrefix} {
+        order: 1;
+    }
+}
+// Mixin to run inside of for loop - creates col/breakpoint classes
+@each $prefix in $breakpoint-up-prefixes {
+    @include breakpoint($prefix) {
+        @include col-factory($prefix);
+    }
+}
+
+.col-gutter-lr {
+    padding: 0 $gutter;
+}
+
+.col-no-gutter {
+    padding: 0;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_size.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_size.scss
new file mode 100644
index 00000000..865d4d06
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_size.scss
@@ -0,0 +1,83 @@
+$sizes: (
+    "m": (margin),
+    "mt": (margin-top),
+    "mr": (margin-right),
+    "mb": (margin-bottom),
+    "ml": (margin-left),
+    "mx": (margin-left, margin-right),
+    "my": (margin-top, margin-bottom),
+    "p": (padding),
+    "pt": (padding-top),
+    "pr": (padding-right),
+    "pb": (padding-bottom),
+    "pl": (padding-left),
+    "px": (padding-left, padding-right),
+    "py": (padding-top, padding-bottom),
+) !default;
+
+$sizing: (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 25, 32, 40, 48, 56, 64, 72, 80) !default;
+
+@mixin size-factory($thisPrefix: null) {
+    @each $prop-name, $props in $sizes {
+        @each $size in $sizing {
+            @if ($thisPrefix) {
+                .#{$prop-name}-#{$thisPrefix}-#{$size} {
+                    @each $prop in $props {
+                        #{$prop}: px2rem($size) !important;
+                    }
+                }
+                .#{$prop-name}-#{$thisPrefix}--#{$size} {
+                    @each $prop in $props {
+                        #{$prop}: px2rem(-($size)) !important;
+                    }
+                }
+            } @else {
+                .#{$prop-name}-#{$size} {
+                    @each $prop in $props {
+                        #{$prop}: px2rem($size) !important;
+                    }
+                }
+                .#{$prop-name}--#{$size} {
+                    @each $prop in $props {
+                        #{$prop}: px2rem(-($size)) !important;
+                    }
+                }
+            }
+        }
+    }
+}
+
+@each $prefix in $breakpoint-all-prefixes {
+    @include breakpoint($prefix) {
+        @include size-factory($prefix);
+    }
+}
+
+.mx-auto {
+    margin-left: auto;
+    margin-right: auto;
+}
+.ml-auto {
+    margin-left: auto;
+}
+.mr-auto {
+    margin-right: auto;
+}
+
+@each $prefix in $breakpoint-all-prefixes {
+    @include breakpoint($prefix) {
+        .mx-#{$prefix}-auto {
+            margin-left: auto;
+            margin-right: auto;
+        }
+        .ml-#{$prefix}-auto {
+            margin-left: auto;
+        }
+        .mr-#{$prefix}-auto {
+            margin-right: auto;
+        }
+    }
+}
+
+
+@include size-factory();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_visibility.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_visibility.scss
new file mode 100755
index 00000000..f144d66e
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/_visibility.scss
@@ -0,0 +1,28 @@
+// Mixin to run inside of for loop - creates visibility classes * Not for developer use *
+@mixin vis-factory($thisPrefix: null) {
+    @if $thisPrefix {
+        .show-#{$thisPrefix} {
+            display: block !important;
+        }
+
+        .hide-#{$thisPrefix} {
+            display: none !important;
+        }
+    } @else {
+        .show {
+            display: initial;
+        }
+        .hide {
+            display: none;
+        }
+    }
+}
+
+@include vis-factory();
+
+// Mixin to run inside of for loop - creates visibility classes * Not for developer use *
+@each $prefix in $breakpoint-all-prefixes {
+    @include breakpoint($prefix) {
+        @include vis-factory($prefix);
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_breakpoint.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_breakpoint.scss
new file mode 100644
index 00000000..2fd48906
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_breakpoint.scss
@@ -0,0 +1,10 @@
+
+@mixin breakpoint($thisPrefix) {
+    $break: map-get($breakpoints, $thisPrefix);
+
+    @if ($break != null) {
+        @media #{$break} {
+            @content;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_flex.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_flex.scss
new file mode 100644
index 00000000..7362adfc
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_flex.scss
@@ -0,0 +1,62 @@
+
+@mixin flex-factory() {
+    display: flex;
+
+    .grow,
+    &-grow {
+        flex-grow: 1;
+    }
+
+    .shrink,
+    &-shrink {
+        flex-shrink: 1;
+    }
+
+    &-left,
+    &.left {
+        display: flex;
+        justify-content: flex-start;
+    }
+
+    &-right,
+    &.right {
+        display: flex;
+        justify-content: flex-end;
+    }
+
+    &-center,
+    &.center {
+        display: flex;
+        justify-content: center;
+    }
+
+    &-top,
+    &.top {
+        display: flex;
+        align-items: flex-start;
+    }
+
+    &-bottom,
+    &.bottom {
+        display: flex;
+        align-items: flex-end;
+    }
+
+    &-middle,
+    &.middle {
+        display: flex;
+        align-items: center;
+    }
+
+    &-row,
+    &.row {
+        display: flex;
+        flex-direction: row;
+    }
+
+    &-column,
+    &.column {
+        display: flex;
+        flex-direction: column;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_grid-mixins.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_grid-mixins.scss
new file mode 100755
index 00000000..827bf6cb
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/grid/mixins/_grid-mixins.scss
@@ -0,0 +1,364 @@
+
+@mixin row($full-width: "false") {
+  margin: 0 auto;
+  width: 100%;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  flex: 0 1 auto;
+  flex-direction: row;
+  flex-wrap: wrap;
+  // // Overrides flexbox's default behavior of making all children equal height
+  // align-items: flex-start; // If this was not in place it would require two classes to make a row full of unequal height columns aligned top, middle, bottom
+  @if type-of($content-well-max-width) == number and $content-well-max-width != 0 and $full-width == "false"{
+    max-width: $content-well-max-width;
+  }
+}
+
+@mixin row-reverse() {
+  flex-direction: row-reverse;
+}
+
+@mixin row-eq-height() {
+  align-items: stretch;
+}
+
+// For use when row align-item flex-start has been overridden
+@mixin row-auto-height() {
+  align-items: flex-start;
+}
+
+@mixin col-reverse() {
+  flex-direction: column-reverse;
+}
+
+// Condition to run inside of the col mixin * not for developer use *
+@mixin col-condition($col-number) {
+  @if type-of($col-number) == number {
+    @if $col-number > $grid-columns or $col-number == 0 {
+      @warn "Column number must be greater than 0 and less than or equal to total number of columns in the grid (#{$grid-columns})";
+    } @else {
+      flex-basis: 100% / $grid-columns * $col-number;
+      max-width: 100% / $grid-columns * $col-number;
+      padding: $gutter;
+    }
+  // If no col number is passed then arg is set to "auto" by default
+  // "auto" mode fills the horizontal space with evenly sized containers
+  } @else if $col-number == "auto" {
+    flex-grow: 1;
+    flex-basis: 0;
+    max-width: 100%;
+    padding: $gutter;
+  } @else {
+    @warn "Column number argument must either be the string 'auto' or a number greater than 0 and less than or equal to total number of columns in the grid (#{$grid-columns})";
+  }
+} // Condition to run inside of the col mixin * not for developer use *
+
+@mixin col($breakpoint: "xs", $col-number: "auto") {
+  // If no breakpoint is passed and a col number is just use the first arg as the col number and act like xs
+  @if type-of($breakpoint) == number {
+    $col-number: $breakpoint;
+    @include col-condition($col-number);
+  } @else if $breakpoint == "xs" {
+    @include col-condition($col-number);
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      @include col-condition($col-number);
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      @include col-condition($col-number);
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      @include col-condition($col-number);
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      @include col-condition($col-number);
+    }
+  } @else {
+    @warn "col mixin requires one of the existing breakpoint prefixes (#{$breakpoint-up-prefixes})";
+  }
+}
+
+// Condition to run inside of the col-offset mixin * not for developer use *
+@mixin col-offset-condition($offset-number) {
+  @if type-of($offset-number) != number {
+    @warn "Column offset number must be a number (only arg or second arg in the col mixin)";
+  } @else if $offset-number == 0 {
+    @warn "Column offset number must be greater than 0 and less than or equal to total number of columns in the grid (#{$grid-columns})";
+  } @else if $offset-number > $grid-columns {
+    @warn "Column offset number must be greater than 0 and less than or equal to total number of columns in the grid (#{$grid-columns})";
+  } @else {
+    margin-left: 100% / $grid-columns * $offset-number;
+  }
+} // Condition to run inside of the col-offset mixin * not for developer use *
+
+@mixin col-offset($breakpoint: "xs", $offset-number: 0) {
+  // If no breakpoint is passed and a col number is just use the first arg as the col number and act like xs
+  @if type-of($breakpoint) == number {
+    $offset-number: $breakpoint;
+    @include col-offset-condition($offset-number);
+  } @else if $breakpoint == "xs" {
+    @include col-offset-condition($offset-number);
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      @include col-offset-condition($offset-number);
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      @include col-offset-condition($offset-number);
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      @include col-offset-condition($offset-number);
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      @include col-offset-condition($offset-number);
+    }
+  } @else {
+    @warn "col mixin requires one of the existing breakpoint prefixes (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin start($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    justify-content: flex-start;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      justify-content: flex-start;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      justify-content: flex-start;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      justify-content: flex-start;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      justify-content: flex-start;
+    }
+  } @else {
+    @warn "start mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin center($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    justify-content: center;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      justify-content: center;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      justify-content: center;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      justify-content: center;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      justify-content: center;
+    }
+  } @else {
+    @warn "center mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin end($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    justify-content: flex-end;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      justify-content: flex-end;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      justify-content: flex-end;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      justify-content: flex-end;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      justify-content: flex-end;
+    }
+  } @else {
+    @warn "end mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin top($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    align-items: flex-start;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      align-items: flex-start;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      align-items: flex-start;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      align-items: flex-start;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      align-items: flex-start;
+    }
+  } @else {
+    @warn "top mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin middle($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    align-items: center;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      align-items: center;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      align-items: center;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      align-items: center;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      align-items: center;
+    }
+  } @else {
+    @warn "middle mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin bottom($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    align-items: flex-end;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      align-items: flex-end;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      align-items: flex-end;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      align-items: flex-end;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      align-items: flex-end;
+    }
+  } @else {
+    @warn "bottom mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin around($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    justify-content: space-around;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      justify-content: space-around;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      justify-content: space-around;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      justify-content: space-around;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      justify-content: space-around;
+    }
+  } @else {
+    @warn "around mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin between($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    justify-content: space-between;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      justify-content: space-between;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      justify-content: space-between;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      justify-content: space-between;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      justify-content: space-between;
+    }
+  } @else {
+    @warn "between mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin first($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    order: -1;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      order: -1;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      order: -1;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      order: -1;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      order: -1;
+    }
+  } @else {
+    @warn "first mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
+
+@mixin last($breakpoint: "xs") {
+  @if $breakpoint == "xs" {
+    order: 1;
+  } @else if $breakpoint == "sm" {
+    @media #{$breakpoint-sm-up} {
+      order: 1;
+    }
+  } @else if $breakpoint == "md" {
+    @media #{$breakpoint-md-up} {
+      order: 1;
+    }
+  } @else if $breakpoint == "lg" {
+    @media #{$breakpoint-lg-up} {
+      order: 1;
+    }
+  } @else if $breakpoint == "xl" {
+    @media #{$breakpoint-xl-up} {
+      order: 1;
+    }
+  } @else {
+    @warn "last mixin arg must be one of the existing breakpoints (#{$breakpoint-up-prefixes})";
+  }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_colors.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_colors.scss
new file mode 100644
index 00000000..43c5f94d
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_colors.scss
@@ -0,0 +1,5 @@
+@each $clr-name, $clr-code in $color {
+	.#{$clr-name} { color: $clr-code; }
+
+	.bg-#{$clr-name} { background-color: $clr-code; }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_headings.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_headings.scss
new file mode 100644
index 00000000..26773761
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_headings.scss
@@ -0,0 +1,25 @@
+@mixin heading-factory() {
+    @each $h, $style in $headings {
+        $font: nth($style, 1);
+        $size: nth($style, 2);
+        $wt: nth($style, 3);
+
+        #{$h} {
+            font-family: #{$font};
+            font-weight: $wt;
+            font-size: $size;
+        }
+    }
+
+    @each $h, $style in $headings {
+        $font: nth($style, 1);
+        $size: nth($style, 2);
+        $wt: nth($style, 3);
+
+        .#{$h} {
+            font-family: #{$font};
+            font-weight: $wt;
+            font-size: $size;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_px2rem.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_px2rem.scss
new file mode 100644
index 00000000..3f13ec7b
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_px2rem.scss
@@ -0,0 +1,21 @@
+@use 'sass:math';
+
+$root-font: 16px !default;
+
+@function strip-units($number) {
+    @return math.div($number, $number * 0 + 1);
+ }
+
+@function px2rem($px) {
+    $rnum: strip-units($root-font);
+    $fnum: strip-units($px);
+    $rem: math.div($fnum, $rnum);
+    @return #{$rem}rem;
+}
+
+@function px2vw($px) {
+    $rnum: 1920;
+    $fnum: strip-units($px);
+    $vw: math.div($fnum, $rnum) * 100;
+    @return #{$vw}vw;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_text-align.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_text-align.scss
new file mode 100644
index 00000000..3ef602a1
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_scss/mixins/_text-align.scss
@@ -0,0 +1,20 @@
+
+@mixin text-align() {
+
+    @each $align in $text-alignment {
+        .text-#{$align} {
+            text-align: #{$align};
+        }
+    }
+
+    @each $prefix in $breakpoint-all-prefixes {
+        @each $align in $text-alignment {
+
+                @include breakpoint($prefix) {
+                    .text-#{$prefix}-#{$align} {
+                        text-align: #{$align};
+                    }
+                }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/colors.json b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/colors.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/colors.json
rename to reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/colors.json
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/domain.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/domain.js
new file mode 100644
index 00000000..eb7e3877
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/domain.js
@@ -0,0 +1,3 @@
+module.exports = {
+    name: 'ReactiumUI',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/index.js
new file mode 100644
index 00000000..f009b825
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/index.js
@@ -0,0 +1,3 @@
+import useWindowSize from './useWindowSize';
+
+export { useWindowSize };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/useWindowSize.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/useWindowSize.js
new file mode 100644
index 00000000..63460763
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/hooks/useWindowSize.js
@@ -0,0 +1,72 @@
+/**
+ * @function useWindowSize
+ * @since 0.0.47
+ *
+ * @description Window resize hook useful for adding and removing a window resize listener without all the headache.
+ *
+ * @params params {Object} The parameters to pass to the hook.
+ *
+ * @prop params.defaultWidth {Number} [Optional] Return a default width when rendering server-side.
+ * @prop params.defaultHeight {Number} [Optional] Return a default height when rendering server-side.
+ * @prop params.iWin {Window} [Optional] Pass in an alternate window object when using within a portaled iFrame.
+ *
+ * @return {Object} Returns an object with `width` and `height` properties.
+ *
+ * @example
+    import { useWindowSize } from 'reactium-ui/hooks';
+    import React, { useEffect } from 'react';
+
+    const myFunctionalComponent = () => {
+        const windowSize = useWindowSize({ defaultWidth: 0, defaultHeight: 0 });
+
+        const resized = () => {
+            console.log(windowSize);
+        };
+
+        useEffect(() => resized(), [windowSize]);
+
+        const render = () => (
+            <div>{windowSize}</div>
+        );
+
+        return render();
+    }
+ */
+
+import op from 'object-path';
+import { useEffect, useState } from 'react';
+
+const useWindowSize = (params = {}) => {
+    const hasWindow = typeof window !== 'undefined';
+
+    let { iWin, defaultWidth, defaultHeight } = params;
+
+    iWin = hasWindow ? iWin || window : null;
+
+    const getSize = () => {
+        return hasWindow
+            ? {
+                  width: hasWindow ? iWin.innerWidth : defaultWidth,
+                  height: hasWindow ? iWin.innerHeight : defaultHeight,
+              }
+            : { width: defautlWidth, height: defaultHeight };
+    };
+
+    const [windowSize, setWindowSize] = useState(getSize());
+
+    useEffect(() => {
+        if (!hasWindow) {
+            return;
+        }
+
+        const resized = () => setWindowSize(getSize());
+
+        iWin.addEventListener('resize', resized);
+
+        return () => iWin.removeEventListener('resize', resized);
+    }, []);
+
+    return windowSize;
+};
+
+export default useWindowSize;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/index.js
new file mode 100644
index 00000000..ac76eed7
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/index.js
@@ -0,0 +1,39 @@
+import colors from './colors';
+
+export * from './Alert';
+export * from './Breakpoint';
+export * from './Button';
+export * from './Carousel';
+export * from './Charts';
+export * from './Checkbox';
+export * from './Checkpoints';
+export * from './Collapsible';
+export * from './DataTable';
+export * from './DatePicker';
+export * from './Dialog';
+export * from './Dismissable';
+export * from './Dropdown';
+export * from './Dropzone';
+export * from './EventForm';
+export * from './Form';
+export * from './Icon';
+export * from './Image';
+export * from './Modal';
+export * from './Pagination';
+export * from './Picker';
+export * from './Portal';
+export * from './Prefs';
+export * from './Progress';
+export * from './Radio';
+export * from './Scene';
+export * from './Slider';
+export * from './Spinner';
+export * from './Tabs';
+export * from './TagsInput';
+export * from './TimePicker';
+export * from './Toast';
+export * from './Toggle';
+export * from './Tooltip';
+export * from './WebForm';
+
+export { colors };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/reactium-hooks.js
new file mode 100644
index 00000000..7bfa26a9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/reactium-hooks.js
@@ -0,0 +1,4 @@
+import Reactium from '@atomic-reactor/reactium-sdk-core';
+import * as ReactiumUI from './index';
+
+Reactium.Component.register('ReactiumUI', ReactiumUI);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/readme.md b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/readme.md
new file mode 100644
index 00000000..fba094c9
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/reactium-ui/readme.md
@@ -0,0 +1,51 @@
+![](https://image.ibb.co/ee2WaG/atomic_reactor.png)
+
+# Reactium
+
+A UI Component Library built with Reactium.
+
+-   [Demo](https://ui.reactium.io)
+
+## Quick Start
+
+```
+$ npm install
+$ npm run local
+```
+
+## Usage
+
+```
+import React from 'react';
+import { PieChart } from 'reactium-ui';
+
+const PieChartDemo = ({ data, style }) => (
+    <div style={style.flex}>
+        <div style={style.demo}>
+            <PieChart data={data} />
+        </div>
+    </div>
+);
+
+// Default properties
+PieChartDemo.defaultProps = {
+    data: [
+        { label: 'Cats', value: 1 },
+        { label: 'Dogs', value: 1 },
+        { label: 'People', value: 2 },
+    ],
+    style: {
+        demo: {
+            maxWidth: 500
+        },
+        flex: {
+            width: '100%',
+            display: 'flex',
+            justifyContent: 'center',
+        }
+    }
+};
+
+export default PieChartDemo;
+
+```
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/enums.js
index e00a2493..6a8aff1e 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/enums.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/enums.js
@@ -1,4 +1,4 @@
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     TEXT: {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/index.js
index 928f5fbf..22b49d1b 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/index.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import ENUMS from './enums';
 import PropTypes from 'prop-types';
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 import ConfirmBox from '../ConfirmBox';
 
 const noop = () => {};
@@ -42,7 +42,7 @@ export default AlertBox;
  * @apiParam {String} [title='Alert'] The titlebar content.
  * @apiParam {Object} [style] React style object applied to the AlertBox wrapper div.
  * @apiExample useHookComponent() hook import
-import { useHookComponent } from 'reactium-core/sdk';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const MyComponent = () => {
     const ConfirmBox = useHookComponent('AlertBox');
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/reactium-hooks.js
index 166c5615..c4cdd596 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/AlertBox/reactium-hooks.js
@@ -1,5 +1,5 @@
 import AlertBox from './index';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 Reactium.Plugin.register('AlertBox').then(() => {
     Reactium.Component.register('AlertBox', AlertBox);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/index.js
deleted file mode 100644
index 629a0d20..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import React from 'react';
-import Proptypes from 'prop-types';
-import { useHookComponent } from 'reactium-core/sdk';
-import { Spinner } from '@atomic-reactor/reactium-ui';
-
-const Blocker = props => {
-    const Portal = useHookComponent('Portal');
-    return (
-        <Portal>
-            <Spinner {...props} />
-        </Portal>
-    );
-};
-
-Blocker.propTypes = {
-    ...Spinner.propTypes,
-};
-
-Blocker.defaultProps = {
-    className: 'ar-blocker',
-};
-
-export default Blocker;
-
-/**
- * @api {RegisteredComponent} <Blocker/> Blocker
- * @apiDescription Overlay that displays the Reactium UI `<Spinner />` component and disables interaction with the rest of the UI.
- * @apiName Blocker
- * @apiGroup Registered Component
- * @apiParam {Object} props See the documentation for the [http://ui.reactium.io/toolkit/components/spinner-molecule](Spinner component).
- * @apiExample Basic Usage:
-import Blocker from 'reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker';
-
-...
-
-<Blocker />
-
- * @apiExample useHookComponent Example:
-import { useHookComponent } from 'reactium-core/sdk';
-
-const Component = props => {
-    const Blocker = useHookComponent('Blocker');
-
-    return <Blocker />
-};
-
-export default Component;
- */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/_reactium-style-organisms-admin-cap-editor.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/_reactium-style-organisms-admin-cap-editor.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/index.js
index 170fecdb..e9655d9f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/index.js
@@ -1,31 +1,27 @@
+import _ from 'underscore';
+import op from 'object-path';
 import React, { useState } from 'react';
-import { useCapabilityCheck, useAsyncEffect } from 'reactium-core/sdk';
+import DataTable from 'reactium-ui/DataTable';
+import { Button, Icon, Dialog, Checkbox, Spinner } from 'reactium-ui';
 import {
-    Button,
-    Icon,
-    Dialog,
-    Checkbox,
-    Spinner,
-} from '@atomic-reactor/reactium-ui';
-import DataTable from '@atomic-reactor/reactium-ui/DataTable';
-
+    useCapabilityCheck,
+    useAsyncEffect,
+} from '@atomic-reactor/reactium-core/sdk';
 import Reactium, {
     __,
     useRoles,
-    useHandle,
     useWindowSize,
-} from 'reactium-core/sdk';
-import op from 'object-path';
-import _ from 'underscore';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const CapabilityDescription = ({ title = '', tooltip = '' }) => {
     return (
         <span
-            title={tooltip}
             tabIndex={0}
-            data-tooltip={tooltip}
+            title={tooltip}
             data-align='right'
-            data-vertical-align='middle'>
+            data-tooltip={tooltip}
+            data-vertical-align='middle'
+        >
             {title}
         </span>
     );
@@ -59,7 +55,7 @@ const RoleControl = ({
 }) => {
     const name = role.name;
 
-    const onChange = e => {
+    const onChange = (e) => {
         const target = e.target;
 
         if (target.checked) {
@@ -101,7 +97,8 @@ const CapabilityEditor = ({
     );
     const currentRoles = useRoles();
     const roles = Object.values(currentRoles).filter(
-        role => !['banned', 'super-admin', 'administrator'].includes(role.name),
+        (role) =>
+            !['banned', 'super-admin', 'administrator'].includes(role.name),
     );
 
     const [loadedCaps, setLoadedCaps] = useState({
@@ -109,7 +106,7 @@ const CapabilityEditor = ({
         caps: {},
     });
 
-    const updateLoadedCaps = update => {
+    const updateLoadedCaps = (update) => {
         const newValue = {
             ...loadedCaps,
             ...update,
@@ -118,8 +115,7 @@ const CapabilityEditor = ({
         setLoadedCaps(newValue);
     };
 
-    const tools = useHandle('AdminTools');
-    const Toast = op.get(tools, 'Toast');
+    const Toast = op.get(Reactium.State, 'Tools.Toast');
 
     const { breakpoint } = useWindowSize();
 
@@ -146,7 +142,7 @@ const CapabilityEditor = ({
         String(capability).toLowerCase(),
     );
     useAsyncEffect(
-        async isMounted => {
+        async (isMounted) => {
             if (capNames.length > 0) {
                 const caps = await Reactium.Capability.get(capNames);
                 if (isMounted())
@@ -159,15 +155,16 @@ const CapabilityEditor = ({
         [capNames.sort().join('')],
     );
 
-    const clearCap = capability => {
+    const clearCap = (capability) => {
         capability = String(capability).toLowerCase();
         const role = op.get(loadedCaps, ['caps', capability, 'allowed']);
         return save(capability, role, 'revoke');
     };
 
-    const addRole = capability => role => save(capability, role, 'grant');
+    const addRole = (capability) => (role) => save(capability, role, 'grant');
 
-    const removeRole = capability => role => save(capability, role, 'revoke');
+    const removeRole = (capability) => (role) =>
+        save(capability, role, 'revoke');
 
     const save = (capability, role, action) => {
         capability = String(capability).toLowerCase();
@@ -183,10 +180,7 @@ const CapabilityEditor = ({
                     .value();
                 const idx = _.findIndex(roleArray, { name: role });
                 const related = _.pluck(roleArray.slice(idx), 'name');
-                role = _.chain([role, related])
-                    .flatten()
-                    .uniq()
-                    .value();
+                role = _.chain([role, related]).flatten().uniq().value();
             } else {
                 role = _.flatten([role]);
             }
@@ -202,10 +196,7 @@ const CapabilityEditor = ({
         allowed =
             action === 'grant' ? [allowed, role] : _.without(allowed, ...role);
 
-        allowed = _.chain(allowed)
-            .flatten()
-            .uniq()
-            .value();
+        allowed = _.chain(allowed).flatten().uniq().value();
 
         op.set(caps, [capability, 'allowed'], allowed);
         updateLoadedCaps({ caps });
@@ -221,7 +212,7 @@ const CapabilityEditor = ({
                     icon: <Icon.Feather.Check style={{ marginRight: 12 }} />,
                 });
             })
-            .catch(err => {
+            .catch((err) => {
                 Toast.show({
                     autoClose: 1000,
                     type: Toast.TYPE.ERROR,
@@ -286,7 +277,7 @@ const CapabilityEditor = ({
         }, {});
     };
 
-    const data = capabilities.map(cap => ({
+    const data = capabilities.map((cap) => ({
         clear: (
             <Button
                 className='clear-cap'
@@ -294,7 +285,8 @@ const CapabilityEditor = ({
                 data-vertical-align='middle'
                 data-align='left'
                 color={Button.ENUMS.COLOR.DANGER}
-                onClick={() => clearCap(cap.capability)}>
+                onClick={() => clearCap(cap.capability)}
+            >
                 <Icon name={'Feather.X'} />
                 <span className='sr-only'>{clearLabel}</span>
             </Button>
@@ -307,7 +299,8 @@ const CapabilityEditor = ({
         <Dialog
             pref={pref}
             className='capability-editor'
-            header={{ title: __('Capabilities'), dismissable: false }}>
+            header={{ title: __('Capabilities'), dismissable: false }}
+        >
             {loadedCaps.loading ? (
                 <Loading />
             ) : (
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/reactium-hooks.js
index 9d6d7e0b..16543f09 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import CapabilityEditor from './index';
 
 Reactium.Component.register('CapabilityEditor', CapabilityEditor);
@@ -6,7 +6,7 @@ Reactium.Component.register('CapabilityEditor', CapabilityEditor);
 // Clear cached values
 Reactium.Hook.register('user.before.logout', () => {
     const keys = Reactium.Cache.keys();
-    keys.forEach(key => {
+    keys.forEach((key) => {
         if (!String(key).startsWith('capabilities')) return;
         Reactium.Cache.del(key);
     });
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/_style.scss
deleted file mode 100644
index 28d0f197..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/_style.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-.ar-code {
-    display: flex;
-    align-items: stretch;
-    flex-wrap: nowrap;
-    height: 100%;
-    width: 100%;
-    line-height: 1.5;
-    overflow-x: auto;
-    overflow-y: visible;
-
-    &-lines {
-        line-height: inherit;
-        font-family: monospace;
-        font-size: 16px;
-        padding: 0;
-
-        .num {
-            color: inherit;
-            background-color: transparent;
-            font-family: inherit;
-            font-size: inherit;
-            text-align: right;
-            width: 100%;
-            padding: 0 16px;
-            user-select: none;
-
-            &:first-child {
-                padding-top: 16px;
-            }
-
-            &:last-child {
-                padding-bottom: 16px;
-            }
-        }
-    }
-
-    &-input {
-        padding: 16px 0;
-        flex-grow: 1;
-    }
-}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/index.js
deleted file mode 100644
index b1386673..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/index.js
+++ /dev/null
@@ -1,361 +0,0 @@
-import uuid from 'uuid/v4';
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import prettier from 'prettier/standalone';
-import parserHtml from 'prettier/parser-html';
-import parserBabel from 'prettier/parser-babylon';
-import ReactiumLight from './theme/ReactiumLight';
-import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
-
-import { LiveProvider, LiveEditor, LiveError, LivePreview } from 'react-live';
-
-import Reactium, {
-    ComponentEvent,
-    useDerivedState,
-    useEventHandle,
-    useHookComponent,
-    useRefs,
-    useStatus,
-} from 'reactium-core/sdk';
-
-Reactium.CodeEditorTheme =
-    Reactium.CodeEditorTheme ||
-    Reactium.Utils.registryFactory('CodeEditorTheme');
-
-const defaultFormat = {
-    autoCloseBrackets: true,
-    autoCloseTags: true,
-    jsxSingleQuote: true,
-    jsxBracketSameLine: true,
-    mode: 'jsx',
-    parser: 'babel',
-    plugins: [parserBabel, parserHtml],
-    printWidth: 80,
-    singleQuote: true,
-    tabWidth: 2,
-    trailingComma: 'es5',
-};
-
-const prettyJSON = (value, options = {}) => {
-    if (!value) return {};
-
-    let output;
-    try {
-        output = JSON.stringify(value, null, op.get(options, 'tabWidth', 2));
-    } catch (err) {
-        return value;
-    }
-
-    return output;
-};
-
-const prettyJSX = (value, options) => {
-    if (!value || value === '') return '';
-
-    let output;
-    try {
-        output = prettier.format(value, options);
-    } catch (err) {
-        return value;
-    }
-
-    output = String(output).trim();
-    let oarray = output.split(';');
-    if (oarray.length > 0) oarray.pop();
-    output = oarray.join('');
-    output = String(output).trim();
-
-    return output || '';
-};
-
-const formatter = (value, opts) => {
-    const { mode, ...options } = opts;
-    switch (mode) {
-        case 'json':
-            return prettyJSON(value, options);
-
-        default:
-            return prettyJSX(value, options);
-    }
-};
-
-const isTextarea = elm => Boolean(elm instanceof HTMLInputElement);
-
-const noop = () => {};
-
-const theme = props => {
-    const themeName = _.isObject(props)
-        ? op.get(
-              props,
-              'theme',
-              Reactium.Prefs.get('admin.theme.codeEditor', 'ReactiumLight'),
-          )
-        : props;
-
-    // Find theme in CodeEditorTheme registry
-    let theme;
-    try {
-        const regTheme = _.findWhere(Reactium.CodeEditorTheme.list, {
-            id: themeName,
-        });
-        theme = op.get(regTheme, 'theme', ReactiumLight);
-    } catch (err) {
-        // Empty on purpose
-    }
-    theme = theme || ReactiumLight;
-    return theme;
-};
-
-let CodeEditor = (initialProps, ref) => {
-    let {
-        className,
-        format,
-        id,
-        namespace,
-        onChange = noop,
-        value: initialValue,
-        ...props
-    } = initialProps;
-
-    // backfill the format object to protect from missing values when manually set
-    format = { ...defaultFormat, ...format };
-
-    // -------------------------------------------------------------------------
-    // Refs
-    // -------------------------------------------------------------------------
-    const refs = useRefs();
-
-    // -------------------------------------------------------------------------
-    // State
-    // -------------------------------------------------------------------------
-    const [state, update] = useDerivedState({
-        ...props,
-        lines: 1,
-        value: initialValue,
-        theme: theme(initialProps),
-    });
-    const setState = newState => {
-        if (unMounted()) return;
-        update(newState);
-    };
-
-    // -------------------------------------------------------------------------
-    // Internal Interface
-    // -------------------------------------------------------------------------
-    const cx = suffix => {
-        if (className && namespace) {
-            return cn(
-                Reactium.Utils.cxFactory(namespace)(suffix),
-                Reactium.Utils.cxFactory(className)(suffix),
-            );
-        }
-
-        if (className) {
-            Reactium.Utils.cxFactory(className)(suffix);
-        }
-
-        if (namespace) {
-            return Reactium.Utils.cxFactory(namespace)(suffix);
-        }
-    };
-
-    const dispatch = async (eventType, event = {}, callback) => {
-        if (!_.isObject(event)) {
-            throw new Error(
-                'CodeEditor.dispatch() expects 2nd parameter to be of type Object',
-            );
-        }
-
-        eventType = String(eventType).toLowerCase();
-
-        const evt = new ComponentEvent(eventType, event);
-
-        handle.dispatchEvent(evt);
-
-        if (unMounted()) return;
-        await Reactium.Hook.run(`component-manager-${eventType}`, evt, handle);
-
-        if (unMounted()) return;
-        if (typeof callback === 'function') await callback(evt);
-    };
-
-    const focus = () => {
-        const elm = document.getElementById(id);
-        if (elm) elm.focus();
-    };
-
-    const getValue = () => formatter(state.value, format);
-
-    const listeners = () => {
-        Reactium.Hotkeys.register('code-format', {
-            callback: _onHotkey,
-            key: 'mod+f',
-            order: Reactium.Enums.priority.lowest,
-            scope: refs.get('container'),
-        });
-
-        return () => {
-            Reactium.Hotkeys.unregister('code-format');
-        };
-    };
-
-    const setValue = value => setState({ value });
-
-    const unMounted = () => !refs.get('container');
-
-    // -------------------------------------------------------------------------
-    // Handle
-    // -------------------------------------------------------------------------
-    const _handle = () => ({
-        dispatch,
-        focus,
-        getValue,
-        setState,
-        setValue,
-        state,
-        value: state.value,
-    });
-
-    const [handle, updateHandle] = useEventHandle(_handle());
-    const setHandle = (newHandle = {}) => {
-        if (unMounted()) return;
-        Object.entries(newHandle).forEach(([key, value]) =>
-            op.set(handle, key, value),
-        );
-        updateHandle(handle);
-    };
-
-    useImperativeHandle(ref, () => handle, [handle]);
-
-    const _onChange = () => {
-        let { value } = state;
-
-        const lines = Math.max(value.split('\n').length, 1);
-
-        value = formatter(value, format);
-
-        // Update handle
-        setHandle({ value });
-        setState({ lines });
-
-        // Dispatch event and call onChange handler
-        _.defer(() => dispatch('change', { value }, onChange));
-    };
-
-    const _onHotkey = e => {
-        const elm = e.target;
-
-        e.stopPropagation();
-        e.preventDefault();
-
-        let { value } = state;
-
-        const start = elm.selectionStart;
-        const line = value.substr(0, start).split('\n').length - 1;
-
-        value = formatter(value, format);
-
-        // move cursor to end of current line
-        const end = Number(
-            value
-                .split('\n')
-                .reduce(
-                    (e, str, i) => e + (i <= line ? String(str).length + 1 : 0),
-                    -1,
-                ),
-        );
-
-        elm.value = value;
-        elm.focus();
-        elm.setSelectionRange(end, end);
-
-        setState({ value });
-    };
-
-    // -------------------------------------------------------------------------
-    // Side effects
-    // -------------------------------------------------------------------------
-
-    // listeners
-    useEffect(listeners, []);
-
-    // state.value change
-    useEffect(_onChange, [op.get(state, 'value')]);
-
-    // theme change from props
-    useEffect(() => {
-        setState({ theme: theme(initialProps) });
-    }, [initialProps.theme]);
-
-    // -------------------------------------------------------------------------
-    // Render
-    // -------------------------------------------------------------------------
-    return (
-        <LiveProvider
-            code={state.value}
-            language={format.mode}
-            disabled={state.disabled}
-            theme={state.theme}>
-            <div
-                className={cx()}
-                ref={elm => refs.set('container', elm)}
-                style={{ ...state.theme.plain, ...state.style }}>
-                {state.lineNumbers && (
-                    <LineNumbers
-                        count={state.lines}
-                        className={cx('lines')}
-                        theme={state.theme}
-                    />
-                )}
-                <div className={cx('input')} onClick={focus}>
-                    <LiveEditor
-                        onValueChange={setValue}
-                        padding={0}
-                        tabSize={format.tabWidth}
-                        textareaId={id}
-                    />
-                </div>
-                {state.livePreview && (
-                    <div className={cx('preview')}>
-                        <LivePreview />
-                    </div>
-                )}
-                {state.showErrors && (
-                    <div className={cx('errors')}>
-                        <LiveError />
-                    </div>
-                )}
-            </div>
-        </LiveProvider>
-    );
-};
-
-const LineNumbers = ({ className, count, theme }) =>
-    count < 1 ? null : (
-        <div className={className} style={op.get(theme, 'plain')}>
-            {_.range(1, count + 1).map(n => (
-                <div key={`line-number-${n}`} className='num'>
-                    {n}
-                </div>
-            ))}
-        </div>
-    );
-
-CodeEditor = forwardRef(CodeEditor);
-
-CodeEditor.defaultProps = {
-    disabled: false,
-    format: defaultFormat,
-    id: uuid(),
-    lineNumbers: false,
-    livePreview: false,
-    namespace: 'ar-code',
-    onChange: noop,
-    showErrors: false,
-    style: {},
-    theme: 'ReactiumLight',
-    value: '',
-};
-
-export { CodeEditor, CodeEditor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/reactium-hooks.js
deleted file mode 100644
index 3e2f92e6..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/reactium-hooks.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import CodeEditor from './index';
-import Reactium from 'reactium-core/sdk';
-import ReactiumDark from './theme/ReactiumDark';
-import ReactiumLight from './theme/ReactiumLight';
-
-Reactium.Plugin.register('CodeEditor').then(() => {
-    Reactium.Component.register('CodeEditor', CodeEditor);
-    Reactium.CodeEditorTheme.register('ReactiumDark', { theme: ReactiumDark });
-    Reactium.CodeEditorTheme.register('ReactiumLight', {
-        theme: ReactiumLight,
-    });
-});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumDark.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumDark.js
deleted file mode 100644
index 99ffcb3c..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumDark.js
+++ /dev/null
@@ -1,105 +0,0 @@
-const theme = {
-    plain: {
-        color: '#9CDCFE',
-        backgroundColor: '#1E1E1E',
-    },
-    styles: [
-        {
-            types: ['prolog'],
-            style: {
-                color: 'rgb(0, 0, 128)',
-            },
-        },
-        {
-            types: ['comment'],
-            style: {
-                color: 'rgb(106, 153, 85)',
-            },
-        },
-        {
-            types: ['builtin', 'changed', 'keyword'],
-            style: {
-                color: 'rgb(86, 156, 214)',
-            },
-        },
-        {
-            types: ['number', 'inserted'],
-            style: {
-                color: 'rgb(181, 206, 168)',
-            },
-        },
-        {
-            types: ['constant'],
-            style: {
-                color: 'rgb(100, 102, 149)',
-            },
-        },
-        {
-            types: ['attr-name', 'variable'],
-            style: {
-                color: 'rgb(156, 220, 254)',
-            },
-        },
-        {
-            types: ['deleted', 'string', 'attr-value'],
-            style: {
-                color: 'rgb(206, 145, 120)',
-            },
-        },
-        {
-            types: ['selector'],
-            style: {
-                color: 'rgb(215, 186, 125)',
-            },
-        },
-        {
-            // Fix tag color
-            types: ['tag'],
-            style: {
-                color: 'rgb(78, 201, 176)',
-            },
-        },
-        {
-            // Fix tag color for HTML
-            types: ['tag'],
-            languages: ['markup'],
-            style: {
-                color: 'rgb(86, 156, 214)',
-            },
-        },
-        {
-            types: ['punctuation', 'operator'],
-            style: {
-                color: 'rgb(212, 212, 212)',
-            },
-        },
-        {
-            // Fix punctuation color for HTML
-            types: ['punctuation'],
-            languages: ['markup'],
-            style: {
-                color: '#808080',
-            },
-        },
-        {
-            types: ['function'],
-            style: {
-                color: 'rgb(220, 220, 170)',
-            },
-        },
-        {
-            types: ['class-name'],
-            style: {
-                color: 'rgb(78, 201, 176)',
-            },
-        },
-        {
-            types: ['char'],
-            style: {
-                color: 'rgb(209, 105, 105)',
-            },
-        },
-    ],
-};
-
-export default theme;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumLight.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumLight.js
deleted file mode 100644
index 8a376759..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/CodeEditor/theme/ReactiumLight.js
+++ /dev/null
@@ -1,76 +0,0 @@
-const theme = {
-    plain: {
-        color: '#393A34',
-        backgroundColor: '#f6f8fa',
-    },
-    styles: [
-        {
-            types: ['comment', 'prolog', 'doctype', 'cdata'],
-            style: {
-                color: '#999988',
-                fontStyle: 'italic',
-            },
-        },
-        {
-            types: ['namespace'],
-            style: {
-                opacity: 0.7,
-            },
-        },
-        {
-            types: ['string', 'attr-value'],
-            style: {
-                color: '#e3116c',
-            },
-        },
-        {
-            types: ['punctuation', 'operator'],
-            style: {
-                color: '#393A34',
-            },
-        },
-        {
-            types: [
-                'entity',
-                'url',
-                'symbol',
-                'number',
-                'boolean',
-                'variable',
-                'constant',
-                'property',
-                'regex',
-                'inserted',
-            ],
-            style: {
-                color: '#36acaa',
-            },
-        },
-        {
-            types: ['atrule', 'keyword', 'attr-name', 'selector'],
-            style: {
-                color: '#00a4db',
-            },
-        },
-        {
-            types: ['function', 'deleted', 'tag'],
-            style: {
-                color: '#d73a49',
-            },
-        },
-        {
-            types: ['function-variable'],
-            style: {
-                color: '#6f42c1',
-            },
-        },
-        {
-            types: ['tag', 'selector', 'keyword'],
-            style: {
-                color: '#00009f',
-            },
-        },
-    ],
-};
-
-export default theme;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ColorPicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ColorPicker/index.js
deleted file mode 100644
index d35852a4..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ColorPicker/index.js
+++ /dev/null
@@ -1,257 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
-
-import Reactium, {
-    ComponentEvent,
-    useDerivedState,
-    useEventHandle,
-    useIsContainer,
-    useRefs,
-    useStatus,
-} from 'reactium-core/sdk';
-
-const noop = () => {};
-
-let ColorPicker = (
-    {
-        maxHeight,
-        minHeight,
-        namespace,
-        onBlur = noop,
-        onFocus = noop,
-        onChange = noop,
-        onKeyUp = noop,
-        value: initialValue,
-        visible: initialVisible,
-        ...props
-    },
-    ref,
-) => {
-    const refs = useRefs();
-
-    const [status, setStatus, isStatus] = useStatus();
-
-    const [state, update] = useDerivedState({
-        value: props.defaultValue || initialValue,
-        visible: initialVisible,
-    });
-
-    const setState = (k, v) => {
-        if (unMounted()) return;
-        const newState = _.isString(k) ? { [k]: v } : k;
-        update(newState);
-    };
-
-    const setValue = v => setState('value', v);
-
-    const setVisible = v => setState('visible', v);
-
-    const dispatch = (e, eventObj) => {
-        const evt = new ComponentEvent(e, eventObj);
-        handle.dispatchEvent(evt);
-        return evt;
-    };
-
-    const isContainer = useIsContainer();
-
-    const hide = () => setVisible(false);
-
-    const show = () => setVisible(true);
-
-    const toggle = () => setVisible(!state.visible);
-
-    const _onBlur = e => {
-        const container = refs.get('container');
-        if (container && isContainer(e.target, container)) {
-            return;
-        } else {
-            setVisible(false);
-            onBlur(e);
-        }
-    };
-
-    const _onChange = e => setValue(e.target.value);
-
-    const _onFocus = e => {
-        setVisible(true);
-        onFocus(e);
-    };
-
-    const _onKeyUp = e => {
-        let v = e.target.value;
-        if (String(v).startsWith('#')) {
-            v = String(v).toUpperCase();
-        }
-
-        e.target.value = v;
-
-        onKeyUp(e);
-    };
-
-    const _onSelect = v => () => {
-        setValue(v);
-        hide();
-    };
-
-    const _value = () => {
-        let val = !_.chain([op.get(state, 'value')])
-            .flatten()
-            .compact()
-            .isEmpty()
-            .value()
-            ? state.value
-            : ColorPicker.defaultProps.value;
-
-        if (!val) return;
-
-        val = String(val).startsWith('#') ? String(val).toUpperCase() : val;
-
-        return val;
-    };
-
-    const colors = () => Object.values(Reactium.RTE.colors);
-
-    const unMounted = () => !refs.get('container');
-
-    const _handle = () => ({
-        ...props,
-        blur: hide,
-        colors: colors(),
-        dispatch,
-        focus: show,
-        hide,
-        isStatus,
-        refs,
-        show,
-        setState,
-        setStatus,
-        setValue,
-        setVisible,
-        state,
-        status,
-        toggle,
-        unMounted,
-        value: _value(),
-    });
-
-    const [handle, updateHandle] = useEventHandle(_handle());
-    const setHandle = newHandle => {
-        if (unMounted()) return;
-        updateHandle(newHandle);
-    };
-
-    useImperativeHandle(ref, () => handle);
-
-    useEffect(() => {
-        const newValue = _value();
-
-        if (handle.value !== newValue) {
-            handle.value = newValue;
-            if (!isStatus('pending')) {
-                onChange(dispatch('change', { value: handle.value }));
-            }
-
-            const input = refs.get('input');
-            if (input && handle.value && input.value !== handle.value) {
-                input.value = handle.value;
-            }
-
-            setHandle(handle);
-        }
-    }, [state.value]);
-
-    useEffect(() => {
-        dispatch('status', { status, isStatus, setStatus });
-
-        switch (status) {
-            case 'pending':
-                setStatus('ready', true);
-                break;
-        }
-    }, [status]);
-
-    useEffect(() => {
-        if (!window) return;
-        window.addEventListener('mousedown', _onBlur);
-        window.addEventListener('touchstart', _onBlur);
-
-        return () => {
-            window.removeEventListener('mousedown', _onBlur);
-            window.removeEventListener('touchstart', _onBlur);
-        };
-    }, []);
-
-    return (
-        <div className={cn(namespace)} ref={elm => refs.set('container', elm)}>
-            <div className='fieldset'>
-                <input
-                    {...props}
-                    type='text'
-                    onFocus={_onFocus}
-                    onKeyUp={_onKeyUp}
-                    onChange={_onChange}
-                    defaultValue={state.value}
-                    ref={elm => refs.set('input', elm)}
-                />
-                <Swatch value={_value()} disabled />
-            </div>
-            <div
-                className='ar-color-select'
-                style={{ display: !state.visible ? 'none' : null }}>
-                <Scrollbars
-                    autoHeight
-                    autoHeightMax={maxHeight}
-                    autoHeightMin={minHeight}>
-                    <div className='ar-color-select-swatches'>
-                        {colors().map((item, i) => (
-                            <Swatch
-                                onClick={_onSelect(item.value)}
-                                active={state.value === item.value}
-                                key={`color-${item.value}-${i}`}
-                                {...item}
-                            />
-                        ))}
-                    </div>
-                </Scrollbars>
-            </div>
-        </div>
-    );
-};
-
-ColorPicker = forwardRef(ColorPicker);
-
-ColorPicker.defaultProps = {
-    maxHeight: 256,
-    minHeight: 48,
-    namespace: 'input-button',
-    value: null,
-    visible: false,
-};
-
-const Swatch = ({
-    active,
-    className,
-    label,
-    onClick = noop,
-    disabled,
-    value,
-    ...props
-}) => (
-    <div
-        className={cn('swatch', className, {
-            light: value && Reactium.RTE.isLight(value),
-            disabled,
-            active,
-        })}
-        onClick={!disabled ? onClick : noop}
-        style={{ backgroundColor: value }}
-        title={label || value}
-        {...props}
-    />
-);
-
-export { ColorPicker, ColorPicker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/_reactium-style-organisms-admin-confirm-box.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/_reactium-style-organisms-admin-confirm-box.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/enums.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/enums.js
index 527800d4..5d3e66a9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/enums.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/enums.js
@@ -1,4 +1,4 @@
-import { __ } from 'reactium-core/sdk';
+import { __ } from '@atomic-reactor/reactium-core/sdk';
 
 const ENUMS = {
     TEXT: {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/index.js
index ba87984e..c0554f58 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/index.js
@@ -2,8 +2,7 @@ import React from 'react';
 import ENUMS from './enums';
 import op from 'object-path';
 import PropTypes from 'prop-types';
-import { useHandle } from 'reactium-core/sdk';
-import { Button, Dialog } from '@atomic-reactor/reactium-ui';
+import { Button, Dialog } from 'reactium-ui';
 
 /**
  * -----------------------------------------------------------------------------
@@ -48,7 +47,8 @@ const ConfirmBox = ({
                         size='sm'
                         type='button'
                         color={clr}
-                        onClick={onClick}>
+                        onClick={onClick}
+                    >
                         {btn.label}
                     </Button>
                 );
@@ -64,7 +64,8 @@ const ConfirmBox = ({
                 {...props}
                 onDismiss={() => _onCancel()}
                 dismissable={true}
-                collapsible={false}>
+                collapsible={false}
+            >
                 <div className='admin-confirm-box-message'>{message}</div>
                 <div className='admin-confirm-box-buttons'>
                     <Buttons />
@@ -112,7 +113,7 @@ export default ConfirmBox;
  * @apiParam {Object} [style] React style object applied to the ConfirmBox wrapper div.
  * @apiParam {String} [title='Confirm'] The titlebar content.
  * @apiExample useHookComponent() hook import
-import { useHookComponent } from 'reactium-core/sdk';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const MyComponent = () => {
     const ConfirmBox = useHookComponent('ConfirmBox');
@@ -156,7 +157,7 @@ buttons.yes.label = 'Proceed';
 />
 
 @apiExample Custom Buttons:
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 ...
 
@@ -192,6 +193,6 @@ delete buttons.no;
 
  @apiExample Dependencies
 import op from 'object-path';
-import { useHandle } from 'reactium-core/sdk';
-import { Button, Dialog } from '@atomic-reactor/reactium-ui';
+import { useHandle } from '@atomic-reactor/reactium-core/sdk';
+import { Button, Dialog } from 'reactium-ui';
  */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/reactium-hooks.js
index 808ad327..af533544 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import ConfirmBox from './index';
 
 Reactium.Component.register('ConfirmBox', ConfirmBox);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js
deleted file mode 100644
index cb3e9d50..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js
+++ /dev/null
@@ -1,268 +0,0 @@
-import React, { useRef, useState, useEffect, memo } from 'react';
-import { Alert, Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, {
-    __,
-    useHookComponent,
-    useAsyncEffect,
-} from 'reactium-core/sdk';
-import MenuList from './MenuList';
-import _ from 'underscore';
-import op from 'object-path';
-import cn from 'classnames';
-
-const noop = () => {};
-const Menu = props => {
-    const {
-        items = [],
-        setItems = noop,
-        onRemoveItem = noop,
-        onUpdateItem = noop,
-        itemTypes = {},
-        fieldName,
-        editor,
-    } = props;
-
-    const onReorder = (reordered = []) => {
-        const currentItemsById = _.indexBy(items, 'id');
-        const newItems = _.compact(
-            reordered.map(({ key, depth = 0 }) => ({
-                ...currentItemsById[key],
-                depth,
-            })),
-        ).map((item, idx, items) => {
-            const depth =
-                idx > 0
-                    ? // children are at most 1 deeper than parent
-                      Math.min(
-                          op.get(items, [idx - 1, 'depth'], 0) + 1,
-                          item.depth,
-                      )
-                    : // top-most parent must be depth 0
-                      0;
-
-            return {
-                ...item,
-                depth,
-            };
-        });
-
-        if (
-            items.length !== newItems.length ||
-            !_.isEqual(_.pluck(items, 'id'), _.pluck(newItems, 'id')) ||
-            !_.isEqual(_.pluck(items, 'depth'), _.pluck(newItems, 'depth'))
-        ) {
-            setItems(newItems);
-        }
-    };
-
-    return (
-        <div className='menu-list-wrapper'>
-            <MenuList
-                fieldName={fieldName}
-                editor={editor}
-                onReorder={onReorder}
-                items={items.map(item => ({
-                    ...item,
-                    MenuItem: op.get(itemTypes, [item.type, 'MenuItem']),
-                }))}
-                onRemoveItem={onRemoveItem}
-                onUpdateItem={onUpdateItem}
-            />
-        </div>
-    );
-};
-
-const areEqual = (pv, nx) => {
-    return pv.editor === nx.editor && pv.fieldName === nx.fieldName;
-};
-
-const MenuEditor = memo(props => {
-    const fieldName = op.get(props, 'fieldName');
-    const namespace = op.get(props, 'namespace', 'menu-editor');
-    const [value, _setValue] = useState(
-        op.get(props.editor, ['value', fieldName], { items: [] }),
-    );
-    const valueRef = useRef(value);
-
-    const setValue = value => {
-        valueRef.current = value;
-        _setValue(value);
-    };
-
-    const getValue = () => valueRef.current;
-
-    const items = op.get(value, 'items', []);
-
-    const mapFieldsToItems = items => {
-        const fieldVal = op.get(
-            props.editor.EventForm.getValue(),
-            [fieldName],
-            {},
-        );
-
-        return items.map(item => {
-            const id = item.id;
-            if (op.has(fieldVal, [id])) {
-                return {
-                    ...item,
-                    ...op.get(fieldVal, [id]),
-                };
-            }
-
-            return item;
-        });
-    };
-
-    const setItems = items => {
-        const fieldVal = op.get(
-            props.editor.EventForm.getValue(),
-            [fieldName],
-            {},
-        );
-
-        const newValue = {
-            ...value,
-            ...fieldVal,
-            items: mapFieldsToItems(items),
-        };
-
-        setValue(newValue);
-        _.defer(() => props.editor.setValue({ [fieldName]: newValue }));
-    };
-
-    const addItems = item => {
-        const added = _.flatten([item]);
-        setItems(items.concat(added));
-    };
-
-    const removeItem = ({ id }) => () => {
-        setItems(items.filter(item => item.id !== id));
-    };
-
-    const updateItem = item => {
-        setItems(
-            items.map(current => {
-                if (current.id !== item.id) return current;
-                return {
-                    ...current,
-                    item,
-                };
-            }),
-        );
-    };
-
-    const ElementDialog = useHookComponent('ElementDialog');
-    const itemTypes = Reactium.MenuBuilder.ItemType.list || [];
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const clean = e => {
-        const formValue = op.get(e.value, [fieldName], {});
-        setValue(formValue);
-    };
-
-    const save = async statusEvt => {
-        const currentValue = getValue();
-        const formValue = op.get(statusEvt, ['value', fieldName], {});
-
-        const saveItems = mapFieldsToItems(op.get(currentValue, 'items', []));
-        await new Promise(async resolve => {
-            for (const item of saveItems) {
-                Reactium.Hook.runSync('menu-build-item-save', fieldName, item);
-                await Reactium.Hook.run(
-                    'menu-build-item-save',
-                    fieldName,
-                    item,
-                );
-            }
-
-            resolve();
-        });
-
-        op.set(statusEvt, ['value', fieldName], {
-            ...formValue,
-            items: saveItems,
-        });
-    };
-
-    useEffect(() => {
-        props.editor.addEventListener('clean', clean);
-        props.editor.addEventListener('save-success', clean);
-        return () => {
-            props.editor.removeEventListener('clean', clean);
-            props.editor.removeEventListener('save-success', clean);
-        };
-    }, [props.editor]);
-
-    useAsyncEffect(async isMounted => {
-        const saveId = Reactium.Hook.register(
-            'form-editor-status',
-            async (statusEvt, type, handle) => {
-                if (statusEvt.event === 'SAVE' && isMounted()) {
-                    await save(statusEvt, type, handle);
-                }
-            },
-        );
-
-        return () => Reactium.Hook.unregister(saveId);
-    });
-
-    const renderEditor = () => (
-        <div className={'menu-container'}>
-            {items.length < 1 && (
-                <div className={'px-xs-20'}>
-                    <Alert
-                        dismissable={false}
-                        color={Alert.ENUMS.COLOR.INFO}
-                        icon={<Icon name={'Feather.Flag'} />}>
-                        {__('Add Menu Item to begin menu.')}
-                    </Alert>
-                </div>
-            )}
-            <div className={'menu'}>
-                <Menu
-                    {...props}
-                    items={items}
-                    setItems={setItems}
-                    itemTypes={_.indexBy(itemTypes, 'id')}
-                    onRemoveItem={removeItem}
-                    onUpdateItem={updateItem}
-                />
-            </div>
-        </div>
-    );
-
-    const renderControls = () => {
-        return itemTypes.map(itemType => {
-            const Control = op.get(itemType, 'Control', () => null);
-
-            return (
-                <Control
-                    key={itemType.id}
-                    itemType={itemType}
-                    cx={cx}
-                    onAddItems={addItems}
-                    {...props}
-                />
-            );
-        });
-    };
-
-    const render = () => {
-        return (
-            <ElementDialog {...props}>
-                <div className={cn(cx(), 'row')}>
-                    <div className={cn(cx('controls'), 'col-xs-12 col-sm-4')}>
-                        {renderControls()}
-                    </div>
-                    <div className={cn(cx('items'), 'col-xs-12 col-sm-8')}>
-                        {renderEditor()}
-                    </div>
-                </div>
-            </ElementDialog>
-        );
-    };
-
-    return render();
-}, areEqual);
-
-export default MenuEditor;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js
deleted file mode 100644
index 9afe4a38..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js
+++ /dev/null
@@ -1,297 +0,0 @@
-import React, { useRef, useState } from 'react';
-import {
-    Tabs,
-    Dialog,
-    Button,
-    Icon,
-    Checkbox,
-    Pagination,
-} from '@atomic-reactor/reactium-ui';
-import op from 'object-path';
-import uuid from 'uuid/v4';
-import _ from 'underscore';
-import Reactium, { __, useAsyncEffect } from 'reactium-core/sdk';
-
-const noop = () => {};
-const Search = ({ onSearch = noop }) => {
-    return (
-        <label className='ar-data-table-search pb-xs-8'>
-            <input
-                type='text'
-                className='dialog-search'
-                placeholder={__('Search')}
-                onChange={onSearch}
-            />
-            <span className='bg' />
-            <span className='ico'>
-                <Icon name='Feather.Search' />
-            </span>
-        </label>
-    );
-};
-
-const ContentTypeOptions = ({ items, type, onChange, selected = [] }) => {
-    return items.map(item => {
-        item.type = type;
-        const display = op.get(item, 'title', op.get(item, 'slug'));
-
-        return (
-            <li key={item.uuid} className={'content-option'}>
-                <Checkbox
-                    onChange={onChange(item)}
-                    checked={Boolean(selected.find(i => i.uuid === item.uuid))}
-                    label={display}
-                    labelAlign={'right'}
-                />
-            </li>
-        );
-    });
-};
-
-const SearchTab = ({ type, onAddItems = noop }) => {
-    const [term, setTerm] = useState('');
-    const updateTerm = useRef(_.throttle(search => setTerm(search), 500))
-        .current;
-    const [result, setResult] = useState({
-        count: 0,
-        next: null,
-        page: 1,
-        pages: 1,
-        prev: null,
-        results: [],
-    });
-    const [selected, setSelected] = useState([]);
-
-    const results = op.get(result, 'results', []);
-
-    const searchListener = e => {
-        const search = e.currentTarget.value;
-        updateTerm(search);
-    };
-
-    const checkListener = item => e => {
-        if (e.target.checked) {
-            setSelected(selected.concat(item));
-        } else {
-            setSelected(selected.filter(i => i.uuid !== item.uuid));
-        }
-    };
-
-    useAsyncEffect(
-        async isMounted => {
-            if (term.length >= 3) {
-                const { collection } = type;
-                const result = await Reactium.Cloud.run('search', {
-                    index: collection,
-                    search: term,
-                });
-                if (isMounted()) {
-                    setResult(result);
-                    setSelected([]);
-                }
-            }
-        },
-        [term],
-    );
-    return (
-        <div className='p-xs-16'>
-            <Search onSearch={searchListener} />
-            <ul className='content-options'>
-                <ContentTypeOptions
-                    type={type}
-                    items={results}
-                    onChange={checkListener}
-                    selected={selected}
-                />
-            </ul>
-
-            <Button
-                disabled={selected.length < 1}
-                onClick={() => {
-                    onAddItems(selected);
-                    setSelected([]);
-                }}>
-                {__('Add')}
-            </Button>
-        </div>
-    );
-};
-
-const PaginatedTab = ({ type, onAddItems = noop }) => {
-    const [result, setResult] = useState({
-        count: 0,
-        next: null,
-        page: 1,
-        pages: 1,
-        prev: null,
-        results: [],
-    });
-    const [selected, setSelected] = useState([]);
-
-    const results = op.get(result, 'results', []);
-    const page = op.get(result, 'page');
-    const pages = op.get(result, 'pages');
-
-    const checkListener = item => e => {
-        if (e.target.checked) {
-            setSelected(selected.concat(item));
-        } else {
-            setSelected(selected.filter(i => i.uuid !== item.uuid));
-        }
-    };
-
-    useAsyncEffect(
-        async isMounted => {
-            if (page <= pages) {
-                const { collection } = type;
-                const result = await Reactium.Cloud.run('content-list', {
-                    type,
-                    page,
-                    limit: 10,
-                    orderBy: 'updatedAt',
-                    direction: 'descending',
-                    resolveRelations: true,
-                });
-
-                if (isMounted()) {
-                    setResult(result);
-                    setSelected([]);
-                }
-            }
-        },
-        [page],
-    );
-
-    const nextPage = () => {
-        setResult({
-            ...result,
-            page: page + 1,
-        });
-    };
-
-    const prevPage = () => {
-        setResult({
-            ...result,
-            page: page - 1,
-        });
-    };
-
-    return (
-        <div className='p-xs-16'>
-            <ul className='content-options'>
-                <ContentTypeOptions
-                    type={type}
-                    items={results}
-                    onChange={checkListener}
-                    selected={selected}
-                />
-            </ul>
-            {pages > 1 && (
-                <div className='col-xs-12 col-sm-6 col-lg-4 pb-xs-20'>
-                    <Pagination
-                        page={page}
-                        pages={pages}
-                        onNextClick={nextPage}
-                        onPrevClick={prevPage}
-                    />
-                </div>
-            )}
-
-            <Button
-                disabled={selected.length < 1}
-                onClick={() => {
-                    onAddItems(selected);
-                    setSelected([]);
-                }}>
-                {__('Add')}
-            </Button>
-        </div>
-    );
-};
-
-const ContentTypeControl = props => {
-    const cx = op.get(props, 'cx');
-    const itemType = op.get(props, 'itemType');
-    const types = op.get(itemType, 'types', []);
-    const onAddItems = op.get(props, 'onAddItems', noop);
-    const addItems = items => {
-        onAddItems(
-            items.map(item => ({
-                id: uuid(),
-                type: 'ContentType',
-                item: {
-                    icon: op.get(item, 'type.meta.icon', 'Linear.Papers'),
-                    title: op.get(item, 'title', op.get(item, 'slug', '')),
-                    url: op.get(
-                        item,
-                        'urls.0.route',
-                        `/${op.get(item, 'type.machineName')}/${op.get(
-                            item,
-                            'slug',
-                        )}`,
-                    ),
-                    context: item,
-                },
-                depth: 0,
-            })),
-        );
-    };
-
-    const tabs = type => {
-        return [
-            {
-                id: 'all',
-                tab: __('View All'),
-                content: <PaginatedTab type={type} onAddItems={addItems} />,
-            },
-            {
-                id: 'search',
-                tab: __('Search'),
-                content: <SearchTab type={type} onAddItems={addItems} />,
-            },
-        ];
-    };
-
-    return (
-        <div className={cx('control', 'control-types')}>
-            {types.map(type => {
-                const uuid = op.get(type, 'uuid');
-                const icon = op.get(type, 'meta.icon', 'Linear.Papers');
-                const title = op.get(
-                    type,
-                    'meta.label',
-                    op.get(type, 'type', ''),
-                );
-
-                return (
-                    <Dialog
-                        key={uuid}
-                        header={{
-                            title: (
-                                <div className='control-title'>
-                                    <Button
-                                        className='ar-dialog-header-btn'
-                                        color={Button.ENUMS.COLOR.CLEAR}
-                                        readOnly
-                                        style={{ padding: 0, border: 'none' }}>
-                                        <Icon name={icon} />
-                                    </Button>
-                                    <span>{title}</span>
-                                </div>
-                            ),
-                        }}
-                        pref={cx(`control-${title}`)}>
-                        <Tabs
-                            activeTab={0}
-                            collapsible={false}
-                            data={tabs(type)}
-                            onAddItems={onAddItems}
-                        />
-                    </Dialog>
-                );
-            })}
-        </div>
-    );
-};
-
-export default ContentTypeControl;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js
deleted file mode 100644
index 7b8f13ae..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import React, { useState } from 'react';
-import { Dialog, Button, Icon } from '@atomic-reactor/reactium-ui';
-import op from 'object-path';
-import uuid from 'uuid/v4';
-import _ from 'underscore';
-import { __ } from 'reactium-core/sdk';
-
-const noop = () => {};
-
-const defaultLink = {
-    title: '',
-    url: '',
-};
-
-const AddLinkControl = ({ onAddItems = noop }) => {
-    const [link, setLink] = useState(defaultLink);
-
-    const onChange = type => e => {
-        const value = e.target.value;
-
-        setLink({
-            ...link,
-            [type]: value,
-        });
-    };
-
-    const clearLink = () => setLink(defaultLink);
-    const title = op.get(link, 'title', '');
-    const url = op.get(link, 'url', '');
-
-    return (
-        <div className='p-xs-16'>
-            <div className='form-group'>
-                <input
-                    type='text'
-                    onChange={onChange('title')}
-                    placeholder={__('Link Title')}
-                    value={title}
-                />
-            </div>
-
-            <div className='form-group'>
-                <input
-                    type='text'
-                    onChange={onChange('url')}
-                    placeholder={__('Link URL')}
-                    value={url}
-                />
-            </div>
-
-            <Button
-                className='mt-xs-16'
-                disabled={!title || !title.length || !url.length}
-                onClick={() => {
-                    onAddItems(link);
-                    clearLink();
-                }}>
-                {__('Add')}
-            </Button>
-        </div>
-    );
-};
-
-const LinkControl = props => {
-    const cx = op.get(props, 'cx');
-    const onAddItems = op.get(props, 'onAddItems', noop);
-
-    const addItems = item => {
-        onAddItems({
-            id: uuid(),
-            type: 'Link',
-            item,
-            depth: 0,
-        });
-    };
-
-    return (
-        <div className={cx('control', 'control-link')}>
-            <Dialog
-                header={{
-                    title: (
-                        <div className='control-title'>
-                            <Button
-                                className='ar-dialog-header-btn'
-                                color={Button.ENUMS.COLOR.CLEAR}
-                                readOnly
-                                style={{ padding: 0, border: 'none' }}>
-                                <Icon name='Feather.Link' />
-                            </Button>
-                            <span>{__('Link')}</span>
-                        </div>
-                    ),
-                }}
-                pref={cx('control-link')}>
-                <AddLinkControl onAddItems={addItems} />
-            </Dialog>
-        </div>
-    );
-};
-
-export default LinkControl;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js
deleted file mode 100644
index 5fa7ef67..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import Reactium, { __ } from 'reactium-core/sdk';
-import FieldType from './FieldType';
-import Editor from './Editor';
-import Comparison from './Comparison';
-import { Icon } from '@atomic-reactor/reactium-ui';
-import {
-    ContentTypeControl,
-    ContentTypeMenuItem,
-    ContentTypeCompare,
-} from './MenuItem/ContentType';
-import { LinkControl, LinkMenuItem, LinkCompare } from './MenuItem/Link';
-import SDK from './sdk';
-
-const ID = 'MenuBuilder';
-
-const fieldType = {
-    label: __('Menu Field'),
-    icon: Icon.Feather.Menu,
-    tooltip: __('Adds a menu field to your content type.'),
-    component: 'FieldTypeMenuBuilder',
-    order: Reactium.Enums.priority.highest,
-};
-
-const pluginInit = async () => {
-    await Reactium.Plugin.register(ID);
-    Reactium.MenuBuilder = SDK;
-
-    // Register FieldType component
-    Reactium.Component.register(fieldType.component, FieldType);
-    // Register FieldType with Content Type Editor
-    Reactium.ContentType.FieldType.register(ID, fieldType);
-    // Register FieldType with Editor
-    Reactium.Content.Editor.register(ID, { component: Editor });
-
-    Reactium.Content.Comparison.register(ID, { component: Comparison });
-
-    // Menu Builder Item Types
-    Reactium.MenuBuilder.ItemType.register('Link', {
-        Control: LinkControl,
-        MenuItem: LinkMenuItem,
-        Compare: LinkCompare,
-    });
-
-    const types = await Reactium.ContentType.types();
-    Reactium.MenuBuilder.ItemType.register('ContentType', {
-        types,
-        Control: ContentTypeControl,
-        MenuItem: ContentTypeMenuItem,
-        Compare: ContentTypeCompare,
-    });
-};
-
-pluginInit();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/Widget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/Widget/index.js
index dc63bd90..0ea6c251 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/Widget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/Widget/index.js
@@ -1,8 +1,8 @@
 import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
-import Reactium from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
 import React, { useState, useEffect, forwardRef } from 'react';
 
 let Widget = ({ children, className, icon, namespace, ...props }, ref) => {
@@ -28,11 +28,12 @@ let Widget = ({ children, className, icon, namespace, ...props }, ref) => {
             ref={ref}
             className={cname}
             {...props}
-            onClick={e => {
+            onClick={(e) => {
                 e.currentTarget.blur();
                 toggle();
             }}
-            type='button'>
+            type='button'
+        >
             {children && <>{children}</>}
             {!children && (
                 <Icon name={expanded ? icon.collapse : icon.expand} />
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/_reactium-style-base-admin-fullscreen.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/_reactium-style-base-admin-fullscreen.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/reactium-hooks.js
index 1d638256..5468eda9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/reactium-hooks.js
@@ -1,6 +1,6 @@
 import Widget from './Widget';
 import Fullscreen from './sdk';
-import Reactium, { __ } from 'reactium-core/sdk';
+import Reactium, { __ } from '@atomic-reactor/reactium-core/sdk';
 
 Reactium.Plugin.register('Fullscreen').then(() => {
     Reactium.Utils.Fullscreen = new Fullscreen();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/sdk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/sdk.js
index dd7278c9..6ab68f9f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/sdk.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/sdk.js
@@ -24,7 +24,7 @@ import fs from 'fullscrn';
 
  // Event: fullscreenchange
 import React, { useEffect, useState } from 'react';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 const MyComponent = () => {
     const [state, setState] = useState(Reactium.Utils.Fullscreen.isExpanded());
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/IconSelect.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/IconSelect.js
index c22efe6c..199d7d7a 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/IconSelect.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/IconSelect.js
@@ -12,7 +12,7 @@ import {
     useIsContainer,
     useRefs,
     useStatus,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const ancestor = (child, selector = 'form') => {
     if (!child || !selector) return null;
@@ -55,7 +55,7 @@ let IconSelect = (props, ref) => {
         visible: props.visible,
     });
 
-    const _autoHide = e => {
+    const _autoHide = (e) => {
         if (state.autohide === false) return;
         if (state.visible !== true) return;
         const container = refs.get('container');
@@ -67,7 +67,7 @@ let IconSelect = (props, ref) => {
     const show = () => setState({ visible: true });
     const toggle = () => setState({ visible: !state.visible });
 
-    const search = value => {
+    const search = (value) => {
         refs.get('picker').setSearch(value);
         dispatch('search', { search: value });
     };
@@ -86,7 +86,7 @@ let IconSelect = (props, ref) => {
         }
     };
 
-    const _onChange = e => {
+    const _onChange = (e) => {
         const { value } = e.target;
         const [icon] = _.flatten([value]);
         if (icon && icon !== state.value && op.has(Icon, icon)) {
@@ -105,7 +105,7 @@ let IconSelect = (props, ref) => {
         hide,
         search,
         setState,
-        setValue: value => setState({ value }),
+        setValue: (value) => setState({ value }),
         show,
         state,
         toggle,
@@ -174,7 +174,7 @@ let IconSelect = (props, ref) => {
 
     useEffect(() => {
         const dataset = Object.keys(props)
-            .filter(k => String(k).startsWith('data-'))
+            .filter((k) => String(k).startsWith('data-'))
             .reduce((obj, k) => {
                 const key = k.split('data-').pop();
                 obj[key] = op.get(props, k);
@@ -190,13 +190,14 @@ let IconSelect = (props, ref) => {
         <div
             style={style}
             className={className}
-            ref={elm => refs.set('container', elm)}>
+            ref={(elm) => refs.set('container', elm)}
+        >
             {name && (
                 <input
                     type='hidden'
                     name={name}
                     defaultValue={state.value}
-                    ref={elm => refs.set('input', elm)}
+                    ref={(elm) => refs.set('input', elm)}
                 />
             )}
             <div className='rte-icons-search'>
@@ -204,12 +205,15 @@ let IconSelect = (props, ref) => {
                     <input
                         type='search'
                         placeholder='search'
-                        onFocus={e => e.target.select()}
-                        onChange={e => search(e.target.value)}
+                        onFocus={(e) => e.target.select()}
+                        onChange={(e) => search(e.target.value)}
                     />
                 </div>
             </div>
-            <Picker onChange={_onChange} ref={elm => refs.set('picker', elm)} />
+            <Picker
+                onChange={_onChange}
+                ref={(elm) => refs.set('picker', elm)}
+            />
         </div>
     );
 };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/_reactium-style-organisms-icon-picker.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/_reactium-style-organisms-icon-picker.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/index.js
index a21f00d2..aff7bf4a 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/index.js
@@ -2,9 +2,12 @@ import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
 import PropTypes from 'prop-types';
-import { Icon } from '@atomic-reactor/reactium-ui';
-import { Scrollbars } from 'react-custom-scrollbars';
-import { useEventHandle, useDerivedState } from 'reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import {
+    useEventHandle,
+    useDerivedState,
+} from '@atomic-reactor/reactium-core/sdk';
 
 import React, {
     forwardRef,
@@ -21,7 +24,7 @@ const getIcons = (search = '') =>
         obj[group] = Object.keys(Icon.icons[group]);
 
         if (String(search).length > 0) {
-            obj[group] = obj[group].filter(name =>
+            obj[group] = obj[group].filter((name) =>
                 String(name)
                     .toLowerCase()
                     .includes(String(search).toLowerCase()),
@@ -83,7 +86,7 @@ const IconGroup = ({
             <section>
                 <h3>{group}</h3>
                 <div className='container'>
-                    {chunks.map(icon => (
+                    {chunks.map((icon) => (
                         <div
                             className={cn({
                                 active: value.includes(`${group}.${icon}`),
@@ -97,7 +100,8 @@ const IconGroup = ({
                                 width: size,
                                 height: size,
                                 maxWidth: size,
-                            }}>
+                            }}
+                        >
                             <Icon
                                 name={`${group}.${icon}`}
                                 size={initialSize}
@@ -149,14 +153,14 @@ let IconPicker = (initialProps, ref) => {
         unselected: null,
     });
 
-    const cx = cls =>
+    const cx = (cls) =>
         _.chain([className || namespace, cls])
             .compact()
             .uniq()
             .value()
             .join('-');
 
-    const _onClick = e => {
+    const _onClick = (e) => {
         e.stopPropagation();
         e.preventDefault();
         const { icon, group } = e.currentTarget.dataset;
@@ -186,21 +190,21 @@ let IconPicker = (initialProps, ref) => {
         }
     };
 
-    const _onTouchStart = e => {
+    const _onTouchStart = (e) => {
         e.stopPropagation();
         e.preventDefault();
         const { icon, group } = e.currentTarget.dataset;
         setState({ touched: `${group}.${icon}` });
     };
 
-    const _onMouseOut = e => {
+    const _onMouseOut = (e) => {
         e.stopPropagation();
         e.preventDefault();
         const { icon, group } = e.currentTarget.dataset;
         setState({ mouseout: `${group}.${icon}`, mouseover: null });
     };
 
-    const _onMouseOver = e => {
+    const _onMouseOver = (e) => {
         e.stopPropagation();
         e.preventDefault();
         const { icon, group } = e.currentTarget.dataset;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/reactium-hooks.js
index 65ddf993..41b45507 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/IconPicker/reactium-hooks.js
@@ -1,8 +1,8 @@
 import Component from '.';
 import domain from './domain';
 import IconSelect from './IconSelect';
-import Reactium from 'reactium-core/sdk';
-import { Icon } from '@atomic-reactor/reactium-ui';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
+import { Icon } from 'reactium-ui';
 
 Reactium.Plugin.register(domain.name, Reactium.Enums.priority.highest).then(
     async () => {
@@ -54,7 +54,7 @@ Reactium.Plugin.register(domain.name, Reactium.Enums.priority.highest).then(
  * @apiParam (Event) {PickerEvent} touchstart dispatched when an icon is touched (mobile only).
  * @apiParam (Event) {PickerEvent} unselect dispatched when an icon is unselected. Only applicable when `multiselect=true`.
  * @apiExample useHookComponent() hook import
-import { useHookComponent } from 'reactium-core/sdk';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const MyComponent = () => {
     const IconPicker = useHookComponent('IconPicker');
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/index.js
index a2e673a3..f3fa6ab9 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import PropTypes from 'prop-types';
-import { Zone } from 'reactium-core/sdk';
+import { Zone } from '@atomic-reactor/reactium-core/sdk';
 
 const Wrap = ({ href, children }) => {
     return href ? <a href={href}>{children}</a> : children;
@@ -18,7 +18,8 @@ const Logo = ({ width, height, children, className, href, zone, ...props }) => (
                         <path
                             id='b'
                             fill='#4F82BA'
-                            d='M0 70l30-50 10 13L70 0 40 50 30 37 0 70z'></path>
+                            d='M0 70l30-50 10 13L70 0 40 50 30 37 0 70z'
+                        ></path>
                     </g>
                 </mask>
                 <circle
@@ -28,7 +29,8 @@ const Logo = ({ width, height, children, className, href, zone, ...props }) => (
                     strokeWidth='8'
                     cx='35'
                     cy='35'
-                    r='30'></circle>
+                    r='30'
+                ></circle>
                 <use xlinkHref='#b' fill='#4F82BA'></use>
             </svg>
         </Wrap>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/reactium-hooks.js
index c0c49501..c2862212 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Logo/reactium-hooks.js
@@ -1,5 +1,5 @@
 import Component from '.';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 Reactium.Plugin.register('Logo', Reactium.Enums.priority.highest).then(() => {
     Reactium.Component.register('Logo', Component);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js
deleted file mode 100644
index e098893a..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js
+++ /dev/null
@@ -1,245 +0,0 @@
-import _ from 'underscore';
-import op from 'object-path';
-import useLocalState from '../../useLocalState';
-import DirectoryPicker from '../../DirectoryPicker';
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useMemo,
-} from 'react';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, {
-    __,
-    useEventHandle,
-    useHookComponent,
-    useAsyncEffect,
-} from 'reactium-core/sdk';
-import { useStore } from '@atomic-reactor/use-select';
-
-const Upload = forwardRef((props, ref) => {
-    const store = useStore();
-
-    const {
-        active,
-        browseFiles,
-        cx,
-        directories,
-        isActive,
-        back,
-        nav,
-        onCloseSelect,
-    } = props.handle;
-
-    const Uploads = useHookComponent('MediaUploads');
-    const { Alert, Button, Icon } = useHookComponent('ReactiumUI');
-
-    const defaultColor = Alert.ENUMS.COLOR.PRIMARY;
-    const defaultIcon = useMemo(() => 'Feather.HelpCircle');
-    const defaultMessage = useMemo(() =>
-        __('Select directory and file to upload'),
-    );
-
-    // -------------------------------------------------------------------------
-    // State
-    // -------------------------------------------------------------------------
-    const [state, setState, getState] = useLocalState({
-        color: defaultColor,
-        directory: null,
-        icon: defaultIcon,
-        message: defaultMessage,
-        uploads: op.get(store.getState(), 'Media.uploads'),
-        pending: null,
-        watch: {},
-    });
-
-    // -------------------------------------------------------------------------
-    // Internal interface
-    // -------------------------------------------------------------------------
-    const add = (added = {}) => {
-        const { watch = {} } = state;
-        Object.entries(added).forEach(([key, value]) =>
-            op.set(watch, key, value),
-        );
-        setState({ watch });
-    };
-
-    const hasUploads = () => {
-        const uploads = getState('uploads');
-        if (!uploads) return false;
-        return Object.keys(uploads).length > 0;
-    };
-
-    const onWorkerMessage = (...args) => {
-        const worker = args[0];
-        const { type, ...e } = worker;
-
-        if (type !== 'status') return;
-
-        const status = op.get(e.params, 'status');
-
-        if (status === 'complete') {
-            const ID = op.get(e.params, 'ID');
-            const { directory, objectId, url } = e.params.result;
-
-            const media = Reactium.Cache.get('editor.media');
-            if (media) {
-                let { data = {}, directories = [] } = media;
-
-                directories.push(directory);
-                directories = _.uniq(directories);
-                directories.sort();
-
-                op.set(data, objectId, e.params.result);
-                op.set(data, 'directories', directories);
-                op.set(media, 'data', data);
-
-                Reactium.Cache.set('editor.media', media);
-            }
-
-            _.defer(() => select({ ID, objectId, url }));
-        }
-    };
-
-    const reset = () => {
-        if (isActive(props.id)) return;
-        setState({ uploads: null, directory: null });
-    };
-
-    const select = async ({ ID, ...item }) => {
-        const watch = getState('watch', {});
-        props.handle.add(item);
-        op.del(watch, ID);
-
-        setState('watch', watch);
-
-        if (Object.keys(watch).length < 1) {
-            Reactium.Media.clear();
-            props.handle.onCloseSelect();
-        }
-    };
-
-    const setDirectory = directory => setState('directory', directory);
-
-    const setError = (message, pending = null, icon = 'Feather.AlertOctagon') =>
-        setState({
-            color: Alert.ENUMS.COLOR.DANGER,
-            icon,
-            message,
-            pending,
-        });
-
-    // -------------------------------------------------------------------------
-    // External interface
-    // -------------------------------------------------------------------------
-    const _handle = () => ({
-        add,
-        setDirectory,
-        setError,
-        value: { directory: getState('directory') },
-    });
-
-    const [handle, setHandle] = useEventHandle(_handle());
-
-    useImperativeHandle(ref, () => handle, [state.directory]);
-
-    // -------------------------------------------------------------------------
-    // Side effects
-    // -------------------------------------------------------------------------
-
-    // reset on inactive
-    useEffect(reset, [active]);
-
-    // update hande on directory change
-    useEffect(() => {
-        op.set(handle, 'value.directory', state.directory);
-        setHandle(handle);
-    }, [state.directory]);
-
-    // upload pending files
-    useAsyncEffect(
-        async isMounted => {
-            if (!getState('directory')) return;
-            if (!getState('pending')) return;
-            add(Reactium.Media.upload(state.pending, state.directory));
-            if (isMounted()) setState('pending', null);
-        },
-        [state.directory],
-    );
-
-    // uploads subscription
-    useEffect(() => {
-        return store.subscribe(() => {
-            const uploads = op.get(store.getState(), 'Media.uploads');
-            setState('uploads', uploads);
-        });
-    }, []);
-
-    // Regsiter media-worker hook
-    useEffect(() => {
-        const mw = Reactium.Hook.register('media-worker', onWorkerMessage);
-        return () => {
-            Reactium.Hook.unregister(mw);
-        };
-    }, []);
-
-    // -------------------------------------------------------------------------
-    // Render
-    // -------------------------------------------------------------------------
-    return isActive(props.id) ? (
-        <div className={cx('upload')}>
-            <div className='p-xs-40 block'>
-                <Message state={state} />
-                <DirectoryPicker
-                    defaultValue={state.directory}
-                    directories={directories}
-                    onChange={({ value }) => setState('directory', value)}
-                />
-            </div>
-            <div className='content'>
-                {hasUploads() && (
-                    <div className='list'>
-                        <Scrollbars>
-                            <Uploads uploads={getState('uploads')} />
-                            <div style={{ height: '50vh' }} />
-                        </Scrollbars>
-                    </div>
-                )}
-                <div className='dropbox'>
-                    <div className={cx('label-dnd')}>{__('Drag and Drop')}</div>
-                    <div className={cx('label-or')}>{__('or')}</div>
-                    <div className={cx('btn-container')}>
-                        <Button
-                            appearance={Button.ENUMS.APPEARANCE.PILL}
-                            color={Button.ENUMS.COLOR.PRIMARY}
-                            onClick={browseFiles}
-                            size={Button.ENUMS.SIZE.MD}>
-                            {__('Upload A File')}
-                        </Button>
-                    </div>
-                </div>
-            </div>
-            <span className='back-btn'>
-                <Button
-                    color={Button.ENUMS.COLOR.CLEAR}
-                    onClick={onCloseSelect}>
-                    <Icon name='Feather.X' />
-                </Button>
-            </span>
-        </div>
-    ) : null;
-});
-
-const Message = ({ state = {} }) => {
-    const { Alert, Icon } = useHookComponent('ReactiumUI');
-
-    return op.get(state, 'message') ? (
-        <div className='block mb-xs-24'>
-            <Alert icon={<Icon name={state.icon} />} color={state.color}>
-                {state.message}
-            </Alert>
-        </div>
-    ) : null;
-};
-
-export default Upload;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js
deleted file mode 100644
index 9e07420a..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import Toolbar from './Toolbar';
-import ReactPlayer from 'react-player';
-import { TypeIcon } from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, { useHookComponent } from 'reactium-core/sdk';
-
-import React, { forwardRef } from 'react';
-
-const Multiple = forwardRef(({ selection, handle, media }, ref) => {
-    const { cx, nav, remove, removeAll } = handle;
-
-    const { Button, DataTable, Icon } = useHookComponent('ReactiumUI');
-
-    const columns = () => {
-        const output = {
-            thumb: {
-                width: '80px',
-            },
-            link: {
-                verticalAlign: 'middle',
-            },
-            delete: {
-                width: '80px',
-                textAlign: 'right',
-                verticalAlign: 'middle',
-            },
-        };
-
-        Reactium.Hook.runSync('media-field-data-table-columns', output);
-
-        return output;
-    };
-
-    const data = () =>
-        _.compact(
-            selection.map(({ objectId }) => {
-                const item = op.get(media.data, objectId);
-                if (!item) return null;
-
-                const thumbnail = op.get(item, 'thumbnail')
-                    ? url(item, 'thumbnail')
-                    : null;
-
-                const relURL = url(item, 'relative');
-                op.set(item, 'url', relURL);
-
-                op.set(
-                    item,
-                    'link',
-                    <a href={relURL} target='_blank' children={relURL} />,
-                );
-
-                op.set(
-                    item,
-                    'delete',
-                    <DeleteButton onClick={() => remove(objectId)} />,
-                );
-
-                op.set(
-                    item,
-                    'thumb',
-                    <Thumbnail {...item} thumbnail={thumbnail} />,
-                );
-
-                return item;
-            }),
-        );
-
-    return (
-        <div className={cn(cx('thumbs'), 'multiple')} ref={ref}>
-            <Toolbar nav={nav}>
-                <div className='delete-all-container'>
-                    <Button
-                        className='delete-btn'
-                        color={Button.ENUMS.COLOR.DANGER}
-                        onClick={() => removeAll()}
-                        outline>
-                        <Icon name='Feather.X' />
-                    </Button>
-                </div>
-            </Toolbar>
-            <div className='table'>
-                <Scrollbars>
-                    <DataTable columns={columns()} data={data()} />
-                </Scrollbars>
-            </div>
-        </div>
-    );
-});
-
-const DeleteButton = props => {
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-    return (
-        <Button
-            color={Button.ENUMS.COLOR.DANGER}
-            className='delete-btn'
-            {...props}>
-            <Icon name='Feather.X' />
-        </Button>
-    );
-};
-
-const Thumbnail = ({ thumbnail, type, url }) =>
-    type === 'VIDEO' ? (
-        <div className='thumb'>
-            <ReactPlayer controls url={url} width={200} height={100} />
-        </div>
-    ) : (
-        <div
-            className='thumb'
-            style={{ backgroundImage: thumbnail ? `url(${thumbnail})` : null }}>
-            {!thumbnail && <TypeIcon type={type} />}
-        </div>
-    );
-
-const url = (item, which) => {
-    switch (which) {
-        case 'thumbnail':
-            return Reactium.Media.url(op.get(item, 'thumbnail'));
-
-        case 'relative':
-            return op.get(item, 'url');
-
-        default:
-            return op.get(item, 'redirect.url', op.get(item, 'url'));
-    }
-};
-
-export { Multiple, Multiple as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_reactium-style-molecules-menu-item.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_reactium-style-molecules-menu-item.scss
new file mode 100644
index 00000000..58b79161
--- /dev/null
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_reactium-style-molecules-menu-item.scss
@@ -0,0 +1,224 @@
+.admin-sidebar-menu-items {
+    position: relative;
+    padding: 0 0 55px 0;
+
+    .menu-break {
+        display: block;
+        border-bottom: 1px solid $color-sidebar-bg;
+        margin: 12px 0;
+        opacity: 1;
+    }
+
+    .menu-item {
+        min-width: 0px;
+
+        &-row {
+            display: block;
+        }
+
+        &-link {
+            border-left: 2px solid transparent;
+            opacity: 0.8;
+            width: 100%;
+
+            &,
+            > button,
+            > a:first-child,
+            > div {
+                align-items: center;
+                background-color: transparent;
+                color: $color-sidebar-text;
+                text-align: left;
+                display: flex;
+                text-decoration: none;
+            }
+
+            > button,
+            > a:first-child,
+            > div {
+                padding: 0;
+                border: none;
+                justify-content: flex-start;
+                flex-grow: 1;
+            }
+
+            &:hover {
+                opacity: 1;
+                text-decoration: none;
+                border-left: 2px solid lighten($color-menu-item-active, 20%);
+            }
+
+            &.active {
+                opacity: 1;
+                border-left: 2px solid $color-menu-item-active;
+                background-color: rgba($color-sidebar-bg, 0.5);
+
+                .menu-item-icon {
+                    color: $color-menu-item-active;
+                }
+            }
+        }
+
+        &-icon {
+            width: $width-sidebar-collapsed;
+            max-width: $width-sidebar-collapsed;
+            height: $height-menu-item;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-grow: 0;
+
+            * {
+                pointer-events: none;
+            }
+        }
+
+        &-label {
+            display: none;
+            overflow: hidden;
+        }
+
+        &-count {
+            border-radius: 12px;
+            padding: 3px 6px 2px 6px;
+            font-size: 10px;
+            text-transform: uppercase;
+            line-height: 1;
+            background-color: $color-menu-item-active;
+            transform: translateX(-140%) translateY(-100%);
+            box-shadow: 0 0 5px 1px rgba($color-black, 0.25);
+        }
+
+        &-add {
+            display: none;
+        }
+
+        &-content {
+            display: none;
+
+            &.active {
+                display: none;
+            }
+        }
+
+        .menu-item * {
+            border: none !important;
+        }
+    }
+}
+
+.expanded {
+    &:empty {
+        display: none;
+    }
+
+    .admin-sidebar-menu-items {
+        padding: 12px 0 56px 0;
+
+        .menu-item {
+            min-width: $width-sidebar-expanded;
+
+            &-link {
+                padding: 0 9px;
+
+                &:hover {
+                    background-color: rgba($color-black, 0.1);
+                }
+            }
+
+            &-icon {
+                max-width: 60px;
+                min-height: $height-menu-item-expanded;
+            }
+
+            &-label {
+                display: flex;
+                align-items: center;
+                flex-grow: 1;
+                min-height: $height-menu-item-expanded;
+                height: $height-menu-item;
+                font-size: $font-size-menu-item;
+                font-weight: $font-weight-menu-item;
+                padding: 0 0 0 8px;
+            }
+
+            &-add {
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                flex-shrink: 0;
+                min-width: 45px;
+                min-height: 45px;
+                margin-right: -8px;
+                align-self: stretch;
+                color: rgba($color-sidebar-text, .5);
+
+                &:hover {
+                    opacity: 1;
+                }
+
+                &.active {
+                    color: $color-primary;
+                    opacity: 1;
+                }
+            }
+
+            &-count {
+                transform: translateX(0) translateY(0);
+            }
+
+            &-content {
+                display: none;
+
+                &.active {
+                    display: block;
+                }
+
+                > *:empty {
+                    display: none;
+                }
+
+                background-color: rgba($color-sidebar-bg, 0.5);
+                border-left: 2px solid $color-menu-item-active;
+
+                .menu-item {
+                    &-row {
+                        &:last-child {
+                            padding-bottom: 8px;
+                        }
+                    }
+                    &-link {
+                        margin: 0;
+                        color: darken($color-sidebar-text, 10%);
+                        font-size: $font-size-menu-item - 2px;
+
+                        &:hover {
+                            background-color: transparent;
+                            border-left: 2px solid transparent;
+                        }
+
+                        &.active {
+                            background-color: transparent;
+                            border-left: none;
+                        }
+                    }
+
+                    &-icon,
+                    &-label {
+                        height: $height-menu-item - 20px;
+                        font-size: inherit;
+                    }
+                }
+            }
+        }
+    }
+}
+
+.collapsed,
+.collapsing {
+    .menu-break {
+        height: 0;
+        opacity: 0;
+        margin: 0;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_style.scss
deleted file mode 100644
index 5ce703d5..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_style.scss
+++ /dev/null
@@ -1,224 +0,0 @@
-.admin-sidebar-menu-items {
-    position: relative;
-    padding: 0 0 55px 0;
-
-    .menu-break {
-        display: block;
-        border-bottom: 1px solid $color-sidebar-bg;
-        margin: 12px 0;
-        opacity: 1;
-    }
-
-    .menu-item {
-        min-width: 0px;
-
-        &-row {
-            display: block;
-        }
-
-        &-link {
-            border-left: 2px solid transparent;
-            opacity: 0.8;
-            width: 100%;
-
-            &,
-            > button,
-            > a:first-child,
-            > div {
-                align-items: center;
-                background-color: transparent;
-                color: $color-sidebar-text;
-                text-align: left;
-                display: flex;
-                text-decoration: none;
-            }
-
-            > button,
-            > a:first-child,
-            > div {
-                padding: 0;
-                border: none;
-                justify-content: flex-start;
-                flex-grow: 1;
-            }
-
-            &:hover {
-                opacity: 1;
-                text-decoration: none;
-                border-left: 2px solid lighten($color-menu-item-active, 20%);
-            }
-
-            &.active {
-                opacity: 1;
-                border-left: 2px solid $color-menu-item-active;
-                background-color: rgba($color-sidebar-bg, 0.5);
-
-                .menu-item-icon {
-                    color: $color-menu-item-active;
-                }
-            }
-        }
-
-        &-icon {
-            width: $width-sidebar-collapsed;
-            max-width: $width-sidebar-collapsed;
-            height: $height-menu-item;
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            flex-grow: 0;
-
-            * {
-                pointer-events: none;
-            }
-        }
-
-        &-label {
-            display: none;
-            overflow: hidden;
-        }
-
-        &-count {
-            border-radius: 12px;
-            padding: 3px 6px 2px 6px;
-            font-size: 10px;
-            text-transform: uppercase;
-            line-height: 1;
-            background-color: $color-menu-item-active;
-            transform: translateX(-140%) translateY(-100%);
-            box-shadow: 0 0 5px 1px rgba($color-black, 0.25);
-        }
-
-        &-add {
-            display: none;
-        }
-
-        &-content {
-            display: none;
-
-            &.active {
-                display: none;
-            }
-        }
-
-        .menu-item * {
-            border: none !important;
-        }
-    }
-}
-
-.expanded {
-    &:empty {
-        display: none;
-    }
-
-    .admin-sidebar-menu-items {
-        padding: 12px 0 56px 0;
-
-        .menu-item {
-            min-width: $width-sidebar-expanded;
-
-            &-link {
-                padding: 0 9px;
-
-                &:hover {
-                    background-color: rgba($color-black, 0.1);
-                }
-            }
-
-            &-icon {
-                max-width: 60px;
-                min-height: $height-menu-item-expanded;
-            }
-
-            &-label {
-                display: flex;
-                align-items: center;
-                flex-grow: 1;
-                min-height: $height-menu-item-expanded;
-                height: $height-menu-item;
-                font-size: $font-size-menu-item;
-                font-weight: $font-weight-menu-item;
-                padding: 0 0 0 8px;
-            }
-
-            &-add {
-                display: flex;
-                justify-content: center;
-                align-items: center;
-                flex-shrink: 0;
-                min-width: 45px;
-                min-height: 45px;
-                margin-right: -8px;
-                align-self: stretch;
-                opacity: 0.5;
-
-                &:hover {
-                    opacity: 1;
-                }
-
-                &.active {
-                    color: $color-primary;
-                    opacity: 1;
-                }
-            }
-
-            &-count {
-                transform: translateX(0) translateY(0);
-            }
-
-            &-content {
-                display: none;
-
-                &.active {
-                    display: block;
-                }
-
-                > *:empty {
-                    display: none;
-                }
-
-                background-color: rgba($color-sidebar-bg, 0.5);
-                border-left: 2px solid $color-menu-item-active;
-
-                .menu-item {
-                    &-row {
-                        &:last-child {
-                            padding-bottom: 8px;
-                        }
-                    }
-                    &-link {
-                        margin: 0;
-                        color: darken($color-sidebar-text, 10%);
-                        font-size: $font-size-menu-item - 2px;
-
-                        &:hover {
-                            background-color: transparent;
-                            border-left: 2px solid transparent;
-                        }
-
-                        &.active {
-                            background-color: transparent;
-                            border-left: none;
-                        }
-                    }
-
-                    &-icon,
-                    &-label {
-                        height: $height-menu-item - 20px;
-                        font-size: inherit;
-                    }
-                }
-            }
-        }
-    }
-}
-
-.collapsed,
-.collapsing {
-    .menu-break {
-        height: 0;
-        opacity: 0;
-        margin: 0;
-    }
-}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/index.js
index d798ee4e..61860d25 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/index.js
@@ -3,7 +3,7 @@ import cn from 'classnames';
 import op from 'object-path';
 import PropTypes from 'prop-types';
 import { NavLink } from 'react-router-dom';
-import { Icon } from '@atomic-reactor/reactium-ui';
+import { Icon } from 'reactium-ui';
 import React, {
     forwardRef,
     useEffect,
@@ -17,7 +17,7 @@ import Reactium, {
     useEventHandle,
     useHandle,
     useWindowSize,
-} from 'reactium-core/sdk';
+} from '@atomic-reactor/reactium-core/sdk';
 
 const defaultIsActive = (match = {}, location = {}) => {
     const url = op.get(match, 'url');
@@ -77,12 +77,12 @@ const Heading = ({ state, hideTooltip, cname, expanded }) => {
 
     const { active = false, add, onClick } = state;
     const classname = cn({ [cname('link')]: true, active });
-    const _onClick = e => {
+    const _onClick = (e) => {
         hideTooltip(e);
         onClick(e);
     };
 
-    const _onAddClick = e => {
+    const _onAddClick = (e) => {
         e.preventDefault();
 
         if (Object.keys(handle).length > 0) {
@@ -123,14 +123,18 @@ const Link = ({ state, cname, onClick, expanded }) => {
 
     const handle = useHandle('AdminContentEditor');
 
-    const _onAddClick = e => {
+    const _onAddClick = (e) => {
         e.preventDefault();
 
         if (Object.keys(handle).length > 0) {
             handle.setValue(null);
         }
 
-        Reactium.Routing.history.push(add);
+        if (_.isString(add)) {
+            Reactium.Routing.history.push(add);
+        } else if (_.isFunction(add)) {
+            add();
+        }
     };
 
     return (
@@ -139,7 +143,11 @@ const Link = ({ state, cname, onClick, expanded }) => {
                 <Label cname={cname} expanded={expanded} state={state} />
             </NavLink>
             {add && (
-                <a href={add} className={cname('add')} onClick={_onAddClick}>
+                <a
+                    onClick={_onAddClick}
+                    className={cname('add')}
+                    href={_.isString(add) ? add : 'void(0)'}
+                >
                     <Icon name='Feather.Plus' />
                 </a>
             )}
@@ -164,7 +172,7 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
 
     const Sidebar = useHandle('AdminSidebar');
 
-    const Tools = useHandle('AdminTools');
+    const Tools = op.get(Reactium.State, 'Tools');
 
     const { breakpoint } = useWindowSize({ delay: 0 });
 
@@ -182,7 +190,7 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
         permitted: false,
     });
 
-    const setState = newState => {
+    const setState = (newState) => {
         if (unMounted()) return;
         updateState(newState);
     };
@@ -194,7 +202,7 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
         return cn({ [className]: !!className, [namespace]: !!namespace });
     };
 
-    const hideTooltip = e => {
+    const hideTooltip = (e) => {
         if (e) {
             const hasTooltip = !!e.target.getAttribute('data-tooltip');
             if (hasTooltip) {
@@ -205,12 +213,12 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
 
     const expanded = () => Sidebar.isExpanded();
 
-    const cname = name =>
+    const cname = (name) =>
         String(
             _.compact([op.get(state, 'namespace'), name]).join('-'),
         ).toLowerCase();
 
-    const collapseSidebar = e => {
+    const collapseSidebar = (e) => {
         hideTooltip(e);
         const breaks = ['xs', 'sm'];
         if (breaks.includes(breakpoint)) {
@@ -238,18 +246,18 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
         () => {
             const newState = {};
 
-            watchProps.forEach(key => {
+            watchProps.forEach((key) => {
                 if (op.get(props, key) === op.get(state, key)) return;
                 op.set(newState, key, op.get(props, key));
             });
 
             if (Object.keys(newState).length > 0) setState(newState);
         },
-        watchProps.map(key => op.get(props, key)),
+        watchProps.map((key) => op.get(props, key)),
     );
 
     // Permitted
-    useAsyncEffect(async mounted => {
+    useAsyncEffect(async (mounted) => {
         if (!capabilities || capabilities.length < 1) {
             updateState({ permitted: true });
             return;
@@ -299,7 +307,8 @@ let MenuItem = ({ children, capabilities = [], ...props }, ref) => {
                         className={cn({
                             [cname('content')]: true,
                             active: state.active,
-                        })}>
+                        })}
+                    >
                         {children}
                     </div>
                 )}
@@ -312,7 +321,7 @@ MenuItem = forwardRef(MenuItem);
 
 MenuItem.propTypes = {
     active: PropTypes.bool,
-    add: PropTypes.string,
+    add: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
     capabilities: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
     className: PropTypes.string,
     count: PropTypes.oneOfType([
@@ -360,7 +369,7 @@ export { MenuItem as default };
  * @apiParam {String} [title] Tooltip to dislay for the MenuItem. If empty and the `label` is a `{String}` the `label` value is used.
  * @apiExample Simple Usage:
 import React from 'react';
-import { useHookComponent } from 'reactium-core/sdk';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 const SidebarWidget = () => (
     const MenuItem = useHookComponent('MenuItem');
@@ -394,7 +403,7 @@ const SidebarWidget = () => (
 
  * @apiExample Component Zone:
 import MenuItem from 'reactium_modules/@atomic-reactor/admin/registered-components/MenuItem';
-import { Zone } from 'reactium-core/sdk';
+import { Zone } from '@atomic-reactor/reactium-core/sdk';
 
 const SidebarWidget = () => (
   <MenuItem
@@ -410,6 +419,6 @@ import MenuItem from 'reactium_modules/@atomic-reactor/admin/registered-componen
 
  * @apiExample Dependencies
 import { NavLink } from 'react-router-dom';
-import { Collapsible, Icon, Prefs } from '@atomic-reactor/reactium-ui';
+import { Collapsible, Icon, Prefs } from 'reactium-ui';
 import Reactium, { useHandle, useSelect, useWindowSize } from '@atomic-reactor/use-select';
  */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/reactium-hooks.js
index b6906a10..548bc8e0 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MenuItem/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import MenuItem from './index';
 
 Reactium.Component.register('MenuItem', MenuItem);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/index.js
deleted file mode 100644
index 17a638d3..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/index.js
+++ /dev/null
@@ -1,435 +0,0 @@
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Scrollbars } from 'react-custom-scrollbars';
-import Reactium, { useRegisterHandle } from 'reactium-core/sdk';
-import { Button, Dropdown, Icon, TagsInput } from '@atomic-reactor/reactium-ui';
-
-import React, {
-    forwardRef,
-    useImperativeHandle,
-    useEffect,
-    useRef,
-    useState,
-} from 'react';
-
-const noop = () => {};
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: PermissionSelector
- * -----------------------------------------------------------------------------
- */
-let PermissionSelector = ({ children, ...props }, ref) => {
-    // Refs
-    const containerRef = useRef();
-    const stateRef = useRef({
-        ...props,
-        canRead: [],
-        canWrite: [],
-    });
-
-    const permissionSelect = useRef();
-    const userSelect = useRef();
-
-    // State
-    const [, setNewState] = useState(stateRef.current);
-
-    // Internal Interface
-    const setState = newState => {
-        // Update the stateRef
-        stateRef.current = {
-            ...stateRef.current,
-            ...newState,
-        };
-
-        // Trigger useEffect()
-        setNewState(stateRef.current);
-    };
-
-    const cx = () => {
-        const { className, namespace } = stateRef.current;
-        return cn({ [className]: !!className, [namespace]: !!namespace });
-    };
-
-    // Side Effects
-    useEffect(() => setState(props), Object.values(props));
-
-    const permissions = () => {
-        return [
-            {
-                label: ENUMS.TEXT.FOLDER_CREATOR.CAN_VIEW,
-                icon: 'Feather.Eye',
-                value: 'read',
-            },
-            {
-                label: ENUMS.TEXT.FOLDER_CREATOR.CAN_EDIT,
-                icon: 'Feather.Edit2',
-                value: 'write',
-            },
-        ];
-    };
-
-    const onSearch = search => setState({ search });
-
-    const onSelectUser = e => {
-        const { selection } = e;
-        setState({ selection });
-    };
-
-    const onSelectPermission = e => {
-        try {
-            const { value } = e.item;
-            setState({ permission: value });
-        } catch (err) {}
-    };
-
-    const reset = () => {
-        setState({ ...props, search: null, selection: [] });
-        permissionSelect.current.setState({ selection: [] });
-        userSelect.current.setState({ selection: [] });
-    };
-
-    const getData = () => {
-        const { data, selection = [] } = stateRef.current;
-
-        if (!data) return;
-
-        let output = [];
-        let selected = [];
-
-        // loop through roles
-        const roles = op.get(data, 'roles', []);
-        roles.forEach(role => {
-            let { objectId, label, name } = role;
-            label = label || name;
-            const item = { label, value: objectId, type: 'role' };
-
-            // if (selection.includes(objectId)) selected.push(item);
-            // else output.push(item);
-            selected.push(item);
-        });
-
-        // loop through users
-        const users = op.get(data, 'users', []);
-        users.forEach(user => {
-            const { objectId, fname, lname, username } = user;
-            const fullname = _.compact([fname, lname]).join(' ');
-            const label = fullname.length > 0 ? fullname : username;
-            const item = { label, value: objectId, type: 'user' };
-
-            // if (selection.includes(objectId)) selected.push(item);
-            // else output.push(item);
-            selected.push(item);
-        });
-
-        return selected.concat(output);
-    };
-
-    const getLabels = ({ selection, data }) =>
-        _.pluck(
-            data.filter(({ value, label }) => {
-                return selection.includes(value);
-            }),
-            'label',
-        ).join(', ');
-
-    const getValue = () => {
-        const data = op.get(stateRef.current, 'data') || {
-            roles: [],
-            users: [],
-        };
-        const { canRead = [], canWrite = [] } = stateRef.current;
-        const selected = canRead.concat(canWrite);
-
-        const roles = data.roles
-            .filter(({ objectId }) => selected.includes(objectId))
-            .map(item => {
-                item.type = 'role';
-                item.permission = canWrite.includes(item.objectId)
-                    ? 'write'
-                    : 'read';
-                return item;
-            });
-
-        const users = data.users
-            .filter(({ objectId }) => selected.includes(objectId))
-            .map(item => {
-                item.type = 'user';
-                item.permission = canWrite.includes(item.objectId)
-                    ? 'write'
-                    : 'read';
-                return item;
-            });
-
-        return roles.concat(users);
-    };
-
-    const addItems = () => {
-        let {
-            canWrite = [],
-            canRead = [],
-            permission,
-            selection,
-        } = stateRef.current;
-
-        let sel = permission === 'read' ? canRead : canWrite;
-        sel = _.chain(sel.concat(selection))
-            .compact()
-            .uniq()
-            .value();
-
-        if (sel.length < 1) return;
-
-        setState({
-            permission,
-            search: null,
-            canWrite: permission !== 'read' ? sel : canWrite,
-            canRead: permission === 'read' ? sel : canRead,
-            selection: [],
-        });
-
-        userSelect.current.setState({ selection: [] });
-        permissionSelect.current.setState({ selection: [permission] });
-    };
-
-    const tagFormatter = value => {
-        const data = getData();
-        const item = _.findWhere(data, { value });
-        return op.get(item, 'label', value);
-    };
-
-    const onTagsChange = ({ target, value }) => {
-        const name = target.name;
-        let { canWrite = [], canRead = [] } = stateRef.current;
-
-        if (name === 'view') canRead = value;
-        if (name === 'write') canWrite = value;
-
-        setState({ canWrite, canRead });
-    };
-
-    const renderUserSelect = () => {
-        const perms = permissions();
-        const { permission, search, selection = [] } = stateRef.current;
-        const perm = _.findWhere(perms, { value: permission });
-
-        const data = getData();
-
-        return (
-            <div className='flex middle pl-xs-16 pr-xs-8 permission'>
-                <span className='blue'>
-                    <Icon name='Feather.User' className='mr-xs-4' />
-                </span>
-                <Dropdown
-                    ref={userSelect}
-                    data={data}
-                    filter={search}
-                    selection={selection}
-                    onChange={onSelectUser}
-                    collapseEvent='blur'
-                    multiSelect
-                    className='flex-grow'
-                    maxHeight={168}
-                    expandEvent={['focus', 'click']}>
-                    <label className='input-group' style={{ width: '100%' }}>
-                        <input
-                            type='text'
-                            value={search || ''}
-                            data-dropdown-element
-                            placeholder={
-                                selection.length > 0
-                                    ? getLabels({ selection, data })
-                                    : ENUMS.TEXT.FOLDER_CREATOR.USER
-                            }
-                            onChange={e => onSearch(e.target.value)}
-                        />
-                    </label>
-                </Dropdown>
-                <Dropdown
-                    ref={permissionSelect}
-                    data={perms}
-                    iconField='ico'
-                    onChange={onSelectPermission}
-                    selection={[permission]}>
-                    <Button
-                        outline
-                        color='tertiary'
-                        size='sm'
-                        style={{
-                            padding: '6px 9px',
-                            minWidth: 135,
-                            justifyContent: 'flex-start',
-                        }}
-                        data-dropdown-element>
-                        <Icon
-                            size={16}
-                            name={op.get(perm, 'icon')}
-                            style={{ marginRight: 12 }}
-                        />
-                        {op.get(perm, 'label')}
-                    </Button>
-                </Dropdown>
-                <Button
-                    onClick={addItems}
-                    color='tertiary'
-                    style={{
-                        padding: 0,
-                        width: 32,
-                        height: 32,
-                        marginLeft: 8,
-                    }}>
-                    <Icon size={20} name='Feather.Plus' />
-                </Button>
-            </div>
-        );
-    };
-
-    const renderCanWrite = () => {
-        const { canWrite = [] } = stateRef.current;
-        if (canWrite.length < 1) return;
-
-        return (
-            <div className='px-xs-8 pt-xs-16'>
-                <div className='flex middle mb-xs-4'>
-                    <span className='blue'>
-                        <Icon
-                            name='Feather.Edit2'
-                            size={24}
-                            className='mr-xs-4 ml-xs-8'
-                        />
-                    </span>
-                    <div className='px-xs-10 gray'>Can Edit</div>
-                </div>
-                <TagsInput
-                    editable
-                    name='write'
-                    value={canWrite}
-                    onChange={onTagsChange}
-                    formatter={e => tagFormatter(e)}
-                />
-            </div>
-        );
-    };
-
-    const renderCanRead = () => {
-        const { canRead = [] } = stateRef.current;
-        if (canRead.length < 1) return;
-
-        return (
-            <div className='px-xs-8 pt-xs-16'>
-                <div className='flex middle mb-xs-4'>
-                    <span className='blue'>
-                        <Icon
-                            name='Feather.Eye'
-                            size={24}
-                            className='mr-xs-4 ml-xs-8'
-                        />
-                    </span>
-                    <div className='px-xs-10 gray'>Can View</div>
-                </div>
-                <TagsInput
-                    editable
-                    name='view'
-                    value={canRead}
-                    onChange={onTagsChange}
-                    formatter={e => tagFormatter(e)}
-                />
-            </div>
-        );
-    };
-
-    const cname = () => {
-        const { namespace, className } = stateRef.current;
-        return cn({ [namespace]: !!namespace, [className]: !!className });
-    };
-
-    // Renderer
-    const render = () => {
-        return (
-            <div className={cname()} ref={ref}>
-                {renderUserSelect()}
-                <Scrollbars autoHeight autoHeightMax={185}>
-                    <div className='selections'>
-                        {renderCanWrite()}
-                        {renderCanRead()}
-                    </div>
-                </Scrollbars>
-            </div>
-        );
-    };
-
-    // Side effects
-    useEffect(() => {
-        const { search } = stateRef.current;
-    }, [op.get(stateRef.current, 'search')]);
-
-    useEffect(() => {
-        const { data, fetching } = stateRef.current;
-        if (data || fetching) return;
-
-        const fetched = Reactium.Cache.get('acl-targets');
-        if (!fetched) return;
-
-        setState({ data: fetched });
-    }, [op.get(stateRef.current, 'data')]);
-
-    useEffect(() => {
-        const { onChange, canWrite = [], canRead = [] } = stateRef.current;
-
-        onChange({
-            type: 'change',
-            value: getValue(),
-        });
-    }, [
-        op.get(stateRef.current, 'canRead'),
-        op.get(stateRef.current, 'canWrite'),
-    ]);
-
-    // External Interface
-    const handle = () => ({
-        container: containerRef.current,
-        setState,
-        state: stateRef.current,
-        value: getValue(),
-    });
-
-    useRegisterHandle('PermissionSelector', handle, [
-        op.get(stateRef.current, 'canRead'),
-        op.get(stateRef.current, 'canWrite'),
-    ]);
-
-    useImperativeHandle(ref, handle);
-
-    // Render
-    return render();
-};
-
-PermissionSelector = forwardRef(PermissionSelector);
-
-PermissionSelector.ENUMS = ENUMS;
-
-PermissionSelector.propTypes = {
-    canWrite: PropTypes.array,
-    canRead: PropTypes.array,
-    className: PropTypes.string,
-    data: PropTypes.object,
-    namespace: PropTypes.string,
-    onChange: PropTypes.func,
-    permission: PropTypes.oneOf(['read', 'write']),
-    search: PropTypes.string,
-    selection: PropTypes.array,
-};
-
-PermissionSelector.defaultProps = {
-    data: null,
-    namespace: 'permission-selector',
-    onChange: noop,
-    permission: 'read',
-    search: null,
-    selection: [],
-};
-
-export { PermissionSelector as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Portal/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Portal/reactium-hooks.js
index 012ccba6..85026d4f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Portal/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Portal/reactium-hooks.js
@@ -1,5 +1,5 @@
 import Portal from '.';
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 
 Reactium.Plugin.register('Portal').then(() => {
     Reactium.Component.register('Portal', Portal);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/_reactium-style-organisms-admin-profile-widget.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/_reactium-style-organisms-admin-profile-widget.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/hooks/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/hooks/index.js
index 1bc6dc65..5e5d56f5 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/hooks/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/hooks/index.js
@@ -1,9 +1,13 @@
 import _ from 'underscore';
 import op from 'object-path';
-import Reactium, { useAsyncEffect, useHandle, __ } from 'reactium-core/sdk';
+import Reactium, {
+    useAsyncEffect,
+    useHandle,
+    __,
+} from '@atomic-reactor/reactium-core/sdk';
 import { useRef, useState, useEffect } from 'react';
 
-const getRole = user => {
+const getRole = (user) => {
     const roles = Object.entries(op.get(user, 'roles', {})).map(
         ([role, level]) => ({
             role,
@@ -11,10 +15,7 @@ const getRole = user => {
         }),
     );
 
-    const role = _.chain(roles)
-        .sortBy('level')
-        .value()
-        .pop();
+    const role = _.chain(roles).sortBy('level').value().pop();
 
     return op.get(role, 'role', 'anonymous');
 };
@@ -37,7 +38,7 @@ const useProfileAvatar = (initialUser = {}) => {
     // Reactium.User.current() ||
 
     useAsyncEffect(
-        async mounted => {
+        async (mounted) => {
             if (avatar !== getAvatar()) {
                 const context = await Reactium.Hook.run(
                     'profile-avatar',
@@ -69,7 +70,7 @@ const useProfileAvatar = (initialUser = {}) => {
  * @apiGroup ReactHook
  * @apiParam {Object} [user=Reactium.User.current] The user object.
  */
-const useProfileGreeting = user => {
+const useProfileGreeting = (user) => {
     user = user || Reactium.User.current() || {};
     const defaultGreeting = __('Hello %name%');
     const ref = useRef('');
@@ -78,7 +79,7 @@ const useProfileGreeting = user => {
 
     const Profile = useHandle('ProfileEditor');
 
-    const setState = greeting => {
+    const setState = (greeting) => {
         if (greeting !== ref.current) {
             ref.current = greeting;
             updateRef(ref.current);
@@ -86,7 +87,7 @@ const useProfileGreeting = user => {
     };
 
     useAsyncEffect(
-        async isMounted => {
+        async (isMounted) => {
             const name = op.get(user, 'fname') || op.get(user, 'username', '');
             let greeting = defaultGreeting;
             try {
@@ -115,12 +116,12 @@ const useProfileGreeting = user => {
  * @apiGroup ReactHook
  * @apiParam {Object} [user=Reactium.User.current] The user object.
  */
-const useProfileRole = initialUser => {
+const useProfileRole = (initialUser) => {
     const [role, setRole] = useState();
     const [user, setUser] = useState(initialUser);
 
     useAsyncEffect(
-        async mounted => {
+        async (mounted) => {
             if (role) {
                 const context = await Reactium.Hook.run(
                     'profile-role-name',
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/index.js
index 07f781c1..08adb211 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/index.js
@@ -1,8 +1,8 @@
 import cn from 'classnames';
 import React, { useEffect, useRef } from 'react';
 import { useProfileGreeting, useProfileRole } from './hooks';
-import Reactium, { useDerivedState } from 'reactium-core/sdk';
-import useAvatar from 'reactium_modules/@atomic-reactor/reactium-admin-core/User/useAvatar';
+import Reactium, { useDerivedState } from '@atomic-reactor/reactium-core/sdk';
+import useAvatar from 'reactium-admin-core/User/useAvatar';
 
 /**
  * -----------------------------------------------------------------------------
@@ -25,7 +25,7 @@ const SidebarWidget = ({ className, namespace, zones = [] }) => {
 
     // State
     const [state, setNewState] = useDerivedState({ avatar: getAvatar });
-    const setState = newState => {
+    const setState = (newState) => {
         if (unMounted()) return;
         setNewState(newState);
     };
@@ -41,7 +41,7 @@ const SidebarWidget = ({ className, namespace, zones = [] }) => {
 
     const unMounted = () => !containerRef.current;
 
-    const _onStatus = e => {
+    const _onStatus = (e) => {
         if (unMounted()) return;
 
         const { event, value = {} } = e;
@@ -61,7 +61,7 @@ const SidebarWidget = ({ className, namespace, zones = [] }) => {
     }, [getAvatar]);
 
     useEffect(() => {
-        const hook = Reactium.Hook.register('USER-STATUS', e => _onStatus(e));
+        const hook = Reactium.Hook.register('USER-STATUS', (e) => _onStatus(e));
         return () => {
             Reactium.Hook.unregister(hook);
         };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/reactium-hooks.js
index 7331c3bc..e715582f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import SidebarWidget from '.';
 
 Reactium.Plugin.register('AdminProfile').then(() => {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js
deleted file mode 100644
index f939fc3c..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import React, { useEffect, useRef } from 'react';
-import op from 'object-path';
-import { Dialog, Checkbox, Slider } from '@atomic-reactor/reactium-ui';
-import Reactium, {
-    __,
-    useFulfilledObject,
-    useHookComponent,
-} from 'reactium-core/sdk';
-
-const Comparison = props => {
-    const field = op.get(props, 'field', {});
-    const value = op.get(props, 'value');
-    const { fieldName: title } = field;
-    const RichTextEditor = useHookComponent('RichTextEditor');
-    const editorRef = useRef();
-
-    const displayValue = !value ? null : (
-        <RichTextEditor
-            value={value}
-            readOnly={true}
-            contentEditable={false}
-            ref={editorRef}
-        />
-    );
-
-    useEffect(() => {
-        if (value && editorRef.current) {
-            editorRef.current.setValue(value);
-        }
-    }, [value, editorRef.current]);
-
-    return (
-        <Dialog header={{ title }} collapsible={false}>
-            <div className='p-xs-20' style={{ minHeight: '60px' }}>
-                {displayValue}
-            </div>
-        </Dialog>
-    );
-};
-
-export default Comparison;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js
deleted file mode 100644
index 3429736d..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js
+++ /dev/null
@@ -1,108 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import op from 'object-path';
-import { Icon } from '@atomic-reactor/reactium-ui';
-import React, { useEffect, useRef, useState } from 'react';
-import { __, useFulfilledObject, useHookComponent } from 'reactium-core/sdk';
-
-const defaultValue = {
-    type: 'div',
-    children: [{ type: 'p', children: [{ text: '' }] }],
-};
-
-export default props => {
-    let { editor, fieldName: name, label, placeholder } = props;
-
-    label = label || __('Content');
-    placeholder = placeholder || __('Enter content...');
-
-    const { slug } = editor;
-
-    const valueRef = useRef(op.get(editor.value, [name]) || defaultValue);
-
-    const editorRef = useRef();
-
-    const RichTextEditor = useHookComponent('RichTextEditor');
-
-    const [previousSlug, setPreviousSlug] = useState();
-    const [value, setNewValue] = useState(valueRef.current);
-    const [ready] = useFulfilledObject(editor.value, [name]);
-
-    const setValue = newValue => {
-        if (newValue === null) {
-            valueRef.current = null;
-        } else {
-            newValue = { ...valueRef.current, ...newValue };
-            valueRef.current = newValue;
-        }
-        updateValue();
-    };
-
-    const onEditorChange = e => {
-        let value = e.target.value || defaultValue;
-        setValue(value);
-    };
-
-    const _updateValue = () => {
-        const val = { ...editor.value, [name]: valueRef.current };
-        setNewValue(valueRef.current);
-        editor.setValue(val);
-    };
-
-    const updateValue = _.throttle(_updateValue, 500, { leading: false });
-
-    const reload = e => {
-        const newValue = e
-            ? op.get(e, ['value', name])
-            : op.get(editor, ['value', name]) || defaultValue;
-
-        editorRef.current.setValue(newValue);
-        setPreviousSlug(slug);
-        setValue(newValue);
-    };
-
-    const onSave = e => op.set(e.value, name, valueRef.current);
-
-    useEffect(() => {
-        if (!ready) return;
-        if (!editorRef.current) return;
-        if (slug === previousSlug) return;
-        reload();
-    }, [editorRef.current, ready, slug]);
-
-    useEffect(() => {
-        if (!editor) return;
-        editor.addEventListener('load', reload);
-        editor.addEventListener('before-save', onSave);
-
-        return () => {
-            editor.removeEventListener('load', reload);
-            editor.removeEventListener('before-save', onSave);
-        };
-    }, [editor]);
-
-    const render = () => {
-        return (
-            <section className={editor.cx('rte')}>
-                <header>
-                    <div className='icon'>
-                        <Icon name='Feather.Feather' />
-                    </div>
-                    <h2>{label}</h2>
-                </header>
-                <div className='editor'>
-                    <RichTextEditor
-                        ref={editorRef}
-                        value={value || defaultValue}
-                        name={name}
-                        onChange={onEditorChange}
-                        placeholder={placeholder}
-                    />
-                </div>
-                <div className='line' />
-            </section>
-        );
-    };
-
-    return render();
-};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js
deleted file mode 100644
index 77f81af9..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import Editor from './Editor';
-import { __ } from 'reactium-core/sdk';
-import FieldTypeRichText from './index';
-import Comparison from './Comparison';
-import Reactium from 'reactium-core/sdk';
-import { Icon } from '@atomic-reactor/reactium-ui';
-
-const ID = 'RichText';
-const fieldType = {
-    label: __('Rich Text Field'),
-    icon: Icon.Feather.Feather,
-    tooltip: __('Adds a rich text field to your content type.'),
-    component: 'FieldTypeRichText',
-    order: Reactium.Enums.priority.highest,
-};
-
-const registerFieldTypePlugin = async () => {
-    await Reactium.Plugin.register(fieldType.component);
-
-    Reactium.Component.register('FieldTypeRichText', FieldTypeRichText);
-
-    Reactium.Content.Editor.register(ID, { component: Editor });
-
-    Reactium.Content.Comparison.register(ID, {
-        component: Comparison,
-    });
-
-    Reactium.ContentType.FieldType.register(ID, fieldType);
-};
-
-registerFieldTypePlugin();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js
deleted file mode 100644
index eb43a0e2..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js
+++ /dev/null
@@ -1,315 +0,0 @@
-import _ from 'underscore';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Scrollbars } from 'react-custom-scrollbars';
-import { ReactEditor, useEditor } from 'slate-react';
-import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
-
-import Reactium, {
-    __,
-    ComponentEvent,
-    useDerivedState,
-    useEventHandle,
-    useHookComponent,
-    useRefs,
-    useStatus,
-    Zone,
-} from 'reactium-core/sdk';
-
-const noop = () => {};
-
-const CloseButton = props => {
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-    return (
-        <Button
-            size={Button.ENUMS.SIZE.XS}
-            color={Button.ENUMS.COLOR.CLEAR}
-            className='ar-dialog-header-btn dismiss'
-            {...props}>
-            <Icon name='Feather.X' />
-        </Button>
-    );
-};
-
-const SubmitButton = props => {
-    const { Button } = useHookComponent('ReactiumUI');
-    return <Button block size={Button.ENUMS.SIZE.MD} {...props} />;
-};
-
-let Settings = (initialProps, ref) => {
-    const {
-        children,
-        footer,
-        header,
-        id,
-        onChange,
-        onSubmit,
-        submitLabel: initialSubmitLabel,
-        title: initialTitle,
-        value: initialValue,
-        ...props
-    } = initialProps;
-
-    const editor = useEditor();
-
-    const { Dialog, EventForm } = useHookComponent('ReactiumUI');
-
-    const refs = useRefs();
-
-    const [, setVisible, isVisible] = useStatus(false);
-
-    const [, setReady, isReady] = useStatus(false);
-
-    const [state, _update] = useDerivedState({
-        ...props,
-        excludes: ['id'],
-        submitLabel: initialSubmitLabel,
-        title: initialTitle,
-        value: {},
-    });
-
-    const update = _.debounce(_update, 250);
-
-    const setState = newState =>
-        new Promise(resolve => {
-            if (unMounted()) return;
-
-            newState = { ...state, ...newState };
-            Object.entries(newState).forEach(([key, value]) => {
-                op.set(state, key, value);
-            });
-
-            update(newState);
-
-            _.defer(() => resolve());
-        });
-
-    const setValue = newValue => {
-        const form = refs.get('form');
-        const value = _getValue(newValue);
-
-        Object.entries(newValue).forEach(([key, val]) =>
-            op.set(value, key, val),
-        );
-
-        if (_.isEqual(state.value, newValue)) return;
-
-        setState({ value });
-        form.setValue(value);
-    };
-
-    const hide = (animate = true, clear = true) => {
-        editor.panel.hide(animate, clear).setID('rte-panel');
-        ReactEditor.focus(editor);
-    };
-
-    const unMounted = () => !refs.get('container');
-
-    const submit = () => {
-        const form = refs.get('form');
-        if (form) form.submit();
-    };
-
-    const _header = () => {
-        if (_.isFunction(header)) {
-            return header();
-        }
-
-        if (_.isObject(header)) {
-            return header;
-        }
-
-        return {
-            elements: [<CloseButton onClick={hide} key='close-btn' />],
-            title: state.title,
-        };
-    };
-
-    const _footer = () => {
-        if (_.isFunction(footer)) {
-            return footer();
-        }
-
-        if (_.isObject(footer)) {
-            return footer;
-        }
-
-        return {
-            align: 'right',
-            elements: [
-                <SubmitButton
-                    onClick={submit}
-                    key='submit-btn'
-                    children={state.submitLabel}
-                />,
-            ],
-        };
-    };
-
-    const _getValue = merge => {
-        let value = JSON.parse(JSON.stringify(op.get(state, 'value')));
-        value = { ...value, ...merge };
-
-        const form = refs.get('form');
-
-        const keys = _.compact(
-            Object.entries(form.elements).map(([, elm]) => {
-                try {
-                    return elm.getAttribute('name');
-                } catch (err) {}
-            }),
-        );
-
-        const newValue = keys.reduce((obj, key) => {
-            if (key === 'null') return obj;
-
-            const val = op.get(value, key, null);
-            op.set(obj, key, val);
-            return obj;
-        }, {});
-
-        if (_.isObject(newValue)) {
-            Object.keys(newValue).forEach(key => {
-                if (state.excludes.includes(key)) op.del(newValue, key);
-            });
-        }
-
-        Reactium.Hook.runSync('rte-settings-value', newValue);
-
-        return newValue;
-    };
-
-    const _onChange = e => {
-        if (isReady(false)) return;
-
-        const value = _getValue(e.value);
-        const evt = new ComponentEvent('change', { value });
-
-        if (_.isEqual(state.value, value)) return;
-
-        state.value = value;
-        handle.state = state;
-        handle.value = value;
-
-        handle.dispatchEvent(evt);
-        onChange(evt);
-        setState({ value });
-    };
-
-    const _onSubmit = ({ value }) => {
-        value = _getValue(value);
-        const evt = new ComponentEvent('submit', { value });
-
-        state.value = value;
-        handle.state = state;
-        handle.value = value;
-
-        handle.dispatchEvent(evt);
-        onSubmit(evt);
-    };
-
-    const _handle = () => ({
-        hide,
-        props,
-        refs,
-        setState,
-        setValue,
-        state,
-        submit,
-        unMounted,
-        updateHandle,
-        value: state.value,
-    });
-
-    const [handle, setHandle] = useEventHandle(_handle());
-    const updateHandle = (overrides = {}) => {
-        if (unMounted()) return;
-        const newHandle = _handle();
-        Object.entries(overrides).forEach(([key, val]) =>
-            op.set(newHandle, key, val),
-        );
-        Object.entries(newHandle).forEach(([key, val]) =>
-            op.set(handle, key, val),
-        );
-        setHandle(handle);
-    };
-
-    useImperativeHandle(ref, () => handle);
-
-    useEffect(() => {
-        const value = _getValue(initialValue);
-        setState({ value }).then(() => setReady(true, true));
-    }, [initialValue]);
-
-    // Move panel to center
-    useEffect(() => {
-        if (!editor.panel || !refs.get('container')) return;
-        if (!isVisible(true)) {
-            const container = refs.get('container');
-
-            let { width, height } = container.getBoundingClientRect();
-
-            width = width / 2;
-            height = height / 2;
-
-            let ox = window.innerWidth / 2;
-            let oy = window.innerHeight / 4;
-            let x = ox - width;
-            let y = oy - height;
-            x = Math.floor(x);
-            y = Math.floor(y);
-
-            editor.panel.moveTo(x, y);
-
-            setVisible(true, true);
-        }
-    }, [editor.panel, refs.get('container')]);
-
-    const render = () => {
-        return (
-            <div ref={elm => refs.set('container', elm)} {...props}>
-                <EventForm
-                    onChange={_onChange}
-                    onSubmit={_onSubmit}
-                    ref={elm => refs.set('form', elm)}
-                    value={state.value}>
-                    <Dialog
-                        className='ar-settings-dialog'
-                        collapsible={false}
-                        dismissable={false}
-                        footer={_footer()}
-                        header={_header()}>
-                        <Scrollbars>
-                            {children}
-                            {id && <Zone zone={id} handle={handle} />}
-                        </Scrollbars>
-                    </Dialog>
-                </EventForm>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-Settings = forwardRef(Settings);
-
-Settings.propTypes = {
-    header: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
-    footer: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
-    onChange: PropTypes.func,
-    onSubmit: PropTypes.func,
-    submitLabel: PropTypes.node,
-    title: PropTypes.node,
-    value: PropTypes.object,
-};
-
-Settings.defaultProps = {
-    onChange: noop,
-    onSubmit: noop,
-    submitLabel: __('Update Properties'),
-    title: __('Property Inspector'),
-    value: {},
-};
-
-export { Settings, Settings as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js
deleted file mode 100644
index ad694cd4..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js
+++ /dev/null
@@ -1,350 +0,0 @@
-import React from 'react';
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import { Transforms } from 'slate';
-import { useEditor } from 'slate-react';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import Reactium, {
-    __,
-    useDerivedState,
-    useHookComponent,
-    useRefs,
-} from 'reactium-core/sdk';
-
-const borderStyleValues = [
-    'solid',
-    'dotted',
-    'dashed',
-    'double',
-    'groove',
-    'ridge',
-    'inset',
-    'outset',
-    'none',
-];
-
-const Panel = ({ node, path, ...props }) => {
-    const editor = useEditor();
-
-    const refs = useRefs();
-
-    const [state, setState] = useDerivedState({
-        nodeProps: op.get(node, 'nodeProps', { style: {} }),
-        previous: op.get(node, 'nodeProps', { style: {} }),
-    });
-
-    const {
-        BackgroundColor,
-        BorderColors,
-        BorderRadius,
-        BorderSizes,
-        BorderStyles,
-        MarginStyles,
-        Opacity,
-        PaddingStyles,
-        Position,
-        Sizing,
-    } = useHookComponent('RichTextEditorSettings');
-
-    const { Dialog } = useHookComponent('ReactiumUI');
-
-    const cx = Reactium.Utils.cxFactory('rte-settings');
-
-    const hide = (animate = true, clear = true) =>
-        editor.panel.hide(animate, clear).setID('rte-panel');
-
-    const heading = title => ({ title });
-
-    const _header = () => ({
-        title: __('Property Inspector'),
-        elements: [<CloseButton onClick={hide} key='close-btn' />],
-    });
-
-    const _footer = () => ({
-        align: 'center',
-        elements: [
-            <SubmitButton
-                onClick={submit}
-                key='submit-btn'
-                children={__('Submit')}
-            />,
-        ],
-    });
-
-    const pref = suffix => `admin.rte.settings.block.${suffix}`;
-
-    const submit = () => onSubmit({ value: state.nodeProps });
-
-    const onInputChange = e => setValue(e.target.name, e.target.value);
-
-    const onSubmit = ({ value }) => {
-        Reactium.Hook.runSync('rte-settings-apply', value, {
-            node,
-            path,
-            state,
-        });
-        Transforms.select(editor, path);
-        Transforms.collapse(editor, { edge: 'end' });
-        Transforms.setNodes(editor, { nodeProps: value }, { at: path });
-    };
-
-    const mergeValue = newValue => {
-        let value = JSON.parse(JSON.stringify(state.nodeProps));
-        value.style = !value.style ? {} : value.style;
-
-        Object.entries(newValue).forEach(([key, val]) => {
-            if (key === 'style') return;
-            op.set(value, key, val);
-        });
-
-        if (op.get(newValue, 'style')) {
-            Object.entries(newValue.style).forEach(([key, val]) =>
-                op.set(value.style, key, val),
-            );
-        }
-
-        Reactium.Hook.runSync('rte-settings-value', value, {
-            state,
-            props,
-        });
-
-        return value;
-    };
-
-    const setValue = (...args) => {
-        let newValue = _.isString(args[0]) ? { [args[0]]: args[1] } : args[0];
-
-        const next = mergeValue(newValue);
-        const prev = state.previous;
-
-        const equal = _.isEqual(
-            JSON.parse(JSON.stringify(next)),
-            JSON.parse(JSON.stringify(prev)),
-        );
-
-        if (equal) return;
-
-        setState({
-            nodeProps: next,
-            previous: JSON.parse(JSON.stringify(next)),
-        });
-    };
-
-    const setBackgroundColor = e =>
-        updateStyle({ key: 'backgroundColor', value: e.target.value });
-
-    const setBorderColor = ({ key, value }) => updateStyle({ key, value });
-
-    const setBorderStyle = ({ key, value }) => updateStyle({ key, value });
-
-    const setOpacity = ({ value }) => updateStyle({ key: 'opacity', value });
-
-    const setPosition = ({ key, value }) => updateStyle({ key, value });
-
-    const updateStyle = ({ key, value }) => {
-        let style = JSON.parse(
-            JSON.stringify(op.get(state, 'nodeProps.style', {})),
-        );
-
-        if (Array.isArray(key) && _.isObject(value)) {
-            key.forEach(k => op.set(style, k, op.get(value, k)));
-        } else {
-            op.set(style, key, value);
-        }
-
-        setValue({ style });
-    };
-
-    const _value = key =>
-        op.get(state, _.flatten(['nodeProps', key.split('.')]), '');
-
-    return op.get(state, 'inspector') === false ? null : (
-        <div ref={elm => refs.set('container', elm)} className={cx()}>
-            <Dialog
-                footer={_footer()}
-                header={_header()}
-                collapsible={false}
-                dismissable={false}
-                className='ar-settings-dialog'>
-                <Scrollbars>
-                    <Dialog
-                        className='sub'
-                        pref={pref('id')}
-                        header={heading(__('ID'))}>
-                        <div className={cx('row')}>
-                            <div className='col-xs-12 form-group'>
-                                <input
-                                    data-focus
-                                    type='text'
-                                    name='data.id'
-                                    title={__('id')}
-                                    onChange={onInputChange}
-                                    defaultValue={_value('data.id')}
-                                />
-                            </div>
-                        </div>
-                    </Dialog>
-
-                    {node.linkable && (
-                        <Dialog
-                            className='sub'
-                            pref={pref('link')}
-                            header={heading(__('Link'))}>
-                            <div className={cx('row')}>
-                                <div className='col-xs-12 form-group'>
-                                    <input
-                                        data-focus
-                                        type='text'
-                                        name='data.link'
-                                        onChange={onInputChange}
-                                        title={__('hyperlink to a page')}
-                                        defaultValue={_value('data.link')}
-                                    />
-                                </div>
-                            </div>
-                        </Dialog>
-                    )}
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('classname')}
-                        header={heading(__('CSS Class'))}>
-                        <div className={cx('row')}>
-                            <div className='col-xs-12 form-group'>
-                                <input
-                                    type='text'
-                                    name='className'
-                                    title={__('css class')}
-                                    onChange={onInputChange}
-                                    defaultValue={_value('className')}
-                                />
-                            </div>
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('align')}
-                        header={heading(__('Position'))}>
-                        <div className={cn(cx('row'), 'pb-xs-0')}>
-                            <Position
-                                className='col-xs-12'
-                                onChange={setPosition}
-                                onInputChange={onInputChange}
-                                styles={state.nodeProps.style}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('sizing')}
-                        header={heading(__('Size'))}>
-                        <div className={cx('row')}>
-                            <Sizing
-                                value={state.nodeProps}
-                                onChange={onInputChange}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('opacity')}
-                        header={heading(__('Opacity'))}>
-                        <div className={cx('row')}>
-                            <Opacity
-                                onChange={setOpacity}
-                                styles={state.nodeProps.style}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('spacing.margin')}
-                        header={heading(__('Margin'))}>
-                        <div className={cx('row')}>
-                            <MarginStyles
-                                onChange={onInputChange}
-                                styles={state.nodeProps.style}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        pref={pref('spacing.padding')}
-                        header={heading(__('Padding'))}>
-                        <div className={cx('row')}>
-                            <PaddingStyles
-                                onChange={onInputChange}
-                                styles={state.nodeProps.style}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        header={heading(__('Background Color'))}
-                        pref={pref('spacing.backgroundColor')}>
-                        <div style={{ marginTop: -1 }}>
-                            <BackgroundColor
-                                styles={state.nodeProps.style}
-                                onChange={setBackgroundColor}
-                            />
-                        </div>
-                    </Dialog>
-
-                    <Dialog
-                        className='sub'
-                        header={heading(__('Borders'))}
-                        pref={pref('borders')}>
-                        <div className={cx('row')}>
-                            <BorderSizes
-                                onChange={onInputChange}
-                                styles={state.nodeProps.style}
-                            />
-                            <BorderRadius
-                                className='mt-xs-8'
-                                onChange={onInputChange}
-                                styles={state.nodeProps.style}
-                            />
-                            <BorderStyles
-                                styles={state.nodeProps.style}
-                                onChange={setBorderStyle}
-                                borderStyles={borderStyleValues}
-                            />
-                            <BorderColors
-                                onChange={setBorderColor}
-                                styles={state.nodeProps.style}
-                            />
-                        </div>
-                    </Dialog>
-                </Scrollbars>
-            </Dialog>
-        </div>
-    );
-};
-
-const CloseButton = props => {
-    const { Button, Icon } = useHookComponent('ReactiumUI');
-    return (
-        <Button
-            size={Button.ENUMS.SIZE.XS}
-            color={Button.ENUMS.COLOR.CLEAR}
-            className='ar-dialog-header-btn dismiss'
-            {...props}>
-            <Icon name='Feather.X' />
-        </Button>
-    );
-};
-
-const SubmitButton = props => {
-    const { Button } = useHookComponent('ReactiumUI');
-    return <Button block size={Button.ENUMS.SIZE.MD} {...props} />;
-};
-
-export default Panel;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js
deleted file mode 100644
index 4cb4d539..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js
+++ /dev/null
@@ -1,229 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import cn from 'classnames';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Editor, Range, Transforms } from 'slate';
-import { ReactEditor, useSlate } from 'slate-react';
-import { ColorSelect } from '../../withFormatter/Panel/ColorSelect';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, {
-    __,
-    useDerivedState,
-    useEventHandle,
-    useFocusEffect,
-    useHandle,
-} from 'reactium-core/sdk';
-
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useMemo,
-    useRef,
-    useState,
-} from 'react';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-
-let Panel = (
-    {
-        removeButtonLabel,
-        submitButtonLabel,
-        children,
-        color: initialColor,
-        selection: initialSelection,
-        title,
-        ...props
-    },
-    ref,
-) => {
-    const formRef = useRef();
-
-    const editor = useSlate();
-
-    const [state, setNewState] = useDerivedState({
-        color: initialColor,
-        colors: editor.colors,
-        selection: initialSelection,
-        value: {},
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setNewState(newState);
-    };
-
-    // className prefixer
-    const cx = cls =>
-        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
-            .compact()
-            .uniq()
-            .value()
-            .join('-');
-
-    const isColorActive = () => {
-        const [color] = Editor.nodes(editor, {
-            match: n =>
-                n.type === 'color' && op.get(n, 'style.color') !== 'inherit',
-        });
-        return !!color;
-    };
-
-    const unMounted = () => !formRef.current;
-
-    const unwrapColor = () => {
-        Transforms.unwrapNodes(editor, { match: n => n.type === 'color' });
-    };
-
-    const wrapColor = () => {
-        if (isColorActive()) {
-            unwrapColor();
-        }
-
-        const { color, selection } = state;
-
-        const isCollapsed = selection && Range.isCollapsed(selection);
-
-        const [_node] = Editor.node(editor, selection);
-
-        const text = op.get(_node, 'text');
-
-        const node = {
-            type: 'color',
-            style: { color },
-            children: [{ text }],
-        };
-
-        if (isCollapsed) {
-            Transforms.insertNodes(editor, node, { at: selection });
-        } else {
-            Transforms.wrapNodes(editor, node, { split: true, at: selection });
-        }
-
-        editor.updated = Date.now();
-    };
-
-    const _onClearColor = e => {
-        hide();
-        _.defer(() => unwrapColor(), 1);
-    };
-
-    const _onChange = e => setState({ color: e.target.value });
-
-    const _onSelect = e => setState({ color: e.item.value });
-
-    const _onSubmit = () => {
-        if (unMounted()) return;
-        if (!state.color) return;
-        wrapColor();
-        hide();
-    };
-
-    const hide = () => {
-        editor.panel.hide(false).setID('rte-panel');
-    };
-
-    // Set selection
-    useEffect(() => {
-        if (!editor.selection) return;
-        setState({ selection: editor.selection });
-    }, [editor.selection]);
-
-    // Set colors
-    useEffect(() => {
-        setState({ colors: editor.colors });
-    }, [editor.colors]);
-
-    useFocusEffect(editor.panel.container);
-
-    // Renderers
-    const render = () => {
-        const isActive = isColorActive();
-        const { color, colors, selection } = state;
-
-        return (
-            <div ref={formRef} className={cx()}>
-                <Dialog
-                    collapsible={false}
-                    dismissable={false}
-                    header={{
-                        title,
-                        elements: [
-                            <Button
-                                onClick={e => {
-                                    e.preventDefault();
-                                    hide();
-                                }}
-                                size={Button.ENUMS.SIZE.XS}
-                                color={Button.ENUMS.COLOR.CLEAR}
-                                className='ar-dialog-header-btn dismiss'>
-                                <Icon name='Feather.X' />
-                            </Button>,
-                        ],
-                    }}>
-                    {!isActive && (
-                        <ColorSelect
-                            color={color}
-                            colors={colors}
-                            data-focus
-                            name='color'
-                            onColorChange={_onChange}
-                            onColorSelect={_onSelect}
-                            title={null}
-                        />
-                    )}
-                    <div className='p-xs-8'>
-                        {isActive ? (
-                            <Button
-                                block
-                                color='danger'
-                                data-focus
-                                size='sm'
-                                type='button'
-                                onClick={_onClearColor}>
-                                {removeButtonLabel}
-                            </Button>
-                        ) : (
-                            <Button
-                                block
-                                color='primary'
-                                onClick={_onSubmit}
-                                size='sm'
-                                type='button'>
-                                {submitButtonLabel}
-                            </Button>
-                        )}
-                    </div>
-                </Dialog>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-Panel = forwardRef(Panel);
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    color: PropTypes.string,
-    namespace: PropTypes.string,
-    removeButtonLabel: PropTypes.node,
-    submitButtonLabel: PropTypes.node,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    color: '#000000',
-    namespace: 'rte-color-insert',
-    removeButtonLabel: __('Remove Color'),
-    submitButtonLabel: __('Apply Color'),
-    title: __('Text color'),
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js
deleted file mode 100644
index 852801a0..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import Panel from './Panel';
-import op from 'object-path';
-import { Editor } from 'slate';
-import { useSlate } from 'slate-react';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium from 'reactium-core/sdk';
-import React, { useEffect, useState } from 'react';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-const Plugin = new RTEPlugin({ type: 'color', order: 100 });
-
-Plugin.callback = editor => {
-    // register leaf format
-    Reactium.RTE.Format.register(Plugin.type, {
-        element: ({ type, ...props }) => <span {...props} />,
-    });
-
-    // register toolbar button
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: 50,
-        toolbar: true,
-        button: props => {
-            const editor = useSlate();
-            const [backgroundColor, setBGColor] = useState('#000000');
-            const [node, setNode] = useState();
-            const [selection, setSelection] = useState();
-
-            const onButtonClick = e => {
-                const btn = e.currentTarget;
-                const rect = editor.toolbar.container.current.getBoundingClientRect();
-
-                let { width, height, x, y } = rect;
-
-                x += width / 2 - 150;
-                y += height;
-
-                editor.panel
-                    .setID('color')
-                    .setContent(<Panel selection={editor.selection} />)
-                    .moveTo(x, y)
-                    .show();
-            };
-
-            useEffect(() => {
-                if (!op.get(editor, 'selection')) return;
-                setSelection(editor.selection);
-            }, [editor.selection]);
-
-            useEffect(() => {
-                if (!selection) return;
-                try {
-                    const [_node] = Editor.parent(editor, selection);
-                    if (_node) setNode(_node);
-                } catch (err) {}
-            }, [selection]);
-
-            useEffect(() => {
-                if (op.get(node, 'plugins')) return;
-                const clr = op.get(node, 'style.color');
-                if (!clr) {
-                    setBGColor('#000000');
-                    return;
-                }
-                setBGColor(clr);
-            }, [node]);
-
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    active={op.has(node, 'style.color')}
-                    onClick={onButtonClick}
-                    {...props}>
-                    <div
-                        className='color-circle'
-                        style={{ backgroundColor }}
-                        data-color={backgroundColor}
-                    />
-                </Button>
-            );
-        },
-    });
-
-    // Editor overrides
-    const { isInline } = editor;
-    editor.isInline = element =>
-        element.type === Plugin.type ? true : isInline(element);
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js
deleted file mode 100644
index feb2b7c2..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js
+++ /dev/null
@@ -1,268 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import cn from 'classnames';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Editor, Range, Transforms } from 'slate';
-import { ReactEditor, useSlate } from 'slate-react';
-import { FontSelect } from '../../withFormatter/Panel/FontSelect';
-import { Button, Dialog, EventForm, Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, {
-    __,
-    useDerivedState,
-    useFocusEffect,
-    useFulfilledObject,
-} from 'reactium-core/sdk';
-
-import React, {
-    forwardRef,
-    useEffect,
-    useLayoutEffect as useWindowEffect,
-    useRef,
-    useState,
-} from 'react';
-
-const useLayoutEffect =
-    typeof window !== 'undefined' ? useWindowEffect : useEffect;
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-
-let Panel = (
-    { removeButtonLabel, submitButtonLabel, children, title, ...props },
-    ref,
-) => {
-    const formRef = useRef();
-
-    const editor = useSlate();
-
-    // Initial state
-    const [state, setNewState] = useDerivedState({
-        ...props,
-        fonts: _.sortBy(editor.fonts, 'label'),
-        selection: editor.selection,
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setNewState(newState);
-    };
-
-    const [ready, readyObj] = useFulfilledObject(state, [
-        'fonts',
-        'fontFamily',
-        'fontSize',
-        'fontWeight',
-        'selection',
-    ]);
-
-    // className prefixer
-    const cx = cls =>
-        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
-            .compact()
-            .uniq()
-            .value()
-            .join('-');
-
-    const initialize = () => {
-        if (!state.fonts) return;
-
-        const { fonts, fontFamily, fontSize, fontWeight } = state;
-
-        const newState = {};
-        const font = fonts[0];
-
-        if (!fontFamily) op.set(newState, 'fontFamily', font);
-        if (!fontSize) op.set(newState, 'fontSize', { label: 16, value: 16 });
-        if (!fontWeight) op.set(newState, 'fontWeight', font.weight[0]);
-
-        if (Object.keys(newState).length > 0) setState(newState);
-    };
-
-    const isNodeActive = () => {
-        const [_font] = Editor.nodes(editor, {
-            match: n => n.type === 'font',
-        });
-        return !!_font;
-    };
-
-    const unMounted = () => !formRef.current;
-
-    const unwrapNode = () => {
-        Transforms.unwrapNodes(editor, { match: n => n.type === 'font' });
-    };
-
-    const wrapNode = () => {
-        if (isNodeActive()) {
-            unwrapNode();
-        }
-
-        const { fontFamily, fontSize, fontWeight, selection } = state;
-
-        const isCollapsed = selection && Range.isCollapsed(selection);
-
-        const [_node] = Editor.node(editor, selection);
-
-        const text = op.get(_node, 'text');
-
-        const node = {
-            type: 'font',
-            style: {},
-            children: [{ text }],
-        };
-
-        if (fontFamily) {
-            node.style.fontFamily = op.get(fontFamily, 'weight.0.family');
-        }
-
-        if (fontWeight) {
-            node.style.fontWeight = op.get(fontWeight, 'weight');
-        }
-
-        if (fontSize) {
-            node.style.fontSize = op.get(fontSize, 'value', 16);
-        }
-
-        if (isCollapsed) {
-            Transforms.insertNodes(editor, node, { at: selection });
-        } else {
-            Transforms.wrapNodes(editor, node, { split: true, at: selection });
-        }
-
-        editor.updated = Date.now();
-    };
-
-    const _onClear = e => {
-        hide();
-        setTimeout(() => unwrapNode(), 1);
-    };
-
-    const _onFontSelect = e => setState({ fontFamily: e.item });
-
-    const _onSizeSelect = e => setState({ fontSize: e.item });
-
-    const _onWeightSelect = e => setState({ fontWeight: e.item });
-
-    const _onSubmit = () => {
-        if (unMounted()) return;
-        wrapNode();
-        hide();
-    };
-
-    const hide = () => editor.panel.setID('rte-panel').hide(false, true);
-
-    useEffect(() => {
-        if (!editor.selection) return;
-        setState({ selection: editor.selection });
-    }, [editor.selection]);
-
-    // Set fonts
-    useEffect(() => {
-        if (!editor.fonts) return;
-        setState({ fonts: _.sortBy(editor.fonts, 'label') });
-    }, [editor.fonts]);
-
-    useEffect(() => {
-        initialize();
-    }, [state.fonts]);
-
-    const [focused] = useFocusEffect(formRef.current, [formRef.current]);
-    const [focusRetry, setFocusRetry] = useState(0);
-
-    useLayoutEffect(() => {
-        if (!ready) return;
-        if (!focused && focusRetry < 10) setFocusRetry(focusRetry + 1);
-    }, [ready, focusRetry]);
-
-    // Renderers
-    const render = () => {
-        const { fonts, fontFamily, fontSize, fontWeight } = state;
-
-        const isActive = isNodeActive();
-
-        return (
-            <div ref={formRef} className={cx()}>
-                {ready && (
-                    <Dialog
-                        collapsible={false}
-                        dismissable={false}
-                        header={{
-                            title,
-                            elements: [
-                                <Button
-                                    onClick={e => {
-                                        e.preventDefault();
-                                        hide();
-                                    }}
-                                    size={Button.ENUMS.SIZE.XS}
-                                    color={Button.ENUMS.COLOR.CLEAR}
-                                    className='ar-dialog-header-btn dismiss'>
-                                    <Icon name='Feather.X' />
-                                </Button>,
-                            ],
-                        }}>
-                        {!isActive && (
-                            <FontSelect
-                                data-focus
-                                font={fontFamily}
-                                fonts={fonts}
-                                onFontSelect={_onFontSelect}
-                                onSizeSelect={_onSizeSelect}
-                                onWeightSelect={_onWeightSelect}
-                                size={fontSize}
-                                weight={fontWeight}
-                            />
-                        )}
-                        <div className='p-xs-8'>
-                            {isActive ? (
-                                <Button
-                                    block
-                                    color='danger'
-                                    data-focus
-                                    size='sm'
-                                    type='button'
-                                    onClick={_onClear}>
-                                    {removeButtonLabel}
-                                </Button>
-                            ) : (
-                                <Button
-                                    block
-                                    color='primary'
-                                    onClick={_onSubmit}
-                                    size='sm'
-                                    type='button'>
-                                    {submitButtonLabel}
-                                </Button>
-                            )}
-                        </div>
-                    </Dialog>
-                )}
-            </div>
-        );
-    };
-
-    return render();
-};
-
-Panel = forwardRef(Panel);
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-    removeButtonLabel: PropTypes.node,
-    submitButtonLabel: PropTypes.node,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    namespace: 'rte-color-insert',
-    removeButtonLabel: __('Remove Font'),
-    submitButtonLabel: __('Apply Font'),
-    title: __('Font'),
-    value: {},
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js
deleted file mode 100644
index 719580d3..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import Panel from './Panel';
-import op from 'object-path';
-import { Editor } from 'slate';
-import { useSlate } from 'slate-react';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium from 'reactium-core/sdk';
-import React, { useEffect, useState } from 'react';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-const Plugin = new RTEPlugin({ type: 'font', order: 100 });
-
-Plugin.callback = editor => {
-    // register leaf format
-    Reactium.RTE.Format.register(Plugin.type, {
-        element: ({ type, ...props }) => <span {...props} />,
-    });
-
-    // register toolbar button
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: 53,
-        toolbar: true,
-        button: props => {
-            const editor = useSlate();
-            const [fontFamily, setFontFamily] = useState();
-            const [fontSize, setFontSize] = useState();
-            const [fontWeight, setFontWeight] = useState();
-            const [node, setNode] = useState();
-            const [selection, setSelection] = useState();
-
-            const onButtonClick = e => {
-                const btn = e.currentTarget;
-                const rect = editor.toolbar.container.current.getBoundingClientRect();
-                let { width, height, x, y } = rect;
-
-                x += width / 2 - 150;
-                y += height;
-
-                editor.panel
-                    .setID('color')
-                    .setContent(<Panel selection={editor.selection} />)
-                    .moveTo(x, y)
-                    .show();
-            };
-
-            useEffect(() => {
-                if (!op.get(editor, 'selection')) return;
-                setSelection(editor.selection);
-            }, [editor.selection]);
-
-            useEffect(() => {
-                if (!selection) return;
-                try {
-                    const [_node] = Editor.parent(editor, selection);
-                    if (_node) setNode(_node);
-                } catch (err) {}
-            }, [selection]);
-
-            useEffect(() => {
-                if (op.get(node, 'plugins')) return;
-
-                const _fontFamily = op.get(node, 'style.fontFamily');
-                const _fontSize = op.get(node, 'style.fontSize');
-                const _fontWeight = op.get(node, 'style.fontWeight');
-
-                if (!_fontFamily || !_fontSize || !_fontWeight) return;
-
-                if (fontFamily !== _fontFamily) setFontFamily(_fontFamily);
-                if (fontSize !== _fontSize) setFontSize(_fontSize);
-                if (fontWeight !== _fontWeight) setFontWeight(_fontWeight);
-            }, [node]);
-
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    active={
-                        op.has(node, 'style.fontFamily') ||
-                        op.has(node, 'style.fontSize') ||
-                        op.has(node, 'style.fontWeight')
-                    }
-                    onClick={onButtonClick}
-                    {...props}>
-                    <span className='ico'>F</span>
-                </Button>
-            );
-        },
-    });
-
-    // Editor overrides
-    const { isInline } = editor;
-    editor.isInline = element =>
-        element.type === Plugin.type ? true : isInline(element);
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js
deleted file mode 100644
index 893be14a..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js
+++ /dev/null
@@ -1,172 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Transforms } from 'slate';
-import React, { useEffect, useState } from 'react';
-import { ReactEditor, useEditor } from 'slate-react';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-import Reactium, { __, useFocusEffect, useRefs } from 'reactium-core/sdk';
-
-const useElements = props => {
-    const [elements, setElements] = useState(props.elements);
-
-    useEffect(() => {
-        let elms = props.elements;
-
-        Reactium.Hook.runSync('rte-form-elements', elms);
-
-        setElements(elms);
-    }, [props.elements]);
-
-    return [elements, setElements];
-};
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-const CloseButton = props => (
-    <Button
-        size={Button.ENUMS.SIZE.XS}
-        color={Button.ENUMS.COLOR.CLEAR}
-        className='ar-dialog-header-btn dismiss'
-        {...props}>
-        <Icon name='Feather.X' />
-    </Button>
-);
-
-const Panel = ({ submitButtonLabel, namespace, title, ...props }) => {
-    const refs = useRefs();
-    const editor = useEditor();
-    const [elements] = useElements(props);
-
-    // className prefixer
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const insertNode = e => {
-        if (e) e.preventDefault();
-
-        const id = uuid();
-        const { value: element, label } = _.findWhere(elements, {
-            value: refs.get('element').value,
-        });
-
-        const nodeProps = {};
-
-        if (element === 'button') {
-            nodeProps.data = { type: 'button' };
-        }
-
-        const children = [
-            {
-                children: [{ text: label }],
-                element,
-                id: `form-element-${id}`,
-                type: 'formElement',
-                nodeProps,
-            },
-            { children: [{ text: '' }], type: 'p' },
-        ];
-
-        const node = {
-            blockID: `block-${id}`,
-            children,
-            id: `form-${id}`,
-            type: 'form',
-        };
-
-        const selection = JSON.parse(
-            JSON.stringify(editor.selection.anchor.path),
-        );
-
-        let block = Reactium.RTE.getBlock(editor, selection);
-        block = block ? block.node : null;
-
-        const isForm = block ? op.get(block, 'form') : false;
-
-        if (!isForm) {
-            Reactium.RTE.insertBlock(editor, node, {
-                id,
-                className: 'rte-form',
-                form: true,
-            });
-            Transforms.move(editor, { distance: 2, edge: 'end', unit: 'line' });
-        } else {
-            op.set(node, 'blockID', block.id);
-            Transforms.insertNodes(editor, node);
-        }
-
-        Transforms.collapse(editor, { edge: 'end' });
-
-        ReactEditor.focus(editor);
-        // hide();
-    };
-
-    const hide = () => {
-        editor.panel.hide(true, true);
-        ReactEditor.focus(editor);
-    };
-
-    const header = () => ({
-        elements: [<CloseButton onClick={hide} key='close-btn' />],
-        title,
-    });
-
-    useFocusEffect(editor.panel.container);
-
-    // Renderers
-    return (
-        <Dialog collapsible={false} dismissable={false} header={header()}>
-            <div className='p-xs-12'>
-                <div className='form-group'>
-                    <select ref={elm => refs.set('element', elm)}>
-                        {elements.map(({ value, label }, i) => (
-                            <option value={value} key={`element-${i}`}>
-                                {label}
-                            </option>
-                        ))}
-                    </select>
-                </div>
-            </div>
-            <div className={cx('footer')}>
-                <Button block color='tertiary' size='md' onClick={insertNode}>
-                    {submitButtonLabel}
-                </Button>
-            </div>
-        </Dialog>
-    );
-};
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    elements: PropTypes.array,
-    namespace: PropTypes.string,
-    removeButtonLabel: PropTypes.node,
-    submitButtonLabel: PropTypes.node,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    elements: [
-        { value: 'text', label: __('Text') },
-        { value: 'textarea', label: __('Text Area') },
-        { value: 'number', label: __('Number') },
-        { value: 'email', label: __('Email') },
-        { value: 'password', label: __('Password') },
-        { value: 'tel', label: __('Phone') },
-        { value: 'hidden', label: __('Hidden') },
-        { value: 'select', label: __('Select') },
-        { value: 'search', label: __('Search') },
-        { value: 'url', label: __('URL') },
-        { value: 'checkbox', label: __('Checkbox') },
-        { value: 'radio', label: __('Radio') },
-        { value: 'button', label: __('Button') },
-    ],
-    namespace: 'rte-form-panel',
-    submitButtonLabel: __('Insert Element'),
-    title: __('Form Element'),
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js
deleted file mode 100644
index d10d7811..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import React from 'react';
-import Panel from './Panel';
-import Element from './Element';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-const Plugin = new RTEPlugin({ type: 'form', order: 100 });
-
-Plugin.callback = editor => {
-    const onButtonClick = () => {
-        const x = window.innerWidth / 2 - 150;
-        const y = 80;
-
-        editor.panel
-            .setID(Plugin.type)
-            .setContent(<Panel selection={editor.selection} />)
-            .moveTo(x, y)
-            .show();
-    };
-
-    Reactium.RTE.Block.register('form', {
-        element: props => <div {...props} />,
-    });
-
-    Reactium.RTE.Format.register('formElement', {
-        element: Element,
-    });
-
-    // register toolbar button
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: 100,
-        sidebar: true,
-        button: props => {
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    onClick={onButtonClick}
-                    data-tooltip={__('Form Element')}
-                    {...props}>
-                    <Icon
-                        {...Reactium.RTE.ENUMS.PROPS.ICON}
-                        name='Linear.Select2'
-                        size={22}
-                    />
-                </Button>
-            );
-        },
-    });
-
-    // Editor overrides
-    const { isInline } = editor;
-    editor.isInline = element =>
-        element.type === Plugin.type ? false : isInline(element);
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js
deleted file mode 100644
index c28304e3..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js
+++ /dev/null
@@ -1,550 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Editor, Range, Transforms } from 'slate';
-import { ReactEditor, useSlate } from 'slate-react';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-
-import Reactium, {
-    __,
-    useDerivedState,
-    useEventHandle,
-    useStatus,
-} from 'reactium-core/sdk';
-
-import React, {
-    forwardRef,
-    useEffect,
-    useImperativeHandle,
-    useRef,
-} from 'react';
-
-import { FontSelect } from './FontSelect';
-import { ColorSelect } from './ColorSelect';
-import { hexToRgb, rgbToHex } from './utils';
-import { TextStyleSelect } from './TextStyleSelect';
-import { TextAlignSelect } from './TextAlignSelect';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-const CloseButton = props => (
-    <Button
-        size={Button.ENUMS.SIZE.XS}
-        color={Button.ENUMS.COLOR.CLEAR}
-        className='ar-dialog-header-btn dismiss'
-        {...props}>
-        <Icon name='Feather.X' />
-    </Button>
-);
-
-let Panel = ({ selection: initialSelection, ...props }, ref) => {
-    const formRef = useRef();
-    const editor = useSlate();
-
-    const [, setVisible, isVisible] = useStatus(false);
-
-    // Initial state
-    const [state, setNewState] = useDerivedState({
-        ...props,
-        align: 'align-left',
-        bgColor: 'transparent',
-        blocks: _.where(editor.blocks, { formatter: true }),
-        buttons: _.where(editor.buttons, item => op.has(item, 'formatter')),
-        color: 'inherit',
-        colors: editor.colors,
-        focused: null,
-        fonts: _.sortBy(editor.fonts, 'label'),
-        opacity: 100,
-        bgOpacity: 100,
-        selection: initialSelection || editor.selection,
-        size: { label: 16, value: 16 },
-        style: {},
-        value: {},
-    });
-
-    const setState = newState => {
-        if (unMounted()) return;
-        setNewState(newState);
-    };
-
-    // apply state to style
-    const applyStyle = params => {
-        const { style } = state;
-
-        let {
-            align,
-            bgColor: backgroundColor,
-            bgOpacity,
-            color,
-            font,
-            opacity,
-            size,
-            weight,
-        } = params;
-
-        let newStyle = { ...style, padding: 0 };
-
-        if (align) {
-            newStyle = {
-                ...newStyle,
-                textAlign: String(align)
-                    .split('align-')
-                    .pop(),
-            };
-        }
-
-        if (backgroundColor) {
-            if (bgOpacity) {
-                if (String(backgroundColor).substr(0, 1) === '#') {
-                    const RGB = hexToRgb(backgroundColor).join(', ');
-                    backgroundColor = `rgba(${RGB}, ${bgOpacity / 100}`;
-                }
-            }
-
-            const padding =
-                backgroundColor !== 'transparent' ? '0 10px' : undefined;
-            newStyle = { ...newStyle, backgroundColor, padding };
-        }
-
-        if (color) {
-            if (opacity) {
-                if (String(color).substr(0, 1) === '#') {
-                    const RGB = hexToRgb(color).join(', ');
-                    color = `rgba(${RGB}, ${opacity / 100}`;
-                }
-            }
-
-            newStyle = { ...newStyle, color };
-        }
-
-        if (font) {
-            const { family: fontFamily } = op.get(font, ['weight', 0]);
-            newStyle = { ...newStyle, fontFamily };
-        }
-
-        if (weight) {
-            const { weight: fontWeight } = weight;
-            newStyle = { ...newStyle, fontWeight };
-        }
-
-        if (size) {
-            newStyle = { ...newStyle, fontSize: size.value };
-        } else {
-            newStyle = { ...newStyle, fontSize: 16 };
-        }
-
-        if (_.isEqual(newStyle, style)) return;
-
-        setState({ style: newStyle });
-    };
-
-    // className prefixer
-    const cx = cls =>
-        _.chain([op.get(state, 'className', op.get(state, 'namespace')), cls])
-            .compact()
-            .uniq()
-            .value()
-            .join('-');
-
-    const hide = () => {
-        editor.panel.hide(false, true).setID('rte-panel');
-        ReactEditor.focus(editor);
-    };
-
-    const styleToState = currentStyle => {
-        let newState = {};
-
-        // text align
-        let textAlign = op.get(currentStyle, 'textAlign');
-        if (textAlign) {
-            op.set(newState, 'align', `align-${textAlign}`);
-        }
-
-        const _fonts = _.sortBy(editor.fonts, 'label');
-        let _font = _fonts[0];
-
-        // default font values
-        newState = {
-            ...newState,
-            font: _font,
-            size: { label: 16, value: 16 },
-            weight: _font.weight[0],
-        };
-
-        // map font
-        if (op.has(currentStyle, 'fontFamily')) {
-            const label = op
-                .get(currentStyle, 'fontFamily')
-                .split(',')
-                .shift();
-            _font = _.findWhere(editor.fonts, { label }) || newState.font;
-
-            newState = {
-                ...newState,
-                font: _font,
-                weight: _font.weight[0],
-            };
-        }
-
-        if (op.has(currentStyle, 'fontSize')) {
-            const fontSize = op.get(currentStyle, 'fontSize');
-            const size = { label: fontSize, value: fontSize };
-            newState['size'] = size;
-        }
-
-        if (op.has(currentStyle, 'fontWeight')) {
-            const fontWeight = Number(op.get(currentStyle, 'fontWeight', 400));
-            const weights = newState.font;
-            const weight = _.findWhere(weights, { weight: fontWeight });
-            newState['weight'] = weight;
-        }
-
-        // map color values to state
-        const colors = [
-            {
-                key: 'bgColor',
-                opacity: 'bgOpacity',
-                css: 'backgroundColor',
-            },
-            {
-                key: 'color',
-                opacity: 'opacity',
-                css: 'color',
-            },
-        ];
-
-        colors.forEach(({ key, opacity, css }) => {
-            let clr = op.get(currentStyle, css);
-
-            newState[key] = clr;
-
-            if (clr && String(clr).substr(0, 3) === 'rgb') {
-                clr = clr
-                    .split('(')
-                    .pop()
-                    .split(')')
-                    .shift()
-                    .split(', ');
-
-                newState[key] = rgbToHex(...clr);
-                newState[opacity] =
-                    Number(clr.length === 4 ? clr.pop() : 1) * 100;
-            }
-        });
-
-        // Update state
-        if (Object.keys(newState).length > 0 && !_.isEqual(state, newState)) {
-            setState(newState);
-        }
-    };
-
-    const unMounted = () => !formRef.current;
-
-    const _onBgColorChange = e => {
-        const bgColor = e.target.value;
-        setState({ bgColor });
-    };
-
-    const _onBgColorSelect = e => {
-        const { item } = e;
-        setState({ bgColor: item.value });
-    };
-
-    const _onBgOpacityChange = e => {
-        const bgOpacity = e.target.value;
-        setState({ bgOpacity });
-    };
-
-    const _onFontSelect = e => {
-        const { item: font } = e;
-        setState({ font });
-    };
-
-    const _onTextColorChange = e => {
-        const color = e.target.value;
-        setState({ color });
-    };
-
-    const _onTextColorSelect = e => {
-        const { item } = e;
-        setState({ color: item.value });
-    };
-
-    const _onTextOpacityChange = e => {
-        const opacity = e.target.value;
-        setState({ opacity });
-    };
-
-    const _onTextStyleChange = e => {
-        const { size: currentSize } = state;
-        const { item: textStyle } = e;
-
-        const size = op.get(textStyle, 'size')
-            ? { label: textStyle.size, value: textStyle.size }
-            : currentSize;
-
-        setState({ size, textStyle });
-    };
-
-    const _onTextAlignChange = e => {
-        //const align = e.currentTarget.dataset.align;
-        const align = e.target.value;
-        setState({ align });
-    };
-
-    const _onSizeSelect = e => {
-        const { item: size } = e;
-        setState({ size });
-    };
-
-    const _onWeightSelect = e => {
-        const { item: weight } = e;
-        setState({ weight });
-    };
-
-    const _onSubmit = () => {
-        const { selection, style, textStyle } = state;
-
-        Transforms.select(editor, selection);
-
-        if (Range.isExpanded(selection)) {
-            if (op.get(textStyle, 'id') === 'styled') {
-                Editor.addMark(editor, 'style', style);
-            } else {
-                Transforms.setNodes(
-                    editor,
-                    { style, type: textStyle.id },
-                    { split: true },
-                );
-            }
-        } else {
-            Reactium.RTE.insertBlock(editor, {
-                style,
-                type: textStyle.id,
-                children: [{ text: textStyle.label || '' }],
-            });
-        }
-        Transforms.collapse(editor, { edge: 'end' });
-        hide();
-    };
-
-    // Handle
-    const _handle = () => ({
-        setState,
-        state,
-    });
-
-    const [handle] = useEventHandle(_handle());
-
-    useImperativeHandle(ref, () => handle, [handle]);
-
-    // Editor load
-    useEffect(() => {
-        const { blocks, selection } = state;
-        if (blocks && selection) {
-            const textStyle = _.findWhere(blocks, { id: 'styled' });
-
-            setState({ textStyle });
-        }
-    }, [state.blocks, state.selection]);
-
-    // Set blocks
-    useEffect(() => {
-        setState({ blocks: _.where(editor.blocks, { formatter: true }) });
-    }, [editor.blocks]);
-
-    // Set buttons
-    useEffect(() => {
-        setState({
-            buttons: _.where(editor.buttons, item => op.has(item, 'formatter')),
-        });
-    }, [editor.buttons]);
-
-    // Set colors
-    useEffect(() => {
-        setState({ colors: editor.colors });
-    }, [editor.colors]);
-
-    // Set fonts
-    useEffect(() => {
-        setState({ fonts: _.sortBy(editor.fonts, 'label') });
-    }, [editor.fonts]);
-
-    useEffect(() => {
-        if (!state.fonts) return;
-        if (!op.get(state, 'font')) {
-            const font = state.fonts[0];
-            const size = 16;
-
-            setState({
-                font,
-                size: { label: size, value: size },
-                weight: font.weight[0],
-            });
-        }
-    }, [state.fonts]);
-
-    // Set style on state changes
-    useEffect(() => {
-        applyStyle(state);
-    }, [Object.values(state)]);
-
-    // Get styles from current node
-    useEffect(() => {
-        const { selection } = state;
-        if (!selection) return;
-
-        let parent;
-        try {
-            parent = Editor.parent(editor, selection);
-        } catch (err) {
-            return;
-        }
-
-        if (!parent) return;
-
-        const [currentNode] = parent;
-
-        if (!currentNode) return;
-
-        if (op.has(currentNode, 'style')) {
-            let currentStyle = _.clone(op.get(currentNode, 'style', {}));
-            styleToState(currentStyle);
-        }
-
-        setState({ node: currentNode });
-    }, [state.node, state.selection]);
-
-    // Update selection
-    useEffect(() => {
-        if (!editor.selection) return;
-        if (_.isEqual(state.selection, editor.selection)) return;
-
-        setState({ selection: editor.selection });
-    }, [editor.selection]);
-
-    // Move panel to center
-    useEffect(() => {
-        if (!editor.panel || !formRef.current) return;
-        if (!isVisible(true)) {
-            let { width, height } = formRef.current.getBoundingClientRect();
-
-            width = width / 2;
-            height = height / 2;
-
-            let ox = window.innerWidth / 2;
-            let oy = window.innerHeight / 2;
-            let x = ox - width;
-            let y = oy - height;
-            x = Math.floor(x);
-            y = Math.floor(y);
-
-            editor.panel.moveTo(x, y);
-
-            setVisible(true, true);
-        }
-    }, [editor.panel, formRef.current]);
-
-    // Renderers
-    const render = () => {
-        const {
-            align,
-            bgColor,
-            bgOpacity,
-            blocks,
-            color,
-            colors,
-            font,
-            fonts,
-            opacity,
-            size,
-            style,
-            title,
-            textStyle,
-            weight,
-        } = state;
-
-        const header = {
-            elements: [<CloseButton onClick={hide} key='close-btn' />],
-            title,
-        };
-
-        return (
-            <div ref={formRef} className={cx()}>
-                <Dialog collapsible={false} dismissable={false} header={header}>
-                    <TextStyleSelect
-                        blocks={blocks}
-                        onSelect={_onTextStyleChange}
-                        style={style}
-                        textStyle={textStyle}
-                    />
-                    <FontSelect
-                        font={font}
-                        fonts={_.sortBy(fonts, 'label')}
-                        onFontSelect={_onFontSelect}
-                        onSizeSelect={_onSizeSelect}
-                        onWeightSelect={_onWeightSelect}
-                        size={size}
-                        weight={weight}
-                        title={__('Font')}
-                    />
-                    <ColorSelect
-                        color={color || '#000000'}
-                        colors={colors}
-                        inherit
-                        onColorChange={_onTextColorChange}
-                        onColorSelect={_onTextColorSelect}
-                        onOpacityChange={_onTextOpacityChange}
-                        opacity={opacity}
-                        title={__('Text color')}
-                    />
-                    <ColorSelect
-                        color={bgColor || '#FFFFFF'}
-                        colors={colors}
-                        onColorChange={_onBgColorChange}
-                        onColorSelect={_onBgColorSelect}
-                        onOpacityChange={_onBgOpacityChange}
-                        opacity={bgOpacity}
-                        title={__('Background color')}
-                        transparent
-                    />
-                    <TextAlignSelect
-                        value={align}
-                        onChange={_onTextAlignChange}
-                    />
-                    <div className='p-xs-8'>
-                        <Button
-                            block
-                            color='primary'
-                            onClick={_onSubmit}
-                            size='sm'
-                            type='button'>
-                            {__('Apply Formatting')}
-                        </Button>
-                    </div>
-                </Dialog>
-            </div>
-        );
-    };
-
-    return render();
-};
-
-Panel = forwardRef(Panel);
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    namespace: 'formatter',
-    title: 'Text style',
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js
deleted file mode 100644
index 5efc666c..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js
+++ /dev/null
@@ -1,337 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import _ from 'underscore';
-import op from 'object-path';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Editor, Transforms } from 'slate';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-import Panel from './Panel';
-
-export const colors = {
-    'color-black': '#000000',
-    'color-gray-dark': '#333333',
-    'color-gray': '#999999',
-    'color-grey': '#CFCFCF',
-    'color-grey-light': '#F7F7F7',
-    'color-white': '#FFFFFF',
-    'color-white-dark': '#FDFDFD',
-    'color-yellow': '#F4F19C',
-    'color-orange': '#E69840',
-    'color-pink': '#D877A0',
-    'color-red': '#E09797',
-    'color-purple': '#7A7CEF',
-    'color-blue': '#4F82BA',
-    'color-green': '#659A3F',
-    'color-green-light': '#B2BB50',
-};
-
-const Plugin = new RTEPlugin({ type: 'formatter', order: 100 });
-
-Plugin.callback = editor => {
-    const onButtonClick = (editor, e) => {
-        e.preventDefault();
-        editor.panel
-            .setID('formatter')
-            .setContent(<Panel selection={editor.selection} />)
-            .show();
-    };
-
-    // register buttons
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: -1000,
-        sidebar: true,
-        button: ({ editor, ...props }) => {
-            const [selection, setSelection] = useState(editor.selection);
-            useEffect(() => {
-                if (!_.isEqual(selection, editor.selection)) {
-                    setSelection(editor.selection);
-                }
-            }, [editor.selection]);
-
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    onClick={e => onButtonClick(editor, e)}
-                    data-tooltip={__('Text Formatter')}
-                    {...props}>
-                    <Icon
-                        {...Reactium.RTE.ENUMS.PROPS.ICON}
-                        name='Feather.Type'
-                    />
-                </Button>
-            );
-        },
-    });
-
-    Reactium.RTE.Button.register('align-left', {
-        order: 0,
-        formatter: 'alignment',
-        button: props => (
-            <Button {...props}>
-                <Icon name='Feather.AlignLeft' />
-            </Button>
-        ),
-    });
-
-    Reactium.RTE.Button.register('align-center', {
-        order: 0,
-        formatter: 'alignment',
-        button: props => (
-            <Button {...props}>
-                <Icon name='Feather.AlignCenter' />
-            </Button>
-        ),
-    });
-
-    Reactium.RTE.Button.register('align-justify', {
-        order: 0,
-        formatter: 'alignment',
-        button: props => (
-            <Button {...props}>
-                <Icon name='Feather.AlignJustify' />
-            </Button>
-        ),
-    });
-
-    Reactium.RTE.Button.register('align-right', {
-        order: 0,
-        formatter: 'alignment',
-        button: props => (
-            <Button {...props}>
-                <Icon name='Feather.AlignRight' />
-            </Button>
-        ),
-    });
-
-    // register blocks
-    Reactium.RTE.Block.register('styled', {
-        order: -1,
-        formatter: true,
-        label: 'Body Text',
-        size: 16,
-        element: props => <span {...props} className='ar-rte-styled' />,
-    });
-
-    Reactium.RTE.Block.register('p', {
-        order: 0,
-        formatter: true,
-        label: 'Paragraph',
-        size: 16,
-        element: ({ children, ...props }) => <p {...props}>{children}</p>,
-    });
-
-    Reactium.RTE.Block.register('break', {
-        element: ({ children }) => (
-            <>
-                <br />
-                {children}
-            </>
-        ),
-    });
-
-    Reactium.RTE.Block.register('h1', {
-        order: 1,
-        formatter: true,
-        label: 'Heading 1',
-        size: 32,
-        element: props => <h1 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('h2', {
-        order: 2,
-        formatter: true,
-        label: 'Heading 2',
-        size: 24,
-        element: props => <h2 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('h3', {
-        order: 3,
-        formatter: true,
-        label: 'Heading 3',
-        size: 18,
-        element: props => <h3 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('h4', {
-        order: 4,
-        formatter: true,
-        label: 'Heading 4',
-        size: 16,
-        element: props => <h4 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('h5', {
-        order: 5,
-        formatter: true,
-        label: 'Heading 5',
-        size: 14,
-        element: props => <h5 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('h6', {
-        order: 6,
-        formatter: true,
-        label: 'Heading 6',
-        size: 12,
-        element: props => <h6 {...props} />,
-    });
-
-    Reactium.RTE.Block.register('blockquote', {
-        order: 10,
-        formatter: true,
-        label: 'Quote',
-        size: 16,
-        element: props => <blockquote {...props} />,
-    });
-
-    Reactium.RTE.Block.register('div', {
-        element: element => {
-            const node = op.get(element, 'children.props.node');
-            const props = { ...node };
-
-            op.del(props, 'type');
-            op.del(props, 'blocked');
-            op.del(props, 'children');
-
-            return <div {...element} {...props} />;
-        },
-    });
-
-    // register fonts
-    Reactium.RTE.Font.register('font-1', {
-        label: 'Montserrat',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            {
-                weight: 100,
-                label: 'Thin',
-                family: 'Montserrat, Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 200,
-                label: 'Extra Light',
-                family: '"Montserrat Thin", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 300,
-                label: 'Light',
-                family: '"Montserrat Light", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 400,
-                label: 'Regular',
-                family: '"Montserrat Regular", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 500,
-                label: 'Medium',
-                family: '"Montserrat Medium", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 600,
-                label: 'Semi-Bold',
-                family: '"Montserrat SemiBold", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 800,
-                label: 'Bold',
-                family: '"Montserrat Bold", Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 900,
-                label: 'Black',
-                family: '"Montserrat Black", Helvetica, Arial, sans-serif',
-            },
-        ],
-    });
-
-    Reactium.RTE.Font.register('font-2', {
-        label: 'Cardo',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            {
-                weight: 400,
-                label: 'Regular',
-                family: 'Cardo, "Times New Roman", Gotham, serif',
-            },
-            {
-                weight: 600,
-                label: 'Semi-Bold',
-                family: 'Cardo, "Times New Roman", Gotham, serif',
-            },
-            {
-                weight: 800,
-                label: 'Bold',
-                family: 'Cardo, "Times New Roman", Gotham, serif',
-            },
-        ],
-    });
-
-    Reactium.RTE.Font.register('font-3', {
-        label: 'Arial',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            { weight: 400, label: 'Regular', family: 'Arial, sans-serif' },
-            { weight: 600, label: 'Semi-Bold', family: 'Arial, sans-serif' },
-            { weight: 800, label: 'Bold', family: 'Arial, sans-serif' },
-        ],
-    });
-
-    Reactium.RTE.Font.register('font-4', {
-        label: 'Helvetica',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            {
-                weight: 400,
-                label: 'Regular',
-                family: 'Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 600,
-                label: 'Semi-Bold',
-                family: 'Helvetica, Arial, sans-serif',
-            },
-            {
-                weight: 800,
-                label: 'Bold',
-                family: 'Helvetica, Arial, sans-serif',
-            },
-        ],
-    });
-
-    Reactium.RTE.Font.register('font-5', {
-        label: 'Courier',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            {
-                weight: 400,
-                label: 'Regular',
-                family: '"Courier New", Courier, monospace',
-            },
-            {
-                weight: 600,
-                label: 'Semi-Bold',
-                family: '"Courier New", Courier, monospace',
-            },
-            {
-                weight: 800,
-                label: 'Bold',
-                family: '"Courier New", Courier, monospace',
-            },
-        ],
-    });
-
-    // register colors
-    Object.entries(colors).forEach(([key, value]) =>
-        Reactium.RTE.Color.register(key, { value, label: value }),
-    );
-
-    // Extend editor
-    editor.lastLine = () => [editor.children.length - 1, 0];
-    editor.focusEnd = () => Transforms.select(editor, Editor.end(editor, []));
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js
deleted file mode 100644
index 7994161a..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js
+++ /dev/null
@@ -1,333 +0,0 @@
-import React, { useEffect } from 'react';
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import op from 'object-path';
-import isHotkey from 'is-hotkey';
-import PropTypes from 'prop-types';
-import { Transforms } from 'slate';
-import { ReactEditor, useEditor } from 'slate-react';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import Reactium, {
-    __,
-    useDerivedState,
-    useFocusEffect,
-    useRefs,
-} from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-const CloseButton = props => (
-    <Button
-        size={Button.ENUMS.SIZE.XS}
-        color={Button.ENUMS.COLOR.CLEAR}
-        className='ar-dialog-header-btn dismiss'
-        {...props}>
-        <Icon name='Feather.X' />
-    </Button>
-);
-
-const Panel = ({ submitButtonLabel, namespace, title, ...props }) => {
-    const refs = useRefs();
-    const editor = useEditor();
-
-    // Initial state
-    const [state, setState] = useDerivedState({
-        max: 12,
-        min: 1,
-        id: op.get(props, 'id', uuid()),
-        columns: JSON.parse(JSON.stringify(op.get(props, 'columns', []))),
-        node: op.get(props, 'node'),
-        path: op.get(props, 'path'),
-        selection: editor.selection,
-        sizes: ['xs', 'sm', 'md', 'lg'],
-    });
-
-    // className prefixer
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const submit = e => {
-        if (e) e.preventDefault();
-        if (op.get(state, 'node')) {
-            updateNode(e);
-        } else {
-            insertNode(e);
-        }
-    };
-
-    const insertNode = () => {
-        const { columns = [], id } = state;
-
-        const nodes = columns.map((col, i) => ({
-            addAfter: false,
-            addBefore: false,
-            blocked: true,
-            children: [
-                {
-                    type: 'block',
-                    blocked: true,
-                    deletable: false,
-                    inspector: false,
-                    data: { column: col },
-                    id: `block-inner-${id}-${i}`,
-                    children: [{ type: 'p', children: [{ text: '' }] }],
-                },
-            ],
-            className: Object.entries(col)
-                .map(([size, val]) => `col-${size}-${val}`)
-                .join(' '),
-            column: col,
-            deletable: false,
-            id: `block-${id}-${i}`,
-            inspector: false,
-            type: 'block',
-        }));
-
-        Transforms.select(editor, state.selection.anchor.path);
-        Reactium.RTE.insertBlock(editor, nodes, {
-            id,
-            className: 'row',
-            inspector: true,
-            row: columns,
-        });
-
-        hide();
-    };
-
-    const updateNode = () => {
-        const { columns = [], id, node, path } = state;
-        if (columns.length < 1) return;
-
-        let children = op.get(node, 'children', []);
-
-        // Add/Remove columns if needed
-        const diff = columns.length - children.length;
-
-        if (diff > 0) {
-            const at = _.flatten([path, columns.length - 1]);
-            const cols = columns.slice(columns.length - diff);
-
-            const nodes = cols.map((col, i) => ({
-                addAfter: false,
-                addBefore: false,
-                blocked: true,
-                children: [
-                    {
-                        type: 'block',
-                        blocked: true,
-                        deletable: false,
-                        inspector: false,
-                        data: { column: col },
-                        id: `block-inner-${id}-${i}`,
-                        children: [{ type: 'p', children: [{ text: '' }] }],
-                    },
-                ],
-                className: Object.entries(col)
-                    .map(([size, val]) => `col-${size}-${val}`)
-                    .join(' '),
-                column: col,
-                deletable: false,
-                id: `block-${id}-${i}`,
-                type: 'block',
-            }));
-
-            Transforms.insertNodes(editor, nodes, { at });
-            Transforms.select(editor, at);
-        }
-
-        if (diff < 0) {
-            const orig = _.range(children.length);
-            const indices = _.range(children.length + Math.abs(diff));
-            _.without(indices, ...orig).forEach(i =>
-                Transforms.delete(editor, { at: _.flatten([path, i - 1]) }),
-            );
-        }
-
-        // Update the row element
-        Transforms.setNodes(editor, { row: columns }, { at: path });
-
-        columns.forEach((col, i) => {
-            if (!col) return;
-
-            const cpath = _.flatten([path, i]);
-            const className = Object.entries(col)
-                .map(([size, val]) => `col-${size}-${val}`)
-                .join(' ');
-
-            Transforms.setNodes(
-                editor,
-                { className, column: col },
-                { at: cpath },
-            );
-        });
-
-        hide();
-    };
-
-    const _onChange = (e, { index, size }) => {
-        const { columns = [] } = state;
-        op.set(columns, [index, size], e.target.value);
-        setState({ columns });
-    };
-
-    const _onColumnAdd = e => {
-        if (e.type === 'keydown') {
-            if (!isHotkey('enter', e)) return;
-            e.preventDefault();
-        }
-
-        const { columns = [] } = state;
-
-        const values = Object.values(refs.get('size')).reduce(
-            (output, input) => {
-                if (!_.isEmpty(input.value)) {
-                    op.set(output, input.name, Number(input.value));
-                }
-
-                input.value = '';
-                return output;
-            },
-            {},
-        );
-
-        const firstInput = refs.get('size.xs');
-        if (firstInput) firstInput.focus();
-
-        columns.push(values);
-
-        setState({ columns });
-    };
-
-    const _onColumnDelete = index => {
-        const { columns = [] } = state;
-        columns.splice(index, 1);
-        setState({ columns });
-    };
-
-    const hide = () => {
-        editor.panel.hide(true, true).setID('rte-panel');
-        ReactEditor.focus(editor);
-    };
-
-    const header = () => ({
-        elements: [<CloseButton onClick={hide} key='close-btn' />],
-        title,
-    });
-
-    useFocusEffect(editor.panel.container);
-
-    useEffect(() => {
-        if (!editor.selection) return;
-        setState({
-            selection: editor.selection,
-            columns: JSON.parse(
-                JSON.stringify(
-                    op.get(props, 'columns', op.get(state, 'columns', [])),
-                ),
-            ),
-        });
-    }, [editor.selection]);
-
-    // Renderers
-    return (
-        <Dialog collapsible={false} dismissable={false} header={header()}>
-            <div className={cx('form')}>
-                <h4>
-                    {__('Column %num').replace(
-                        /\%num/gi,
-                        state.columns.length + 1,
-                    )}
-                </h4>
-                <div className='input-group'>
-                    {state.sizes.map(size => (
-                        <input
-                            key={`col-size-${size}`}
-                            type='number'
-                            placeholder={size}
-                            onKeyDown={_onColumnAdd}
-                            name={size}
-                            data-focus={size === 'xs'}
-                            max={state.max}
-                            min={state.min}
-                            ref={elm => refs.set(`size.${size}`, elm)}
-                        />
-                    ))}
-                    <Button
-                        color={Button.ENUMS.COLOR.TERTIARY}
-                        onClick={_onColumnAdd}
-                        type='button'
-                        size='sm'>
-                        <Icon name='Feather.Plus' size={20} />
-                    </Button>
-                </div>
-            </div>
-            {state.columns.length > 0 && (
-                <div style={{ height: '50vh', minHeight: 200 }}>
-                    <Scrollbars>
-                        {state.columns.map((column, i) => (
-                            <div className={cx('col')} key={`row-${i}`}>
-                                <div className='input-group'>
-                                    {state.sizes.map(size => (
-                                        <input
-                                            key={`row-${i}-${size}`}
-                                            type='number'
-                                            placeholder={size}
-                                            name={size}
-                                            max={state.max}
-                                            min={state.min}
-                                            onChange={e =>
-                                                _onChange(e, { index: i, size })
-                                            }
-                                            value={op.get(column, size, '')}
-                                            ref={elm =>
-                                                refs.set(
-                                                    `column.${i}.${size}`,
-                                                    elm,
-                                                )
-                                            }
-                                        />
-                                    ))}
-                                    <Button
-                                        onClick={() => _onColumnDelete(i)}
-                                        type='button'
-                                        color={Button.ENUMS.COLOR.DANGER}
-                                        size='sm'>
-                                        <Icon name='Feather.X' size={18} />
-                                    </Button>
-                                </div>
-                            </div>
-                        ))}
-                    </Scrollbars>
-                </div>
-            )}
-
-            {state.columns.length > 0 && (
-                <div className={cx('footer')}>
-                    <Button block color='tertiary' size='md' onClick={submit}>
-                        {submitButtonLabel}
-                    </Button>
-                </div>
-            )}
-        </Dialog>
-    );
-};
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-    removeButtonLabel: PropTypes.node,
-    submitButtonLabel: PropTypes.node,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    namespace: 'rte-grid-panel',
-    submitButtonLabel: __('Apply Grid'),
-    title: __('Grid'),
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js
deleted file mode 100644
index fbaf1e46..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react';
-import Panel from './Panel';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-const Plugin = new RTEPlugin({ type: 'grid', order: 100 });
-
-Plugin.callback = editor => {
-    const onButtonClick = () => {
-        const x = window.innerWidth / 2 - 150;
-        const y = 50;
-
-        editor.panel
-            .setID(Plugin.type)
-            .setContent(<Panel selection={editor.selection} />)
-            .moveTo(x, y)
-            .show();
-    };
-
-    // register toolbar button
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: 60,
-        sidebar: true,
-        button: props => {
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    onClick={onButtonClick}
-                    data-tooltip={__('Grid Layout')}
-                    {...props}>
-                    <Icon
-                        {...Reactium.RTE.ENUMS.PROPS.ICON}
-                        name='Feather.Layout'
-                        size={22}
-                    />
-                </Button>
-            );
-        },
-    });
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js
deleted file mode 100644
index 131504df..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js
+++ /dev/null
@@ -1,164 +0,0 @@
-import _ from 'underscore';
-import uuid from 'uuid/v4';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Transforms } from 'slate';
-import { ReactEditor, useEditor } from 'slate-react';
-import React, { useEffect, useRef, useState } from 'react';
-import { __, useFocusEffect, useHookComponent } from 'reactium-core/sdk';
-import { Button, Dialog, Icon } from '@atomic-reactor/reactium-ui';
-
-const CloseButton = props => (
-    <Button
-        size={Button.ENUMS.SIZE.XS}
-        color={Button.ENUMS.COLOR.CLEAR}
-        className='ar-dialog-header-btn dismiss'
-        {...props}>
-        <Icon name='Feather.X' />
-    </Button>
-);
-
-const Panel = ({
-    onDismiss,
-    onSelect,
-    selection: initialSelection,
-    title,
-    ...props
-}) => {
-    const pickerRef = useRef();
-
-    const editor = useEditor();
-
-    const IconPicker = useHookComponent('IconPicker');
-
-    const [header, setNewHeader] = useState();
-
-    const [selection, setSelection] = useState(initialSelection);
-
-    const cx = cls =>
-        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
-            .compact()
-            .uniq()
-            .value()
-            .join('-');
-
-    const hide = () => {
-        if (onDismiss) return onDismiss();
-
-        editor.panel.hide(false, true).setID('rte-panel');
-        ReactEditor.focus(editor);
-    };
-
-    const insertNode = icon => {
-        const { color, size } = pickerRef.current;
-        const children = [{ text: '' }];
-        const id = uuid();
-        const node = {
-            id,
-            children,
-            color,
-            icon,
-            size,
-            nodeProps: {
-                name: icon,
-                size,
-                style: {
-                    fill: color,
-                    width: size,
-                    height: size,
-                },
-            },
-            type: 'icon',
-        };
-
-        Transforms.insertNodes(editor, node, { at: selection });
-    };
-
-    const _search = value => pickerRef.current.setSearch(value);
-    const search = _.throttle(_search, 100);
-
-    const setHeader = () =>
-        setNewHeader({
-            elements: [<CloseButton onClick={hide} key='close-button' />],
-            title,
-        });
-
-    const _size = value => pickerRef.current.setSize(Number(value || 24));
-    const size = _.throttle(_size, 100);
-
-    const _onSelect = e => {
-        if (typeof onSelect === 'function') return onSelect(e);
-
-        insertNode(e.item);
-        // pickerRef.current.setValue([]);
-        // hide();
-    };
-
-    useEffect(() => {
-        if (!header) setHeader();
-    }, [header]);
-
-    useEffect(() => {
-        if (!editor.selection) return;
-        setSelection(editor.selection);
-    }, [editor.selection]);
-
-    useEffect(() => {
-        if (!initialSelection) return;
-        setSelection(initialSelection);
-    }, [initialSelection]);
-
-    useFocusEffect(editor.panel.container);
-
-    const render = () => {
-        return (
-            <Dialog collapsible={false} dismissable={false} header={header}>
-                <div className={cx()}>
-                    <div className={cx('search')}>
-                        <div className='form-group'>
-                            <div className='input-group'>
-                                <input
-                                    type='number'
-                                    placeholder='size'
-                                    min={18}
-                                    defaultValue={18}
-                                    onFocus={e => e.target.select()}
-                                    onChange={e => size(e.target.value)}
-                                />
-                                <input
-                                    data-focus
-                                    type='search'
-                                    placeholder='search'
-                                    className='grow'
-                                    onFocus={e => e.target.select()}
-                                    onChange={e => search(e.target.value)}
-                                />
-                            </div>
-                        </div>
-                    </div>
-                    <IconPicker
-                        ref={pickerRef}
-                        onSelect={_onSelect}
-                        height={250}
-                    />
-                </div>
-            </Dialog>
-        );
-    };
-
-    return render();
-};
-
-Panel.propTypes = {
-    namespace: PropTypes.string,
-    onDismiss: PropTypes.string,
-    onSelect: PropTypes.func,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    namespace: 'rte-icons',
-    title: __('Icons'),
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js
deleted file mode 100644
index dc9cdadf..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js
+++ /dev/null
@@ -1,412 +0,0 @@
-import _ from 'underscore';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Editor, Range, Transforms } from 'slate';
-import { ReactEditor, useSlate } from 'slate-react';
-import { Scrollbars } from 'react-custom-scrollbars';
-import React, { forwardRef, useEffect, useState } from 'react';
-
-import Reactium, {
-    __,
-    useHookComponent,
-    useRefs,
-    useStatus,
-} from 'reactium-core/sdk';
-
-const STATUS = {
-    PENDING: 'pending',
-    FETCHING: 'fetching',
-    COMPLETE: 'complete',
-};
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Panel
- * -----------------------------------------------------------------------------
- */
-
-let Panel = (
-    {
-        removeButtonLabel,
-        submitButtonLabel,
-        title,
-        updateButtonLabel,
-        ...props
-    },
-    ref,
-) => {
-    const refs = useRefs();
-
-    const editor = useSlate();
-
-    const [selection, setSelection] = useState();
-
-    const activeNode = () => {
-        const [results] = Editor.nodes(editor, {
-            match: n => n.type === 'link',
-        });
-        return Array.isArray(results) && results.length > 0
-            ? _.first(results)
-            : undefined;
-    };
-
-    const [node, setNode] = useState(activeNode());
-
-    const [isButton, setButton] = useState(false);
-
-    const [, setStatus, isStatus] = useStatus(STATUS.PENDING);
-
-    const { Button, Dialog, Icon, Spinner, Toggle } = useHookComponent(
-        'ReactiumUI',
-    );
-
-    // className prefixer
-    const cx = cls =>
-        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
-            .compact()
-            .uniq()
-            .value()
-            .join('-');
-
-    const isExpanded = () => selection && !Range.isCollapsed(selection);
-
-    const isLinkActive = () => !!activeNode();
-
-    const fetch = async ({ refresh = false, route }) => {
-        if (refresh === true) Reactium.Cache.del('link-lookup');
-
-        let req = Reactium.Cache.get('link-lookup');
-
-        if (req) return req;
-
-        req = new Reactium.Query('Route').matches(
-            'route',
-            new RegExp(route, 'i'),
-        );
-
-        Reactium.Cache.set('link-lookup', req, 2000);
-
-        return req.first().then(response => {
-            Reactium.Cache.del('link-lookup');
-
-            if (!response) return null;
-            const route = response.get('route');
-            const meta = response.get('meta');
-
-            return {
-                ...meta,
-                route,
-            };
-        });
-    };
-
-    const unMounted = () => !refs.get('container');
-
-    const unwrapLink = () =>
-        Transforms.unwrapNodes(editor, { match: n => n.type === 'link' });
-
-    const wrapLink = async params => {
-        if (!isExpanded()) return;
-        if (isLinkActive()) unwrapLink();
-
-        const href = op.get(params, 'url');
-        const button = op.get(params, 'button');
-        const target = op.get(params, 'target');
-        const className = op.get(params, 'className');
-        const node = {
-            href,
-            button,
-            target,
-            className,
-            content: null,
-            type: 'link',
-        };
-
-        if (String(href).startsWith('/')) {
-            setStatus(STATUS.FETCHING, true);
-            const content = await fetch({ route: href });
-            if (unMounted()) return;
-            setStatus(STATUS.COMPLETE);
-            op.set(node, 'content', content);
-        }
-
-        Transforms.wrapNodes(editor, node, { split: true, at: selection });
-
-        hide();
-    };
-
-    const _onClearLink = () => {
-        unwrapLink();
-        hide();
-    };
-
-    const _onDismiss = () => hide();
-
-    const _onSubmit = e => {
-        if (e) e.preventDefault();
-
-        const url = refs.get('url');
-        const size = refs.get('size');
-        const color = refs.get('color');
-        const width = refs.get('width');
-        const height = refs.get('height');
-        const cls = refs.get('className');
-        const target = refs.get('target');
-        const outline = refs.get('outline');
-        const appearance = refs.get('appearance');
-
-        const button = isButton
-            ? {
-                  size: size.value,
-                  color: color.value,
-                  width: width.value,
-                  height: height.value,
-                  outline: outline.checked ? outline.value : null,
-                  appearance: appearance.checked ? appearance.value : null,
-              }
-            : null;
-
-        wrapLink({
-            button,
-            url: url.value,
-            className: cls.value,
-            target: target.value,
-        });
-    };
-
-    const _onTypeToggle = e => setButton(e.target.checked);
-
-    const hide = () => {
-        editor.panel.hide(false, true).setID('rte-panel');
-        Transforms.collapse(editor, { edge: 'end' });
-        ReactEditor.focus(editor);
-    };
-
-    useEffect(() => {
-        if (unMounted()) return;
-        if (!editor.selection) return;
-
-        if (!_.isEqual(selection, editor.selection)) {
-            setSelection(editor.selection);
-        }
-
-        const newNode = activeNode();
-        if (newNode && isButton !== !!op.get(newNode, 'button')) {
-            setButton(!!op.get(newNode, 'button'));
-            setNode(newNode);
-        }
-    }, [selection, editor.selection]);
-
-    // Renderers
-    const submitLabel = node ? updateButtonLabel : submitButtonLabel;
-
-    return (
-        <div className={cx()} ref={ref}>
-            <Dialog
-                dismissable
-                header={{ title }}
-                collapsible={false}
-                onDismiss={_onDismiss}
-                pref='admin.dialog.formatter'
-                ref={elm => refs.set('container', elm)}>
-                <Scrollbars autoHeight autoHeightMin={286} autoHeightMax='80vh'>
-                    <div className='p-xs-20'>
-                        <div className='form-group'>
-                            <input
-                                data-focus
-                                type='text'
-                                ref={elm => refs.set('url', elm)}
-                                defaultValue={op.get(node, 'href', '')}
-                                placeholder={__('http://site.com/page')}
-                            />
-                            <Icon name='Feather.Link' />
-                        </div>
-                        <div className='form-group'>
-                            <input
-                                type='text'
-                                placeholder={__('class')}
-                                ref={elm => refs.set('className', elm)}
-                                defaultValue={op.get(node, 'className', '')}
-                            />
-                            <Icon name='Feather.Droplet' />
-                        </div>
-                        <div className='form-group'>
-                            <input
-                                type='text'
-                                placeholder={__('target')}
-                                ref={elm => refs.set('target', elm)}
-                                defaultValue={op.get(node, 'target', '')}
-                            />
-                            <Icon name='Feather.Target' />
-                        </div>
-                        <hr style={{ marginLeft: -20, marginRight: -20 }} />
-                        <div className='form-group'>
-                            <Toggle
-                                checked={isButton}
-                                label={__('Button')}
-                                onChange={_onTypeToggle}
-                            />
-                        </div>
-                        <ButtonOptions
-                            refs={refs}
-                            node={node}
-                            isButton={isButton}
-                        />
-                    </div>
-                </Scrollbars>
-                <hr />
-                <div className='p-xs-8'>
-                    {node && (
-                        <Button
-                            block
-                            outline
-                            size='sm'
-                            data-focus
-                            type='button'
-                            color='danger'
-                            className='my-xs-8'
-                            onClick={_onClearLink}
-                            children={removeButtonLabel}
-                            disabled={isStatus(STATUS.FETCHING)}
-                        />
-                    )}
-                    <Button
-                        block
-                        size='sm'
-                        type='button'
-                        color='primary'
-                        onClick={_onSubmit}
-                        children={submitLabel}
-                        disabled={isStatus(STATUS.FETCHING)}
-                    />
-                </div>
-                {isStatus(STATUS.FETCHING) && <Spinner />}
-            </Dialog>
-        </div>
-    );
-};
-
-const ButtonOptions = ({ isButton, node, refs }) => {
-    const [outline, setOutline] = useState(
-        op.get(node, 'button.outline', false),
-    );
-    const [appearance, setAppearance] = useState(
-        op.get(node, 'button.appearance', false),
-    );
-
-    const { Button, Icon, Toggle } = useHookComponent('ReactiumUI');
-
-    return !isButton ? null : (
-        <>
-            <hr style={{ marginLeft: -20, marginRight: -20 }} />
-            <div className='form-group'>
-                <Toggle
-                    ref={elm => refs.set('outline', op.get(elm, 'input'))}
-                    onChange={e => setOutline(e.target.checked)}
-                    label={__('Outline')}
-                    checked={outline}
-                    value='outline'
-                />
-            </div>
-            <div className='form-group'>
-                <Toggle
-                    ref={elm => refs.set('appearance', op.get(elm, 'input'))}
-                    onChange={e => setAppearance(e.target.checked)}
-                    label={__('Rounded')}
-                    checked={appearance}
-                    value='pill'
-                />
-            </div>
-            <div className='form-group'>
-                <select
-                    ref={elm => refs.set('size', elm)}
-                    defaultValue={op.get(
-                        node,
-                        'button.size',
-                        Button.ENUMS.SIZE.SM,
-                    )}>
-                    {Object.entries(Button.ENUMS.SIZE).map(([key, value]) => (
-                        <option value={value} key={key}>
-                            {String(key).toLowerCase()}
-                        </option>
-                    ))}
-                </select>
-            </div>
-            <div className='form-group'>
-                <select
-                    ref={elm => refs.set('color', elm)}
-                    defaultValue={op.get(
-                        node,
-                        'button.color',
-                        Button.ENUMS.COLOR.PRIMARY,
-                    )}>
-                    {Object.entries(Button.ENUMS.COLOR).map(([key, value]) => (
-                        <option value={value} key={key}>
-                            {String(key).toLowerCase()}
-                        </option>
-                    ))}
-                </select>
-            </div>
-            <div className='form-group'>
-                <div
-                    className='flex flex-middle'
-                    style={{
-                        justifyContent: 'space-between',
-                        position: 'relative',
-                        width: '100%',
-                    }}>
-                    <input
-                        style={{
-                            flexGrow: 0,
-                            maxWidth: '42%',
-                            paddingLeft: 10,
-                            textAlign: 'center',
-                        }}
-                        ref={elm => refs.set('width', elm)}
-                        placeholder={__('width')}
-                        type='text'
-                    />
-                    <Icon
-                        name='Feather.X'
-                        style={{
-                            left: '50%',
-                            transform: 'translateY(-50%) translateX(-50%)',
-                        }}
-                    />
-                    <input
-                        style={{
-                            flexGrow: 0,
-                            maxWidth: '42%',
-                            paddingLeft: 10,
-                            textAlign: 'center',
-                        }}
-                        ref={elm => refs.set('height', elm)}
-                        placeholder={__('height')}
-                        type='text'
-                    />
-                </div>
-            </div>
-        </>
-    );
-};
-
-Panel = forwardRef(Panel);
-
-Panel.propTypes = {
-    className: PropTypes.string,
-    namespace: PropTypes.string,
-    removeButtonLabel: PropTypes.node,
-    submitButtonLabel: PropTypes.node,
-    updateButtonLabel: PropTypes.node,
-    title: PropTypes.string,
-};
-
-Panel.defaultProps = {
-    namespace: 'rte-link-insert',
-    removeButtonLabel: __('Remove Link'),
-    submitButtonLabel: __('Insert Link'),
-    updateButtonLabel: __('Update Link'),
-    title: __('Link'),
-};
-
-export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js
deleted file mode 100644
index 3d96d0a7..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import _ from 'underscore';
-import Panel from './Panel';
-import cn from 'classnames';
-import op from 'object-path';
-import { Editor } from 'slate';
-import { useEditor } from 'slate-react';
-import RTEPlugin from '../../RTEPlugin';
-import Reactium from 'reactium-core/sdk';
-import React, { useEffect, useState } from 'react';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
-
-const Plugin = new RTEPlugin({ type: 'link', order: 100 });
-
-Plugin.callback = editor => {
-    // register leaf format
-    Reactium.RTE.Format.register(Plugin.type, {
-        element: elementProps => {
-            let { button, className, style = {}, ...props } = elementProps;
-
-            op.del(props, 'content');
-            op.del(props, 'type');
-
-            let cls = null;
-
-            if (button) {
-                cls = _.chain([
-                    'btn',
-                    op.get(button, 'color'),
-                    op.get(button, 'size'),
-                    op.get(button, 'outline'),
-                    op.get(button, 'appearance'),
-                ])
-                    .flatten()
-                    .compact()
-                    .value()
-                    .join('-');
-
-                op.set(style, 'width', op.get(button, 'width'));
-                op.set(style, 'height', op.get(button, 'height'));
-            } else {
-                className = className || 'link';
-            }
-
-            return (
-                <a {...props} style={style} className={cn(className, cls)} />
-            );
-        },
-    });
-
-    // register toolbar button
-    Reactium.RTE.Button.register(Plugin.type, {
-        order: 52,
-        toolbar: true,
-        button: props => {
-            const editor = useEditor();
-            const [active, setActive] = useState(false);
-
-            const isActive = () => {
-                if (!editor.selection) return false;
-
-                try {
-                    const node = op.get(
-                        Editor.parent(editor, editor.selection),
-                        '0',
-                    );
-
-                    if (!op.get(node, 'type')) {
-                        return false;
-                    }
-
-                    return node ? op.get(node, 'type') === Plugin.type : false;
-                } catch (err) {
-                    return false;
-                }
-            };
-
-            const onButtonClick = e => {
-                if (e) e.preventDefault();
-
-                const x = window.innerWidth / 2 - 150;
-                const y = 50;
-
-                editor.panel
-                    .setID('link')
-                    .setContent(<Panel selection={editor.selection} />)
-                    .moveTo(x, y)
-                    .show();
-            };
-
-            useEffect(() => {
-                const activeCheck = isActive();
-                if (active !== activeCheck) setActive(activeCheck);
-            }, [editor.selection]);
-
-            return (
-                <Button
-                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                    active={active}
-                    onClick={onButtonClick}
-                    {...props}>
-                    <Icon
-                        {...Reactium.RTE.ENUMS.PROPS.ICON}
-                        name='Feather.Link'
-                    />
-                </Button>
-            );
-        },
-    });
-
-    // Editor overrides
-    const { isInline } = editor;
-    editor.isInline = element =>
-        element.type === Plugin.type ? true : isInline(element);
-
-    return editor;
-};
-
-export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js
deleted file mode 100644
index 6b71759a..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js
+++ /dev/null
@@ -1,312 +0,0 @@
-import React from 'react';
-import _ from 'underscore';
-import cn from 'classnames';
-import op from 'object-path';
-import PropTypes from 'prop-types';
-import { Transforms } from 'slate';
-import { ReactEditor, useEditor } from 'slate-react';
-import { Scrollbars } from 'react-custom-scrollbars';
-
-import Reactium, {
-    __,
-    useDerivedState,
-    useHookComponent,
-    useRefs,
-    useStatus,
-} from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Hook Component: Settings
- * -----------------------------------------------------------------------------
- */
-
-const cloneObj = obj => JSON.parse(JSON.stringify(obj));
-
-const Settings = ({
-    namespace,
-    node = {},
-    path = [],
-    title,
-    updateButtonLabel,
-}) => {
-    const refs = useRefs();
-
-    const editor = useEditor();
-
-    const [, setVisible, isVisible] = useStatus(true);
-
-    const MediaPicker = useHookComponent('MediaPicker');
-
-    const { Button, Dialog, Icon, Slider, Toggle } = useHookComponent(
-        'ReactiumUI',
-    );
-
-    const [value, updateValue] = useDerivedState(cloneObj(node));
-
-    const getValue = (key, def = '') => op.get(value, key, def) || def;
-
-    const setValue = (key, newValue, silent) => {
-        if (unMounted()) return;
-
-        if (!_.isString(key)) {
-            updateValue(cloneObj(key), newValue);
-        } else {
-            if (_.isNumber(newValue)) {
-                newValue = Number(newValue);
-            }
-
-            if (_.isString(newValue) && String(newValue).length < 1) {
-                newValue = null;
-            }
-
-            updateValue({ [key]: newValue }, silent);
-        }
-    };
-
-    // className prefixer
-    const cx = Reactium.Utils.cxFactory(namespace);
-
-    const hide = () => {
-        editor.panel.hide(false, true).setID('rte-panel');
-        Transforms.collapse(editor, { edge: 'end' });
-        ReactEditor.focus(editor);
-    };
-
-    const showPicker = (TYPE, TITLE) => () => {
-        setVisible(false, true);
-        const { Modal } = Reactium.Handle.get('AdminTools').current;
-        Modal.show(
-            <MediaPicker
-                dismissable
-                title={TITLE}
-                filters={TYPE}
-                confirm={false}
-                onDismiss={() => Modal.hide()}
-                onSubmit={_onMediaSelect(TYPE)}
-            />,
-        );
-    };
-
-    const submit = (newValue = {}) =>
-        Transforms.setNodes(editor, { ...value, ...newValue }, { at: path });
-
-    const unMounted = () => !refs.get('container');
-
-    const _header = () => ({ title });
-
-    const _footer = () => ({
-        align: 'center',
-        elements: [
-            <Button
-                block
-                size='sm'
-                type='button'
-                color='primary'
-                key='submit-btn'
-                onClick={_onSubmit}
-                children={updateButtonLabel}
-            />,
-        ],
-    });
-
-    const _onDismiss = () => hide();
-
-    const _onInput = KEY => e => setValue(KEY, e.target.value);
-
-    const _onMediaSelect = TYPE => e => {
-        if (!Array.isArray(e.selection) || e.selection.length < 1) return;
-        const item = e.selection.pop();
-
-        const { Modal } = Reactium.Handle.get('AdminTools').current;
-
-        let newValue;
-
-        if (TYPE === 'VIDEO') {
-            const { objectId, url: src, ext } = item;
-            newValue = { objectId, src, ext };
-        }
-
-        if (TYPE === 'IMAGE') {
-            const { url: thumbnail } = item;
-            newValue = { thumbnail, autoplay: !!thumbnail };
-        }
-        submit(newValue);
-        Modal.hide();
-    };
-
-    const _onSubmit = e => {
-        if (e) e.preventDefault();
-        submit();
-        hide();
-    };
-
-    const _onToggle = KEY => e => setValue(KEY, e.target.checked);
-
-    // Renderer
-    return (
-        <Dialog
-            dismissable
-            footer={_footer()}
-            header={_header()}
-            collapsible={false}
-            onDismiss={_onDismiss}
-            visible={isVisible(true)}
-            className='ar-settings-dialog'
-            ref={elm => refs.set('container', elm)}>
-            <div className={cn('rte-settings', cx())}>
-                <Scrollbars autoHeight autoHeightMin={286} autoHeightMax='80vh'>
-                    <Container title={__('URL')} id='classname'>
-                        <div className='p-xs-16'>
-                            <div className='form-group'>
-                                <div className='input-group-full'>
-                                    <input
-                                        type='text'
-                                        onChange={_onInput('src')}
-                                        value={getValue('src', '')}
-                                        ref={elm => refs.set('src', elm)}
-                                    />
-                                    <Button
-                                        title={__('Select Video')}
-                                        className={cx('btn-inline')}
-                                        color={Button.ENUMS.COLOR.TERTIARY}
-                                        onClick={showPicker(
-                                            'VIDEO',
-                                            __('Select Video'),
-                                        )}>
-                                        <Icon name='Feather.Film' />
-                                    </Button>
-                                </div>
-                            </div>
-                        </div>
-                    </Container>
-                    <Container title={__('Thumbnail')} id='classname'>
-                        <div className='p-xs-16'>
-                            <div className='form-group'>
-                                <div className='input-group-full'>
-                                    <input
-                                        type='text'
-                                        onChange={_onInput('thumbnail')}
-                                        value={getValue('thumbnail', '')}
-                                        ref={elm => refs.set('thumbnail', elm)}
-                                    />
-                                    <Button
-                                        className={cx('btn-inline')}
-                                        title={__('Select Thumbnail')}
-                                        color={Button.ENUMS.COLOR.TERTIARY}
-                                        onClick={showPicker(
-                                            'IMAGE',
-                                            __('Select Thumbnail'),
-                                        )}>
-                                        <Icon name='Feather.Camera' />
-                                    </Button>
-                                </div>
-                            </div>
-                        </div>
-                    </Container>
-                    <Container title={__('Size')} id='size'>
-                        <div className='flex flex-middle p-xs-16'>
-                            <div className='col-xs-5'>
-                                <div className='form-group'>
-                                    <input
-                                        type='text'
-                                        title={__('width')}
-                                        className='text-center'
-                                        placeholder={__('width')}
-                                        value={getValue('width')}
-                                        onChange={_onInput('width')}
-                                    />
-                                </div>
-                            </div>
-                            <div className='col-xs-2 flex middle center gray'>
-                                <Icon name='Feather.X' />
-                            </div>
-                            <div className='col-xs-5'>
-                                <div className='form-group'>
-                                    <input
-                                        type='text'
-                                        title={__('height')}
-                                        className='text-center'
-                                        placeholder={__('height')}
-                                        value={getValue('height')}
-                                        onChange={_onInput('height')}
-                                    />
-                                </div>
-                            </div>
-                        </div>
-                    </Container>
-                    <Container title={__('Settings')} id='player'>
-                        <div className='p-xs-16'>
-                            <div className='form-group'>
-                                <Toggle
-                                    label={__('Autoplay')}
-                                    onChange={_onToggle('autoplay')}
-                                    checked={getValue('autoplay', false)}
-                                />
-                            </div>
-                            <div className='form-group'>
-                                <Toggle
-                                    label={__('Play Controls')}
-                                    onChange={_onToggle('controls')}
-                                    checked={getValue('controls', false)}
-                                />
-                            </div>
-                            <div className='form-group'>
-                                <Toggle
-                                    label={__('Loop')}
-                                    onChange={_onToggle('loop')}
-                                    checked={getValue('loop', false)}
-                                />
-                            </div>
-                            <div className='form-group'>
-                                <Toggle
-                                    label={__('Muted')}
-                                    onChange={_onToggle('muted')}
-                                    checked={getValue('muted', false)}
-                                />
-                            </div>
-                        </div>
-                    </Container>
-                    <Container title={__('Volume')} id='volume'>
-                        <div className='py-xs-16 px-xs-32'>
-                            <Slider
-                                value={getValue('volume', 0)}
-                                onChange={({ value }) =>
-                                    setValue('volume', value)
-                                }
-                            />
-                        </div>
-                    </Container>
-                </Scrollbars>
-            </div>
-        </Dialog>
-    );
-};
-
-Settings.propTypes = {
-    title: PropTypes.string,
-    namespace: PropTypes.string,
-    updateButtonLabel: PropTypes.node,
-};
-
-Settings.defaultProps = {
-    title: __('Video Properties'),
-    namespace: 'rte-video-settings',
-    updateButtonLabel: __('Apply Settings'),
-};
-
-const Container = ({ children, id, title }) => {
-    const { Dialog } = useHookComponent('ReactiumUI');
-
-    return (
-        <Dialog
-            collapsible
-            className='sub'
-            header={{ title }}
-            pref={`admin.dialog.rteVideo.setting.${id}`}>
-            {children}
-        </Dialog>
-    );
-};
-
-export default Settings;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js
deleted file mode 100644
index eb0d8866..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js
+++ /dev/null
@@ -1,989 +0,0 @@
-import uuid from 'uuid/v4';
-import _ from 'underscore';
-import op from 'object-path';
-import ENUMS from '../enums';
-import isHotkey from 'is-hotkey';
-import { plural } from 'pluralize';
-import cb from 'copy-to-clipboard';
-import RTEPlugin from '../RTEPlugin';
-import Reactium from 'reactium-core/sdk';
-import { isDark, isLight } from '../Settings/utils';
-import { Editor, Node, Path, Transforms } from 'slate';
-import { isBlockActive, isMarkActive, toggleBlock, toggleMark } from '.';
-
-// TODO: Convert to Reactium.Utils.registryFactory
-export class Registry {
-    constructor() {
-        this.__registered = [];
-        this.__unregister = [];
-    }
-
-    get registered() {
-        return this.__registered;
-    }
-
-    register(id, data) {
-        data['order'] = op.get(data, 'order', 200);
-        const item = { ...data, id };
-        this.__registered.push(item);
-        return item;
-    }
-
-    unregister(id) {
-        if (id) {
-            this.__unregister.push(id);
-        }
-        return this.__unregister;
-    }
-
-    list() {
-        const unregister = _.uniq(this.__unregister);
-        const registered = Array.from(this.__registered).filter(
-            ({ id }) => !unregister.includes(id),
-        );
-        return _.chain(registered)
-            .sortBy('order')
-            .indexBy('id')
-            .value();
-    }
-}
-
-class RTE {
-    constructor() {
-        this.ENUMS = ENUMS;
-        this.pluginFactory = options => new RTEPlugin(options);
-
-        this.isLight = isLight;
-        this.isDark = isDark;
-
-        this.isBlockActive = isBlockActive;
-        this.isHotkey = isHotkey;
-        this.isMarkActive = isMarkActive;
-        this.toggleBlock = toggleBlock;
-        this.toggleMark = toggleMark;
-
-        this.Action = new Registry();
-        this.Block = new Registry();
-        this.Button = new Registry();
-        this.Color = new Registry();
-        this.Font = new Registry();
-        this.Format = new Registry();
-        this.Hotkey = new Registry();
-        this.Plugin = new Registry();
-        this.Tab = new Registry();
-
-        this.Ext = {
-            Action: this.Action,
-            Block: this.Block,
-            Button: this.Button,
-            Color: this.Color,
-            Font: this.Font,
-            Format: this.Format,
-            Hotkey: this.Hotkey,
-            Plugin: this.Plugin,
-            Tab: this.Tab,
-        };
-    }
-
-    extend(id) {
-        id =
-            String(id)
-                .charAt(0)
-                .toUpperCase() + String(id).slice(1);
-
-        if (op.get(this.Ext, id) || op.get(this, id)) {
-            console.log('RTE registry "' + id + '" already exists');
-            return this[id];
-        }
-
-        this.Ext[id] = new Registry();
-        this[id] = this.Ext[id];
-
-        return this[id];
-    }
-
-    register(ext, id, data) {
-        ext = op.get(this.Ext, ext, this.extend(ext));
-        ext.register(id, data);
-    }
-
-    unregister(ext, id) {
-        ext = op.get(this.Ext, ext);
-        if (ext) {
-            ext.unregister(id);
-        }
-    }
-
-    get list() {
-        return Object.entries(this.Ext).reduce((obj, [id, item]) => {
-            id = String(plural(id)).toLowerCase();
-            obj[id] = item.list();
-            return obj;
-        }, {});
-    }
-
-    get actions() {
-        return this.list.actions;
-    }
-
-    get blocks() {
-        return this.list.blocks;
-    }
-
-    get buttons() {
-        return this.list.buttons;
-    }
-
-    get colors() {
-        let clrObj = this.Color.list();
-
-        Reactium.Hook.runSync('rte-colors', clrObj);
-
-        let clrArr = Object.values(clrObj);
-
-        Reactium.Hook.runSync('colors', clrArr);
-
-        return clrArr;
-    }
-
-    get fonts() {
-        return this.list.fonts;
-    }
-
-    get formats() {
-        return this.list.formats;
-    }
-
-    get hotkeys() {
-        return this.list.hotkeys;
-    }
-
-    get nodes() {
-        const nodes = Object.entries({ ...this.formats, ...this.blocks }).map(
-            ([id, value]) => {
-                op.set(value, 'id', id);
-                return value;
-            },
-        );
-
-        return _.sortBy(nodes, 'order');
-    }
-
-    get plugins() {
-        return this.list.plugins;
-    }
-
-    get tabs() {
-        return this.list.tabs;
-    }
-
-    get emptyNode() {
-        return {
-            type: 'p',
-            children: [{ text: '' }],
-        };
-    }
-
-    onKeyDown(editor, event, hotkeys) {
-        if (!editor || !event) return;
-
-        let next = true;
-        hotkeys.forEach(item => {
-            if (next === false) return;
-
-            const { keys, callback } = item;
-
-            if (typeof callback !== 'function') return;
-
-            const isKey =
-                _.chain([keys])
-                    .flatten()
-                    .compact()
-                    .uniq()
-                    .value()
-                    .filter(key => this.isHotkey(key, event)).length > 0;
-
-            if (!isKey) return;
-
-            try {
-                next = callback({ editor, event, keys }) || next;
-            } catch (err) {
-                next = false;
-            }
-        });
-    }
-
-    isEmpty(node) {
-        const text = Node.string(node);
-        return op.get(node, 'blocked') === true
-            ? false
-            : String(text).length < 1;
-    }
-
-    getNodeByID(editor, id) {
-        const nodes = Editor.nodes(editor, {
-            at: [],
-            match: node =>
-                op.get(node, 'id') === id || op.get(node, 'ID') === id,
-        });
-
-        const node = _.first(Array.from(nodes));
-        return node ? _.object(['node', 'path'], node) : { node: {}, path: [] };
-    }
-
-    getNode(editor, path) {
-        let node, p, root;
-
-        if (_.isString(path)) {
-            const n = this.getNodeByID(editor, path);
-            node = op.get(n, 'node');
-            p = op.get(n, 'path');
-            root = p.length === 1;
-        } else {
-            const s = editor.selection || editor.lastSelection || {};
-            path = path || op.get(s, 'anchor.path') || [0];
-
-            root = path.length === 1;
-            p = Array.from(path);
-            p = root === true ? [Math.max(Number(_.first(p) - 1), 0), 0] : p;
-
-            const result = Editor.above(editor, { at: p });
-
-            p = result.pop();
-            node = result.pop();
-        }
-
-        let empty = Object.keys(node).length > 0 ? this.isEmpty(node) : true;
-
-        return { node, path: p, root, empty, blocked: op.get(node, 'blocked') };
-    }
-
-    siblings(editor, path) {
-        let children = [];
-        const s = editor.selection || editor.lastSelection || {};
-        path = path || op.get(s, 'anchor.path') || [0];
-        path = Array.from(path);
-
-        path.pop();
-
-        let parent = Editor.above(editor, { at: path });
-        if (parent) {
-            parent = _.object(['node', 'path'], parent);
-            children = op.get(parent, 'node.children', []);
-        }
-        return children;
-    }
-
-    sibling(editor, path, offset = -1) {
-        const s = editor.selection || editor.lastSelection || {};
-        path = path || op.get(s, 'anchor.path') || [0];
-        path = Array.from(path);
-
-        let node;
-
-        const siblings = this.siblings(editor, path);
-        const sibpath = Array.from(path);
-        sibpath.pop();
-
-        if (sibpath.length >= 1) {
-            let idx = sibpath.pop() + offset;
-            if (!_.range(siblings.length).includes(idx)) {
-                return;
-            }
-            node = siblings[idx];
-        }
-
-        return node;
-    }
-
-    before(editor, path) {
-        return this.sibling(editor, path);
-    }
-
-    after(editor, path) {
-        return this.sibling(editor, path, 1);
-    }
-
-    getBlock(editor, path) {
-        // const nodes = Array.from(
-        //     Node.ancestors(editor, path, { reverse: true }),
-        // );
-        // const blocks = nodes.filter(([node]) => {
-        //     if (Editor.isEditor(node)) return false;
-        //     return op.get(node, 'type') === 'block';
-        // });
-        //
-        // let block = _.first(blocks);
-        // block = block ? _.object(['node', 'path'], block) : null;
-        let block = Editor.above(editor, {
-            at: path,
-            match: ({ type }) => type === 'block',
-        });
-
-        block = block ? _.object(['node', 'path'], block) : null;
-
-        if (block) {
-            op.set(block, 'empty', String(Node.string(block.node)).length < 1);
-        }
-
-        return block;
-    }
-
-    insertBlock(editor, children, options = {}) {
-        children = Array.isArray(children) ? children : [children];
-
-        let { at, id, ...props } = options;
-        id = id || uuid();
-        id = String(id).startsWith('block-') ? id : `block-${id}`;
-
-        const current = _.object(
-            ['node', 'path'],
-            Editor.above(editor, { at }),
-        );
-
-        const blockNode = {
-            ...props,
-            blocked: true,
-            children,
-            id,
-            type: 'block',
-        };
-
-        const replace = ['p'];
-        const type = op.get(current, 'node.type');
-        const isEmpty = Editor.isEmpty(editor, current.node);
-
-        Transforms.insertNodes(editor, blockNode, {
-            at: Path.next(current.path),
-        });
-
-        if (replace.includes(type) && isEmpty) {
-            Transforms.delete(editor, { at: current.path });
-        }
-
-        /*
-        const args = [editor];
-        if (at) args.push({ at });
-
-        let parent = Editor.above(...args) || Editor.node(...args);
-        parent = parent ? _.object(['node', 'path'], parent) : null;
-
-        const block = parent ? this.getBlock(editor, parent.path) : null;
-        const isEmpty = Editor.isEmpty(editor, parent.node);
-        const path = parent.path;
-        let next = Path.next(path);
-
-        const node = {
-            ...props,
-            blocked: true,
-            children,
-            id,
-            type: 'block',
-        };
-
-        // Transforms.move(editor, { edge: 'end' });
-
-        if (block) {
-            if (block.empty) {
-                Transforms.insertNodes(editor, node, {
-                    at: Path.next(block.path),
-                    split: true,
-                });
-                Transforms.delete(editor, { at: block.path });
-            } else {
-                Transforms.insertNodes(editor, node, { at: next, split: true });
-                if (isEmpty) Transforms.delete(editor, { at: path });
-            }
-        } else {
-            Transforms.insertNodes(editor, node, { at: next, split: true });
-            if (isEmpty) Transforms.delete(editor, { at: path });
-        }
-        */
-    }
-
-    clone(editor, node, selection) {
-        const dupe = this.reassign(node);
-        Transforms.insertNodes(editor, dupe, { at: Path.next(selection) });
-        return dupe;
-    }
-
-    copy(node) {
-        const newNode = JSON.stringify(node);
-        cb(newNode);
-        return newNode;
-    }
-
-    reassign(node) {
-        if (_.isObject(node) || _.isArray(node)) {
-            node = JSON.stringify(node);
-        }
-
-        node = _.isString(node)
-            ? JSON.stringify(JSON.parse(node), null, 2)
-            : node;
-
-        const ids = [];
-        const regexes = [
-            /\"id\": \"(.*)\"\,/gim,
-            /\"id\": \"block-inner-(.*)\"\,/gm,
-            /\"id\": \"block-(.*)\"\,/gm,
-        ];
-
-        // Get ids
-        regexes.forEach(regex => {
-            let m;
-            while ((m = regex.exec(node)) !== null) {
-                if (m.index === regex.lastIndex) regex.lastIndex++;
-                m.forEach(match =>
-                    ids.push(
-                        String(match)
-                            .replace(/block-inner/gm, '')
-                            .replace(/block-/gm, '')
-                            .replace(/\"ID": /gim, '')
-                            .replace(/\"/gm, '')
-                            .replace(/\,/gm, '')
-                            .replace(/ /gm, ''),
-                    ),
-                );
-            }
-        });
-
-        node = ids.reduce((n, id) => n.split(id).join(uuid()), node);
-        return JSON.parse(node);
-    }
-
-    removeEmptyNodes(content) {
-        let newContent = _.compact(JSON.parse(JSON.stringify(content)));
-        let i = newContent.length - 1;
-
-        for (i; i >= 0; i--) {
-            const text = Node.string(newContent[i]);
-            if (String(text).length < 1) newContent.splice(i, 1);
-        }
-
-        return newContent;
-    }
-}
-
-export default new RTE();
-
-/**
- * @api {Function} Block.register(id,options) Block.register()
- * @apiGroup Reactium.RTE
- * @apiName Block.register
- * @apiDescription Register a block level formatter.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the block.
- * @apiParam {Object} options The configuration object for the block.
- * @apiParam (Options) {Component} element The React component to render.
- * @apiParam (Options) {Boolean} [inline=false] Whether the block is inline or not.
- * @apiParam (Options) {Number} [order=100] The sort order of the block. Useful when overwriting an existing block.
- * @apiExample Usage:
-
- // reactium-hooks.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
-const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
-Plugin.callback = editor => {
-    // Register h6 block
-    Reactium.RTE.Block.register('h6', {
-        inline: false,
-        element: props => <h6 {...props} />,
-        order: 6
-    });
-
-    return editor;
-};
-
-export default Plugin;
- *
- */
-
-/**
- * @api {Function} Block.unregister(id) Block.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Block.unregister
- * @apiDescription Unregister a block level formatter.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the block.
- */
-
-/**
- * @api {Function} Block.list() Block.list()
- * @apiGroup Reactium.RTE
- * @apiName Block.list
- * @apiDescription Return a list of the registered blocks.
- */
-
-/**
- * @api {Function} Button.register(id,options) Button.register()
- * @apiGroup Reactium.RTE
- * @apiName Button.register
- * @apiDescription Register a button in the editor toolbar and/or sidebar.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the button.
- * @apiParam {Object} options The configuration object for the button.
- * @apiParam (Options) {Component} button The React component to render. If you have an `onClick` callback on your button, be sure to call `preventDefault()` so that the editor doesn't lose focus when the button is clicked.
- * @apiParam (Options) {Number} [order=100] The sort order of the button. Useful whe overwriting an existing button.
- * @apiParam (Options) {Boolean} [sidebar=false] Whether the button should show up in the sidebar. The sidebar is used for formats and blocks that don't require text to be selected.
- * @apiParam (Options) {Boolean} [toolbar=false] Whether the button should show up in the toolbar. The toolbar is used for formats and blocks that require text to be selected.
- * @apiExample Usage:
-// reactium-hooks.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
-const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
-Plugin.callback = editor => {
-    // register toolbar button
-    Reactium.RTE.Button.register('bold', {
-        order: 110,
-        toolbar: true,
-        button: ({ editor, ...props }) => (
-            <Button
-                {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                {...props}
-                active={Reactium.RTE.isMarkActive(editor, 'bold')}
-                onClick={e => Reactium.RTE.toggleMark(editor, 'bold', e)}>
-                <span className='ico'>B</span>
-            </Button>
-        ),
-    });
-
-    return editor;
-};
-
-export default Plugin;
- *
- */
-
-/**
- * @api {Function} Button.unregister(id) Button.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Button.unregister
- * @apiDescription Unregister a button.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the button.
- */
-
-/**
- * @api {Function} Button.list() Button.list()
- * @apiGroup Reactium.RTE
- * @apiName Button.list
- * @apiDescription Return a list of the registered buttons.
- */
-
-/**
-  * @api {Function} Color.register(id,options) Color.register()
-  * @apiGroup Reactium.RTE
-  * @apiName Color.register
-  * @apiDescription Register a color used in the block level text formatter configuration panel.
-
-> **Note:** This function should be called within the editor plugin callback function.
-  * @apiParam {String} id The id of the color.
-  * @apiParam {Object} options The configuration object for the color.
-  * @apiParam (Options) {String} label Display label for the color.
-  * @apiParam (Options) {String} value Valid CSS HEX color value.
-  * @apiExample Example
- // reactium-hooks.js
-
- import Reactium from 'reactium-core/sdk';
- import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
- const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
- Plugin.callback = editor => {
-     // Register Red color
-     Reactium.RTE.Color.register('red', {
-         label: 'Red',
-         value: '#FF0000',
-     });
-
-     return editor;
- };
-
- export default Plugin;
-*/
-
-/**
- * @api {Function} Color.unregister(id) Color.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Color.unregister
- * @apiDescription Unregister a color.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the color.
- */
-
-/**
- * @api {Function} Color.list() Color.list()
- * @apiGroup Reactium.RTE
- * @apiName Color.list
- * @apiDescription Return a list of the registered colors.
- */
-
-/**
- * @api {Function} Font.register(id,options) Font.register()
- * @apiGroup Reactium.RTE
- * @apiName Font.register
- * @apiDescription Register a font used in the block level text formatter configuration panel.
-
-> **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the font.
- * @apiParam {Object} options The configuration object for the font.
- * @apiParam (Options) {String} label Display label for the font.
- * @apiParam (Options) {Number[]} size List of font sizes your font to supports.
- * @apiParam (Options) {Object[]} weight List of font weights your font supports.
- * @apiParam (Options) {String} weight[label] Display label for the font-weight.
- * @apiParam (Options) {String} weight[family] Valid CSS font-family value.
- * @apiParam (Options) {Number} weight[weight] Valid CSS font-weight value.
- * @apiExample Usage:
- // reactium-hooks.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
-const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
-Plugin.callback = editor => {
-    // Register Arial font
-    Reactium.RTE.Font.register('arial', {
-        label: 'Arial',
-        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
-        weight: [
-            { label: 'Regular', family: 'Arial, sans-serif', weight: 400 },
-            { label: 'Semi-Bold', family: 'Arial, sans-serif', weight: 600 },
-            { label: 'Bold', family: 'Arial, sans-serif', weight: 800 },
-        ],
-    });
-
-    return editor;
-};
-
-export default Plugin;
- */
-
-/**
- * @api {Function} Font.unregister(id) Font.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Font.unregister
- * @apiDescription Unregister a font.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the font.
- */
-
-/**
- * @api {Function} Font.list() Font.list()
- * @apiGroup Reactium.RTE
- * @apiName Font.list
- * @apiDescription Return a list of the registered fonts.
- */
-
-/**
- * @api {Function} Format.register(id,options) Format.register()
- * @apiGroup Reactium.RTE
- * @apiName Format.register
- * @apiDescription Register an inline formatter.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the format.
- * @apiParam {Object} options The configuration object for the format.
- * @apiParam (Options) {Component} element The React component to render.
- * @apiParam (Options) {Boolean} [inline=true] Whether the element is inline or not.
- * @apiParam (Options) {Number} [order=100] The sort order of the element. Useful when overwriting an existing format.
- * @apiExample Usage:
- // reactium-hooks.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
-const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
-Plugin.callback = editor => {
-    // register bold formatter
-    Reactium.RTE.Format.register('bold', {
-        element: props => <strong {...props} />,
-        inline: true,
-    });
-
-    return editor;
- };
-
- export default Plugin;
- */
-
-/**
- * @api {Function} Format.unregister(id) Format.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Format.unregister
- * @apiDescription Unregister a inline formatter.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the formatter.
- */
-
-/**
- * @api {Function} Format.list() Format.list()
- * @apiGroup Reactium.RTE
- * @apiName Format.list
- * @apiDescription Return a list of the registered inline formats.
- */
-
-/**
- * @api {Function} Hotkey.register(id,options) Hotkey.register()
- * @apiGroup Reactium.RTE
- * @apiName Hotkey.register
- * @apiDescription Register a keyboard shortcut.
-
-> **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the hotkey.
- * @apiParam {Object} options The configuration object for the hotkey.
- * @apiParam (Options) {Array} keys The key combination. See [isHotkey](https://www.npmjs.com/package/is-hotkey) for available values.
- * @apiParam (Options) {Function} callback The function to execute when the hotkey is pressed. If your function returns `false` no other matching hotkey definitions will be processed. The callback function receives a single paramter object containing a reference to the current `editor` and the keyboard `event`.
- * @apiParam (Options) {Number} [order=100] The sort order of the hotkey. Useful when overwriting an existing hotkey or processing the same keys with a different set of rules.
- * @apiExample Usage:
- // reactium-hooks.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-
-const Plugin = new RTEPlugin({ type: 'MyPlugin' });
-
-Plugin.callback = editor => {
-    // register bold hotkey
-    Reactium.RTE.Hotkey.register('toggle-bold', {
-        keys: ['mod+b'],
-        callback: ({ editor, event }) => {
-            event.preventDefault();
-            Reactium.RTE.toggleMark(editor, Plugin.type);
-        },
-    });
-
-    return editor;
-};
-
-export default Plugin;
- */
-
-/**
- * @api {Function} Hotkey.unregister(id) Hotkey.unregister()
- * @apiGroup Reactium.RTE
- * @apiName Hotkey.unregister
- * @apiDescription Unregister a hotkey.
-
- > **Note:** This function should be called within the editor plugin callback function.
- * @apiParam {String} id The id of the hotkey.
- */
-
-/**
- * @api {Function} Hotkey.list() Hotkey.list()
- * @apiGroup Reactium.RTE
- * @apiName Hotkey.list
- * @apiDescription Return a list of the registered hotkeys.
- */
-
-/**
- * @api {Function} Plugin.register(id,plugin) Plugin.register()
- * @apiGroup Reactium.RTE
- * @apiName Plugin.register
- * @apiDescription Register a RichTextEditor plugin.
-
-> **Note:** This function should be called within a `reactium-hooks.js` file.
- * @apiParam {String} id The id of the plugin.
- * @apiParam {RTEPlugin} plugin The plugin instance.
-
- */
-
-/**
-  * @api {Function} Plugin.unregister(id) Plugin.unregister()
-  * @apiGroup Reactium.RTE
-  * @apiName Plugin.unregister
-  * @apiDescription Unregister a plugin.
-
-  > **Note:** This function should be called within the editor plugin callback function.
-  * @apiParam {String} id The id of the plugin.
-  */
-
-/**
- * @api {Function} Plugin.list() Plugin.list()
- * @apiGroup Reactium.RTE
- * @apiName Plugin.list
- * @apiDescription Return a list of the registered plugins.
- */
-
-/**
- * @api {Class} RTEPlugin(constructor) RTEPlugin
- * @apiGroup Reactium.RTE
- * @apiName RTEPlugin
- * @apiDescription RichTextEditor plugin instance used as the base when creating or extending RichTextEditor functionality.
-
-## Import
-```
-import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
-```
-
-> **See:** [Slate Plugins](https://docs.slatejs.org/concepts/07-plugins) for more information on how to augment the editor instance.
-
- * @apiParam (Constructor) {Function} callback The plugin function where your editor customization and registrations are executed. The callback can be overwritten via the `.callback` property.
- * @apiParam (Constructor) {Number} [order=100] The sort order applied to your plugin when registering it with the RichTextEditor component. The order can be overwritten via the `.order` property.
- * @apiParam (Constructor) {String} [type] The type is how your plugin is identified with the certain RichTextEditor functionality such as blocks and formats. The type cannot be changed outside of the constructor.
- * @apiExample Example Plugin
-// withBold.js
-
-import React from 'react';
-import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
-import RTEPlugin from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor/RTEPlugin';
-
-const withBold = new RTEPlugin({ type: 'bold', order: 100 });
-
-withBold.callback = editor => {
-    // Register inline formatter
-    Reactium.RTE.Format.register('bold', {
-        element: props => <strong {...props} />,
-    });
-
-    // Register toolbar button
-    Reactium.RTE.Button.register('bold', {
-        order: 110,
-        toolbar: true,
-        button: ({ editor, ...props }) => (
-            <Button
-                {...Reactium.RTE.ENUMS.PROPS.BUTTON}
-                active={Reactium.RTE.isMarkActive(editor, 'bold')}
-                onClick={e => Reactium.RTE.toggleMark(editor, 'bold', e)}
-                {...props}>
-                <span className='ico'>B</span>
-            </Button>
-        ),
-    });
-
-    // Register hotkeys
-    Reactium.RTE.Hotkey.register('bold', {
-        keys: ['mod+b'],
-        callback: ({ editor, event }) => {
-            event.preventDefault();
-            Reactium.RTE.toggleMark(editor, 'bold');
-        },
-    });
-
-    // Editor overrides
-    const { isInline } = editor;
-
-    // override the editor.isInline function to check for the 'bold' element type.
-    editor.isInline = element =>
-        element.type === 'bold' ? true : isInline(element);
-
-    // Return the updated editor object
-    return editor;
-};
-
-export {
-    withBold
-};
-
- ...
-
-// reactium-hooks.js
-
-import Reactium from 'reactium-core/sdk';
-import { withBold } from './withBold';
-import { withReact } from 'slate-react';
-import { withHistory } from 'slate-history';
-
-Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
-    () => {
-        // Register my custom plugin - withBold
-        Reactium.RTE.Plugin.register('withBold', withBold);
-
-        // Register 3rd party Slate plugins
-        Reactium.RTE.Plugin.register('withReact', new RTEPlugin({ callback: withReact, order: 0 }));
-        Reactium.RTE.Plugin.register('withHistory', new RTEPlugin({ callback: withHistory, order: 1 }));
-    },
-);
- */
-
-/**
- * @api {Function} extend(id) extend()
- * @apiGroup Reactium.RTE
- * @apiName extend
- * @apiDescription Creates a new Registry object that can be used in RTE plugin development.
- * @apiParam {String} id The id of the extension.
- * @apiExample Example
-// reactium-hooks.js
-
-import Reactium from 'reactium-core/sdk';
-
-Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
-    () => {
-        // Register RTE extension: Icon
-        Reactium.RTE.extend('Icon');
-    },
-);
- */
-
-/**
- * @api {Function} register(ext,id,options) register()
- * @apiGroup Reactium.RTE
- * @apiName register
- * @apiDescription Register elements on custom Registry objects.
- * @apiExample Example
-// reactium-hooks.js
-
-import Reactium from 'reactium-core/sdk';
-
-Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
-    () => {
-        // Register RTE extension: Icon
-        Reactium.RTE.extend('Icon');
-
-        // Register a new Icon element
-        Reactium.RTE.register('Icon', 'FeatherChevronUp', {
-            set: 'Feather',
-            name: 'ChevronUp'
-        });
-    },
-);
- */
-
-/**
- * @api {Function} unregister(ext,id) unregister()
- * @apiGroup Reactium.RTE
- * @apiName unregister
- * @apiDescription Unregister elements from custom Registry objects.
- * @apiExample Example
- // reactium-hooks.js
-
- import Reactium from 'reactium-core/sdk';
-
- Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
-     () => {
-         // Register RTE extension: Icon
-         Reactium.RTE.extend('Icon');
-
-         // Register a new Icon element
-         Reactium.RTE.register('Icon', 'FeatherChevronUp', {
-             set: 'Feather',
-             name: 'ChevronUp'
-         });
-
-         // Unregister an Icon element
-         Reactium.RTE.unregister('Icon', 'FeatherChevronUp');
-     },
- );
- */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/MediaSetting/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/MediaSetting/index.js
index d96d040b..d8a09712 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/MediaSetting/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/MediaSetting/index.js
@@ -1,5 +1,5 @@
 import React, { useRef, useEffect } from 'react';
-import { useHookComponent } from 'reactium-core/sdk';
+import { useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 import op from 'object-path';
 import _ from 'underscore';
 
@@ -20,7 +20,7 @@ const MediaSetting = ({
     const directory = op.get(config, 'directory', 'uploads') || 'uploads';
     const pickerOptions = op.get(config, 'pickerOptions', defaultPickerOptions);
 
-    const onSelected = values => {
+    const onSelected = (values) => {
         const selection = mediaToolRef.current.selection(values);
         updateValue(selection, false);
     };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/_style.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/_reactium-style-organisms-admin-settings-editor.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/_style.scss
rename to reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/_reactium-style-organisms-admin-settings-editor.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/index.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/index.js
index f22429ed..7e125ab6 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/index.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/index.js
@@ -4,21 +4,15 @@ import React, {
     useLayoutEffect as useWindowEffect,
     useEffect,
 } from 'react';
+
 import Reactium, {
     __,
     useAsyncEffect,
     useSettingGroup,
-    useHandle,
     Zone,
-} from 'reactium-core/sdk';
-import {
-    Dialog,
-    Toggle,
-    Checkbox,
-    Button,
-    Icon,
-    EventForm,
-} from '@atomic-reactor/reactium-ui';
+} from '@atomic-reactor/reactium-core/sdk';
+
+import { Dialog, Toggle, Checkbox, Button, Icon, EventForm } from 'reactium-ui';
 // import EventForm from 'components/EventForm';
 import cn from 'classnames';
 import op from 'object-path';
@@ -35,8 +29,7 @@ const useLayoutEffect =
  * -----------------------------------------------------------------------------
  */
 const SettingEditor = ({ settings = {}, classNames = [] }) => {
-    const tools = useHandle('AdminTools');
-    const Toast = op.get(tools, 'Toast');
+    const Toast = op.get(Reactium.State, 'Tools.Toast');
     const formRef = useRef();
     const errorsRef = useRef({});
     const [, setVersion] = useState(new Date());
@@ -45,20 +38,22 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
     const valueRef = useRef({});
     const value = valueRef.current;
 
-    const setValue = newValue => {
+    const setValue = (newValue) => {
         valueRef.current = newValue;
         update();
     };
 
-    const updateValue = name => (inputValue, forceRender = false) => {
-        op.set(valueRef.current, name, inputValue);
-        if (forceRender) update();
-    };
+    const updateValue =
+        (name) =>
+        (inputValue, forceRender = false) => {
+            op.set(valueRef.current, name, inputValue);
+            if (forceRender) update();
+        };
 
     useLayoutEffect(() => {
         if (errorsRef.current && formRef.current) {
             const field = Object.values(errorsRef.current || {}).find(
-                f => f.focus,
+                (f) => f.focus,
             );
 
             if (field) {
@@ -118,7 +113,8 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
                         return (
                             <div
                                 className={cn(formGroupClasses, 'inline')}
-                                key={key}>
+                                key={key}
+                            >
                                 <label htmlFor={key}>
                                     <span aria-label={config.tooltip}>
                                         {config.label}
@@ -133,7 +129,8 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
                         return (
                             <div
                                 className={cn(formGroupClasses, 'inline')}
-                                key={key}>
+                                key={key}
+                            >
                                 <label htmlFor={key}>
                                     <span aria-label={config.tooltip}>
                                         {config.label}
@@ -204,7 +201,7 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
         );
     };
 
-    const saveHotkey = e => {
+    const saveHotkey = (e) => {
         if (e) e.preventDefault();
         formRef.current.submit();
     };
@@ -248,7 +245,7 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
 
     const sanitizeInput = (value, config) => {
         const type = op.get(config, 'type');
-        const sanitize = op.get(config, 'sanitize', val => val);
+        const sanitize = op.get(config, 'sanitize', (val) => val);
 
         if (type === 'checkbox' || type === 'toggle') {
             return value === true || value === 'true';
@@ -257,7 +254,7 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
         }
     };
 
-    const onError = e => {
+    const onError = (e) => {
         const { error } = e;
 
         errorsRef.current = error;
@@ -323,9 +320,10 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
                         key='app-settings-save-footer'
                         disabled={!canSet}
                         color={Button.ENUMS.COLOR.PRIMARY}
-                        onClick={e => formRef.current.submit(e)}
+                        onClick={(e) => formRef.current.submit(e)}
                         size={Button.ENUMS.SIZE.SM}
-                        type='button'>
+                        type='button'
+                    >
                         {__('Save Settings')}
                     </Button>,
                 ],
@@ -338,14 +336,16 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
                         className='ar-dialog-header-btn'
                         color={Button.ENUMS.COLOR.CLEAR}
                         disabled={!canSet}
-                        onClick={e => formRef.current.submit(e)}
+                        onClick={(e) => formRef.current.submit(e)}
                         size={Button.ENUMS.SIZE.XS}
                         title={__('Save Settings')}
-                        type='button'>
+                        type='button'
+                    >
                         <Icon name='Feather.Check' size={18} />
                     </Button>,
                 ],
-            }}>
+            }}
+        >
             <Zone
                 zone={'settings-editor-all'}
                 groupName={groupName}
@@ -375,7 +375,8 @@ const SettingEditor = ({ settings = {}, classNames = [] }) => {
                         )}`.toLowerCase()]: op.has(settings, 'group'),
                     },
                     ...classNames,
-                )}>
+                )}
+            >
                 <Zone
                     zone={`settings-editor-${groupName}-inputs`}
                     groupName={groupName}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/reactium-hooks.js b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/reactium-hooks.js
index ce802f39..e680d6c2 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/reactium-hooks.js
+++ b/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/reactium-hooks.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import SettingEditor from './index';
 
 Reactium.Component.register('SettingEditor', SettingEditor);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_reactium-style-admin.scss b/reactium_modules/@atomic-reactor/reactium-admin-core/style/_reactium-style-admin.scss
deleted file mode 100644
index eded15d8..00000000
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_reactium-style-admin.scss
+++ /dev/null
@@ -1 +0,0 @@
-@import 'admin';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Attribute/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Attribute/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Attribute/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Attribute/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Breadcrumbs/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Breadcrumbs/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Breadcrumbs/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Breadcrumbs/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/HookComponent/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/JsxComponent/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/Selector/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/Type/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/Type/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/Editor/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContent.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContent.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContent.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContent.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContentRTE.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContentRTE.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContentRTE.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/JsxContentRTE.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/Settings.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/Settings.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/Settings.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/Settings.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Element/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Element/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/AttributeInput.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/AttributeInput.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/AttributeInput.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/AttributeInput.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/Attributes.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/Attributes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/Attributes.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/Attributes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/IconInput.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/IconInput.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/IconInput.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/IconInput.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/ImageInput.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/ImageInput.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/ImageInput.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/ImageInput.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/List.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/List.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/List.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/List.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/ListItem.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/ListItem.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/ListItem.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/ListItem.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/VideoInput.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/VideoInput.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/VideoInput.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/VideoInput.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/_style.scss b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/Panel/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/Panel/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/RTE/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/RTE/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/SaveWidget/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/SaveWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/SaveWidget/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/SaveWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/SidebarWidget/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/SidebarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/SidebarWidget/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/SidebarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/_style.scss b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/_style.scss
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/enums.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/enums.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/index.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/index.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/reactium-hooks.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/sdk.js b/reactium_modules_old/reactium-admin-component-manager/ComponentManager/sdk.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/ComponentManager/sdk.js
rename to reactium_modules_old/reactium-admin-component-manager/ComponentManager/sdk.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/_reactium-style-admin-plugin.scss b/reactium_modules_old/reactium-admin-component-manager/_reactium-style-admin-plugin.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/_reactium-style-admin-plugin.scss
rename to reactium_modules_old/reactium-admin-component-manager/_reactium-style-admin-plugin.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-component-manager/package.json b/reactium_modules_old/reactium-admin-component-manager/package.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-component-manager/package.json
rename to reactium_modules_old/reactium-admin-component-manager/package.json
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ActivityChart.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/ActivityChart.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ActivityChart.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/ActivityChart.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ActivityUpdates.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/ActivityUpdates.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ActivityUpdates.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/ActivityUpdates.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/DashboardWidget/index.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/DashboardWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/DashboardWidget/index.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/DashboardWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/DashboardWidget/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/DashboardWidget/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/DashboardWidget/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/DashboardWidget/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ToolbarWidget/index.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/ToolbarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/ToolbarWidget/index.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/ToolbarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/_style.scss b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/_style.scss
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/actionTypes.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/actionTypes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/actionTypes.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/actionTypes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/actions.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/actions.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/actions.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/actions.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/domain.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/domain.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/enums.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/enums.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/index.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/index.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/reducers.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/reducers.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/ActivityLog/reducers.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/reducers.js
diff --git a/.core/components/Plugable/state.js b/reactium_modules_old/reactium-admin-content/Content/ActivityLog/state.js
similarity index 100%
rename from .core/components/Plugable/state.js
rename to reactium_modules_old/reactium-admin-content/Content/ActivityLog/state.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Breadcrumbs/index.js b/reactium_modules_old/reactium-admin-content/Content/Breadcrumbs/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Breadcrumbs/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Breadcrumbs/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Element/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/Element/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Element/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/Element/index.js
diff --git a/reactium_modules_old/reactium-admin-content/Content/Editor/ElementDialog/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/ElementDialog/index.js
new file mode 100644
index 00000000..bcfeedb5
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/Content/Editor/ElementDialog/index.js
@@ -0,0 +1,119 @@
+import op from 'object-path';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+import Reactium, { useEventHandle, useHookComponent } from 'reactium-core/sdk';
+
+let ElementDialog = props => {
+    const {
+        children,
+        className,
+        editor,
+        elements = [],
+        footer,
+        helpText,
+        pref,
+        onCollapse,
+        onExpand,
+        title,
+    } = props;
+
+    const header = {
+        title,
+        elements,
+    };
+
+    const collapsibleRef = useRef();
+    const dialogRef = useRef();
+
+    const { Alert, Button, Collapsible, Dialog, Icon } = useHookComponent(
+        'ReactiumUI',
+    );
+
+    let HelpComponent;
+    const helpPrefsKey = String(pref).replace('.dialog.', '.help.');
+    const expandedHelp = Reactium.Prefs.get(helpPrefsKey, true);
+    const _onHelpCollapse = () => Reactium.Prefs.set(helpPrefsKey, false);
+    const _onHelpExpand = () => Reactium.Prefs.set(helpPrefsKey, true);
+    const toggleHelp = () => {
+        const { expanded } = dialogRef.current.state;
+
+        if (expanded) {
+            collapsibleRef.current.toggle();
+        } else {
+            collapsibleRef.current.setState({ expanded: true });
+            dialogRef.current.expand();
+        }
+    };
+
+    if (helpText) {
+        header.elements.push(
+            <Button
+                key='help'
+                className='ar-dialog-header-btn'
+                color={Button.ENUMS.COLOR.CLEAR}
+                onClick={toggleHelp}
+                size={Button.ENUMS.SIZE.XS}>
+                <Icon name='Feather.HelpCircle' />
+            </Button>,
+        );
+
+        HelpComponent = useHookComponent(helpText, props => (
+            <div className={editor.cx('help')}>
+                <Alert
+                    {...props}
+                    color={Alert.ENUMS.COLOR.INFO}
+                    icon={<Icon name='Feather.HelpCircle' />}
+                />
+            </div>
+        ));
+    }
+
+    // const _handle = () => ({
+    //     ...props,
+    //     ...dialogRef.current,
+    // });
+
+    // const [handle, setHandle] = useEventHandle(() => _handle);
+
+    // useImperativeHandle(ref, () => handle);
+
+    // useEffect(() => {
+    //     const newHandle = _handle();
+    //     Object.entries(newHandle).forEach(([key, value]) => {
+    //         handle[key] = value;
+    //     });
+    //     setHandle(handle);
+    // }, [dialogRef.current]);
+
+    return (
+        <Dialog
+            ref={dialogRef}
+            pref={pref}
+            footer={footer}
+            header={header}
+            className={className}
+            onCollapse={onCollapse}
+            onExpand={onExpand}
+            {...props}>
+            {helpText && (
+                <Collapsible
+                    ref={collapsibleRef}
+                    expanded={expandedHelp}
+                    onCollapse={_onHelpCollapse}
+                    onExpand={_onHelpExpand}>
+                    <HelpComponent>{helpText}</HelpComponent>
+                </Collapsible>
+            )}
+            {children}
+        </Dialog>
+    );
+};
+
+// ElementDialog = forwardRef(ElementDialog);
+
+export { ElementDialog, ElementDialog as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Loading/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/Loading/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Loading/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/Loading/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Region/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/Region/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Region/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/Region/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Sidebar/_style.scss b/reactium_modules_old/reactium-admin-content/Content/Editor/Sidebar/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Sidebar/_style.scss
rename to reactium_modules_old/reactium-admin-content/Content/Editor/Sidebar/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Sidebar/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/Sidebar/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/Sidebar/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/Sidebar/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/_plugins/SlugInput/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/_plugins/SlugInput/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/_plugins/SlugInput/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/_plugins/SlugInput/index.js
diff --git a/reactium_modules_old/reactium-admin-content/Content/Editor/_style.scss b/reactium_modules_old/reactium-admin-content/Content/Editor/_style.scss
new file mode 100644
index 00000000..a8c7b9b5
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/Content/Editor/_style.scss
@@ -0,0 +1,167 @@
+
+
+.#{$admin-content-ns} {
+    position: relative;
+    overflow: hidden;
+    width: 100%;
+    height: 100vh;
+    padding-top: $height-admin-header;
+    display: flex;
+    flex-wrap: wrap;
+    flex-direction: column;
+    justify-content: stretch;
+    align-items: flex-start;
+    font-weight: normal;
+
+    @include breakpoint(md) {
+        flex-wrap: nowrap;
+        flex-direction: row;
+        align-items: stretch;
+        justify-content: flex-start;
+    }
+
+    &-editor {
+        position: relative;
+        flex-grow: 1;
+        height: 100%;
+        padding-right: 0;
+        overflow-y: auto;
+        overflow-x: hidden;
+
+        @include breakpoint(sm) {
+            padding-right: 50px;
+        }
+
+        @include breakpoint(md) {
+            padding-right: 0;
+            width: auto;
+        }
+
+        &-region {
+            position: relative;
+
+            &:empty {
+                display: none;
+            }
+
+            &-slug {
+                border-bottom: 1px solid darken($color-admin-header-border, 5%);
+                padding-bottom: $padding-admin-content-zone;
+            }
+        }
+    }
+
+    &-element {
+        &:empty {
+            display: none;
+        }
+
+        &:not(:first-child) {
+            margin-top: 25px;
+        }
+
+        &:first-child {
+            .admin-content-rte {
+                margin-top: -25px;
+            }
+        }
+    }
+
+    &-help {
+        @extend .p-xs-20;
+        border-bottom: 1px solid $color-admin-header-border;
+
+        .ar-alert {
+            box-shadow: 0 0 1px 1px $color-admin-header-border;
+
+            .content {
+                padding-bottom: 0;
+                padding-top: 2px;
+            }
+        }
+    }
+
+    &-errors {
+        margin: 0;
+        padding: 0;
+
+        li {
+            line-height: 1.5;
+            list-style: none;
+
+            &:not(:first-child) {
+                margin-top: 10px;
+            }
+        }
+    }
+
+    &-rte {
+        header {
+            display: flex;
+            border-bottom: 1px solid darken($color-admin-header-border, 5%);
+            border-top: 1px solid darken($color-admin-header-border, 5%);
+            margin-left: -24px;
+            margin-right: -24px;
+            padding: 24px 0 24px 24px;
+
+            h2 {
+                color: $color-gray;
+            }
+
+            .icon {
+                width: 30px;
+                margin-right: 16px;
+                color: $color-gray;
+                display: flex;
+                justify-content: center;
+            }
+        }
+
+        .editor {
+            // padding: 40px 0 24px 48px;
+            padding-left: 48px;
+            > .ar-rte {
+                > [data-gramm]:first-child {
+                    padding-top: 40px;
+                    padding-bottom: 40px;
+                }
+
+                p {
+                    line-height: 1.5;
+                    margin: 0;
+                }
+            }
+        }
+
+        .line {
+            border-bottom: 1px solid darken($color-admin-header-border, 5%);
+            margin: 0 -24px 32px -24px;
+        }
+    }
+}
+
+.zone-#{$admin-content-ns}-actions {
+    @include admin-actions-zone;
+    display: none;
+    position: fixed;
+    top: auto;
+    left: 50%;
+    bottom: $padding-admin-content-zone;
+    transform: translateX(-50%);
+}
+
+body.fullscreen {
+    .#{$admin-content-ns} {
+        padding-top: 0;
+    }
+}
+
+.content-save-btn {
+    min-width: 0;
+
+    @include breakpoint(md) {
+        min-width: 145px;
+    }
+}
+
+@import './Sidebar/style';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/index.js b/reactium_modules_old/reactium-admin-content/Content/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Editor/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/HeaderWidget/index.js b/reactium_modules_old/reactium-admin-content/Content/HeaderWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/HeaderWidget/index.js
rename to reactium_modules_old/reactium-admin-content/Content/HeaderWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/Filters/index.js b/reactium_modules_old/reactium-admin-content/Content/List/Filters/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/Filters/index.js
rename to reactium_modules_old/reactium-admin-content/Content/List/Filters/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/ListItem/index.js b/reactium_modules_old/reactium-admin-content/Content/List/ListItem/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/ListItem/index.js
rename to reactium_modules_old/reactium-admin-content/Content/List/ListItem/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/Pagination/index.js b/reactium_modules_old/reactium-admin-content/Content/List/Pagination/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/Pagination/index.js
rename to reactium_modules_old/reactium-admin-content/Content/List/Pagination/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/_style.scss b/reactium_modules_old/reactium-admin-content/Content/List/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/_style.scss
rename to reactium_modules_old/reactium-admin-content/Content/List/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/index.js b/reactium_modules_old/reactium-admin-content/Content/List/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/List/index.js
rename to reactium_modules_old/reactium-admin-content/Content/List/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/QuickEditor/index.js b/reactium_modules_old/reactium-admin-content/Content/QuickEditor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/QuickEditor/index.js
rename to reactium_modules_old/reactium-admin-content/Content/QuickEditor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/List.js b/reactium_modules_old/reactium-admin-content/Content/RTE/List.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/List.js
rename to reactium_modules_old/reactium-admin-content/Content/RTE/List.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/index.js b/reactium_modules_old/reactium-admin-content/Content/RTE/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/index.js
rename to reactium_modules_old/reactium-admin-content/Content/RTE/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/Content/RTE/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/RTE/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/Content/RTE/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Branches.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Branches.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Branches.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Branches.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/DeleteConfirm.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/DeleteConfirm.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/DeleteConfirm.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/DeleteConfirm.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Main.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Main.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Main.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Main.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Revisions.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Revisions.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Revisions.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Revisions.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Settings.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Settings.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/Settings.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/Settings.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/index.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/Scenes/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/Scenes/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/ToolbarWidget/index.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/ToolbarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/ToolbarWidget/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/ToolbarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/MissingComparison.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/MissingComparison.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/MissingComparison.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/MissingComparison.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectBranch.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectBranch.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectBranch.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectBranch.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectCompare.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectCompare.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectCompare.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectCompare.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectRevision.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectRevision.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/SelectRevision.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/SelectRevision.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_helpers/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_helpers/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_style.scss b/reactium_modules_old/reactium-admin-content/Content/Revisions/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/_style.scss
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/enums.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/enums.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/index.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/index.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/route.js b/reactium_modules_old/reactium-admin-content/Content/Revisions/route.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/Revisions/route.js
rename to reactium_modules_old/reactium-admin-content/Content/Revisions/route.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/SidebarWidget/index.js b/reactium_modules_old/reactium-admin-content/Content/SidebarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/SidebarWidget/index.js
rename to reactium_modules_old/reactium-admin-content/Content/SidebarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/_utils/ContentEvent.js b/reactium_modules_old/reactium-admin-content/Content/_utils/ContentEvent.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/_utils/ContentEvent.js
rename to reactium_modules_old/reactium-admin-content/Content/_utils/ContentEvent.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/enums.js b/reactium_modules_old/reactium-admin-content/Content/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/enums.js
rename to reactium_modules_old/reactium-admin-content/Content/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/Content/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/Content/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/Content/sdk/index.js b/reactium_modules_old/reactium-admin-content/Content/sdk/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/Content/sdk/index.js
rename to reactium_modules_old/reactium-admin-content/Content/sdk/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Breadcrumbs/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Breadcrumbs/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Breadcrumbs/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Breadcrumbs/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Capabilities/enums.js b/reactium_modules_old/reactium-admin-content/ContentType/Capabilities/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Capabilities/enums.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Capabilities/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Capabilities/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Capabilities/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Capabilities/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Capabilities/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/FieldType/Dialog/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/Dialog/_style.scss
new file mode 100644
index 00000000..6a27c822
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/Dialog/_style.scss
@@ -0,0 +1,117 @@
+$fieldtype-icon-color: $color-gray !default;
+$fieldtype-name-input-focus: $color-primary !default;
+$fieldtype-drag-focus: $color-gray !default;
+$fieldtype-name-icon-color: $color-text-light !default;
+
+.fieldtype {
+    .ar-dialog {
+        &-content {
+            padding: 20px;
+        }
+    }
+
+    &-draggable {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        position: relative;
+        height: 100%;
+        flex: 1 1 100%;
+
+        &:hover {
+            cursor: pointer;
+        }
+        &:focus {
+            outline: 1px solid $fieldtype-drag-focus;
+            &:before, &:after {
+                display: block;
+                content: ' ';
+                border: 1px solid $fieldtype-drag-focus;
+                border-radius: 1px;
+                width: 24px;
+                height: 1px;
+            }
+            &:after {
+                margin-top: 2px;
+            }
+        }
+    }
+
+    &-header {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        flex-grow: 1;
+
+        &-icon, &-name {
+            display: flex;
+            align-items: center;
+            align-self: stretch;
+        }
+
+        svg {
+            fill: $fieldtype-icon-color;
+            width: 18px;
+            height: 18px;
+        }
+
+        &-icon {
+            flex-grow: 0;
+            flex-shrink: 0;
+            padding: 0;
+            min-width: 45px;
+            max-width: 45px;
+            width: 45px;
+            justify-content: center;
+            border-right: 1px solid $ar-dialog-color-border;
+        }
+
+        &-name {
+            flex-grow: 1;
+            flex-shrink: 1;
+
+            input {
+                border: 1px solid transparent;
+                background-color: transparent;
+                padding-left: 8px;
+                padding-right: 20px;
+                min-width: 1px;
+                width: 100%;
+            }
+
+            &.error {
+                input {
+                    border: 1px solid $input-color-error;
+                }
+            }
+
+            &-icon {
+                &, &:hover, &:focus {
+                    width: 20px;
+                    padding: 0;
+                    background: none;
+                }
+            }
+
+            &-input {
+                padding: 8px;
+                &:hover:not(:focus) {
+                    cursor: pointer;
+                }
+
+                &:focus {
+                    border-bottom: 1px solid $fieldtype-name-input-focus;
+                    outline: none;
+                    &.disabled {
+                        border: none;
+                    }
+                }
+
+                &.disabled:hover {
+                    cursor: not-allowed;
+                }
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/Dialog/index.js b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/Dialog/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/Dialog/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/FieldType/Dialog/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/FieldType/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/_style.scss
new file mode 100644
index 00000000..4599ce9b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/_style.scss
@@ -0,0 +1,9 @@
+.field-drop {
+    .webform {
+        margin-bottom: 20px;
+
+        &:last-child {
+            margin-bottom: 0;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/index.js b/reactium_modules_old/reactium-admin-content/ContentType/FieldType/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/FieldType/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/FieldType/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Fields/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Fields/_style.scss
new file mode 100644
index 00000000..64b6f021
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Fields/_style.scss
@@ -0,0 +1,43 @@
+// container for fields
+.types-fields {
+    padding: 20px 90px 20px 20px;
+    min-height: 100px;
+
+    &:not(:first-of-type) {
+        padding-top: 0;
+    }
+
+
+    @include breakpoint(sm-down) {
+        padding-left: 20px;
+    }
+
+    .field-drop {
+        position: relative;
+        border: 2px dashed $color-grey;
+        padding: 20px;
+
+        &:hover {
+            cursor: pointer;
+            border-color: $color-gray;
+        }
+
+        &.active {
+            border-color: rgba($color-primary, .5);
+        }
+    }
+
+    .region-label {
+        margin-bottom: 20px;
+        &:first-child {
+            &:last-child {
+                margin-bottom: 0;
+            }
+        }
+    }
+
+    .empty-message {
+        padding-left: 4px;
+        font-size: 12px;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Fields/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Fields/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Fields/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Fields/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/HeaderWidget/index.js b/reactium_modules_old/reactium-admin-content/ContentType/HeaderWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/HeaderWidget/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/HeaderWidget/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/IconPicker/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/IconPicker/_style.scss
new file mode 100644
index 00000000..04977a01
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/IconPicker/_style.scss
@@ -0,0 +1,18 @@
+$color-type-icon-picker-bg: $color-light !default;
+.type-icon {
+    position: relative;
+    z-index: map-get($z-indexes, normal);
+    > button {
+        height: 100%;
+    }
+
+    &-picker {
+        background: $color-type-icon-picker-bg;
+        position: absolute;
+        top: 1px;
+        left: 52px;
+        z-index: map-get($z-indexes, popup);
+        width: 300px;
+        box-shadow: 0 0 4px 1px rgba(0,0,0,.125);
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/IconPicker/index.js b/reactium_modules_old/reactium-admin-content/ContentType/IconPicker/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/IconPicker/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/IconPicker/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/List/IconImg.js b/reactium_modules_old/reactium-admin-content/ContentType/List/IconImg.js
new file mode 100644
index 00000000..f870fdaa
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/List/IconImg.js
@@ -0,0 +1,1816 @@
+export default ({
+    width = 100,
+    height = 100,
+    className,
+    color = '#4f82ba',
+    title,
+}) => {
+    return (
+        <svg
+            className={className}
+            id='e5ba4dba-d7c6-4394-adcb-ad50fd27ea2d'
+            data-name='Layer 1'
+            xmlns='http://www.w3.org/2000/svg'
+            width={width}
+            height={height}
+            viewBox='0 0 1009.54 717.96'>
+            <defs>
+                <linearGradient
+                    id='aaf27687-ce05-436a-9809-c99a240b7c1e'
+                    x1='554.8'
+                    y1='808.98'
+                    x2='554.8'
+                    y2='548.41'
+                    gradientUnits='userSpaceOnUse'>
+                    <stop offset='0' stopColor='gray' stopOpacity='0.25' />
+                    <stop offset='0.54' stopColor='gray' stopOpacity='0.12' />
+                    <stop offset='1' stopColor='gray' stopOpacity='0.1' />
+                </linearGradient>
+            </defs>
+            {title && <title>{title}</title>}
+            <path
+                d='M681.78,202.42c-64.72-2.25-126.36-23.14-185.22-46S379.4,108.23,316.23,96.12C275.6,88.33,229.13,87.23,196.4,109c-31.51,21-41.69,57.15-47.16,90.73-4.12,25.26-6.54,51.84,4.74,75.49,7.84,16.42,21.74,30.22,31.36,45.95,33.47,54.72,9.81,122.2-26.45,175.63-17,25.07-36.75,49-49.88,75.66s-19.2,57.25-7.71,84.47c11.38,27,38.51,47.24,67.9,61.49,59.69,28.94,130,37.23,198.61,41.92,151.83,10.39,304.46,5.89,456.69,1.39,56.34-1.67,112.92-3.36,168.34-12.07,30.78-4.84,62.55-12.52,84.9-31,28.36-23.53,35.39-63.38,16.38-92.88-31.88-49.49-120-61.78-142.31-114.9-12.26-29.23.33-61.8,18.16-88.91,38.24-58.16,102.33-109.19,105.7-175.67,2.32-45.67-28.49-91.4-76.13-113-49.93-22.65-119.18-19.8-156,17.69C805.59,189.55,738.93,204.4,681.78,202.42Z'
+                transform='translate(-95.23 -91.02)'
+                fill={color}
+                opacity='0.1'
+            />
+            <g opacity='0.2'>
+                <path
+                    d='M344.19,718.29a24.22,24.22,0,0,1,1.5,3.57q-12,4.53-24,9.5c-.17-.29-.34-.6-.5-.91A20.44,20.44,0,0,1,318.7,720c.21-4.69,2.29-8.73,6-10.68s8.21-1.41,12.2,1A20.64,20.64,0,0,1,344.19,718.29Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='322.94'
+                    cy='705.95'
+                    rx='13.02'
+                    ry='17.05'
+                    transform='translate(-387.52 141.49) rotate(-27.84)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='313.21'
+                    cy='687.53'
+                    rx='13.02'
+                    ry='17.05'
+                    transform='translate(-380.04 134.81) rotate(-27.84)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='303.48'
+                    cy='669.1'
+                    rx='13.02'
+                    ry='17.05'
+                    transform='translate(-372.56 128.14) rotate(-27.84)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='293.75'
+                    cy='650.68'
+                    rx='13.02'
+                    ry='17.05'
+                    transform='translate(-365.09 121.46) rotate(-27.84)'
+                    fill='#3f3d56'
+                />
+                <path
+                    d='M184.07,547.38a63.91,63.91,0,0,1-7.62-4l27.63-21-32.59,17.53a62.46,62.46,0,0,1-24.13-43.15l55.92-.41L147.08,488a62.38,62.38,0,1,1,123.69,13.62,62.05,62.05,0,0,1,11.6,6.74l-28.49,41.14,34.45-36.17a62.46,62.46,0,0,1,18.46,56.49,62.38,62.38,0,1,1-86.7,45.78,62.38,62.38,0,0,1-36-68.19Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M300.58,529.46a62.12,62.12,0,0,1,6.21,40.33,62.38,62.38,0,1,1-86.7,45.78C207.74,610.09,297.31,523.27,300.58,529.46Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+            </g>
+            <g opacity='0.2'>
+                <path
+                    d='M786.77,587.77a31.77,31.77,0,0,0-1.38,5.2q17.42,3.91,34.85,8.49c.18-.43.36-.89.53-1.35a28.54,28.54,0,0,0,1.39-14.87c-1.19-6.4-4.82-11.56-10.31-13.55s-11.56-.37-16.58,3.76A28.59,28.59,0,0,0,786.77,587.77Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='813.65'
+                    cy='566.75'
+                    rx='23.67'
+                    ry='18.08'
+                    transform='translate(-92.05 1047.02) rotate(-70.04)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='823.53'
+                    cy='539.55'
+                    rx='23.67'
+                    ry='18.08'
+                    transform='matrix(0.34, -0.94, 0.94, 0.34, -59.98, 1038.39)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='833.41'
+                    cy='512.36'
+                    rx='23.67'
+                    ry='18.08'
+                    transform='translate(-27.92 1029.77) rotate(-70.04)'
+                    fill='#3f3d56'
+                />
+                <ellipse
+                    cx='843.28'
+                    cy='485.17'
+                    rx='23.67'
+                    ry='18.08'
+                    transform='translate(4.14 1021.14) rotate(-70.04)'
+                    fill='#3f3d56'
+                />
+                <path
+                    d='M974.49,322.19a86.19,86.19,0,0,0,9.72-7l-42-23.55,48.17,17.9a86.75,86.75,0,0,0,25-63.94l-77,10.08,75.71-22.22a86.62,86.62,0,1,0-167.55,42.27,87,87,0,0,0-14.67,11.47l47,51.17L824.6,295.16A86.66,86.66,0,0,0,810,376.38a86.61,86.61,0,1,0,128,46.48,86.64,86.64,0,0,0,36.56-100.67Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M810.82,319.71a86.28,86.28,0,0,0-.86,56.67,86.61,86.61,0,1,0,128,46.48C953.87,413,814.14,310.58,810.82,319.71Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+            </g>
+            <ellipse
+                cx='180.47'
+                cy='642.47'
+                rx='67.3'
+                ry='12.94'
+                fill={color}
+            />
+            <ellipse
+                cx='179.34'
+                cy='636.97'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='624.43'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='611.89'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='599.36'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='586.82'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='574.28'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='179.34'
+                cy='561.75'
+                rx='7.84'
+                ry='10.26'
+                fill='#3f3d56'
+            />
+            <path
+                d='M303.91,567a36.86,36.86,0,0,0,2.91-4.3l-20.58-3.38,22.26.17a37.57,37.57,0,0,0,.72-29.74l-29.87,15.49L306.9,525a37.54,37.54,0,1,0-62,42,37.45,37.45,0,0,0-4.29,6.84l26.73,13.89-28.5-9.57a37.55,37.55,0,0,0,6.06,35.25,37.53,37.53,0,1,0,59,0,37.54,37.54,0,0,0,0-46.41Z'
+                transform='translate(-95.23 -91.02)'
+                fill={color}
+            />
+            <path
+                d='M236.87,590.17a37.34,37.34,0,0,0,8,23.21,37.53,37.53,0,1,0,59,0C308.94,607,236.87,586,236.87,590.17Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <rect
+                x='268.41'
+                y='178.37'
+                width='483.61'
+                height='104.35'
+                rx='7.42'
+                fill='#35323e'
+            />
+            <path
+                d='M404.57,143.17s6.87,186.83-5.31,208.7H811s-17.49-143.71,0-208.7Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#fff'
+            />
+            <path
+                d='M404.57,143.17s6.87,186.83-5.31,208.7H811s-17.49-143.71,0-208.7Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.03'
+            />
+            <rect
+                x='351.51'
+                y='252.89'
+                width='301.79'
+                height='37.49'
+                fill='#35323e'
+            />
+            <path
+                d='M882.9,785.21H323.54a29.82,29.82,0,0,1-29.64-33.12L305.34,649q1.13-10.28,1.63-20.61l2.15-69.9q.74-23.69,3.2-47.26,1.28-12.22,3-24.39l14.71-102.48a54,54,0,0,1,53.4-46.2h22.34a52.5,52.5,0,0,1,31.41,10.57c23.14,17.27,88.88,29.73,166.38,29.73S746.81,366,770,348.69a52.5,52.5,0,0,1,31.41-10.57H837.6a32.35,32.35,0,0,1,31.86,26.74l19.75,112q3,17.08,5.09,34.3,3.48,28.63,4.37,57.51l2,64.95a365.4,365.4,0,0,0,3.51,40.47l10.61,74.31A32.21,32.21,0,0,1,882.9,785.21Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#464353'
+            />
+            <rect
+                x='241.55'
+                y='434.88'
+                width='534.22'
+                height='229.63'
+                rx='19.96'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='275.91'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill={color}
+            />
+            <ellipse
+                cx='275.91'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='275.91'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill={color}
+            />
+            <ellipse
+                cx='294.03'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='294.03'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='294.03'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='304.03'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='304.03'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='304.03'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='265.29'
+                cy='556.41'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='265.29'
+                cy='556.41'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='265.29'
+                cy='553.6'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='322.77'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='322.77'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='322.77'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='271.54'
+                cy='597.34'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='271.54'
+                cy='597.34'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='271.54'
+                cy='594.52'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='364.95'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='364.95'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='364.95'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='409.62'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='409.62'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='409.62'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='450.86'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='450.86'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='450.86'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='496.47'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='496.47'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='496.47'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='537.71'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='537.71'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='537.71'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='578.63'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='578.63'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='578.63'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='623'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse cx='623' cy='595.77' rx='15.31' ry='12.81' opacity='0.1' />
+            <ellipse
+                cx='623'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='664.55'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='664.55'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='664.55'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='710.47'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='710.47'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='710.47'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='757.65'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='757.65'
+                cy='595.77'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='757.65'
+                cy='592.96'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='346.52'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='346.52'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='346.52'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse cx='389' cy='551.1' rx='15.31' ry='12.81' fill='#35323e' />
+            <ellipse cx='389' cy='551.1' rx='15.31' ry='12.81' opacity='0.1' />
+            <ellipse
+                cx='389'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='432.74'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='432.74'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='432.74'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='474.6'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='474.6'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='474.6'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='517.4'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='517.4'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='517.4'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='558.33'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='558.33'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='558.33'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='602.69'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='602.69'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='602.69'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='644.87'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='644.87'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='644.87'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='687.98'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='687.98'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='687.98'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='731.09'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='731.09'
+                cy='551.1'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='731.09'
+                cy='548.29'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='337.14'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='337.14'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='337.14'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='380.26'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='380.26'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='380.26'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='421.81'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='421.81'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='421.81'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='463.36'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='463.36'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='463.36'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='505.22'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='505.22'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='505.22'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='546.46'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='546.46'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='546.46'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='590.19'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='590.19'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='590.19'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='631.43'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='631.43'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='631.43'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='675.48'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='675.48'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='675.48'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='718.59'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='718.59'
+                cy='506.42'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='718.59'
+                cy='503.61'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='315.9'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='315.9'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='315.9'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='358.39'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='358.39'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='358.39'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='399.31'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='399.31'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='399.31'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='441.49'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='441.49'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='441.49'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='483.04'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='483.04'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='483.04'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='525.53'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='525.53'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='525.53'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='567.08'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='567.08'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='567.08'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='609.25'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='609.25'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='609.25'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='652.68'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='652.68'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='652.68'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='695.16'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='695.16'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='695.16'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill='#35323e'
+            />
+            <ellipse
+                cx='736.71'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                fill={color}
+            />
+            <ellipse
+                cx='736.71'
+                cy='461.74'
+                rx='15.31'
+                ry='12.81'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='736.71'
+                cy='458.93'
+                rx='15.31'
+                ry='12.81'
+                fill={color}
+            />
+            <rect
+                x='275.91'
+                y='625.77'
+                width='467.68'
+                height='24.68'
+                rx='9.07'
+                fill='#35323e'
+            />
+            <rect
+                x='275.91'
+                y='625.77'
+                width='467.68'
+                height='24.68'
+                rx='9.07'
+                opacity='0.1'
+            />
+            <rect
+                x='275.91'
+                y='623.89'
+                width='467.68'
+                height='24.68'
+                rx='9.07'
+                fill='#35323e'
+            />
+            <path
+                d='M775.09,422.48c0,26.4-83.56,54.67-177.77,54.67s-164-30.46-164-56.86,69.81-38.74,164-38.74S775.09,396.08,775.09,422.48Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <ellipse
+                cx='762.64'
+                cy='228.52'
+                rx='10.31'
+                ry='25.46'
+                fill='#464353'
+            />
+            <ellipse
+                cx='257.79'
+                cy='228.52'
+                rx='10.31'
+                ry='25.46'
+                fill='#464353'
+            />
+            <rect
+                x='265.29'
+                y='222.43'
+                width='497.35'
+                height='7.5'
+                opacity='0.1'
+            />
+            <rect
+                x='265.29'
+                y='221.18'
+                width='497.35'
+                height='7.5'
+                fill='#464353'
+            />
+            <path
+                d='M617,321.57c-4.07-1.25-11.56,23.43-11.56,23.43h22.8S621.07,322.82,617,321.57Zm-.32,3.12a2.19,2.19,0,1,1-2.18,2.19A2.19,2.19,0,0,1,616.69,324.69Zm.26,7.06c2.67.65,7.4,12.31,7.4,12.31h-15S614.28,331.09,617,331.75Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#464353'
+            />
+            <path
+                d='M894.3,511.19h-582q1.28-12.22,3-24.39l14.71-102.48a54,54,0,0,1,53.4-46.2h22.34a52.5,52.5,0,0,1,31.41,10.57c23.14,17.27,88.88,29.73,166.38,29.73S746.81,366,770,348.69a52.5,52.5,0,0,1,31.41-10.57H837.6a32.35,32.35,0,0,1,31.86,26.74l19.75,112Q892.21,494,894.3,511.19Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#fff'
+                opacity='0.03'
+            />
+            <g id='f7c3d2ec-a0cd-4215-8d90-993b7331bb50' data-name='woman'>
+                <path
+                    d='M585.71,639s-11.47-21-9.53-24.38a45.62,45.62,0,0,0,3.35-8.35s4.24-2.9,4.24-4.1,3.35-3.92,5.12-5.11.88-6.82,0-7.5a15.13,15.13,0,0,1-2.28-3.07s1.22-3.41,0-4.43.18-2,0-3.07a43.5,43.5,0,0,1,0-4.77,7.72,7.72,0,0,0-4.51-3.28l-.13-.54-.76-3.18s3.66-7-2.28-10.72a11.63,11.63,0,0,0-1.32-.7s0-.17,0-.46a29.81,29.81,0,0,0-.87-5.39c-.31-1-.71-1.65-1.24-1.5a.82.82,0,0,0-.33.19,3.63,3.63,0,0,0-.63.75h0a.13.13,0,0,1,0,0h0a12.78,12.78,0,0,0-1.4,3.9,22.51,22.51,0,0,0-.4,2.45h0a13.24,13.24,0,0,0-.68,1.52c-.72,1.87-1.57,5.12,0,7.52,1.31,2,3.06,4.84,4.34,6.88l0,.07.08.12-.13.09,0,.31.11,1.72,1,14.85a6,6,0,0,0-.9-.19,7.39,7.39,0,0,0-1.32-.09c-.86-3.38-3.23-6.54-3.65-10.07a7.55,7.55,0,0,1-.07-1.06c0-2.23.59-4.46.54-6.68a10.11,10.11,0,0,0,0-1.23h0l0-.34a10,10,0,0,0-5.46-7.6c-1-.51-2.13-.85-3.13-1.41-2.3-1.29-3.77-3.62-5.86-5.21a6.45,6.45,0,0,0-5.61-1.22,25.62,25.62,0,0,0-2.74.57h0a24.63,24.63,0,0,0-6.25,2.59c-.26.16-.53.32-.78.51a3.49,3.49,0,0,0-1.26,1.47,3.9,3.9,0,0,0-.2,1.59c0,.39,0,.79,0,1.17-.12,6.52-7.15,11.59-7.73,18,0,.16,0,.31,0,.46v.7h0v.51c.1,2.8,1.55,5.4,1.82,8.19,0,.25,0,.49,0,.74a12.4,12.4,0,0,1-.72,3.75,10.77,10.77,0,0,0-2.54,1c-2.13,1.37-6,3.75-7.4,8.29a12.05,12.05,0,0,0-.54,3.64,76.06,76.06,0,0,1-1.19,13,25.59,25.59,0,0,1-.75,3.2.72.72,0,0,0,0,.31l-.84,11-.16,1.94-.21,2.76s.06.17.15.45.23.76.34,1.27a6.93,6.93,0,0,1,.11,2.86,2,2,0,0,1-.6,1l-.07.08a8.47,8.47,0,0,0-.64,2.8c-.08.58-.14,1.21-.21,1.91-.41,4.34-.67,10.85-.82,16.23s-.2,9.5-.2,9.5a10.75,10.75,0,0,0,2.19,1.08,4.7,4.7,0,0,0-.17.45,20.94,20.94,0,0,0-1.33,5.6c-.35,4,.77,8.47,6.37,10.77a8.9,8.9,0,0,0,1.1.37,3.47,3.47,0,0,0,2.79-.17c0,.24,0,.47,0,.71.06,1,.11,1.9.13,2.67.18,4.77,1.36,13.12,1.36,13.12s.41,3.41.05,4.44,0,5.11,0,5.11,1.24,2,0,3.07-1.58,6.14-1.23,6.82a.45.45,0,0,0,0,.08c.27,1.69-1.26,26.86-1.26,26.86s-1.44,3.85-2.58,7.85-2,7.93-.93,8.68a8.5,8.5,0,0,0,3.23.87c0,.17,0,.34,0,.51a14.87,14.87,0,0,1-.71,4.23c-.49.69-1,6.07-1.25,9,0,.11,0,.22,0,.32a29.33,29.33,0,0,0-1.32,3.82s-3.9,9.77-2.58,12.33a2,2,0,0,0,.49.6h0a.74.74,0,0,0,.13.12c1.88,1.5,6.59,1.82,8.3,1.89l-.06,2.42V809h2.23v-.06c0-.31.05-1.71.12-3.59,0-.33,0-.68,0-1s0-.57,0-.86a15,15,0,0,0,1-5.45,23.73,23.73,0,0,1,.86-6.32,17,17,0,0,1,1.13-3.08,14.05,14.05,0,0,0-.28-6.27,4.35,4.35,0,0,0-.8-1.41,2.26,2.26,0,0,0,0-.26v-.56a23.05,23.05,0,0,1,.52-5.23.19.19,0,0,1,0-.08c0-.15.06-.28.1-.42l0-.09.72,0c2.21.07,3.84.07,3.84.07s1.77-9,1.59-13c0-.17,0-.35,0-.53a50.65,50.65,0,0,1,1.07-9.19l1.41-13.8a7.39,7.39,0,0,1,0-4.1c.44-1,1.34-3,2-4.35.29-.63.53-1.12.63-1.33l0-.11a3,3,0,0,1-.63-.32h0c-.58-.39-1.09-1.14.63-2.24,2.65-1.71,1.77-6,1.77-6a3.07,3.07,0,0,1,.14-2.9c.92-1.36,0-6.48,0-6.48a21.12,21.12,0,0,0,1.81-4.26c.66-2,2.32-12,3.1-16.83.26-1.58.42-2.6.42-2.6l0,.25,0,.27h0l.22,2.27,0,.3.4,4.3s.82,11.3.31,15.73a.19.19,0,0,1,0,.08,4.88,4.88,0,0,1-.3,1.34c-.93,2.13-.76,10.56-.71,12.42,0,.15,0,.28,0,.38a6.58,6.58,0,0,0-.5,2.88h0a1.9,1.9,0,0,0,.32.86,2.16,2.16,0,0,1,.32,1.33v0c0,.19,0,.39,0,.59a11.35,11.35,0,0,1-.62,2.31s-1,2.49-.59,3.79h0a1.34,1.34,0,0,0,.24.46,1.13,1.13,0,0,1,.13.49v0c.33,2.75-.52,14.88-1,21.51-.2,2.62-.35,4.39-.35,4.39l-1.4,14.49.14.09c.16.12.46.31.86.55v0l-.06.44c-.2,1.4-.47,3-.76,4.26a2.68,2.68,0,0,0-.07.27,3.92,3.92,0,0,0-1.5.6c-3,5.28-1.66,9.46,0,10.68a4.25,4.25,0,0,1,1,2.49l.41,5.26v.61a1.56,1.56,0,0,0,.08.48l.13,1.59.17,2.22h1.35V803.8h.08c2.14.08,5.58.17,7.09.05h0l.4,0a.77.77,0,0,0,.24-.07c.79-.38,2.78-6,1-7.28s-2.18-4.88-2.18-4.88c-.16-.48-.31-.93-.47-1.36a2.44,2.44,0,0,1,0-.27,22.49,22.49,0,0,1,.21-4.68,37.08,37.08,0,0,0,.47-5.59c0-.16,0-.31,0-.47v-.05a6,6,0,0,0,.91-.29l.07,0a6.46,6.46,0,0,0,1.52-.9l4.95-22.16.52-2.58,3-14.65s-1.05-5.11,0-6c.39-.31.5-1.62.47-3.16,0-2.68-.47-6-.47-6s1.41-2.21,2.12-3.58,0-4.94,0-4.94l1.41-8.18a77.27,77.27,0,0,1,5.48-17.91c2.86-6,1-22.27-.83-30.93l-.15-.65a.08.08,0,0,0,0,0l3.09-1.5.43-.2c1.45-.68,3-1.38,4.36-2l.09,0a32.13,32.13,0,0,1,3-1.13,4.36,4.36,0,0,1,.93-.19C593.13,651.94,585.71,639,585.71,639Zm-55.22,27.74.73,0c-.09.16-.17.32-.25.49a2.59,2.59,0,0,0-.14.29,16.48,16.48,0,0,0-.72,1.69c.08-.61.18-1.27.29-2Zm-2,10.64s0,0,0-.06,0-.13-.07-.19l-.12-.39c.25-.08.51-.16.77-.26l0,0s0,.09,0,.14-.05.38-.07.57h0s0,.05,0,.08,0,.3,0,.45-.08.57-.11.85l-.24-.76C528.59,677.63,528.55,677.49,528.5,677.36Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='url(#aaf27687-ce05-436a-9809-c99a240b7c1e)'
+                />
+                <path
+                    d='M581.48,573.56l-4.4,1.57-1.6-2.66c-1.23-2-2.93-4.83-4.18-6.86-2.21-3.57.68-9,.68-9s.51-5.44,2.38-7.14,2.38,7.14,2.38,7.14c7.47,3.39,3.47,11.38,3.47,11.38l.72,3.17Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#be6f72'
+                />
+                <path
+                    d='M581.48,573.56l-4.4,1.57-1.6-2.66,0-.23a7.7,7.7,0,0,1,5.47-1.08Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M574.36,591.44l2.21-1.87-1.11-16.82A7,7,0,0,1,585.4,575a43.31,43.31,0,0,0,0,4.76c.17,1-1.19,2,0,3s0,4.42,0,4.42a15.34,15.34,0,0,0,2.19,3.06c.85.68,1.7,6.29,0,7.48s-4.93,3.91-4.93,5.1-4.07,4.07-4.07,4.07L575,602.15Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M526.61,693.57c-8.24-3.49-6.41-12-4.86-16.32a24.48,24.48,0,0,1,1.09-2.54l4.62-2.81s.94,2.41,1.95,5.64C531.75,685,534.44,696.89,526.61,693.57Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#be6f72'
+                />
+                <path
+                    d='M537.93,771.44a13.84,13.84,0,0,0-1.23,3.44,24.47,24.47,0,0,0-.51,5.85,22.3,22.3,0,0,0,.15,2.25l-9.18,6.31s.05-.74.14-1.83c.24-2.89.73-8.25,1.2-8.94a15,15,0,0,0,.69-4.22c.14-1.75.2-3.37.2-3.37S540.41,766.79,537.93,771.44Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#be6f72'
+                />
+                <path
+                    d='M559.59,776s0,1.75-.06,3.8a39,39,0,0,1-.44,5.57,22.25,22.25,0,0,0-.21,4.66c.06,2,.21,3.87.21,3.87s-9.37-8.85-8.42-9.55a4.43,4.43,0,0,0,.75-2c.28-1.24.54-2.86.73-4.25.23-1.65.37-3,.37-3Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#be6f72'
+                />
+                <path
+                    d='M537.93,771.44a13.84,13.84,0,0,0-1.23,3.44,74.05,74.05,0,0,1-7.51-.58c.14-1.75.2-3.37.2-3.37S540.41,766.79,537.93,771.44Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M559.59,776s0,1.75-.06,3.8c-2.92.74-5.92-.75-7.38-1.65.23-1.65.37-3,.37-3Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M578.78,689.15A79.17,79.17,0,0,0,573.51,707l-1.36,8.15s.68,3.57,0,4.93-2,3.57-2,3.57,1,8.33,0,9.18,0,5.94,0,5.94l-3.4,17.17L562,778c-4.59,3.74-10.69-1-10.69-1l1.35-14.45s2-25.32,1.19-26.34.34-4.24.34-4.24,1.19-3.06.34-4.25.17-3.74.17-3.74-.34-10.37.68-12.75,0-17.1,0-17.1l-.43-4.58-.23-2.54,0-.25-.41,2.6c-.75,4.79-2.35,14.73-3,16.78a21.15,21.15,0,0,1-1.75,4.24s.89,5.1,0,6.46a3.16,3.16,0,0,0-.13,2.89s.85,4.25-1.7,6,0,2.55,0,2.55-1.87,4.08-2.55,5.78a7.49,7.49,0,0,0,0,4.07l-1.36,13.77a50,50,0,0,0-1,9.69c.17,3.9-1.53,12.91-1.53,12.91s-13.08,0-15.1-1.53,3.38-16.48,3.38-16.48,1.53-26.17,1.19-26.85,0-5.78,1.19-6.8,0-3.06,0-3.06-.34-4.08,0-5.1a18.45,18.45,0,0,0-.06-4.42s-1.13-8.32-1.3-13.08-1-15.47-1-15.47.88-6.61,1-9.77a11.35,11.35,0,0,1,1.21-4,36.59,36.59,0,0,1,2.52-4.45s40.28-11.89,42-10.7c.44.31,1.1,2.43,1.74,5.54C579.77,667,581.53,683.15,578.78,689.15Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M578.78,689.15A79.17,79.17,0,0,0,573.51,707l-1.36,8.15s.68,3.57,0,4.93-2,3.57-2,3.57,1,8.33,0,9.18,0,5.94,0,5.94l-3.4,17.17L562,778c-4.59,3.74-10.69-1-10.69-1l1.35-14.45s2-25.32,1.19-26.34.34-4.24.34-4.24,1.19-3.06.34-4.25.17-3.74.17-3.74-.34-10.37.68-12.75,0-17.1,0-17.1l-.43-4.58-.23-2.54,0-.25-.41,2.6c-.75,4.79-2.35,14.73-3,16.78a21.15,21.15,0,0,1-1.75,4.24s.89,5.1,0,6.46a3.16,3.16,0,0,0-.13,2.89s.85,4.25-1.7,6,0,2.55,0,2.55-1.87,4.08-2.55,5.78a7.49,7.49,0,0,0,0,4.07l-1.36,13.77a50,50,0,0,0-1,9.69c.17,3.9-1.53,12.91-1.53,12.91s-13.08,0-15.1-1.53,3.38-16.48,3.38-16.48,1.53-26.17,1.19-26.85,0-5.78,1.19-6.8,0-3.06,0-3.06-.34-4.08,0-5.1a18.45,18.45,0,0,0-.06-4.42s-1.13-8.32-1.3-13.08-1-15.47-1-15.47.88-6.61,1-9.77a11.35,11.35,0,0,1,1.21-4,36.59,36.59,0,0,1,2.52-4.45s40.28-11.89,42-10.7c.44.31,1.1,2.43,1.74,5.54C579.77,667,581.53,683.15,578.78,689.15Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.15'
+                />
+                <circle cx='458.74' cy='482.55' r='11.73' fill='#a1616a' />
+                <path
+                    d='M578,658.33c-1.35.69-2.25,1.17-2.25,1.17s-19,9-24.46,8.5c-4.19-.4-14.88-.18-19.53-.06a36.59,36.59,0,0,1,2.52-4.45s40.28-11.89,42-10.7C576.67,653.1,577.33,655.22,578,658.33Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M545.81,592.29s-10.88,1.7-13.42,3.4-7.65,4.93-7.65,11.89a67.66,67.66,0,0,1-1.87,16.15c-.68,2,10.71,18.52,10.71,18.52l-4.08,25s16.33-.51,21.76,0,24.46-8.5,24.46-8.5,11.21-5.94,13.59-6.11-4.76-13.09-4.76-13.09-11-20.9-9.17-24.3a46.46,46.46,0,0,0,3.23-8.33l-2-17.33a6.67,6.67,0,0,0-5.61.85c-2.55,1.87-11.22.85-11.22.85Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M527.37,622.54l-4.25,1.19-1.18,16s1.52,4.25,0,5.61-1.87,30.42-1.87,30.42a11.09,11.09,0,0,0,10.7.85s-.85-3.23,1.7-15S535,644,535,644s0-14.61,1.19-17,0-8.33,0-8.33-2.38-3.23-2.21-4.42S527.37,622.54,527.37,622.54Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M529.41,677.54a10.83,10.83,0,0,1-7.66-.29,24.48,24.48,0,0,1,1.09-2.54l4.62-2.81S528.4,674.31,529.41,677.54Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M527.12,622.54l-4.25,1.19-1.19,16s1.53,4.25,0,5.61-1.87,30.42-1.87,30.42a11.11,11.11,0,0,0,10.71.85s-.85-3.23,1.7-15S534.76,644,534.76,644s0-14.61,1.19-17,0-8.33,0-8.33-2.37-3.23-2.2-4.42S527.12,622.54,527.12,622.54Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill={color}
+                />
+                <path
+                    d='M570.62,625.09s-2.21,19-8.67,22.6C562,647.69,576.4,643.61,570.62,625.09Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M538.16,626.79s8,3.91,6.12,6.62S538.16,626.79,538.16,626.79Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M538.16,634.6s5.1,5.27,4.08,7.14S538.16,634.6,538.16,634.6Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M579.29,590.93s2,3.4,2.18,5.61S579.29,590.93,579.29,590.93Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M579.29,586.34s1-.85,3.56,0S579.29,586.34,579.29,586.34Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M569.47,685.67a23.57,23.57,0,0,1-12.42-1.59l-2.15,5.48-.23-2.54c.35-2.13,1-4.41,2.38-5A20.57,20.57,0,0,0,569.47,685.67Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M534.62,692.81S545.07,695,548,694.59Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M535.7,695.55s4.46-.19,6.69.7Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M536.21,697.39a39,39,0,0,0,6.18.83Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M536,720.78c.2-.13,8.93-2.16,10-.7Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M536,723.46s7.59-.89,7.78,0S536,723.46,536,723.46Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M536,725.88s8.1-1.66,9-1.27S536,725.88,536,725.88Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M536.34,783l-9.18,6.31s.05-.74.14-1.83a25.17,25.17,0,0,1,4.7-7.67c2.07-.53,3.38,0,4.19.94A22.3,22.3,0,0,0,536.34,783Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M537.23,788.65a22.79,22.79,0,0,0-1.91,9.37,14.45,14.45,0,0,1-2,7.55,7.27,7.27,0,0,1-.64.92s-6.38,0-8.61-1.9a2.17,2.17,0,0,1-.59-.71c-1.28-2.55,2.48-12.3,2.48-12.3a27.07,27.07,0,0,1,6-11.53C539.14,778.2,537.23,788.65,537.23,788.65Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#35323e'
+                />
+                <path
+                    d='M533.37,805.57a7.27,7.27,0,0,1-.64.92s-6.38,0-8.61-1.9c1.1-3.63,4.6-14.62,6.24-12.75S533,802,533.37,805.57Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M532.49,792.52,532.05,809h2.14s.34-14.44,1.3-16.46S532.49,792.52,532.49,792.52Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#35323e'
+                />
+                <path
+                    d='M559.09,793.87s-9.37-8.85-8.42-9.55a4.43,4.43,0,0,0,.75-2c1.8-.32,4.88.44,7.46,7.63C558.94,792,559.09,793.87,559.09,793.87Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M560.49,803.75a1.3,1.3,0,0,1-.23.07,65.22,65.22,0,0,1-7.43,0,1.61,1.61,0,0,1-1.56-1.6c0-.61,0-1.36,0-2.16-.11-2.51-.42-5.5-1.31-6.18-1.59-1.21-2.86-5.38,0-10.64,0,0,5.48-4.18,9.43,8.39,0,0,.38,3.59,2.1,4.87S561.25,803.37,560.49,803.75Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#35323e'
+                />
+                <path
+                    d='M560.26,803.82a65.22,65.22,0,0,1-7.43,0,1.61,1.61,0,0,1-1.56-1.6c0-.61,0-1.36,0-2.16.69-3,1.68-6.18,3-6.89C554.18,793.16,558.05,792.72,560.26,803.82Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <polygon
+                    points='455.38 701.77 456.4 715.47 457.71 715.47 457.71 700.61 455.38 701.77'
+                    fill='#35323e'
+                />
+                <path
+                    d='M553.8,554.88a23.38,23.38,0,0,0-10.46,3.36,4.34,4.34,0,0,0-2,2,6.64,6.64,0,0,0-.16,2.44c.11,7-7.73,12.35-7.48,19.37.1,2.79,1.5,5.38,1.75,8.16.43,4.63-2.31,8.9-4.94,12.74a10.53,10.53,0,0,0,7.45-2.47,56.47,56.47,0,0,1,1,28.48h3.76a2.9,2.9,0,0,1,1.1.14,2.61,2.61,0,0,1,.87.65c3.51,3.49,5.87,8.66,4.52,13.44l8-3a24,24,0,0,0,5.53-2.63,8,8,0,0,0,3.41-4.92c.21-1.22.15-2.69,1.15-3.4a6.49,6.49,0,0,1,1.58-.58c2.2-.78,3.17-3.32,3.61-5.6a32,32,0,0,0,.51-8.52c-.35-4.77-1.76-9.62-.6-14.27.66-2.61,2.12-5,2.24-7.75.19-4.45-3.29-8.29-3.81-12.72-.36-3.08.75-6.2.39-9.29a10,10,0,0,0-5.25-7.58c-1-.51-2.06-.85-3-1.4-2.22-1.29-3.63-3.61-5.64-5.2s-5.37-2.19-6.88-.12Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M553.8,554.37a23.38,23.38,0,0,0-10.46,3.36,4.34,4.34,0,0,0-2,2,6.64,6.64,0,0,0-.16,2.44c.11,7-7.73,12.35-7.48,19.37.1,2.79,1.5,5.39,1.75,8.16.43,4.64-2.31,8.9-4.94,12.74A10.53,10.53,0,0,0,538,600a56.47,56.47,0,0,1,1,28.48h3.76a2.9,2.9,0,0,1,1.1.14,2.61,2.61,0,0,1,.87.65c3.51,3.49,5.87,8.66,4.52,13.44l8-3a24,24,0,0,0,5.53-2.63,8,8,0,0,0,3.41-4.92c.21-1.22.15-2.69,1.15-3.4a6.49,6.49,0,0,1,1.58-.58c2.2-.78,3.17-3.32,3.61-5.6a32,32,0,0,0,.51-8.52c-.35-4.77-1.76-9.62-.6-14.27.66-2.61,2.12-5.05,2.24-7.75.19-4.45-3.29-8.29-3.81-12.72-.36-3.08.75-6.2.39-9.29a10,10,0,0,0-5.25-7.58c-1-.51-2.06-.85-3-1.4-2.22-1.29-3.63-3.61-5.64-5.2s-5.37-2.19-6.88-.12Z'
+                    transform='translate(-95.23 -91.02)'
+                    fill='#a26565'
+                />
+                <g opacity='0.1'>
+                    <path
+                        d='M541.2,560.46c0,.16,0,.31,0,.47C541.19,560.78,541.2,560.62,541.2,560.46Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M570.88,576.8a43.09,43.09,0,0,0,.45-6.49A42.91,42.91,0,0,0,570.88,576.8Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M535.48,587.55c-.23-2.53-1.41-4.91-1.69-7.42a9.18,9.18,0,0,0-.06,1.39c.1,2.76,1.47,5.33,1.74,8.08A10,10,0,0,0,535.48,587.55Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M572.48,597.6a17.32,17.32,0,0,0-.42,5.07,15.67,15.67,0,0,1,.42-2.94c.66-2.61,2.12-5.05,2.24-7.75a8.69,8.69,0,0,0-.07-1.44C574.35,593,573.08,595.21,572.48,597.6Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M538,597.83a10.63,10.63,0,0,1-6,2.46c-.47.72-1,1.44-1.43,2.13A10.53,10.53,0,0,0,538,600a56.42,56.42,0,0,1,2.37,15.26A56.17,56.17,0,0,0,538,597.83Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M572.58,620.39c-.45,2.29-1.42,4.83-3.62,5.6a6.12,6.12,0,0,0-1.58.59c-1,.71-.94,2.18-1.15,3.39a8,8,0,0,1-3.41,4.92,24,24,0,0,1-5.53,2.63l-7.63,2.86a10.44,10.44,0,0,1-.37,2.27l8-3a24,24,0,0,0,5.53-2.63,8,8,0,0,0,3.41-4.92c.21-1.22.15-2.69,1.15-3.4a6.49,6.49,0,0,1,1.58-.58c2.2-.78,3.17-3.32,3.62-5.6a32.39,32.39,0,0,0,.57-7.22A33.46,33.46,0,0,1,572.58,620.39Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                    <path
+                        d='M544.77,627.08a2.76,2.76,0,0,0-.87-.65,2.9,2.9,0,0,0-1.1-.14l-3.33,0c-.13.71-.27,1.42-.43,2.12h3.76a2.9,2.9,0,0,1,1.1.14,2.61,2.61,0,0,1,.87.65,16.12,16.12,0,0,1,4.85,9.55C550.05,634.51,547.86,630.15,544.77,627.08Z'
+                        transform='translate(-95.23 -91.02)'
+                    />
+                </g>
+                <path
+                    d='M526.12,641s3-1.28,3.72,0S526.12,641,526.12,641Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+                <path
+                    d='M527.17,643.16s3-1.28,3.72,0S527.17,643.16,527.17,643.16Z'
+                    transform='translate(-95.23 -91.02)'
+                    opacity='0.1'
+                />
+            </g>
+            <path
+                d='M311.82,149.79l.27,2.1,9.13,1.29s.75-.56,1.92-1.32c2.17-1.41,5.79-3.53,8.89-4.13,4.77-.94,20-7.77,15.08-8.22s-4.39.57-4.39.57-5.4-5.3-11-.45c-4.23,3.68-13.54,7.63-17.77,9.32Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <path
+                d='M348.27,125.58a15.89,15.89,0,0,1,4.37-1.12,5.36,5.36,0,0,1,4.17,1.39c.59.61,1,1.39,1.54,2,2.78,3,8.18.75,11.53,3.07,2.06,1.42,2.7,4.12,3.43,6.52s2.06,5.05,4.52,5.56a13.41,13.41,0,0,0,3.57-.14,3.5,3.5,0,0,1,3.2,1.18c1.14,1.72-.43,4.62,1.22,5.85,1.47,1.09,4.15-.44,5.18,1.09a2.27,2.27,0,0,1-.35,2.5,17.37,17.37,0,0,0-1.68,2.1,3.19,3.19,0,0,0,3.14,4.66c1-.1,2.15-.7,3.06-.18a2.19,2.19,0,0,1,.92,1.71,4.49,4.49,0,0,1-4,4.75c-1.77.11-3.4-.85-5-1.66s-3.44-1.5-5.09-.83a8.12,8.12,0,0,0-2.05,1.45,22.6,22.6,0,0,1-6.29,3.73c-2,.78-4.35,1.26-6.28.28-2.17-1.11-3.29-3.82-5.59-4.64s-4.93.71-7.13,2-5.15,2.4-7.14.79-1.48-5.2-2.79-7.62a7.41,7.41,0,0,0-2.09-2.3c-1.47-1.14-3.14-2-4.61-3.1a7.71,7.71,0,0,1-3.16-4.42c-.43-2.19.62-4.39,1.8-6.28s2.57-3.75,3-5.94c.28-1.64,0-3.35.37-5a6.14,6.14,0,0,1,4-4.2c1.08-.37,1.28-.28,1.82-1.23A3.93,3.93,0,0,1,348.27,125.58Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#f86d70'
+            />
+            <g opacity='0.1'>
+                <path
+                    d='M384.86,144.72a8.35,8.35,0,0,1,.17,2.93A7.77,7.77,0,0,1,384.86,144.72Z'
+                    transform='translate(-95.23 -91.02)'
+                />
+                <path
+                    d='M389,155.77a3.15,3.15,0,0,0-.32,1.07,3.25,3.25,0,0,1,.11-2.71,17.37,17.37,0,0,1,1.68-2.1,3.29,3.29,0,0,0,.49-.95.71.71,0,0,1,.07.09,2.23,2.23,0,0,1-.35,2.5A18.62,18.62,0,0,0,389,155.77Z'
+                    transform='translate(-95.23 -91.02)'
+                />
+                <path
+                    d='M337.84,153.19c1.47,1.12,3.14,2,4.61,3.1a7.54,7.54,0,0,1,2.09,2.3c1.31,2.42.65,5.89,2.79,7.62s4.95.53,7.14-.79,4.72-2.87,7.13-2,3.42,3.53,5.59,4.64c1.93,1,4.27.5,6.28-.28a22.6,22.6,0,0,0,6.29-3.73,8.12,8.12,0,0,1,2.05-1.45c1.65-.67,3.51,0,5.09.83s3.22,1.77,5,1.66a4.52,4.52,0,0,0,4-4,3.18,3.18,0,0,1,.21.86,4.48,4.48,0,0,1-4,4.75c-1.78.11-3.41-.85-5-1.66s-3.45-1.5-5.1-.83a8.25,8.25,0,0,0-2,1.45,22.74,22.74,0,0,1-6.29,3.73c-2,.78-4.36,1.26-6.28.28-2.18-1.11-3.29-3.82-5.6-4.64s-4.93.71-7.12,2-5.15,2.39-7.14.79c-2.15-1.73-1.49-5.2-2.8-7.62a7.29,7.29,0,0,0-2.09-2.3c-1.46-1.14-3.13-2-4.61-3.1a7.65,7.65,0,0,1-3.15-4.42,5.14,5.14,0,0,1-.1-1.17A8.09,8.09,0,0,0,337.84,153.19Z'
+                    transform='translate(-95.23 -91.02)'
+                />
+            </g>
+            <path
+                d='M341.75,203.34l-3.31.71s3.27,5.37,8.3,1.85S341.75,203.34,341.75,203.34Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#4c4981'
+            />
+            <path
+                d='M341.75,203.34l-3.31.71s3.27,5.37,8.3,1.85S341.75,203.34,341.75,203.34Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M413.65,253.33s4.59,2.37,8.87,5.12c3.07,2,6,4.12,6.93,5.74,2.28,3.87,13.35,8.05,13.35,8.05l11,8.37c2.59.86,5.11,4,6.14,5.41.32.43.49.7.49.7l4.41-.57,2.32-3s.59-6.65-4-6.57a6.55,6.55,0,0,1-2.58-.66c-4.92-2.18-11.81-9-11.81-9s-11.71-14.63-15.21-15.11a5.74,5.74,0,0,1-1.1-.28c-3.56-1.25-8.66-5.84-8.66-5.84Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <path
+                d='M368.25,295.6c1.16,7,6.49,20.44,8.2,23.24,2.12,3.47,3.24,10.41,3.24,10.41l.62,4.82A5.75,5.75,0,0,0,381,336a11,11,0,0,0,.61,1l8.82-2.71s-.51-2-1.28-4.36-1.93-5.25-3-6.33c-2.15-2.12-2.48-9.58-2.48-9.58s-1.79-14.36-2.34-16.16a24.56,24.56,0,0,1-1-5.3c-.08-1-.14-2.06-.15-3.31a68,68,0,0,0-1.39-10.66l-10.29,1.87-.27,11.49A7.7,7.7,0,0,0,368.25,295.6Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <path
+                d='M459.93,286c.32.43.49.7.49.7l4.41-.57,2.32-3s.59-6.65-4-6.57a6.55,6.55,0,0,1-2.58-.66c-.37,2,1.86,3.64,1.86,3.64s.92.67.7,3.8C463,285.47,461.11,285.92,459.93,286Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M459.45,286.43c.29,1.07,3.07,2.65,5,3.63.95.49,1.69.83,1.84.9.45.22,2.78-2.38,3.1-4.47s5.89-8.62,5.89-8.62a23.39,23.39,0,0,0,2.07-8.16c.21-2.85-1-3.07-2.37-2.43a9.48,9.48,0,0,0-2.65,2.08,7,7,0,0,1-3.42,1.77,16.76,16.76,0,0,0-4.94,2.11c-1.35.87-2.66,1.93-2.9,2.87-.51,2.05,1.83,3.79,1.83,3.79s.92.68.71,3.8S459.42,286.33,459.45,286.43Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#ff6484'
+            />
+            <path
+                d='M464.45,290.06c.95.49,1.69.83,1.84.9.45.22,2.78-2.38,3.1-4.47s5.89-8.62,5.89-8.62a23.39,23.39,0,0,0,2.07-8.16c.21-2.85-1-3.07-2.37-2.43-.23,2.26-.8,6.65-2,8.94C471.64,278.94,466,287.69,464.45,290.06Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M381.09,335.78a1.3,1.3,0,0,1-.08.17,11,11,0,0,0,.61,1l8.82-2.71s-.51-2-1.28-4.36c-3.49-1-8.49,5.13-8.49,5.13Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M380.53,342.35s7.35,2.58,10.67,2.18c2.51-.3,2.62-1.47,2.45-3.87-.06-.76-.14-1.65-.18-2.68-.17-4.25-1.88-5.1-1.88-5.1-2.8-7.35-10.87,2.51-10.87,2.51l.43.8a8.76,8.76,0,0,0-.83,4A11.37,11.37,0,0,0,380.53,342.35Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#ff6484'
+            />
+            <path
+                d='M380.53,342.35s7.35,2.58,10.67,2.18c2.51-.3,2.62-1.47,2.45-3.87a7.77,7.77,0,0,1-6,1.73,23.76,23.76,0,0,1-7.33-2.19A11.37,11.37,0,0,0,380.53,342.35Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M344,163.86l2.86,12.59.58,2.59,5.33.67,5.48.7,6-2.17s1.67-5.67.29-9.93a6.27,6.27,0,0,0-2.76-3.64,5.6,5.6,0,0,1-1.15-.9,4.8,4.8,0,0,1-1-1.37,5.8,5.8,0,0,1-.52-2c-.3-3.39,1.85-7.1,1.85-7.1s-12.66-4.32-11.67-1.53c.64,1.81-1.14,5-2.47,6.94-.72,1.08-1.31,1.82-1.31,1.82Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <circle cx='260.22' cy='57.02' r='10.99' opacity='0.1' />
+            <circle cx='260.16' cy='56.61' r='10.99' fill='#efb7b9' />
+            <path
+                d='M344.82,205.64c.52,2.42,2.91,6.23,2.91,6.23l15.34,3.77,11-11.44,0-.07c-.34-1.07-4.53-14.6-1.5-17.94s2-13.24,2-13.24-5.48-6.31-6.58-7.83-8.22-2.72-8.22-2.72c.35.48.68.94,1,1.37a13.84,13.84,0,0,1,1.75,3.72,5.54,5.54,0,0,1-.15,4,4.8,4.8,0,0,0-.37,1c-1.2,5.25-6.66,4.52-8.84,4-.56-.14-.9-.26-.9-.26l-5.23.17-3.28.11s1.49,25.86,1.14,27.92A3,3,0,0,0,344.82,205.64Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#ff6484'
+            />
+            <path
+                d='M343.68,177.85l9.52-1.25-.18,0a9.31,9.31,0,0,1-.9-.25l-5.23.17-3.28.11S343.64,177.05,343.68,177.85Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#925978'
+            />
+            <polygon
+                points='259.12 122.51 263.25 123.52 269.74 122.67 271.44 120.9 259.12 122.51'
+                fill='#925978'
+            />
+            <polygon
+                points='265.98 124.19 267.85 124.65 268.62 123.85 265.98 124.19'
+                fill='#925978'
+            />
+            <path
+                d='M344.82,205.64c2.45.25,4.71.37,4.71.37l12.64-.47,0-13.21a19,19,0,0,0-5.09-3.36c-2.2-.76-4.8-3.09-4.31-9.26,0-.35.06-.72.11-1.1a15,15,0,0,0,.11-2.07,11.1,11.1,0,0,0-3.5-8.14l-.19-.16-2.06-9.58a2.32,2.32,0,0,0-.41.05c-.72,1.08-1.31,1.82-1.31,1.82L344,163.86l2.86,12.59-3.28.11s1.49,25.86,1.14,27.92A3,3,0,0,0,344.82,205.64Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M349.12,206.06l12.64-.47,0-13.2A18.71,18.71,0,0,0,356.7,189c-2.33-.81-5.1-3.37-4.2-10.37a11.47,11.47,0,0,0-3.39-10.21l-.19-.16-2.06-9.58a4.48,4.48,0,0,0-3.26,1.87,9.16,9.16,0,0,1-.76,1.06,2,2,0,0,1-2.54.76c-1.33-.59-7.06-3-8.35-.64s-1.53,16.52-1.53,16.52a10.83,10.83,0,0,1,3.72,6.12c.88,4,2.35,4.14,2.35,4.14l1.58,11.6s1.44,2.52.37,3.91'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M342.84,161.64l2.15,6.45,4.12.36-.19-.16-2.06-9.58a4.48,4.48,0,0,0-3.26,1.87A9.16,9.16,0,0,1,342.84,161.64Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M311.82,149.79l.27,2.1,9.13,1.29s.75-.56,1.92-1.32c-1-.22-5.5-1.21-7.88-2-.87-.27-1.46-.5-1.48-.66s.06-.18.2-.3Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M301.11,163.41s10.34,7.85,16.75,9.12c0,0,9,2.67,12.56,5.75l3.89-14.89L332,161.76s-2.83,1.75-5.27,1.17-5.12-.92-5.12-.92a40.18,40.18,0,0,0-6.56-1.8c-1.74-.14-1-2.4.7-3.6a5.73,5.73,0,0,1,.73-.41,2.23,2.23,0,0,0,2.93.66,6.52,6.52,0,0,0,1.7-1.58h0a20.79,20.79,0,0,0,1.92-2.91s-5.39-1.15-8.08-2c-.87-.27-1.46-.5-1.48-.65-.08-.62,4.81-2.57,4.81-2.57s-4.19-2-5.89-.56c0,0,1.09.83.21,1.64s-11.62,9.05-11.62,9.05S295.65,159.89,301.11,163.41Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M310,155.79l5.72.82a5.73,5.73,0,0,1,.73-.41,2.23,2.23,0,0,0,2.93.66,6.52,6.52,0,0,0,1.7-1.58h0a21.55,21.55,0,0,0,1.57-2.44s-5.4-1.16-8.08-2Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M310.33,155.33l6.1.87a2.23,2.23,0,0,0,2.93.66c1.75-1,3.62-4.5,3.62-4.5s-5.39-1.15-8.08-2Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M423.8,245.65l-10.15,7.68s4.59,2.37,8.87,5.12c3.74-2.53,7.27-4.86,9.94-7C428.9,250.24,423.8,245.65,423.8,245.65Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M368.25,295.6a34.68,34.68,0,0,0,7.44-1.78s1.87-.41,4.65-1.34c-.08-1-.14-2.06-.15-3.31a68,68,0,0,0-1.39-10.66l-10.29,1.87-.27,11.49A7.7,7.7,0,0,0,368.25,295.6Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M349.92,248.93C352,252,357.65,265,357.65,265a54.28,54.28,0,0,0,4.3,6.63c2.25,2.84,3.81,9.2,5.52,14.29s-.51,4.13-.26,6.81,9.9-.77,9.9-.77,19.76-4.35,25.79-16.4,30.14-23,35-29.79-1.39-4-1.14-7.66-2.55-6.76-2.55-6.76-9.09-2.56-10.57-4.35-8.74-6.26-8.74-6.26-6.84-3-7.71-4-9-4.24-11.47-4.86-4.92-4.15-4.92-4.15-1.54.2-3.81-2-11.78-4.09-11.78-4.09c-16.27,11.92-27.5,10.22-27.5,10.22l-.26,2.26C338.82,225.37,347.86,245.87,349.92,248.93Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#ff6484'
+            />
+            <path
+                d='M347.47,214.13s14,4.63,27.76-12.48c-16.27,11.92-27.5,10.22-27.5,10.22Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M371.65,222.13s18.87,27.23,20,28.23S372.64,221.79,371.65,222.13Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M362.93,220s13.07,20.29,12.8,23C375.73,243.06,363.08,223.56,362.93,220Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M355.32,225.61s2.41,11.35-1.22,17.77Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M350.3,226.27s-.16,9.81-1.26,11.83Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <polygon
+                points='287.07 126.49 304.42 133.29 298.07 134.12 287.07 126.49'
+                opacity='0.1'
+            />
+            <path
+                d='M348.14,141.53c.87.57,1.59,1.5,2.62,1.63a4.06,4.06,0,0,0,2.13-.53c1.73-.75,3.69-1.33,5.48-.74,2.55.85,3.95,3.78,6.49,4.65a4.53,4.53,0,0,0,3.8-.42,4.49,4.49,0,0,0,2-2.75,5.7,5.7,0,0,0-2-5.35,11.91,11.91,0,0,0-5.39-2.45c-5.1-1.13-10.4-.75-15.61-.36a2.29,2.29,0,0,0-1.22.32c-.79.59-2.14,3.56-1.86,4.56C345,141.43,348,140.41,348.14,141.53Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M348.08,141.12c.87.57,1.59,1.5,2.63,1.63a4.09,4.09,0,0,0,2.13-.53c1.73-.75,3.69-1.33,5.47-.74,2.55.85,3.95,3.78,6.5,4.65a4.53,4.53,0,0,0,3.8-.42,4.44,4.44,0,0,0,2-2.75,5.69,5.69,0,0,0-2-5.35,11.9,11.9,0,0,0-5.4-2.45c-5.1-1.13-10.4-.75-15.6-.36a2.29,2.29,0,0,0-1.22.32c-.79.59-2.15,3.56-1.86,4.56C344.91,141,347.94,140,348.08,141.12Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#f86d70'
+            />
+            <path
+                d='M415.28,149.21l1.66,6.71,2.16-1.3,11.7-7.07s8.86-.32,9.55-7.45-9.85-.07-10.41.48-1.84,1.49-1.84,1.49l-10.9,6.07Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <path
+                d='M415.28,149.21l1.66,6.71,2.16-1.3c-.48-3-1.22-5.83-1.9-6.48Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M357.51,193.09l2.38,14,14.12-3c-.34-1.07-4.53-14.6-1.5-17.94s2-13.24,2-13.24-5.48-6.31-6.58-7.83-8.22-2.72-8.22-2.72a5.8,5.8,0,0,1-.52-2,7.69,7.69,0,0,0-.54,1.49c0,2.56,1,4.31,3.77,5.6l.76.33c.43.17.9.33,1.4.49l.23.07c4.55,1.35,5.53,4.07,5.53,4.07a10.37,10.37,0,0,1,2.07,7.34C371.9,184.13,357.51,193.09,357.51,193.09Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M358.33,193l2.38,14,15.89-3.32s-.48-5.29-1.59-7.44-.89-10.51-.89-10.51c6.76-7.28,3.21-13.21,3.21-13.21s19.86-3.21,20.2-3.81,7-4.18,7-4.18,7.2-1.84,8.17-2.87a9.82,9.82,0,0,1,1.18-1.07,3.24,3.24,0,0,1,.39-.25l.53,4.59H415a6.46,6.46,0,0,0,3.2-1.26c1.64-1.26-.43-15-2-15.51a1.9,1.9,0,0,0-.92,0,10,10,0,0,0-3.43,1.85l-.27.22-.1.08s-9,3.53-10.79,5.15-15.78,3.69-15.78,3.69-6.27,1.48-7.08.58-10.38-2.36-11.18-1-3,1.16-3,1.16c-1.58-1.81-2.67-1.11-3.34-.07a7.1,7.1,0,0,0-.84,2c0,2.79,1.22,4.61,4.53,5.93.49.2,1,.38,1.63.56,4.55,1.35,5.53,4.07,5.53,4.07a10.41,10.41,0,0,1,2.07,7.35C372.72,184,358.33,193,358.33,193Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M415.26,148.12a1.43,1.43,0,0,1,.51,0c1.59.49,3.66,14.25,2,15.51a6.39,6.39,0,0,1-2.79,1.21h-.24l-.53-4.59a3.24,3.24,0,0,0-.39.25l0-.19a12,12,0,0,0-2.26-10.19Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M414.23,160.32l.53,4.59a6.43,6.43,0,0,0,3.44-1.28c1.64-1.26-.43-15-2-15.51-1.26-.39-3.47,1.18-4.35,1.85A11.92,11.92,0,0,1,414.23,160.32Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M364,167.71l2.28-2.15-6-5.79a7.1,7.1,0,0,0-.84,2C359.44,164.57,360.65,166.39,364,167.71Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#444053'
+            />
+            <path
+                d='M348,140.3c.87.57,1.59,1.5,2.62,1.63a4.06,4.06,0,0,0,2.13-.53c1.73-.75,3.69-1.33,5.48-.74,2.55.85,4,3.78,6.49,4.65a4.53,4.53,0,0,0,3.8-.42,4.49,4.49,0,0,0,2-2.75,4.55,4.55,0,0,0,.11-1.22,4.68,4.68,0,0,1,0,2,4.41,4.41,0,0,1-3.36,3.3,4.55,4.55,0,0,1-2.43-.13c-2.55-.87-3.95-3.8-6.49-4.65-1.79-.59-3.75,0-5.48.74a4.06,4.06,0,0,1-2.13.53c-1-.13-1.76-1.06-2.63-1.63-.14-1.12-3.16-.1-3.54-1.44a1.51,1.51,0,0,1,0-.61C345.14,140.09,347.84,139.25,348,140.3Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M357.37,171.91s-1.27,3.56.34,4.75c0,0-1.76-4.7-2.79-4.6'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+            <path
+                d='M436,137.3s-8.17,7.06-2.27,8.19S436,137.3,436,137.3Z'
+                transform='translate(-95.23 -91.02)'
+                fill='#efb7b9'
+            />
+            <polygon
+                points='308.93 52.16 310.5 93.51 355.98 52.16 308.93 52.16'
+                fill='#fff'
+            />
+            <polygon
+                points='308.93 52.16 310.5 93.51 355.98 52.16 308.93 52.16'
+                opacity='0.03'
+            />
+            <ellipse cx='847.47' cy='692.13' rx='33.8' ry='6.5' fill={color} />
+            <ellipse
+                cx='846.9'
+                cy='689.37'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='683.07'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='676.77'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='670.48'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='664.18'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='657.88'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <ellipse
+                cx='846.9'
+                cy='651.59'
+                rx='3.94'
+                ry='5.15'
+                fill='#3f3d56'
+            />
+            <path
+                d='M956.87,699.52a21,21,0,0,0,1.46-2.16L948,695.66l11.18.08a18.82,18.82,0,0,0,.36-14.93l-15,7.78,13.84-10.17a18.85,18.85,0,1,0-31.14,21.1,19.57,19.57,0,0,0-2.15,3.43l13.43,7-14.32-4.81a18.91,18.91,0,0,0,3,17.71,18.85,18.85,0,1,0,29.64,0,18.87,18.87,0,0,0,0-23.31Z'
+                transform='translate(-95.23 -91.02)'
+                fill={color}
+            />
+            <path
+                d='M923.2,711.17a18.83,18.83,0,0,0,4,11.66,18.85,18.85,0,1,0,29.64,0C959.39,719.62,923.2,709.05,923.2,711.17Z'
+                transform='translate(-95.23 -91.02)'
+                opacity='0.1'
+            />
+        </svg>
+    );
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/List/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/List/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/index.js b/reactium_modules_old/reactium-admin-content/ContentType/List/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/List/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/List/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/Editor.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/Editor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/Editor.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/Editor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Blueprints/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Blueprints/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/Editor/CollectionList.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/Editor/CollectionList.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/Editor/CollectionList.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/Editor/CollectionList.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/Editor/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/Editor/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/queryActions.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/queryActions.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/queryActions.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/queryActions.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Collection/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Collection/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/Editor.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/Editor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/Editor.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/Editor.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js
new file mode 100644
index 00000000..9a5bcc29
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/FieldType.js
@@ -0,0 +1,90 @@
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import {
+    __,
+    useHandle,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from 'reactium-core/sdk';
+
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRefs();
+
+    const Editor = useHandle('ContentTypeEditor');
+
+    const { Toggle } = useHookComponent('ReactiumUI');
+
+    const val = id
+        ? op.get(
+              Editor.getValue(),
+              ['contentType', 'fields', id, 'options'],
+              {},
+          )
+        : {};
+
+    const state = useSyncState({
+        options: {
+            defaultChecked: op.get(val, 'defaultChecked', false),
+            label: op.get(val, 'label', ''),
+        },
+    });
+
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
+
+    const onBeforeSave = (params) => {
+        const { fieldId } = params;
+        if (fieldId !== id) return;
+        op.set(params, 'fieldValue.options', state.get('options'));
+    };
+
+    const onChange = (e) =>
+        state.set('options.defaultChecked', e.target.checked);
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad, [Object.values(refs.get())]);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='form-group'>
+                <label>
+                    Label:
+                    <input
+                        type='text'
+                        value={state.get('options.label', '')}
+                        onChange={(e) =>
+                            state.set('options.label', e.target.value)
+                        }
+                    />
+                </label>
+            </div>
+            <div>
+                <Toggle
+                    onChange={onChange}
+                    label={
+                        <>
+                            <strong>{__('Default:')}</strong>{' '}
+                            <em>
+                                {String(
+                                    state.get('options.defaultChecked', false),
+                                )}
+                            </em>
+                        </>
+                    }
+                    defaultChecked={state.get('options.defaultChecked')}
+                />
+            </div>
+        </FieldTypeDialog>
+    );
+};
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/_style.scss
new file mode 100644
index 00000000..2c93bd7c
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/_style.scss
@@ -0,0 +1,14 @@
+.field-type-boolean {
+    @extend .ar-dialog;
+
+    justify-content: flex-start;
+
+    .ar-dialog-header {
+        padding: 0 12px 0 16px;
+    }
+
+    label {
+        @extend .h3;
+        width: 100%;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeBoolean/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/Editor.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/Editor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/Editor.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/Editor.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js
new file mode 100644
index 00000000..d0e61da7
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/FieldType.js
@@ -0,0 +1,106 @@
+import _ from 'underscore';
+import op from 'object-path';
+import React, { useEffect } from 'react';
+import {
+    __,
+    useHandle,
+    useHookComponent,
+    useRefs,
+    useSyncState,
+} from 'reactium-core/sdk';
+
+export const FieldType = (props) => {
+    const { id } = props;
+
+    const refs = useRefs();
+
+    const Editor = useHandle('ContentTypeEditor');
+
+    const val = id
+        ? op.get(
+              Editor.getValue(),
+              ['contentType', 'fields', id, 'options'],
+              {},
+          )
+        : {};
+
+    const state = useSyncState({
+        options: {
+            min: op.get(val, 'min'),
+            max: op.get(val, 'max'),
+        },
+    });
+
+    const FieldTypeDialog = useHookComponent('FieldTypeDialog');
+
+    const { DatePicker } = useHookComponent('ReactiumUI');
+
+    const onSelectDate = (e) => {
+        let { id: ID, selected = [] } = e;
+
+        ID = String(ID).replace('calendar-', '').substr(0, 3);
+
+        selected = _.compact(selected);
+
+        const date = selected.length > 0 ? _.first(selected) : null;
+
+        state.set(`options.${ID}`, date);
+    };
+
+    const onBeforeSave = (params) => {
+        const { fieldId } = params;
+        if (fieldId !== id) return;
+        op.set(params, 'fieldValue.options', state.get('options'));
+    };
+
+    const onLoad = () => {
+        const hooks = [
+            Reactium.Hook.registerSync('content-type-form-save', onBeforeSave),
+        ];
+
+        return () => {
+            hooks.forEach((hookId) => Reactium.Hook.unregister(hookId));
+        };
+    };
+
+    useEffect(onLoad, [Object.values(refs.get())]);
+
+    return (
+        <FieldTypeDialog {...props}>
+            <div className='field-type-date'>
+                <div className='row'>
+                    <div className='col-xs-12 col-md-6 pr-md-6 mb-xs-12 mb-md-0'>
+                        <div className='form-group'>
+                            <label className='block'>
+                                {__('Minimum Date')}:
+                                <DatePicker
+                                    readOnly
+                                    id='minDate'
+                                    align='right'
+                                    onChange={onSelectDate}
+                                    value={state.get('options.min')}
+                                    ref={(elm) => refs.set('min', elm)}
+                                />
+                            </label>
+                        </div>
+                    </div>
+                    <div className='col-xs-12 col-md-6 pl-md-6'>
+                        <div className='form-group'>
+                            <label className='block'>
+                                {__('Maximum Date')}:
+                                <DatePicker
+                                    readOnly
+                                    id='maxDate'
+                                    align='right'
+                                    onChange={onSelectDate}
+                                    value={state.get('options.max')}
+                                    ref={(elm) => refs.set('max', elm)}
+                                />
+                            </label>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </FieldTypeDialog>
+    );
+};
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/_style.scss
new file mode 100644
index 00000000..2c2779bf
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/_style.scss
@@ -0,0 +1,8 @@
+.field-type-date {
+    .ar-picker {
+        width: 100%;
+        input {
+            margin-top: 0;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeDate/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeDate/reactium-hooks.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/_style.scss
new file mode 100644
index 00000000..e04c12e7
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/_style.scss
@@ -0,0 +1,56 @@
+.field-type-number {
+    .input-group {
+        width: 100%;
+
+        flex-direction: column;
+
+        @include breakpoint(md) {
+            flex-direction: row;
+            align-items: center;
+        }
+
+        > * {
+            margin-bottom: 16px;
+            flex-grow: 1;
+        }
+
+        input {
+            width: 100%;
+        }
+
+        .min-max {
+            flex-shrink: 0;
+            flex-grow: 1;
+            width: 100%;
+
+            input {
+                width: 100%;
+            }
+
+            @include breakpoint(md) {
+                width: 15%;
+            }
+        }
+
+        .checks {
+            @include breakpoint(md) {
+                flex-grow: 0;
+                flex-shrink: 0;
+                display: flex;
+            }
+
+            > * {
+                margin-bottom: 12px;
+
+                @include breakpoint(md) {
+                    margin-left: 20px;
+                    margin-bottom: 0;
+                }
+            }
+
+            label > span:first-child {
+                text-align: left;
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeNumber/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/Editor.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/Editor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/Editor.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/Editor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeObject/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeObject/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/Editor.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/Editor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/Editor.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/Editor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/FieldType.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/_style.scss
new file mode 100644
index 00000000..bbd6689b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/_style.scss
@@ -0,0 +1,41 @@
+.selection {
+    &-cte {
+        &-list {
+            border-top: 1px solid $color-grey-light;
+            margin: 0;
+            padding: 0;
+            margin-top: 16px;
+
+            &:empty {
+                display: none;
+            }
+
+            li {
+                list-style: none;
+                margin-top: 16px;
+            }
+        }
+    }
+
+    &-editor {
+        @extend .row;
+        color: $color-text-dark;
+        padding: 16px;
+        position: relative;
+
+        * {
+            position: relative;
+        }
+
+        select {
+            color: inherit;
+        }
+
+        .ar-spinner {
+            transform: translateX(-50%) translateY(-50%) scale(0.4);
+            position: absolute;
+            top: 50%;
+            left: 50%;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeSelect/reactium-hooks.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/_style.scss
new file mode 100644
index 00000000..c1b81d5e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/_style.scss
@@ -0,0 +1,56 @@
+.field-type-text {
+    .input-group {
+        width: 100%;
+
+        flex-direction: column;
+
+        @include breakpoint(md) {
+            flex-direction: row;
+            align-items: center;
+        }
+
+        > * {
+            margin-bottom: 16px;
+            flex-grow: 1;
+        }
+
+        input {
+            width: 100%;
+        }
+
+        .min-max {
+            flex-shrink: 0;
+            flex-grow: 1;
+            width: 100%;
+
+            input {
+                width: 100%;
+            }
+
+            @include breakpoint(md) {
+                width: 15%;
+            }
+        }
+    }
+
+    .checks {
+        @include breakpoint(md) {
+            flex-grow: 0;
+            flex-shrink: 0;
+            display: flex;
+        }
+
+        > * {
+            margin-bottom: 12px;
+
+            @include breakpoint(md) {
+                margin-right: 20px;
+                margin-bottom: 0;
+            }
+        }
+
+        label > span:first-child {
+            text-align: left;
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeText/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeText/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Comparison.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Comparison.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Comparison.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Comparison.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/ListItem.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/ListItem.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/ListItem.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/ListItem.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/enums.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/enums.js
new file mode 100644
index 00000000..596c25e9
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/enums.js
@@ -0,0 +1,7 @@
+export default {
+    STATUS: {
+        PENDING: 'pending',
+        FETCHING: 'fetching',
+        READY: 'ready',
+    },
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/UrlSelect.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/UrlSelect.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/UrlSelect.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/UrlSelect.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/_style.scss
new file mode 100644
index 00000000..4126f80f
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/_style.scss
@@ -0,0 +1,160 @@
+.field-type-url {
+    .form-group {
+        input {
+            margin: 0;
+        }
+    }
+
+    .required {
+        flex-shrink: 0;
+
+        label > span:first-child {
+            text-align: left;
+        }
+
+        padding-top: 20px;
+
+        @include breakpoint(md) {
+            padding-left: 20px;
+            padding-top: 0;
+        }
+    }
+}
+
+.editor-urls {
+    @extend .form-group;
+    position: relative;
+
+    .ar-dropdown {
+        max-width: 33%;
+    }
+
+    .input-group * {
+        z-index: auto;
+
+        &.ar-dropdown-menu {
+            z-index: 1;
+            min-width: 100px;
+
+            button {
+                font-family: Montserrat, Helvetica, Arial, sans-serif;
+                font-size: 16px !important;
+                font-weight: normal !important;
+            }
+        }
+    }
+
+    .input-group {
+        button {
+            z-index: 1;
+
+            &.add-btn {
+                z-index: 11;
+            }
+        }
+
+        input {
+            z-index: 1;
+
+            &:focus {
+                z-index: 10;
+            }
+        }
+    }
+
+    button.dropdown-btn {
+        display: flex;
+        align-items: center;
+        align-self: stretch;
+        border: 1px solid $input-color-border;
+        padding: 0 8px 2px 12px;
+        background-color: transparent;
+        height: 100%;
+        font-family: Montserrat, Helvetica, Arial, sans-serif;
+        font-size: 16px !important;
+        font-weight: normal;
+        color: $color-gray !important;
+    }
+
+    input {
+        margin: 0 -42px 0 0;
+        padding-right: 48px;
+        border-radius: 2px;
+    }
+
+    padding: 20px;
+
+    .ar-alert {
+        margin-bottom: 16px;
+
+        &:first-child {
+            &:last-child {
+                margin-bottom: 0;
+            }
+        }
+    }
+
+    .ar-spinner {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translateX(-50%) translateY(-50%) scale(0.3);
+    }
+
+    &-list {
+        margin: 0;
+        padding: 0;
+        list-style: none;
+        margin-top: 16px;
+        padding-top: 16px;
+        border-top: 1px solid $color-grey-light;
+        min-height: 41px;
+        position: relative;
+
+        .edit-toggle {
+            z-index: 20;
+        }
+
+        li {
+            list-style: none;
+            padding: 0;
+            margin: 0;
+            position: relative;
+            width: 100%;
+
+            input {
+                transition: opacity 0.25s ease-in-out;
+            }
+
+            &:not(:first-child) {
+                margin-top: 18px;
+            }
+
+            .edit-toggle {
+                border-radius: 0 2px 2px 0;
+                overflow: hidden;
+                width: 41px;
+                height: 41px;
+                opacity: 0.5;
+
+                &:hover {
+                    opacity: 1;
+                }
+            }
+
+            &.deleted {
+                input {
+                    opacity: 0.25;
+                }
+
+                .edit-toggle {
+                    opacity: 1;
+                }
+            }
+        }
+
+        &:empty {
+            display: none;
+        }
+    }
+}
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/index.js
new file mode 100644
index 00000000..0dd10b87
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/index.js
@@ -0,0 +1,4 @@
+export Editor from './Editor';
+export FieldType from './FieldType';
+export UrlSelect from './UrlSelect';
+export Comparison from './Comparison';
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/FieldTypeURL/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/FieldTypeURL/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Navigation/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Navigation/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/ContentStatus.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/ContentStatus.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/ContentStatus.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/ContentStatus.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/PublishButton.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/PublishButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/PublishButton.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/PublishButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/Scheduler.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/Scheduler.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/Scheduler.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/Scheduler.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/enums.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/enums.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/Editor/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Publisher/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Publisher/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/Editor/Sortable.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/Editor/Sortable.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/Editor/Sortable.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/Editor/Sortable.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/Editor/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/Editor/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/FieldType.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/FieldType.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Plugins/Wizard/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Plugins/Wizard/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/SidebarWidget/index.js b/reactium_modules_old/reactium-admin-content/ContentType/SidebarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/SidebarWidget/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/SidebarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Tools/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/Tools/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Tools/_style.scss
rename to reactium_modules_old/reactium-admin-content/ContentType/Tools/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Tools/index.js b/reactium_modules_old/reactium-admin-content/ContentType/Tools/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/Tools/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/Tools/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/TypeName/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/TypeName/_style.scss
new file mode 100644
index 00000000..d892448d
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/TypeName/_style.scss
@@ -0,0 +1,26 @@
+.type-name {
+    &-header, &-input {
+        padding: 20px;
+        border-bottom: 1px solid darken($color-admin-header-border, 5%);
+
+        @include breakpoint(sm-down) {
+            padding-left: 20px;
+        }
+    }
+
+    &-input {
+        display: flex;
+        justify-content: space-between;
+
+        .input-group {
+            flex-grow: 1;
+            margin-right: 20px;
+        }
+    }
+
+    button[type="submit"] {
+        padding: 0;
+        font-size: 18px;
+        width: 100px;
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/TypeName/index.js b/reactium_modules_old/reactium-admin-content/ContentType/TypeName/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/TypeName/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/TypeName/index.js
diff --git a/reactium_modules_old/reactium-admin-content/ContentType/_style.scss b/reactium_modules_old/reactium-admin-content/ContentType/_style.scss
new file mode 100644
index 00000000..f91eaa1b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-content/ContentType/_style.scss
@@ -0,0 +1,22 @@
+.zone-admin-content-type-editor {
+    padding-top: $height-admin-header;
+    z-index: map-get($z-indexes, 'default');
+    min-height: 120vh;
+}
+
+.type-editor {
+    .types-tools {
+        position: fixed;
+        top: 238px;
+        right: 20px;
+    }
+
+    .input-group > * {
+        z-index: auto;
+    }
+}
+
+.admin-content-region-type {
+    padding-top: 0;
+    padding-right: 90px;
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/enums.js b/reactium_modules_old/reactium-admin-content/ContentType/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/enums.js
rename to reactium_modules_old/reactium-admin-content/ContentType/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/index.js b/reactium_modules_old/reactium-admin-content/ContentType/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/ContentType/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/ContentType/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/sdk/index.js b/reactium_modules_old/reactium-admin-content/ContentType/sdk/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/ContentType/sdk/index.js
rename to reactium_modules_old/reactium-admin-content/ContentType/sdk/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/EventForm/index.js b/reactium_modules_old/reactium-admin-content/EventForm/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/EventForm/index.js
rename to reactium_modules_old/reactium-admin-content/EventForm/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/EventForm/reactium-hooks.js b/reactium_modules_old/reactium-admin-content/EventForm/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/EventForm/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-content/EventForm/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/_reactium-style-admin-plugin.scss b/reactium_modules_old/reactium-admin-content/_reactium-style-admin-plugin.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/_reactium-style-admin-plugin.scss
rename to reactium_modules_old/reactium-admin-content/_reactium-style-admin-plugin.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-content/package.json b/reactium_modules_old/reactium-admin-content/package.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-content/package.json
rename to reactium_modules_old/reactium-admin-content/package.json
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Breadcrumbs/index.js b/reactium_modules_old/reactium-admin-core/Media/Breadcrumbs/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Breadcrumbs/index.js
rename to reactium_modules_old/reactium-admin-core/Media/Breadcrumbs/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/DirectoryPicker.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/DirectoryPicker.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/DirectoryPicker.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/DirectoryPicker.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Action.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Action.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Action.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Action.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/External.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/External.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/External.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/External.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Library.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Library.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Library.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Library.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js
new file mode 100644
index 00000000..a0d2b54e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Multiple.js
@@ -0,0 +1,155 @@
+import React from 'react';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import Toolbar from './Toolbar';
+import ReactPlayer from 'react-player';
+import SlideContent from './carousel/SlideContent';
+import { TypeIcon } from '../../../../MediaPicker';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, { useHandle, useHookComponent } from 'reactium-core/sdk';
+
+const Multiple = ({ selection, handle, media }) => {
+    const { cx, nav, remove, removeAll } = handle;
+
+    const { Button, DataTable, Icon } = useHookComponent('ReactiumUI');
+
+    const columns = () => {
+        const output = {
+            thumb: {
+                width: '200px',
+            },
+            link: {
+                verticalAlign: 'middle',
+            },
+            delete: {
+                width: '120px',
+                textAlign: 'right',
+                verticalAlign: 'middle',
+            },
+        };
+
+        Reactium.Hook.runSync('media-field-data-table-columns', output);
+
+        return output;
+    };
+
+    const data = () =>
+        _.compact(
+            selection.map(({ objectId }) => {
+                const item = op.get(media.data, objectId);
+                if (!item) return null;
+
+                const thumbnail = op.get(item, 'thumbnail')
+                    ? url(item, 'thumbnail')
+                    : null;
+
+                const relURL = url(item, 'relative');
+                op.set(item, 'url', relURL);
+
+                op.set(
+                    item,
+                    'link',
+                    <a href={relURL} target='_blank' children={relURL} />,
+                );
+
+                op.set(
+                    item,
+                    'delete',
+                    <>
+                        <ContentButton file={item} handle={handle} />
+                        <DeleteButton onClick={() => remove(objectId)} />
+                    </>,
+                );
+
+                op.set(
+                    item,
+                    'thumb',
+                    <Thumbnail {...item} thumbnail={thumbnail} />,
+                );
+
+                return item;
+            }),
+        );
+
+    return (
+        <div className={cn(cx('thumbs'), 'multiple')}>
+            <Toolbar nav={nav}>
+                <div className='delete-all-container'>
+                    <Button
+                        className='delete-btn'
+                        color={Button.ENUMS.COLOR.DANGER}
+                        onClick={() => removeAll()}
+                        outline>
+                        <Icon name='Feather.X' />
+                    </Button>
+                </div>
+            </Toolbar>
+            <div className='table'>
+                <Scrollbars>
+                    <DataTable columns={columns()} data={data()} />
+                </Scrollbars>
+            </div>
+        </div>
+    );
+};
+
+const ContentButton = ({ handle, file, ...props }) => {
+    const tools = useHandle('AdminTools');
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    const showEditor = () => {
+        const Modal = op.get(tools, 'Modal');
+        Modal.show(<SlideContent handle={handle} file={file} {...props} />);
+    };
+
+    return (
+        <Button
+            color={Button.ENUMS.COLOR.CLEAR}
+            className='content-btn mr-xs-8'
+            onClick={showEditor}
+            {...props}>
+            <Icon name='Feather.Feather' />
+        </Button>
+    );
+};
+
+const DeleteButton = props => {
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    return (
+        <Button
+            color={Button.ENUMS.COLOR.DANGER}
+            className='delete-btn'
+            {...props}>
+            <Icon name='Feather.X' />
+        </Button>
+    );
+};
+
+const Thumbnail = ({ thumbnail, type, url }) =>
+    type === 'VIDEO' ? (
+        <div className='thumb'>
+            <ReactPlayer controls url={url} width={200} height={100} />
+        </div>
+    ) : (
+        <div
+            className='thumb'
+            style={{ backgroundImage: thumbnail ? `url(${thumbnail})` : null }}>
+            {!thumbnail && <TypeIcon type={type} />}
+        </div>
+    );
+
+const url = (item, which) => {
+    switch (which) {
+        case 'thumbnail':
+            return Reactium.Media.url(op.get(item, 'thumbnail'));
+
+        case 'relative':
+            return op.get(item, 'url');
+
+        default:
+            return op.get(item, 'redirect.url', op.get(item, 'url'));
+    }
+};
+
+export { Multiple, Multiple as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Single.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Single.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Single.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Single.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Toolbar.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Toolbar.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Toolbar.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/Toolbar.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/Settings.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/Settings.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/Settings.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/Settings.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/SlideContent.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/SlideContent.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/SlideContent.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/carousel/SlideContent.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/index.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/index.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Thumb/index.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js
new file mode 100644
index 00000000..eaa482b7
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/Scene/Upload.js
@@ -0,0 +1,244 @@
+import _ from 'underscore';
+import op from 'object-path';
+import useLocalState from '../useLocalState';
+import DirectoryPicker from '../DirectoryPicker';
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, {
+    __,
+    useEventHandle,
+    useHookComponent,
+} from 'reactium-core/sdk';
+import { useStore } from '@atomic-reactor/use-select';
+
+export default forwardRef((props, ref) => {
+    const store = useStore();
+
+    const {
+        active,
+        browseFiles,
+        cx,
+        directories,
+        isActive,
+        back,
+        nav,
+        refs,
+    } = props.handle;
+
+    const Uploads = useHookComponent('MediaUploads');
+    const { Alert, Button, Icon } = useHookComponent('ReactiumUI');
+
+    const defaultColor = Alert.ENUMS.COLOR.PRIMARY;
+    const defaultIcon = useMemo(() => 'Feather.HelpCircle');
+    const defaultMessage = useMemo(() =>
+        __('Select directory and file to upload'),
+    );
+
+    // -------------------------------------------------------------------------
+    // State
+    // -------------------------------------------------------------------------
+    const [state, setState, getState] = useLocalState({
+        color: defaultColor,
+        directory: null,
+        icon: defaultIcon,
+        message: defaultMessage,
+        uploads: op.get(store.getState(), 'Media.uploads'),
+        pending: null,
+        watch: {},
+    });
+
+    // -------------------------------------------------------------------------
+    // Internal interface
+    // -------------------------------------------------------------------------
+    const add = (added = {}) => {
+        const { watch = {} } = state;
+        Object.entries(added).forEach(([key, value]) =>
+            op.set(watch, key, value),
+        );
+        setState({ watch });
+    };
+
+    const hasUploads = () => {
+        const uploads = getState('uploads');
+        if (!uploads) return false;
+        return Object.keys(uploads).length > 0;
+    };
+
+    const onWorkerMessage = (...args) => {
+        const worker = args[0];
+        const { type, ...e } = worker;
+
+        if (type !== 'status') return;
+
+        const status = op.get(e.params, 'status');
+        const MediaPicker = refs.get('library.picker');
+
+        if (!MediaPicker) return;
+
+        const UPLOADER = op.get(e.params, 'UPLOADER');
+        if (UPLOADER !== MediaPicker.ID) return;
+
+        if (status === 'complete') {
+            const ID = op.get(e.params, 'ID');
+
+            const { directory, objectId, url } = e.params.result;
+
+            const media = Reactium.Cache.get('editor.media');
+            if (media) {
+                let { data = {}, directories = [] } = media;
+
+                directories.push(directory);
+                directories = _.uniq(directories);
+                directories.sort();
+
+                op.set(data, objectId, e.params.result);
+                op.set(data, 'directories', directories);
+                op.set(media, 'data', data);
+
+                Reactium.Cache.set('editor.media', media);
+            }
+
+            _.defer(() => select({ ID, objectId, url }));
+        }
+    };
+
+    const reset = () => {
+        if (isActive(props.id)) return;
+        setState({ uploads: null, directory: null });
+    };
+
+    const select = async ({ ID, ...item }) => {
+        const watch = getState('watch', {});
+        props.handle.add(item);
+        op.del(watch, ID);
+
+        setState('watch', watch);
+
+        if (Object.keys(watch).length < 1) {
+            await nav('thumb', 'left');
+            Reactium.Media.clear();
+        }
+    };
+
+    const setDirectory = directory => setState('directory', directory);
+
+    const setError = (message, pending = null, icon = 'Feather.AlertOctagon') =>
+        setState({
+            color: Alert.ENUMS.COLOR.DANGER,
+            icon,
+            message,
+            pending,
+        });
+
+    // -------------------------------------------------------------------------
+    // External interface
+    // -------------------------------------------------------------------------
+    const _handle = () => ({
+        add,
+        setDirectory,
+        setError,
+        value: { directory: getState('directory') },
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    useImperativeHandle(ref, () => handle, [state.directory]);
+
+    // -------------------------------------------------------------------------
+    // Side effects
+    // -------------------------------------------------------------------------
+
+    // reset on inactive
+    useEffect(reset, [active]);
+
+    // update hande on directory change
+    useEffect(() => {
+        op.set(handle, 'value.directory', state.directory);
+        setHandle(handle);
+    }, [state.directory]);
+
+    // upload pending files
+    useEffect(() => {
+        if (!getState('directory')) return;
+        if (!getState('pending')) return;
+        add(Reactium.Media.upload(state.pending, state.directory));
+        setState('pending', null);
+    }, [state.directory]);
+
+    // uploads subscription
+    useEffect(() => {
+        return store.subscribe(() => {
+            const uploads = op.get(store.getState(), 'Media.uploads');
+            setState('uploads', uploads);
+        });
+    }, []);
+
+    // Regsiter media-worker hook
+    useEffect(() => {
+        const mw = Reactium.Hook.registerSync('media-worker', onWorkerMessage);
+        return () => {
+            Reactium.Hook.unregister(mw);
+        };
+    }, []);
+
+    // -------------------------------------------------------------------------
+    // Render
+    // -------------------------------------------------------------------------
+    return isActive(props.id) ? (
+        <div className={cx('upload')}>
+            <div className='p-xs-40 block'>
+                <Message state={state} />
+                <DirectoryPicker
+                    defaultValue={state.directory}
+                    directories={directories}
+                    onChange={({ value }) => setState('directory', value)}
+                />
+            </div>
+            <div className='content'>
+                {hasUploads() && (
+                    <div className='list'>
+                        <Scrollbars>
+                            <Uploads uploads={getState('uploads')} />
+                            <div style={{ height: '50vh' }} />
+                        </Scrollbars>
+                    </div>
+                )}
+                <div className='dropbox'>
+                    <div className={cx('label-dnd')}>{__('Drag and Drop')}</div>
+                    <div className={cx('label-or')}>{__('or')}</div>
+                    <div className={cx('btn-container')}>
+                        <Button
+                            appearance={Button.ENUMS.APPEARANCE.PILL}
+                            color={Button.ENUMS.COLOR.PRIMARY}
+                            onClick={browseFiles}
+                            size={Button.ENUMS.SIZE.MD}>
+                            {__('Upload A File')}
+                        </Button>
+                    </div>
+                </div>
+            </div>
+            <span className='back-btn'>
+                <Button color={Button.ENUMS.COLOR.CLEAR} onClick={back}>
+                    <Icon name='Feather.X' />
+                </Button>
+            </span>
+        </div>
+    ) : null;
+});
+
+const Message = ({ state = {} }) => {
+    const { Alert, Icon } = useHookComponent('ReactiumUI');
+
+    return op.get(state, 'message') ? (
+        <div className='block mb-xs-24'>
+            <Alert icon={<Icon name={state.icon} />} color={state.color}>
+                {state.message}
+            </Alert>
+        </div>
+    ) : null;
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/index.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/index.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/useLocalState.js b/reactium_modules_old/reactium-admin-core/Media/CTE/Editor/useLocalState.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/Editor/useLocalState.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/Editor/useLocalState.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldType.js b/reactium_modules_old/reactium-admin-core/Media/CTE/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/FieldType.js
rename to reactium_modules_old/reactium-admin-core/Media/CTE/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/_style.scss b/reactium_modules_old/reactium-admin-core/Media/CTE/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/CTE/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/CTE/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/CTE/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/CTE/reactium-hooks.js
new file mode 100644
index 00000000..dc42fc65
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/CTE/reactium-hooks.js
@@ -0,0 +1,23 @@
+import React from 'react';
+import { Editor } from './Editor';
+import { FieldType } from './FieldType';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+
+const ID = 'Media';
+
+const Ico = () => <Icon name='Feather.Image' />;
+
+const fieldType = {
+    icon: Ico,
+    label: __('Media Field'),
+    component: 'FieldTypeMedia',
+    tooltip: __('Media field type'),
+    order: Reactium.Enums.priority.neutral,
+};
+
+Reactium.Plugin.register(`CTE-${ID}`).then(() => {
+    Reactium.Content.Editor.register(ID, { component: Editor });
+    Reactium.Component.register(fieldType.component, FieldType);
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+});
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Creator/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Directory/Creator/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Creator/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Creator/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Directory/Creator/index.js b/reactium_modules_old/reactium-admin-core/Media/Directory/Creator/index.js
new file mode 100644
index 00000000..54095b9e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Directory/Creator/index.js
@@ -0,0 +1,248 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import slugify from 'slugify';
+import PropTypes from 'prop-types';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import domain from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import React, {
+    forwardRef,
+    useImperativeHandle,
+    useEffect,
+    useRef,
+    useState,
+} from 'react';
+
+import Reactium, {
+    useDerivedState,
+    useHandle,
+    useHookComponent,
+} from 'reactium-core/sdk';
+
+import { useReduxState } from '@atomic-reactor/use-select';
+
+import { Alert, Button, Dialog, Icon, Spinner } from 'reactium-ui';
+
+const noop = forwardRef((props, ref) => null);
+
+let FolderInput = (props, ref) => (
+    <div className='pl-xs-16 mb-xs-8'>
+        <label className='input-group' style={{ width: '100%' }}>
+            <span className='blue'>
+                <Icon name='Feather.Folder' className='mr-xs-4' />
+            </span>
+            <input
+                type='text'
+                ref={ref}
+                name='directory'
+                onBlur={e => {
+                    e.target.value = String(
+                        slugify(e.target.value),
+                    ).toLowerCase();
+                }}
+                placeholder={ENUMS.TEXT.FOLDER_CREATOR.DIRECTORY}
+                {...props}
+            />
+        </label>
+    </div>
+);
+
+FolderInput = forwardRef(FolderInput);
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: DirectoryCreator
+ * -----------------------------------------------------------------------------
+ */
+let DirectoryCreator = ({ children, ...props }, ref) => {
+    const [getState, dispatch] = useReduxState(domain.name);
+
+    const tools = useHandle('AdminTools');
+
+    const Modal = op.get(tools, 'Modal');
+
+    const Toast = op.get(tools, 'Toast');
+
+    const PermissionSelector = useHookComponent('PermissionSelector', noop);
+
+    // Refs
+    const containerRef = useRef();
+    const folderRef = useRef();
+    const permRef = useRef();
+
+    // State
+    const [state, setNewState] = useDerivedState({
+        ...props,
+        data: null,
+        error: null,
+        status: ENUMS.STATUS.READY,
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    const cname = () => {
+        const { className, namespace } = state;
+        return cn({ [className]: !!className, [namespace]: !!namespace });
+    };
+
+    const footer = () => ({
+        elements: [
+            <Button
+                color='primary'
+                size='sm'
+                onClick={save}
+                style={{ width: 175, marginLeft: 8 }}>
+                {ENUMS.TEXT.FOLDER_CREATOR.SAVE}
+            </Button>,
+        ],
+    });
+
+    const isMounted = () => !unMounted();
+
+    const onSave = e => {
+        const { directory, permissions } = e;
+        const { canRead = [], canWrite = [] } = permissions.state;
+
+        setState({
+            canRead,
+            canWrite,
+            directory,
+            error: null,
+            status: ENUMS.STATUS.PROCESSING,
+        });
+    };
+
+    const onError = e => {
+        const { directory, error, permissions } = e;
+        const { canRead = [], canWrite = [] } = permissions.state;
+
+        setState({
+            canRead,
+            canWrite,
+            directory,
+            error,
+            status: ENUMS.STATUS.READY,
+        });
+    };
+
+    const save = async () => {
+        const { status } = state;
+        if (status === ENUMS.STATUS.PROCESSING) return;
+
+        const permissions = permRef.current;
+        let { value: directory } = folderRef.current;
+
+        if (!directory) return;
+
+        directory = String(slugify(directory)).toLowerCase();
+
+        // Optimistically update the store
+        let { directories = [] } = getState;
+
+        directories.push(directory);
+        directories.sort();
+        directories = _.uniq(directories);
+
+        dispatch({ directories });
+
+        onSave({ directory, permissions });
+
+        Reactium.Cloud.run('directory-save', {
+            directory,
+            permissions: permissions.value,
+        })
+            .then(result => {
+                Toast.show({
+                    icon: 'Feather.Check',
+                    message: `Saved ${directory}`,
+                    type: Toast.TYPE.INFO,
+                });
+                Modal.hide();
+            })
+            .catch(err =>
+                onError({
+                    directory,
+                    permissions,
+                    error: err,
+                }),
+            );
+    };
+
+    const unMounted = () => !containerRef.current;
+
+    // Renderer
+    const render = () => {
+        const { canRead = [], canWrite = [], directory, error, status } = state;
+
+        return (
+            <div ref={containerRef} className={cname()}>
+                <Dialog
+                    collapsible={false}
+                    dismissable={true}
+                    footer={footer()}
+                    header={{ title: ENUMS.TEXT.FOLDER_CREATOR.TITLE }}
+                    onDismiss={() => Modal.hide()}>
+                    <div style={{ position: 'relative', height: 300 }}>
+                        <Scrollbars height={300}>
+                            {error && (
+                                <div className='px-xs-16 py-xs-16 mb-xs-8 bg-red white text-center italic'>
+                                    {op.get(error, 'message')}
+                                </div>
+                            )}
+                            <div className='py-xs-16'>
+                                <FolderInput
+                                    ref={folderRef}
+                                    defaultValue={directory}
+                                />
+                                <PermissionSelector
+                                    canRead={canRead}
+                                    canWrite={canWrite}
+                                    ref={permRef}
+                                />
+                            </div>
+                            {status === ENUMS.STATUS.PROCESSING && (
+                                <div
+                                    className='flex middle center'
+                                    style={{
+                                        position: 'absolute',
+                                        top: 0,
+                                        left: 0,
+                                        width: '100%',
+                                        height: '100%',
+                                        zIndex: 100000,
+                                    }}>
+                                    <Spinner />
+                                </div>
+                            )}
+                        </Scrollbars>
+                    </div>
+                </Dialog>
+            </div>
+        );
+    };
+
+    // Render
+    return render();
+};
+
+DirectoryCreator = forwardRef(DirectoryCreator);
+
+DirectoryCreator.ENUMS = ENUMS;
+
+DirectoryCreator.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    permissions: PropTypes.object,
+};
+
+DirectoryCreator.defaultProps = {
+    namespace: 'admin-directory-editor',
+    permissions: {},
+};
+
+export { DirectoryCreator as default, FolderInput };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/DeletePanel.js b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/DeletePanel.js
similarity index 97%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/DeletePanel.js
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Editor/DeletePanel.js
index c90d93a6..0cfa89f3 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/DeletePanel.js
+++ b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/DeletePanel.js
@@ -1,6 +1,6 @@
 import { useHandle } from 'reactium-core/sdk';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 import React, {
     forwardRef,
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/EditorPanel.js b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/EditorPanel.js
similarity index 98%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/EditorPanel.js
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Editor/EditorPanel.js
index 4d1cb9d2..351f921c 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/EditorPanel.js
+++ b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/EditorPanel.js
@@ -16,7 +16,7 @@ import React, {
     useState,
 } from 'react';
 
-import { Alert, Button, DataTable, Icon } from '@atomic-reactor/reactium-ui';
+import { Alert, Button, DataTable, Icon } from 'reactium-ui';
 
 const noop = forwardRef((props, ref) => null);
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Editor/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Editor/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/index.js b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/index.js
new file mode 100644
index 00000000..58b3a308
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Directory/Editor/index.js
@@ -0,0 +1,520 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import DeletePanel from './DeletePanel';
+import EditorPanel from './EditorPanel';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import domain from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/domain';
+
+import Reactium, {
+    useDerivedState,
+    useEventHandle,
+    useHandle,
+    useRegisterHandle,
+} from 'reactium-core/sdk';
+
+import { useReduxState } from '@atomic-reactor/use-select';
+
+import React, { forwardRef, useEffect, useRef } from 'react';
+
+import { Button, DataTable, Dialog, Icon, Scene, Toggle } from 'reactium-ui';
+
+import { Column, Row, SearchBar } from 'reactium-ui/DataTable';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: DirectoryEditor
+ * -----------------------------------------------------------------------------
+ */
+let DirectoryEditor = ({ className, namespace }) => {
+    const [getState, dispatch] = useReduxState(domain.name);
+
+    const tools = useHandle('AdminTools');
+
+    const Modal = op.get(tools, 'Modal');
+
+    const Toast = op.get(tools, 'Toast');
+
+    // Refs
+    const dialogRef = useRef();
+
+    const deleteRef = useRef();
+
+    const editorRef = useRef();
+
+    const sceneRef = useRef();
+
+    const tableRef = useRef();
+
+    // State
+    const [state, setState] = useDerivedState({
+        active: 'list',
+        deleteFiles: false,
+        objectId: null,
+        search: null,
+        selection: [],
+        status: ENUMS.STATUS.INIT,
+    });
+
+    const cname = () =>
+        cn({ [className]: !!className, [namespace]: !!namespace });
+
+    const columns = () => {
+        return {
+            directory: {
+                label: 'Folder',
+                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
+                sortType: DataTable.ENUMS.SORT_TYPE.STRING,
+            },
+            actions: {
+                label: '',
+                verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.TOP,
+                textAlign: 'right',
+                width: 200,
+            },
+        };
+    };
+
+    const directoryDelete = ({ directory, content }) => {
+        const updateRedux = () => {
+            let { directories = [] } = getState;
+
+            directories = _.without(directories, directory);
+            directories.sort();
+
+            dispatch({ directories });
+        };
+
+        const updateTable = () => {
+            const { directories = [] } = state;
+            const i = _.findIndex(directories, { directory });
+            if (i > -1) directories.splice(i, 1);
+
+            setState({ directories });
+        };
+
+        const updateFiles = () => {
+            if (content !== true) return;
+
+            const { library = {} } = getState;
+
+            Object.entries(library).forEach(([, files]) => {
+                Object.entries(files).forEach(([id, file]) => {
+                    if (file.directory !== directory) return;
+                    delete files[id];
+                });
+            });
+
+            dispatch({ library });
+        };
+
+        updateTable();
+        updateRedux();
+        updateFiles();
+
+        return Reactium.Cloud.run('directory-delete', {
+            directory,
+            content,
+        }).then(result => {
+            Toast.show({
+                icon: 'Feather.Check',
+                message: `Deleted ${directory}`,
+                type: Toast.TYPE.INFO,
+            });
+
+            return result;
+        });
+    };
+
+    const directorySave = ({ directory, objectId, permissions }) => {
+        const updateRedux = () => {
+            let { directories = [] } = getState;
+
+            directories.push(directory);
+            directories.sort();
+            directories = _.uniq(directories);
+
+            dispatch({ directories });
+        };
+
+        const updateTable = () => {
+            Reactium.Cloud.run('directories', { verbose: true }).then(
+                updateDirectories,
+            );
+        };
+
+        // Optimistically update the store
+        updateRedux();
+
+        // Save to server
+        return Reactium.Cloud.run('directory-save', {
+            directory,
+            objectId,
+            permissions,
+        }).then(result => {
+            Toast.show({
+                icon: 'Feather.Check',
+                message: `Saved ${directory}`,
+                type: Toast.TYPE.INFO,
+            });
+
+            updateTable();
+            return result;
+        });
+    };
+
+    const footer = () => {
+        const { active, deleteFiles, selection = [] } = state;
+
+        const elements = [];
+        const btnStyle = { padding: 0, width: 32, height: 32, marginRight: 8 };
+        const tooltip = {
+            'data-align': 'right',
+            'data-vertical-align': 'middle',
+        };
+
+        if (active === 'list') {
+            if (selection.length > 0) {
+                elements.push(
+                    <Button
+                        {...tooltip}
+                        color='danger'
+                        outline
+                        data-tooltip={ENUMS.TEXT.FOLDER_EDITOR.DELETE_ALL}
+                        style={btnStyle}>
+                        <Icon name='Feather.X' size={20} />
+                    </Button>,
+                );
+            }
+
+            elements.push(
+                <Button
+                    {...tooltip}
+                    color='clear'
+                    data-tooltip={ENUMS.TEXT.FOLDER_CREATOR.TITLE}
+                    style={btnStyle}
+                    onClick={() => navTo('add', { edit: null })}>
+                    <Icon name='Feather.Plus' size={22} />
+                </Button>,
+            );
+        }
+
+        if (active !== 'list') {
+            elements.push(
+                <Button
+                    {...tooltip}
+                    color='clear'
+                    data-tooltip={ENUMS.TEXT.BACK}
+                    onClick={() => sceneRef.current.back()}
+                    style={btnStyle}>
+                    <Icon name='Feather.ChevronLeft' size={22} />
+                </Button>,
+            );
+        }
+
+        if (active === 'add') {
+            elements.push(
+                <div className='flex flex-grow right middle'>
+                    <Button
+                        onClick={() => onSaveClick()}
+                        style={{ width: 175 }}>
+                        {ENUMS.TEXT.FOLDER_CREATOR.SAVE}
+                    </Button>
+                </div>,
+            );
+        }
+
+        if (active === 'delete') {
+            elements.push(
+                <div className='flex flex-grow right middle'>
+                    <Toggle
+                        defaultChecked={deleteFiles}
+                        label='Delete Files?'
+                        onChange={e => onDeleteFilesChange(e)}
+                        value={true}
+                    />
+                </div>,
+            );
+        }
+
+        return {
+            align: 'left',
+            elements,
+        };
+    };
+
+    const navTo = (panel, newState, direction = 'left') => {
+        if (newState) setState(newState);
+
+        sceneRef.current.navTo({
+            panel,
+            direction,
+        });
+    };
+
+    const onDeleteFilesChange = e => {
+        const deleteFiles = e.target.checked;
+        deleteRef.current.setState({ deleteFiles });
+        state.deleteFiles = deleteFiles;
+    };
+
+    const onItemSelect = () => {
+        const { data = [] } = tableRef.current;
+        const selection = data.filter(item => item.selected === true);
+        setState({ selection });
+    };
+
+    const onSaveClick = () => editorRef.current.save();
+
+    const onSceneBeforeChange = e => {
+        const { staged } = e;
+
+        if (staged === 'add') {
+            const { edit } = state;
+            editorRef.current.reset(edit);
+        }
+
+        if (staged === 'delete') {
+            const { item } = state;
+            deleteRef.current.setState({
+                ...item,
+                status: ENUMS.STATUS.READY,
+                table: tableRef.current,
+            });
+        }
+    };
+
+    const onSceneChange = e => {
+        const { active } = e;
+        setState({ active });
+    };
+
+    const updateDirectories = directories => {
+        directories = directories.map(item => {
+            item.actions = <Actions {...item} />;
+            return item;
+        });
+
+        setState({
+            directories,
+            status: ENUMS.STATUS.READY,
+            updated: Date.now(),
+        });
+    };
+
+    const Actions = item => {
+        const size = 32;
+        const margin = 12;
+        const buttons = [];
+        const canRead = [];
+        const canWrite = [];
+        const ACL = op.get(item, 'ACL', {});
+        const { roles, users } = Reactium.Cache.get('acl-targets');
+
+        Object.entries(ACL).forEach(([key, value]) => {
+            if (key === '*') return;
+
+            const { read, write } = value;
+            const isRole = String(key).startsWith('role:');
+
+            if (isRole) {
+                const name = key.split(':').pop();
+                const role = _.findWhere(roles, { name });
+                if (read && !write) canRead.push(role);
+                if (write) canWrite.push(role);
+            } else {
+                const user = _.findWhere(users, { objectId: key });
+                if (read && !write) canRead.push(user);
+                if (write) canWrite.push(user);
+            }
+        });
+
+        buttons.push(
+            <Button
+                key={`edit-directory-${item.objectId}`}
+                size='xs'
+                style={{
+                    padding: 0,
+                    width: size,
+                    height: size,
+                    marginLeft: margin,
+                }}
+                data-tooltip={`${ENUMS.TEXT.FOLDER_EDITOR.EDIT} ${item.directory}`}
+                data-align='left'
+                data-vertical-align='middle'
+                onClick={() =>
+                    navTo('add', {
+                        edit: {
+                            ...item,
+                            canRead: _.pluck(canRead, 'objectId'),
+                            canWrite: _.pluck(canWrite, 'objectId'),
+                            permissions: {
+                                canRead,
+                                canWrite,
+                            },
+                        },
+                    })
+                }>
+                <Icon name='Feather.Edit2' size={16} />
+            </Button>,
+        );
+
+        buttons.push(
+            <Button
+                color='danger'
+                key={`delte-directory-${item.objectId}`}
+                size='xs'
+                style={{
+                    padding: 0,
+                    width: size,
+                    height: size,
+                    marginLeft: margin,
+                }}
+                data-id={item.objectId}
+                data-tooltip={`${ENUMS.TEXT.FOLDER_EDITOR.DELETE} ${item.directory}`}
+                data-align='left'
+                data-vertical-align='middle'
+                onClick={() => navTo('delete', { item })}>
+                <Icon name='Feather.X' size={20} />
+            </Button>,
+        );
+
+        return buttons;
+    };
+
+    const Table = ({ id = 'list' }) => {
+        const { directories = [], search } = state;
+        return (
+            <DataTable
+                columns={columns()}
+                data={directories}
+                header={<TableHeader />}
+                height={214}
+                id={id}
+                multiselect
+                onSelect={onItemSelect}
+                onUnSelect={onItemSelect}
+                ref={tableRef}
+                scrollable
+                search={search}
+                style={{ marginTop: -1 }}
+            />
+        );
+    };
+
+    const TableHeader = () => {
+        const { directories = [] } = state;
+        const { search } = tableRef.current || {};
+        return (
+            <Row className='bg-white-dark'>
+                <Column verticalAlign='middle'>
+                    {directories.length}{' '}
+                    {directories.length === 1
+                        ? ENUMS.TEXT.FOLDER_EDITOR.TITLE[0]
+                        : ENUMS.TEXT.FOLDER_EDITOR.TITLE[1]}
+                </Column>
+                <Column width={200} textAlign='right'>
+                    <SearchBar
+                        defaultValue={search}
+                        placeholder={`${ENUMS.TEXT.SEARCH} ${ENUMS.TEXT.FOLDER_EDITOR.TITLE[1]}`}
+                        onChange={e =>
+                            tableRef.current.setState({
+                                search: e.target.value,
+                            })
+                        }
+                    />
+                </Column>
+            </Row>
+        );
+    };
+
+    // Extern Interface
+    const _handle = () => ({
+        directoryDelete,
+        directorySave,
+        navTo,
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    useRegisterHandle('MediaDirectories', () => handle, [
+        op.get(state, 'directories'),
+        op.get(state, 'status'),
+        tableRef.current,
+    ]);
+
+    // Side Effects
+    useEffect(() => {
+        const { directories, status } = state;
+
+        if (status !== ENUMS.STATUS.INIT) return;
+        if (directories) return;
+
+        // Get directories
+        setState({ status: ENUMS.STATUS.FETCHING });
+
+        Reactium.Cloud.run('directories', { verbose: true }).then(
+            updateDirectories,
+        );
+    }, [
+        op.get(state, 'directories'),
+        op.get(state, 'updated'),
+        op.get(state, 'status'),
+        tableRef.current,
+    ]);
+
+    useEffect(() => {
+        const newHandle = _handle();
+        if (_.isEqual(newHandle, handle)) return;
+        setHandle(newHandle);
+    });
+
+    // Renderer
+    const render = () => {
+        const { active, deleteFiles, edit = {} } = state;
+
+        return (
+            <div className={cname()}>
+                <Dialog
+                    ref={dialogRef}
+                    collapsible={false}
+                    dismissable={true}
+                    footer={footer()}
+                    header={{ title: ENUMS.TEXT.FOLDER_EDITOR.TITLE[1] }}
+                    onDismiss={() => Modal.hide()}>
+                    <Scene
+                        active={active}
+                        height={300}
+                        onChange={e => onSceneChange(e)}
+                        onBeforeChange={e => onSceneBeforeChange(e)}
+                        ref={sceneRef}
+                        width='100%'>
+                        <Table id='list' />
+                        <EditorPanel {...edit} id='add' ref={editorRef} />
+                        <DeletePanel
+                            deleteFiles={deleteFiles}
+                            id='delete'
+                            ref={deleteRef}
+                        />
+                    </Scene>
+                </Dialog>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+DirectoryEditor.ENUMS = ENUMS;
+
+DirectoryEditor.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+};
+
+DirectoryEditor.defaultProps = {
+    namespace: 'media-directory-editor',
+};
+
+export { DirectoryEditor as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Widget/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Directory/Widget/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Widget/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Widget/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Widget/index.js b/reactium_modules_old/reactium-admin-core/Media/Directory/Widget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/Widget/index.js
rename to reactium_modules_old/reactium-admin-core/Media/Directory/Widget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/useDirectories.js b/reactium_modules_old/reactium-admin-core/Media/Directory/useDirectories.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Directory/useDirectories.js
rename to reactium_modules_old/reactium-admin-core/Media/Directory/useDirectories.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/HeaderWidget/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/HeaderWidget/index.js
new file mode 100644
index 00000000..d4850842
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/HeaderWidget/index.js
@@ -0,0 +1,54 @@
+import { __, useHandle } from 'reactium-core/sdk';
+import React, { useEffect, useState } from 'react';
+import { Button, Icon } from 'reactium-ui';
+import useRouteParams from 'reactium_modules/@atomic-reactor/reactium-admin-core/Tools/useRouteParams';
+
+const SaveButton = () => {
+    const editor = useHandle('MediaEditor', {});
+
+    const [busy, setBusy] = useState(false);
+
+    const onStatus = () => {
+        setBusy(editor.isBusy());
+    };
+
+    useEffect(() => {
+        if (!editor) return;
+        if (Object.keys(editor).length < 1) return;
+
+        editor.addEventListener('STATUS', onStatus);
+        return () => {
+            editor.removeEventListener('STATUS', onStatus);
+        };
+    }, [Object.keys(editor)]);
+
+    const render = () => {
+        const label = busy ? __('Saving...') : __('Save File');
+        const icon = busy ? 'Feather.UploadCloud' : 'Feather.Check';
+        return (
+            <Button
+                appearance='pill'
+                className='mr-xs-24'
+                color={Button.ENUMS.COLOR.PRIMARY}
+                disabled={busy}
+                onClick={e => editor.submit(e)}
+                size={Button.ENUMS.SIZE.XS}
+                type={Button.ENUMS.TYPE.BUTTON}>
+                <Icon name={icon} size={18} />
+                <span
+                    className='hide-xs show-md ml-xs-12'
+                    style={{ minWidth: 56, textAlign: 'left' }}>
+                    {label}
+                </span>
+            </Button>
+        );
+    };
+
+    return render();
+};
+
+export default () => {
+    const { path } = useRouteParams(['path']);
+    const visible = String(path).startsWith('/admin/media/edit');
+    return visible ? <SaveButton /> : null;
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/Sidebar/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Editor/Sidebar/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/Sidebar/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Editor/Sidebar/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/Sidebar/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/Sidebar/index.js
new file mode 100644
index 00000000..13f45112
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/Sidebar/index.js
@@ -0,0 +1,139 @@
+import cn from 'classnames';
+import op from 'object-path';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, { useIsContainer } from 'reactium-core/sdk';
+import { Button, Icon, Collapsible } from 'reactium-ui';
+
+import React, {
+    forwardRef,
+    useImperativeHandle,
+    useEffect,
+    useRef,
+    useState,
+} from 'react';
+
+let Sidebar = ({ children, editor }, ref) => {
+    const { cx } = editor;
+
+    const containerRef = useRef();
+    const collapsibleRef = useRef();
+
+    const className = cx('sidebar');
+
+    const isContainer = useIsContainer();
+
+    const hash = op.get(Reactium.Routing, 'history.location.hash', '');
+
+    const [expanded, setExpanded] = useState(String(hash).endsWith('sidebar'));
+
+    const dismiss = e => {
+        if (!containerRef.current || !expanded) return;
+        if (isContainer(e.target, containerRef.current)) return;
+        collapsibleRef.current.collapse();
+    };
+
+    const collapse = () =>
+        collapsibleRef.current && collapsibleRef.current.collapse();
+
+    const expand = () =>
+        collapsibleRef.current && collapsibleRef.current.expand();
+
+    const toggle = () =>
+        collapsibleRef.current && collapsibleRef.current.toggle();
+
+    const _onCollapse = () => collapsibleRef.current && setExpanded(false);
+
+    const _onExpand = () => collapsibleRef.current && setExpanded(true);
+
+    const _onHotkey = e => {
+        if (!containerRef.current) return;
+        e.preventDefault();
+        if (collapsibleRef.current) toggle();
+        containerRef.current.focus();
+    };
+
+    useEffect(() => {
+        if (!collapsibleRef.current) return;
+        Reactium.Hotkeys.register('content-sidebar-toggle', {
+            callback: _onHotkey,
+            key: 'mod+\\',
+            order: Reactium.Enums.priority.lowest,
+            scope: document,
+        });
+
+        return () => {
+            Reactium.Hotkeys.unregister('content-sidebar-toggle');
+        };
+    }, []);
+
+    useEffect(() => {
+        if (typeof window === 'undefined') return;
+
+        window.addEventListener('mousedown', dismiss);
+        window.addEventListener('touchstart', dismiss);
+
+        return () => {
+            window.removeEventListener('mousedown', dismiss);
+            window.removeEventListener('touchstart', dismiss);
+        };
+    }, [containerRef.current, expanded]);
+
+    useEffect(() => {
+        handle.expanded = expanded;
+        editor.dispatch('sidebar-toggled', { expanded });
+        editor.dispatch(`sidebar-${expanded ? 'expanded' : 'collapsed'}`, {
+            expanded,
+        });
+    }, [expanded]);
+
+    // handle
+    const _handle = () => ({
+        collapse,
+        dismiss,
+        expand,
+        expanded,
+        setExpanded,
+        setHandle,
+        toggle,
+    });
+
+    const [handle, setHandle] = useState(_handle());
+
+    useImperativeHandle(ref, () => handle, [handle, expanded]);
+
+    const render = () => {
+        const icon = expanded ? 'Feather.ChevronRight' : 'Feather.ChevronLeft';
+        return (
+            <div
+                tabIndex={0}
+                className={cn(className, { expanded })}
+                ref={containerRef}>
+                <div className={cx('toolbar')}>
+                    <div className={cx('sidebar-toggle')}>
+                        <Button color='clear' onClick={toggle}>
+                            <Icon name={icon} size={20} />
+                        </Button>
+                        <div className='bg' />
+                    </div>
+                </div>
+                <Collapsible
+                    className={cx('collapsible')}
+                    direction='horizontal'
+                    expanded={expanded}
+                    onCollapse={_onCollapse}
+                    onExpand={_onExpand}
+                    ref={collapsibleRef}>
+                    <Scrollbars autoHeight autoHeightMin='calc(100vh - 60px)'>
+                        {children}
+                    </Scrollbars>
+                </Collapsible>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Sidebar = forwardRef(Sidebar);
+
+export default Sidebar;
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Audio/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Audio/index.js
new file mode 100644
index 00000000..34a803e7
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Audio/index.js
@@ -0,0 +1,121 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import Reactium, { __ } from 'reactium-core/sdk';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import { Button, Icon } from 'reactium-ui';
+import React, { useCallback, useEffect, useState } from 'react';
+
+const Audio = ({ editor, ...props }) => {
+    const { cx, state = {} } = editor;
+    const { value = {} } = state;
+
+    const [initialized, setInitialized] = useState(false);
+    const [style, setStyle] = useState({});
+    const [upload, setUpload] = useState(false);
+    const [url, setUrl] = useState(Reactium.Media.url(value.file));
+    const [imageUrl, setImageUrl] = useState();
+
+    const cancelUpload = () => {
+        editor.cancel();
+        setUrl(Reactium.Media.url(value.file));
+    };
+
+    const _onFileAdded = e => {
+        const { height: maxHeight, width: maxWidth } = e.file;
+        setUpload(true);
+        setStyle({ maxHeight, maxWidth });
+        setUrl(e.file.dataURL);
+    };
+
+    const initialize = () => {
+        if (upload !== false) setUpload(false);
+        if (initialized !== true) setInitialized(true);
+
+        if (!op.get(value, 'thumbnail')) {
+            setImageUrl(null);
+            return;
+        }
+
+        const newImageUrl = Reactium.Media.url(value.thumbnail);
+
+        const Img = new Image();
+
+        Img.onload = e => {
+            const { height: maxHeight, width: maxWidth } = Img;
+            setStyle({ maxHeight, maxWidth });
+            setImageUrl(newImageUrl);
+        };
+
+        Img.src = newImageUrl;
+    };
+
+    const render = useCallback(() => {
+        const deleteProps = {
+            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
+            color: Button.ENUMS.COLOR.DANGER,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: cancelUpload,
+            style: {
+                width: 42,
+                height: 42,
+                padding: 0,
+                marginLeft: 12,
+            },
+        };
+
+        const selectProps = {
+            appearance: Button.ENUMS.APPEARANCE.PILL,
+            color: Button.ENUMS.COLOR.PRIMARY,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: editor.browse,
+            style: {
+                width: 220,
+                marginLeft: upload ? 54 : 0,
+            },
+        };
+
+        return (
+            <>
+                <div className={cx('filename')}>{value.filename}</div>
+                <div className={cx('audio')}>
+                    {imageUrl && <img src={imageUrl} style={style} />}
+                    {!imageUrl && (
+                        <span className={cx('audio-icon')}>
+                            <Icon name='Linear.Mic' size={48} />
+                        </span>
+                    )}
+                    <audio width='100%' height='auto' controls>
+                        <source src={url} type={`audio/${value.ext}`} />
+                        {ENUMS.TEXT.AUDIO_UNSUPPORTED}
+                    </audio>
+                    <div className='flex middle'>
+                        <Button {...selectProps}>{__('Select Audio')}</Button>
+                        {upload && (
+                            <Button {...deleteProps}>
+                                <Icon name='Feather.X' size={18} />
+                            </Button>
+                        )}
+                    </div>
+                </div>
+            </>
+        );
+    });
+
+    useEffect(() => {
+        editor.addEventListener('FILE-ADDED', _onFileAdded);
+
+        return () => {
+            editor.removeEventListener('FILE-ADDED', _onFileAdded);
+        };
+    });
+
+    useEffect(() => {
+        if (initialized === true) return;
+        initialize();
+    }, []);
+
+    return render();
+};
+
+export { Audio, Audio as default };
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/File/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/File/index.js
new file mode 100644
index 00000000..993efe3d
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/File/index.js
@@ -0,0 +1,83 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import Reactium, { __ } from 'reactium-core/sdk';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import { Button, Icon } from 'reactium-ui';
+import React, { useCallback, useEffect, useState } from 'react';
+
+const File = ({ editor, ...props }) => {
+    const { cx, state = {} } = editor;
+    const { value = {} } = state;
+
+    const [upload, setUpload] = useState(false);
+    const [url, setUrl] = useState(Reactium.Media.url(value.file));
+
+    const cancelUpload = () => {
+        editor.cancel();
+        setUrl(Reactium.Media.url(value.file));
+    };
+
+    const _onFileAdded = e => {
+        const { height: maxHeight, width: maxWidth } = e.file;
+        setUpload(true);
+        setUrl(e.file.dataURL);
+    };
+
+    const render = useCallback(() => {
+        const deleteProps = {
+            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
+            color: Button.ENUMS.COLOR.DANGER,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: cancelUpload,
+            style: {
+                width: 42,
+                height: 42,
+                padding: 0,
+                marginLeft: 12,
+            },
+        };
+
+        const selectProps = {
+            appearance: Button.ENUMS.APPEARANCE.PILL,
+            color: Button.ENUMS.COLOR.PRIMARY,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: editor.browse,
+            style: {
+                width: 220,
+                marginLeft: upload ? 54 : 0,
+            },
+        };
+
+        return (
+            <>
+                <div className={cx('filename')}>{value.filename}</div>
+                <div className={cx('file')}>
+                    <a href={url} target='_blank' className={cx('file-icon')}>
+                        <Icon name='Linear.FileEmpty' />
+                    </a>
+                    <div className='flex middle'>
+                        <Button {...selectProps}>{__('Select File')}</Button>
+                        {upload && (
+                            <Button {...deleteProps}>
+                                <Icon name='Feather.X' size={18} />
+                            </Button>
+                        )}
+                    </div>
+                </div>
+            </>
+        );
+    });
+
+    useEffect(() => {
+        editor.addEventListener('FILE-ADDED', _onFileAdded);
+
+        return () => {
+            editor.removeEventListener('FILE-ADDED', _onFileAdded);
+        };
+    });
+
+    return render();
+};
+
+export { File, File as default };
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Image/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Image/index.js
new file mode 100644
index 00000000..f8dd3aba
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Image/index.js
@@ -0,0 +1,105 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+import React, { useCallback, useEffect, useState } from 'react';
+
+const MediaImage = ({ editor, ...props }) => {
+    const { cx, state = {} } = editor;
+    const { value = {} } = state;
+
+    const [initialized, setInitialized] = useState(false);
+    const [style, setStyle] = useState({});
+    const [upload, setUpload] = useState(false);
+    const [url, setUrl] = useState();
+
+    const cancelUpload = () => {
+        editor.cancel();
+        initialize();
+    };
+
+    const _onFileAdded = e => {
+        const { height: maxHeight, width: maxWidth } = e.file;
+        setUpload(true);
+        setStyle({ maxHeight, maxWidth });
+        setUrl(e.file.dataURL);
+    };
+
+    const initialize = () => {
+        if (upload !== false) setUpload(false);
+        if (initialized !== true) setInitialized(true);
+
+        const imageURL = Reactium.Media.url(value.file);
+
+        const Img = new Image();
+
+        Img.onload = e => {
+            const { height: maxHeight, width: maxWidth } = Img;
+            setStyle({ maxHeight, maxWidth });
+            setUrl(imageURL);
+        };
+
+        Img.src = imageURL;
+    };
+
+    const render = useCallback(() => {
+        const deleteProps = {
+            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
+            color: Button.ENUMS.COLOR.DANGER,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: cancelUpload,
+            style: {
+                width: 42,
+                height: 42,
+                padding: 0,
+                marginLeft: 12,
+            },
+        };
+
+        const selectProps = {
+            appearance: Button.ENUMS.APPEARANCE.PILL,
+            color: Button.ENUMS.COLOR.PRIMARY,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: editor.browse,
+            style: {
+                width: 220,
+                marginLeft: upload ? 54 : 0,
+            },
+        };
+
+        return !url ? null : (
+            <>
+                <div className={cx('filename')}>{value.filename}</div>
+                <div className={cx('image')}>
+                    <img src={url} style={style} />
+                    <div className='flex middle'>
+                        <Button {...selectProps}>{__('Select Image')}</Button>
+                        {upload && (
+                            <Button {...deleteProps}>
+                                <Icon name='Feather.X' size={18} />
+                            </Button>
+                        )}
+                    </div>
+                </div>
+            </>
+        );
+    });
+
+    useEffect(() => {
+        editor.addEventListener('FILE-ADDED', _onFileAdded);
+
+        return () => {
+            editor.removeEventListener('FILE-ADDED', _onFileAdded);
+        };
+    });
+
+    useEffect(() => {
+        if (initialized === true) return;
+        initialize();
+    }, []);
+
+    return render();
+};
+
+export { MediaImage as Image, MediaImage as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ImageCrop/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ImageCrop/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ImageCrop/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ImageCrop/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js
new file mode 100644
index 00000000..8a796e3d
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ImageCrop/index.js
@@ -0,0 +1,112 @@
+import op from 'object-path';
+import copy from 'copy-to-clipboard';
+import React, { useRef } from 'react';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import Reactium, { __, useHandle } from 'reactium-core/sdk';
+import { Button, Dialog, Icon } from 'reactium-ui';
+
+const ImageCrop = props => {
+    const { editor, field = 'thumbnail', label, options, tooltip } = props;
+
+    const imageRef = useRef();
+
+    const tools = useHandle('AdminTools');
+
+    const Toast = op.get(tools, 'Toast');
+
+    const { setState, state = {} } = editor;
+
+    const onCopyClick = () => {
+        const image = op.get(state.value, field);
+        const url = op.get(
+            state.value,
+            'redirect.url',
+            Reactium.Media.url(image),
+        );
+
+        if (url) {
+            copy(url);
+            Toast.show({
+                icon: 'Linear.ClipboardCheck',
+                message: ENUMS.TEXT.COPIED_TO_CLIPBOARD,
+                type: Toast.TYPE.INFO,
+            });
+        }
+    };
+
+    const onRefreshClick = () => {
+        const file = op.get(state.value, 'file');
+        const objectId = op.get(state.value, 'objectId');
+        const url = op.get(
+            state.value,
+            'redirect.url',
+            Reactium.Media.url(file),
+        );
+
+        if (url && objectId) {
+            return Reactium.Media.crop({ field, objectId, options, url }).then(
+                results => {
+                    const value = { ...state.value };
+                    op.set(value, field, results);
+                    setState({ value });
+
+                    Toast.show({
+                        icon: 'Feather.Image',
+                        message: __('Image updated!'),
+                        type: Toast.TYPE.INFO,
+                    });
+                },
+            );
+        }
+    };
+
+    const render = () => {
+        const image = op.get(state.value, field);
+        const url = image
+            ? Reactium.Media.url(image)
+            : op.get(state.value, 'redirect.url');
+
+        return !url ? null : (
+            <Dialog
+                header={{ title: label }}
+                pref={`admin.dialog.media.editor.${field}`}>
+                <div className='admin-image-crop'>
+                    {url && <img src={url} ref={imageRef} />}
+                    {!url && (
+                        <Icon
+                            name='Feather.Image'
+                            size={56}
+                            className='placeholder'
+                        />
+                    )}
+                    <Button
+                        appearance='pill'
+                        className='refresh'
+                        color='default'
+                        onClick={() => onRefreshClick()}
+                        data-tooltip={tooltip.generate}
+                        size='sm'
+                        type='button'>
+                        {__('Generate')}
+                    </Button>
+                    <div className='actions'>
+                        <Button
+                            color='default'
+                            type='button'
+                            appearance='circle'
+                            onClick={() => onCopyClick()}
+                            data-vertical-align='middle'
+                            data-align='left'
+                            data-tooltip={tooltip.copy}>
+                            <Icon name='Linear.ClipboardDown' size={20} />
+                        </Button>
+                    </div>
+                </div>
+            </Dialog>
+        );
+    };
+
+    return render();
+};
+
+export { ImageCrop, ImageCrop as default };
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Meta/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Meta/index.js
new file mode 100644
index 00000000..2fc6061b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Meta/index.js
@@ -0,0 +1,222 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import slugify from 'slugify';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import Reactium, { __ } from 'reactium-core/sdk';
+import React, { forwardRef, useEffect, useRef } from 'react';
+import { Dialog, TagsInput } from 'reactium-ui';
+
+const noop = () => {};
+
+const Meta = ({ editor, ...props }) => {
+    const tagsRef = useRef();
+
+    const { directories, state = {} } = editor;
+
+    const applyWatch = fields => {
+        fields.push('value.directory', 'value.url', 'value.filename');
+    };
+
+    const error = op.get(state, 'error', {});
+
+    const file = op.get(state, 'file');
+
+    const focus = () => {
+        if (typeof window === 'undefined') return;
+
+        const focus = op.get(error, 'focus');
+        if (!focus) return;
+
+        const elms = document.getElementsByName(focus);
+        if (elms.length < 1) return;
+
+        const elm = elms[0];
+        if (!elm) return;
+
+        elm.focus();
+    };
+
+    const formCls = field => {
+        const errorFields = op.get(error, 'fields', []);
+        return cn('form-group', { error: errorFields.includes(field) });
+    };
+
+    const ErrorMsg = ({ field }) => {
+        const errorFields = op.get(error, 'fields', []);
+        const idx = errorFields.indexOf(field);
+        return idx > -1 ? (
+            <small>{String(error.errors[idx]).replace('meta.', '')}</small>
+        ) : null;
+    };
+
+    const _onChange = ({ changed }) => {
+        // Update url on directory change
+        if (op.get(changed, 'value.directory')) {
+            const { current, previous } = changed.value.directory;
+            let { url } = state.value;
+
+            url = String(url)
+                .split(`/${previous}/`)
+                .join(`/${current}/`);
+
+            const value = { ...state.value, url };
+
+            editor.setState({ value });
+        }
+
+        // Update filename on url change
+        if (op.get(changed, 'value.url')) {
+            const { current } = changed.value.url;
+            let { filename } = state.value;
+            const newFilename = current.split('/').pop();
+            if (filename === newFilename) return;
+
+            const value = { ...state.value, filename: newFilename };
+            editor.setState({ value });
+        }
+
+        // Update url on filename change
+        if (op.get(changed, 'value.filename')) {
+            const { current } = changed.value.filename;
+            let { url } = state.value;
+
+            const arr = url.split('/');
+            arr.pop();
+
+            url = arr.join('/') + '/' + current;
+            if (state.value === url) return;
+
+            const value = { ...state.value, url };
+            editor.setState({ value });
+        }
+    };
+
+    const render = () => (
+        <>
+            <Dialog
+                header={{ title: __('File Info') }}
+                pref='admin.dialog.media.editor.info'>
+                <div className='p-xs-20'>
+                    <input type='hidden' name='filename' />
+                    <input type='hidden' name='objectId' />
+                    <input type='hidden' name='meta.size' />
+                    <Directory
+                        data={directories}
+                        label={__('Directory:')}
+                        name='directory'
+                    />
+                    <div className={formCls('url')}>
+                        <label>
+                            {__('URL')}:
+                            <input
+                                autoComplete='off'
+                                name='url'
+                                spellCheck={false}
+                                type='text'
+                            />
+                        </label>
+                        <ErrorMsg field='url' />
+                    </div>
+                </div>
+            </Dialog>
+            <Dialog
+                header={{ title: __('Meta') }}
+                pref='admin.dialog.media.editor.meta'>
+                <div className='p-xs-20'>
+                    <div className={formCls('meta.title')}>
+                        <label>
+                            {__('Title')}:
+                            <input
+                                autoComplete='off'
+                                name='meta.title'
+                                type='text'
+                            />
+                        </label>
+                        <ErrorMsg field='meta.title' />
+                    </div>
+                    <div className={formCls('meta.description')}>
+                        <label>
+                            {__('Description')}:
+                            <textarea
+                                autoComplete='off'
+                                name='meta.description'
+                                rows={4}
+                            />
+                        </label>
+                        <ErrorMsg field='meta.description' />
+                    </div>
+                    <Tags editor={editor} />
+                </div>
+            </Dialog>
+        </>
+    );
+
+    useEffect(() => {
+        Reactium.Hook.register('media-watch-fields', applyWatch);
+        editor.addEventListener('DIRTY', _onChange);
+
+        return () => {
+            editor.removeEventListener('DIRTY', _onChange);
+            Reactium.Hook.unregister('media-watch-fields', applyWatch);
+        };
+    });
+
+    return render();
+};
+
+const Directory = ({ data, label, name }) => (
+    <div className='form-group'>
+        <label>
+            {label}
+            <select name={name}>
+                {data &&
+                    data.map((item, i) => (
+                        <option key={`${name}-${i}`}>{item}</option>
+                    ))}
+            </select>
+        </label>
+    </div>
+);
+
+const Tags = ({ editor }) => {
+    const ref = useRef();
+    const { setState = noop, state = {} } = editor;
+    const { value = {} } = state;
+
+    const onChange = e => {
+        const newValue = { ...value };
+        op.set(newValue, 'meta.tags', e.value);
+        setState(newValue);
+    };
+
+    const getTags = () => {
+        let tags = op.get(value, 'meta.tags') || [];
+        if (typeof tags === 'string') {
+            if (String(tags).startsWith('[')) {
+                tags = JSON.parse(tags);
+            } else {
+                tags = tags.split(',');
+            }
+        }
+
+        return tags;
+    };
+
+    return (
+        <>
+            <div className='form-group mb-xs-0'>
+                <label>{__('Tags')}:</label>
+            </div>
+            <TagsInput
+                ref={ref}
+                placeholder={__('Add tag')}
+                name='meta.tags'
+                onChange={e => onChange(e)}
+                value={getTags()}
+            />
+        </>
+    );
+};
+
+export { Meta, Meta as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js
new file mode 100644
index 00000000..8db74398
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/index.js
@@ -0,0 +1,491 @@
+import axios from 'axios';
+import op from 'object-path';
+import Pick from './scene/Picker';
+import Thumb from './scene/Thumb';
+import Config from './scene/Config';
+import Delete from './scene/Delete';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import Reactium, {
+    __,
+    useHandle,
+    useHookComponent,
+    useRegisterHandle,
+} from 'reactium-core/sdk';
+
+import React, { useEffect, useRef, useState } from 'react';
+
+import { Dialog, Prefs, Scene, Spinner } from 'reactium-ui';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: ThumbnailSelect
+ * -----------------------------------------------------------------------------
+ */
+
+const ThumbnailSelect = initialProps => {
+    const { editor, id, property, ...props } = initialProps;
+
+    // TODO: Create settings option for these values
+    const DEFAULT_OPTIONS = {
+        property,
+        width: 200,
+        height: 200,
+        sizes: {
+            custom: { label: __('custom') },
+            default: { width: 200, height: 200, label: __('default') },
+            xs: { width: 48, height: 48, label: __('x-small') },
+            sm: { width: 72, height: 72, label: __('small') },
+            md: { width: 128, height: 128, label: __('medium') },
+            lg: { width: 240, height: 240, label: __('large') },
+            xl: { width: 400, height: 400, label: __('x-large') },
+        },
+    };
+
+    const [picker, setPicker] = useState();
+
+    // MediaEditor Handle
+    const { data, setState, state } = editor;
+
+    // Internal state
+    const [active, setActive] = useState();
+
+    const [expanded, setExpanded] = useState(
+        Prefs.get(`admin.dialog.media.editor.${property}.expanded`),
+    );
+    const [options, setNewOptions] = useState(DEFAULT_OPTIONS);
+
+    const [size, setSize] = useState('default');
+
+    const [status, setStatus] = useState(ENUMS.STATUS.READY);
+
+    const [thumbnail, setThumbnail] = useState(
+        op.get(state, ['value', property]),
+    );
+
+    const [thumbrendered, setRendered] = useState(false);
+
+    const [title, setTitle] = useState(props.title);
+
+    const elementRef = useRef({
+        image: null,
+        input: {},
+        scene: null,
+    });
+
+    const refs = elementRef.current;
+
+    const tools = useHandle('AdminTools');
+
+    const Toast = op.get(tools, 'Toast');
+
+    const Modal = op.get(tools, 'Modal');
+
+    const MediaPicker = useHookComponent('MediaPicker');
+
+    const deleteThumbnail = () => {
+        Reactium.Cloud.run('media-delete-thumbnail', {
+            objectId: op.get(state, 'value.objectId'),
+            property,
+        });
+
+        const value = { ...state.value };
+        op.del(value, property);
+
+        setRendered(false);
+        setState({ value });
+        setThumbnail(undefined);
+        navTo('pick', 'right');
+    };
+
+    const generateThumb = file =>
+        new Promise(async resolve => {
+            setRendered(false);
+            setStatus(ENUMS.STATUS.PROCESSING);
+
+            const isFile = file.constructor === File;
+            const reader = new FileReader();
+            const readImage = async (ext, data) => {
+                // Render the temp thumbnail
+                console.log(2);
+                renderThumbnail(data);
+
+                // Send to parse and update the object
+                const params = {
+                    ext,
+                    field: op.get(options, 'property'),
+                    objectId: op.get(state, 'value.objectId'),
+                    options: {
+                        width: op.get(options, 'width'),
+                        height: op.get(options, 'height'),
+                    },
+                    url: data,
+                };
+
+                const thm = await Reactium.Cloud.run(
+                    'media-image-crop',
+                    params,
+                );
+
+                if (!thm) {
+                    Toast.show({
+                        icon: 'Feather.AlertOctagon',
+                        message: `Unable to save ${String(
+                            title,
+                        ).toLowerCase()}`,
+                        type: Toast.TYPE.ERROR,
+                    });
+
+                    setStatus(ENUMS.STATUS.READY);
+                    navTo('pick', 'right');
+                    return;
+                }
+
+                Toast.show({
+                    icon: 'Feather.Check',
+                    message: `${__('Updated')} ${String(title).toLowerCase()}!`,
+                    type: Toast.TYPE.INFO,
+                });
+
+                // Preload the image so there's no blink
+                const img = new Image();
+                img.onload = () => {
+                    setThumbnail(thm);
+                    resolve(thm);
+                };
+
+                img.src = Reactium.Media.url(thm);
+            };
+
+            if (isFile) {
+                const ext = file.name.split('.').pop();
+                reader.onload = () => readImage(ext, reader.result);
+                reader.readAsDataURL(file);
+            } else {
+                const ext = op.get(file, 'ext');
+                const url = Reactium.Media.url(file.file);
+                const fetch = await axios.get(url, {
+                    responseType: 'blob',
+                });
+
+                const filedata = op.get(fetch, 'data');
+                reader.onload = () => readImage(ext, reader.result);
+                reader.readAsDataURL(filedata);
+            }
+        });
+
+    const navTo = (panel, direction = 'left', animationSpeed) => {
+        refs.scene.navTo({ animationSpeed, panel, direction });
+    };
+
+    const renderThumbnail = (dataURL, imageElement) => {
+        let width = op.get(imageElement, 'width');
+        let height = op.get(imageElement, 'height');
+
+        const { image } = refs.canvas;
+
+        image.style.opacity = 0;
+        image.style.backgroundImage = 'none';
+        image.style.width = '100%';
+        image.style.height = '100%';
+
+        // navigate to thumbnail
+        navTo('thumb');
+
+        const {
+            width: containerWidth,
+            height: containerHeight,
+        } = image.getBoundingClientRect();
+
+        if (width && height) setOptions({ width, height });
+
+        width =
+            width ||
+            op.get(
+                options,
+                'width',
+                op.get(options, 'sizes.default.width', 200),
+            );
+
+        height =
+            height ||
+            op.get(
+                options,
+                'height',
+                op.get(options, 'sizes.default.height', 200),
+            );
+
+        image.style.backgroundImage = `url('${dataURL}')`;
+        image.style.width = `${width}px`;
+        image.style.height = `${height}px`;
+
+        if (width > containerWidth) {
+            const r = containerWidth / width;
+            const h = height * r;
+            image.style.width = `${containerWidth}px`;
+            image.style.height = `${h}px`;
+        }
+
+        if (height > containerHeight) {
+            const r = containerHeight / height;
+            const w = width * r;
+            image.style.height = `${containerHeight}px`;
+            image.style.width = `${w}px`;
+        }
+
+        image.style.opacity = 1;
+        setRendered(true);
+    };
+
+    const setOptions = newOptions =>
+        setNewOptions({
+            ...options,
+            ...newOptions,
+        });
+
+    const setRef = (elm, ref) => op.set(refs, ref, elm);
+
+    const showPicker = () => {
+        Modal.show(
+            <MediaPicker
+                confirm
+                dismissable
+                filter='image'
+                ref={elm => setPicker(elm)}
+                title={__('Select Image')}
+            />,
+        );
+    };
+
+    const onCollapse = () => {
+        if (active !== 'delete') return;
+        navTo('thumb', 'right', 0.001);
+    };
+
+    const onExpand = () => {
+        if (expanded) return;
+
+        const image = op.get(refs, 'canvas.image');
+        image.style.width = 'auto';
+        image.style.height = '100%';
+
+        onThumbnailUpdate();
+        setExpanded(true);
+    };
+
+    const onFileSelect = e => {
+        const files = e.target.files;
+        if (files.length < 1) return;
+        generateThumb(files[0]).then(() => setStatus(ENUMS.STATUS.READY));
+    };
+
+    const onMediaDismiss = () => {
+        Modal.dismiss();
+    };
+
+    const onMediaSelect = e => {
+        const files = Object.values(e.target.value);
+        if (files.length < 1) return;
+        generateThumb(files[0]).then(() => setStatus(ENUMS.STATUS.READY));
+    };
+
+    const onOptionChange = e => {
+        if (!e.target.dataset.key) return;
+        const value = e.target.value;
+        const key = e.target.dataset.key;
+        setOptions({ [key]: value });
+    };
+
+    const onSceneChange = ({ active: current, previous }) => {
+        switch (previous) {
+            case 'thumb':
+                refs.input.file.type = 'text';
+                refs.input.file.type = 'file';
+                break;
+
+            case 'delete':
+                setTitle(props.title);
+                break;
+        }
+
+        switch (current) {
+            case 'delete':
+                setTitle(`${__('Delete')} ${title}`);
+                break;
+        }
+
+        setActive(current);
+    };
+
+    const onSidebarToggle = e => {
+        const { expanded } = e;
+        if (expanded !== true) return;
+        onThumbnailUpdate(true);
+    };
+
+    const onSizeChange = e => setSize(e.item.value);
+
+    const onThumbnailUpdate = (override = false) => {
+        const image = op.get(refs, 'canvas.image');
+        if (!override && (!image || !thumbnail || thumbrendered)) return;
+
+        image.style.opacity = 0;
+        const thumbURL = Reactium.Media.url(thumbnail);
+        const img = new Image();
+        img.onload = () => {
+            const { sizes } = options;
+            setSize(
+                Object.keys(sizes).reduce((sel, key) => {
+                    const item = sizes[key];
+                    const w = op.get(item, 'width');
+                    const h = op.get(item, 'height');
+
+                    if (w === img.width && h === img.height) {
+                        sel = key;
+                    }
+
+                    return sel;
+                }, 'custom'),
+            );
+
+            setOptions({ width: img.width, height: img.height });
+            renderThumbnail(thumbURL, {
+                width: img.width,
+                height: img.height,
+            });
+        };
+        img.src = thumbURL;
+    };
+
+    const handle = () => ({
+        active,
+        data,
+        deleteThumbnail,
+        id,
+        navTo,
+        onOptionChange,
+        onFileSelect,
+        onSceneChange,
+        onSizeChange,
+        options,
+        property,
+        refs,
+        setOptions,
+        setRef,
+        setSize,
+        setState,
+        setStatus,
+        setThumbnail,
+        showPicker,
+        size,
+        state,
+        status,
+        thumbnail,
+        title,
+    });
+
+    useRegisterHandle(id, handle, [
+        active,
+        options,
+        property,
+        refs,
+        size,
+        status,
+        thumbnail,
+        title,
+    ]);
+
+    // Set active
+    useEffect(() => {
+        if (active) return;
+        const current = thumbnail ? 'thumb' : 'pick';
+        setActive(current);
+    }, [active, thumbnail]);
+
+    // Set size
+    useEffect(() => {
+        const { sizes } = options;
+        const { width, height } = sizes[size];
+        setOptions({ width, height });
+    }, [size]);
+
+    // Thumbnail hide if collapsed
+    useEffect(() => {
+        const image = op.get(refs, 'canvas.image');
+        if (!image || expanded === true) return;
+        image.style.opacity = 0;
+    }, [expanded, op.get(refs, 'canvas.image')]);
+
+    // Thumbnail update
+    useEffect(() => {
+        if (expanded === false || active !== 'thumb') return;
+        onThumbnailUpdate();
+    }, [active, thumbnail]);
+
+    // Picker Ref
+    useEffect(() => {
+        if (!picker) return;
+        const listeners = [
+            [picker, 'change', onMediaSelect],
+            [picker, 'dismiss', onMediaDismiss],
+        ];
+
+        listeners.forEach(([target, event, callback]) =>
+            target.addEventListener(event, callback),
+        );
+
+        return () => {
+            listeners.forEach(([target, event, callback]) =>
+                target.removeEventListener(event, callback),
+            );
+        };
+    }, [picker]);
+
+    useEffect(() => {
+        editor.addEventListener('SIDEBAR-TOGGLED', onSidebarToggle);
+
+        return () => {
+            editor.removeEventListener('SIDEBAR-TOGGLED', onSidebarToggle);
+        };
+    });
+
+    const render = () => (
+        <Dialog
+            onCollapse={e => onCollapse(e)}
+            onExpand={e => onExpand(e)}
+            header={{ title }}
+            pref={`admin.dialog.media.editor.${property}`}>
+            <input
+                hidden
+                onChange={e => onFileSelect(e)}
+                ref={elm => setRef(elm, 'input.file')}
+                type='file'
+                visibility='hidden'
+            />
+            <Scene
+                active={active}
+                width='100%'
+                height={280}
+                onChange={e => onSceneChange(e)}
+                ref={elm => setRef(elm, 'scene')}>
+                <Config {...handle()} id='config' />
+                <Pick {...handle()} id='pick' />
+                <Thumb {...handle()} id='thumb' />
+                <Delete {...handle()} id='delete' />
+            </Scene>
+            {status === ENUMS.STATUS.PROCESSING && (
+                <div className='admin-thumbnail-select-blocker'>
+                    <Spinner />
+                </div>
+            )}
+        </Dialog>
+    );
+
+    return render();
+};
+
+ThumbnailSelect.defaultProps = {
+    property: 'thumbnail',
+    title: __('Thumbnail'),
+};
+
+export { ThumbnailSelect, ThumbnailSelect as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js
similarity index 98%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js
index 663b54f5..e55e795b 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Config.js
@@ -1,7 +1,7 @@
 import React, { useEffect } from 'react';
 import op from 'object-path';
 import { __ } from 'reactium-core/sdk';
-import { Button, Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Dropdown, Icon } from 'reactium-ui';
 
 export default ({
     id,
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js
new file mode 100644
index 00000000..c6f02393
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Delete.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import op from 'object-path';
+import { __ } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+
+export default ({ deleteThumbnail, id, navTo, state, ...handle }) => {
+    const render = () => {
+        return (
+            <div id={id} className='admin-thumbnail-select'>
+                <div className='delete-scene'>
+                    <p>{__('Are you sure?')}</p>
+                    <div className='flex'>
+                        <Button
+                            className='mx-xs-12'
+                            color='danger'
+                            size='sm'
+                            style={{ width: 80 }}
+                            onClick={() => navTo('thumb', 'right')}>
+                            {__('No')}
+                        </Button>
+                        <Button
+                            className='mx-xs-12'
+                            color='primary'
+                            size='sm'
+                            style={{ width: 80 }}
+                            onClick={() => deleteThumbnail()}>
+                            {__('Yes')}
+                        </Button>
+                    </div>
+                </div>
+            </div>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js
similarity index 97%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js
index d6c47c3f..5b5a6ee2 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Picker.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import op from 'object-path';
 import { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 export default ({
     refs,
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js
similarity index 97%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js
index afab1039..824d0205 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/ThumbnailSelect/scene/Thumb.js
@@ -3,7 +3,7 @@ import op from 'object-path';
 import copy from 'copy-to-clipboard';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
 import Reactium, { __, useHandle } from 'reactium-core/sdk';
-import { Button, Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Dropdown, Icon } from 'reactium-ui';
 
 export default ({
     id,
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Video/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Video/index.js
new file mode 100644
index 00000000..8563798b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/Video/index.js
@@ -0,0 +1,82 @@
+import ReactPlayer from 'react-player';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+import React, { useCallback, useEffect, useState } from 'react';
+
+const Video = ({ editor }) => {
+    const { cx, state = {} } = editor;
+    const { value = {} } = state;
+
+    const [upload, setUpload] = useState(false);
+    const [url, setUrl] = useState(Reactium.Media.url(value.file));
+
+    const cancelUpload = () => {
+        editor.cancel();
+        setUrl(Reactium.Media.url(value.file));
+    };
+
+    const _onFileAdded = e => {
+        setUpload(true);
+        setUrl(e.file.dataURL);
+    };
+
+    const render = useCallback(() => {
+        const deleteProps = {
+            appearance: Button.ENUMS.APPEARANCE.CIRCLE,
+            color: Button.ENUMS.COLOR.DANGER,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: cancelUpload,
+            style: {
+                width: 42,
+                height: 42,
+                padding: 0,
+                marginLeft: 12,
+            },
+        };
+
+        const selectProps = {
+            appearance: Button.ENUMS.APPEARANCE.PILL,
+            color: Button.ENUMS.COLOR.PRIMARY,
+            size: Button.ENUMS.SIZE.MD,
+            onClick: editor.browse,
+            style: {
+                width: 220,
+                marginLeft: upload ? 54 : 0,
+            },
+        };
+
+        return (
+            <>
+                <div className={cx('filename')}>{value.filename}</div>
+                <div className={cx('video')}>
+                    <ReactPlayer
+                        controls
+                        url={url}
+                        width='100%'
+                        height='100%'
+                    />
+                    <div className='flex middle'>
+                        <Button {...selectProps}>{__('Select Video')}</Button>
+                        {upload && (
+                            <Button {...deleteProps}>
+                                <Icon name='Feather.X' size={18} />
+                            </Button>
+                        )}
+                    </div>
+                </div>
+            </>
+        );
+    });
+
+    useEffect(() => {
+        editor.addEventListener('FILE-ADDED', _onFileAdded);
+
+        return () => {
+            editor.removeEventListener('FILE-ADDED', _onFileAdded);
+        };
+    }, []);
+
+    return render();
+};
+
+export { Video, Video as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_plugins/index.js
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_plugins/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Editor/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Editor/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Editor/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Editor/index.js b/reactium_modules_old/reactium-admin-core/Media/Editor/index.js
new file mode 100644
index 00000000..553d7d4b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Editor/index.js
@@ -0,0 +1,830 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import ENUMS from '../enums';
+import slugify from 'slugify';
+import Sidebar from './Sidebar';
+import useDirectories from '../Directory/useDirectories';
+
+import React, { useCallback, useEffect, useRef, useState } from 'react';
+
+import Reactium, {
+    __,
+    useAsyncEffect,
+    useDerivedState,
+    useEventHandle,
+    useHookComponent,
+    useRegisterHandle,
+    Zone,
+} from 'reactium-core/sdk';
+
+import { Alert, Dropzone, EventForm, Icon, Spinner, Toast } from 'reactium-ui';
+
+const noop = () => {};
+
+ENUMS.DEBUG = false;
+
+const debug = (...args) => {
+    if (ENUMS.DEBUG === true) console.log(...args);
+};
+
+const alertDefault = {
+    color: Alert.ENUMS.COLOR.INFO,
+    icon: 'Feather.Flag',
+};
+
+export class MediaEvent extends CustomEvent {
+    constructor(type, data) {
+        super(type, data);
+
+        op.del(data, 'type');
+        op.del(data, 'target');
+
+        Object.entries(data).forEach(([key, value]) => {
+            if (!this[key]) {
+                try {
+                    this[key] = value;
+                } catch (err) {}
+            } else {
+                key = `__${key}`;
+                this[key] = value;
+            }
+        });
+    }
+}
+
+const Editor = ({
+    className,
+    dropzoneProps,
+    namespace,
+    onError,
+    onFail,
+    onLoad,
+    onStatus,
+    onSubmit,
+    onSuccess,
+    onValidate,
+    params,
+    ...props
+}) => {
+    // Hooks and External Components
+    const Helmet = useHookComponent('Helmet');
+
+    const directories = useDirectories();
+
+    // Refs
+    const alertRef = useRef();
+    const dropzoneRef = useRef();
+    const formRef = useRef();
+    const persist = useRef({});
+
+    // States
+    const defaultState = {
+        ...params,
+        clean: true,
+        dirty: false,
+        initialized: false,
+        status: ENUMS.STATUS.INIT,
+        title: op.get(props, 'title'),
+        value: {},
+    };
+
+    const [alert, setNewAlert] = useState(alertDefault);
+
+    const [errors, setNewErrors] = useState();
+
+    const [, setUpdated] = useState();
+
+    const [prevState, setPrevState] = useDerivedState({
+        ...defaultState,
+        id: null,
+    });
+
+    const [state, update] = useDerivedState({
+        ...defaultState,
+        errors: {},
+        value: {},
+        type: undefined,
+    });
+
+    // Set operations
+    const forceUpdate = () => {
+        if (unMounted()) return;
+        setUpdated(Date.now());
+    };
+
+    const setAlert = newAlert => {
+        if (unMounted()) return;
+        setNewAlert(newAlert);
+        forceUpdate(Date.now());
+    };
+
+    const setErrors = newErrors => {
+        if (unMounted()) return;
+        setNewErrors(newErrors);
+    };
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setPrevState(Object.assign(state));
+        update(newState);
+    };
+
+    // Functions
+    const browse = () => dropzoneRef.current.browseFiles();
+
+    const cancel = () => {
+        const { filename } = persist.current;
+        const value = { ...state.value, filename };
+        setState({ upload: null, value });
+    };
+
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const cname = cn(cx(), className);
+
+    const dispatch = async (eventType, event, callback) => {
+        if (unMounted()) return;
+
+        eventType = String(eventType).toUpperCase();
+
+        // passive dirty events
+        const dirtyEvents = _.pluck(Reactium.Media.DirtyEvent.list, 'id');
+        if (dirtyEvents.includes(String(eventType).toLowerCase())) {
+            if (!_.isEqual(persist.current, state.value)) {
+                setState({ dirty: event, clean: false });
+
+                // NOTE: DONOT await these dispatch calls so that they happen after the current process
+                dispatch('status', { event: 'dirty', ...event });
+                dispatch('dirty', event);
+            } else {
+                setState({ clean: event, dirty: false });
+                await dispatch('status', { event: 'clean', ...event });
+                await dispatch('clean', event);
+                return;
+            }
+        }
+
+        if (op.has(event, 'event')) {
+            op.set(event, 'event', String(event.event).toUpperCase());
+            if (eventType === 'STATUS') {
+                setState({ status: event.event });
+            }
+        }
+
+        const evt = new MediaEvent(eventType, event);
+        handle.dispatchEvent(evt);
+
+        debug(eventType, evt);
+
+        await Reactium.Hook.run(`form-user-${eventType}`, evt, handle);
+        if (unMounted()) return;
+
+        if (eventType === 'STATUS') callback = onStatus;
+        if (typeof callback === 'function') await callback(evt);
+        if (unMounted()) return;
+
+        // passive clean events
+        const scrubEvents = _.pluck(Reactium.Media.ScrubEvent.list, 'id');
+        if (scrubEvents.includes(String(eventType).toLowerCase())) {
+            setState({ clean: event, dirty: false });
+            await dispatch('status', { event: 'clean', ...event });
+            await dispatch('clean', event);
+        }
+    };
+
+    const getData = async objectId => {
+        if (unMounted()) return;
+        setState({ status: ENUMS.STATUS.LOADING, initialized: false });
+
+        if (formRef.current) formRef.current.setValue(null);
+
+        await dispatch('status', { event: ENUMS.STATUS.LOADING, objectId });
+        await dispatch(ENUMS.STATUS.LOADING, { objectId });
+
+        let value = Reactium.Media.selected
+            ? Reactium.Media.selected
+            : await Reactium.Media.retrieve(objectId);
+
+        persist.current = Object.assign(value);
+
+        Reactium.Media.selected = null;
+
+        if (unMounted()) return;
+
+        setState({
+            value,
+            status: ENUMS.STATUS.LOADED,
+            type: String(op.get(value, 'type')).toLowerCase(),
+        });
+
+        await dispatch('status', {
+            event: ENUMS.STATUS.LOADED,
+            objectId,
+            value,
+        });
+
+        await dispatch(ENUMS.STATUS.LOADED, { objectId, value }, onLoad);
+
+        _.defer(async () => {
+            setState({ status: ENUMS.STATUS.READY, initialized: true });
+            await dispatch('status', { event: ENUMS.STATUS.READY });
+            await dispatch('ready', { value });
+        });
+    };
+
+    const _initialize = () => {
+        if (state.status === ENUMS.STATUS.INIT) {
+            getData(state.id);
+        }
+
+        return () => {};
+    };
+
+    const initialize = _.once(_initialize);
+
+    const isBusy = () => {
+        const statuses = [
+            ENUMS.STATUS.INIT,
+            ENUMS.STATUS.LOADING,
+            ENUMS.STATUS.SAVING,
+            ENUMS.STATUS.VALIDATING,
+            ENUMS.STATUS.VALIDATED,
+        ];
+
+        return statuses.includes(String(state.status).toUpperCase());
+    };
+
+    const isClean = () => !isDirty();
+
+    const isDirty = () => state.dirty !== false;
+
+    const isMounted = () => !unMounted();
+
+    const parseErrorMessage = (str, replacers = {}) => {
+        Object.entries(replacers).forEach(([key, value]) => {
+            str = str.split(key).join(value);
+        });
+
+        return str;
+    };
+
+    const save = async value => {
+        const upload = op.get(state, 'upload');
+        if (upload) {
+            op.set(value, 'file', upload);
+        } else {
+            op.del(value, 'file');
+        }
+
+        // Clean up value object:
+        [
+            'capabilities',
+            'createdAt',
+            'fetched',
+            'type',
+            'uuid',
+            'updateAt',
+            'upload',
+            'user',
+        ].forEach(param => op.del(value, param));
+
+        setAlert(alertDefault);
+        setErrors(undefined);
+
+        await dispatch('status', { event: ENUMS.STATUS.VALIDATED, value });
+        await dispatch(ENUMS.STATUS.VALIDATED, { value });
+
+        await dispatch('status', { event: ENUMS.STATUS.SAVING, value });
+        await dispatch(ENUMS.STATUS.SAVING, { value }, onSubmit);
+
+        await Reactium.Hook.run('media-submit', value);
+
+        return Reactium.Media.update(value)
+            .then(async response => {
+                if (_.isError(response)) {
+                    return Promise.reject(response);
+                } else {
+                    return _onSuccess({ media: response });
+                }
+            })
+            .catch(error => _onFail({ error, value }));
+    };
+
+    const saveHotkey = e => {
+        if (e) e.preventDefault();
+        submit();
+    };
+
+    const submit = () => {
+        if (unMounted() || isBusy()) return;
+        formRef.current.submit();
+    };
+
+    const unMounted = () => {
+        if (!formRef.current) return true;
+        if (!formRef.current.form) return true;
+
+        return false;
+    };
+
+    const _onError = async context => {
+        const { error } = context;
+        const errors = Object.values(error);
+
+        const alertObj = {
+            message: <ErrorMessages errors={errors} editor={handle} />,
+            icon: 'Feather.AlertOctagon',
+            color: Alert.ENUMS.COLOR.DANGER,
+        };
+
+        if (isMounted()) {
+            setErrors(errors);
+            setAlert(alertObj);
+        }
+
+        _.defer(async () => {
+            await dispatch('status', { event: ENUMS.STATUS.ERROR, error });
+            await dispatch(ENUMS.STATUS.ERROR, { error }, onError);
+        });
+
+        return context;
+    };
+
+    const _onFail = async e => {
+        const { error, value } = e;
+        if (error) {
+            const alertObj = {
+                color: Alert.ENUMS.COLOR.DANGER,
+                message: (
+                    <ul className={cx('errors')}>
+                        <li>{op.get(error, 'message')}</li>
+                    </ul>
+                ),
+                icon: 'Feather.AlertOctagon',
+            };
+
+            setAlert(alertObj);
+        }
+
+        await dispatch('status', {
+            event: ENUMS.STATUS.FAILED,
+            error,
+            value,
+        });
+        await dispatch(ENUMS.STATUS.FAILED, { error, value }, onFail);
+
+        let message = __('Unable to save %filename');
+        message = String(message).replace(
+            /\%filename/gi,
+            op.get(value, 'filename', 'file'),
+        );
+
+        Toast.show({
+            icon: 'Feather.AlertOctagon',
+            message,
+            type: Toast.TYPE.ERROR,
+        });
+
+        return Promise.resolve(e);
+    };
+
+    const _onFileAdded = async e => {
+        // Already processing an upload?
+        if (state.status === ENUMS.STATUS.PROCESSING) {
+            Toast.show({
+                type: Toast.TYPE.ERROR,
+                icon: 'Feather.AlertOctagon',
+                message: 'Upload in progress',
+            });
+
+            return;
+        }
+
+        const value = { ...state.value };
+
+        // Get the added file
+        const file = e.added[0];
+
+        await dispatch('status', { event: 'before-file-added', file, value });
+        await dispatch('before-file-added', { file, value });
+
+        // Check file size
+        if (file.size > ENUMS.MAX_SIZE) {
+            const error = {
+                color: Alert.ENUMS.COLOR.DANGER,
+                icon: 'Feather.AlertOctagon',
+                message: `File exceeds the max file size of ${ENUMS.MAX_SIZE /
+                    1048576}mb`,
+            };
+
+            setAlert(error);
+
+            await dispatch('status', {
+                error,
+                detail: e,
+                value,
+                event: 'file-error',
+            });
+            await dispatch('file-error', { error, detail: e, value });
+
+            return;
+        }
+
+        // Check file type
+        const { type } = value;
+        const ext = String(
+            String(file.name)
+                .split('.')
+                .pop(),
+        ).toUpperCase();
+
+        if (!ENUMS.TYPE[type].includes(ext)) {
+            const error = {
+                color: Alert.ENUMS.COLOR.DANGER,
+                icon: 'Feather.AlertOctagon',
+                message: `Invalid ${type} file type ${ext}`,
+            };
+
+            setAlert(error);
+
+            await dispatch('status', {
+                error,
+                detail: e,
+                value,
+                event: 'file-error',
+            });
+            await dispatch('file-error', { error, detail: e, value });
+
+            return;
+        }
+
+        // Read file
+        const reader = new FileReader();
+        reader.onload = async () => {
+            op.set(value, 'filename', String(slugify(file.name)).toLowerCase());
+            op.set(value, 'meta.size', file.size);
+            op.set(value, 'ext', ext);
+
+            await dispatch('status', { event: 'file-added', file, value });
+            await dispatch('file-added', { file, value });
+
+            dropzoneRef.current.dropzone.removeAllFiles();
+
+            setState({
+                upload: file,
+                value,
+            });
+        };
+
+        reader.readAsText(file.slice(0, 4));
+    };
+
+    const _onFileError = e => {
+        let { message } = e;
+        message = String(message)
+            .toLowerCase()
+            .includes('file is too big')
+            ? `File exceeds the max file size of ${ENUMS.MAX_SIZE / 1048576}mb`
+            : message;
+
+        const error = {
+            color: Alert.ENUMS.COLOR.DANGER,
+            icon: 'Feather.AlertOctagon',
+            message,
+        };
+
+        setAlert(error);
+
+        dispatch('status', { detail: e, event: 'file-error', error });
+        dispatch('file-error', { error, event: e });
+    };
+
+    const _onFormChange = e => {
+        if (state.status === ENUMS.STATUS.LOADED) return;
+
+        const { value: currentValue } = state;
+        const { value: formValue } = e;
+
+        if (_.isEqual(currentValue, formValue)) return;
+        const value = { ...currentValue, ...formValue };
+        setState({ value });
+    };
+
+    const _onFormSubmit = e => {
+        const value = Object.assign(e.value);
+        return save(value);
+    };
+
+    const _onSuccess = async value => {
+        let message = __('Saved %filename!');
+        message = message.replace(/\%filename/gi, value.filename);
+
+        persist.current = value;
+
+        Toast.show({
+            icon: 'Feather.Check',
+            message,
+            type: Toast.TYPE.INFO,
+        });
+
+        await dispatch('status', {
+            event: ENUMS.STATUS.SAVED,
+            value,
+        });
+
+        await dispatch(ENUMS.STATUS.SAVED, { value }, onSuccess);
+
+        setState({ value, upload: undefined });
+
+        return Promise.resolve(value);
+    };
+
+    const _onValidate = async e => {
+        const { value, ...context } = e;
+
+        await dispatch('status', {
+            event: ENUMS.STATUS.VALIDATING,
+            context,
+            value,
+        });
+        await dispatch(ENUMS.STATUS.VALIDATING, { context, value }, onValidate);
+
+        await Reactium.Hook.run('media-validate', { context, value });
+
+        if (context.valid !== true) _onError(context);
+
+        return { ...context, value };
+    };
+
+    const _onWorkerMessage = async (...args) => {
+        const props = args[0];
+
+        const { type, ...e } = props;
+        if (type !== 'status') return;
+
+        const { params } = e;
+        const progress = op.get(params, 'progress');
+        const result = op.get(params, 'result');
+        const status = op.get(params, 'status');
+
+        await dispatch('status', { event: status, progress });
+        await dispatch(status, { progress });
+
+        if (status === ENUMS.STATUS.COMPLETE) {
+            await _onSuccess(result);
+        }
+    };
+
+    const _handle = () => ({
+        ...params,
+        refs: {
+            alertRef,
+            dropzoneRef,
+            formRef,
+            persist,
+        },
+        alert,
+        browse,
+        cancel,
+        cx,
+        directories,
+        dispatch,
+        errors,
+        forceUpdate,
+        isBusy,
+        isClean,
+        isDirty,
+        isMounted,
+        parseErrorMessage,
+        save,
+        setAlert,
+        setErrors,
+        setState,
+        state,
+        submit,
+        unMounted,
+    });
+
+    const [handle, updateHandle] = useEventHandle(_handle());
+
+    // Initialize
+    useEffect(initialize, [state.id]);
+
+    // Save hotkey
+    useEffect(() => {
+        Reactium.Hotkeys.register('media-save', {
+            callback: saveHotkey,
+            key: 'mod+s',
+            order: Reactium.Enums.priority.lowest,
+            scope: document,
+        });
+
+        return () => {
+            Reactium.Hotkeys.unregister('media-save');
+        };
+    });
+
+    // State change
+    useAsyncEffect(
+        async mounted => {
+            if (state.initialized !== true) return;
+
+            const changed = {};
+            let watch = ['value', 'id', 'objectId', 'upload'];
+
+            await Reactium.Hook.run('media-watch-fields', watch);
+            watch = _.uniq(watch);
+            watch.sort();
+
+            const cstate = op.get(state);
+            const pstate = op.get(prevState);
+
+            watch.forEach(field => {
+                const current = op.get(cstate, field);
+                const previous = op.get(pstate, field);
+
+                if (!_.isEqual(current, previous)) {
+                    op.set(changed, field, { current, previous });
+                }
+            });
+
+            if (Object.keys(changed).length > 0) {
+                if (op.has(changed, 'id')) {
+                    getData(changed.id.current);
+                } else {
+                    if (!mounted()) return;
+                    await dispatch('status', { event: 'change', changed });
+                    await dispatch('change', { changed });
+                }
+            }
+        },
+        [Object.values(state)],
+    );
+
+    // Update on params change
+    useEffect(() => {
+        if (params.id !== handle.id) {
+            setState({
+                id: params.id,
+                initialized: false,
+                status: ENUMS.STATUS.INIT,
+            });
+            _.defer(() => {
+                if (unMounted()) return;
+                _initialize();
+            });
+        }
+    }, [params.id]);
+
+    // Update handle
+    useEffect(() => {
+        updateHandle(_handle());
+    }, [Object.values(state), Object.values(params), alert, errors]);
+
+    // Regsiter media-worker hook
+    useEffect(() => {
+        const workerHook = Reactium.Hook.register(
+            'media-worker',
+            _onWorkerMessage,
+        );
+
+        return () => {
+            Reactium.Hook.unregister(workerHook);
+        };
+    }, []);
+
+    // Register handle
+    // useImperativeHandle(ref, () => handle, [handle]);
+    useRegisterHandle('MediaEditor', () => handle, [handle]);
+
+    const render = useCallback(() => {
+        let { type } = state;
+        type = type ? String(type).toLowerCase() : type;
+
+        const title = op.get(state, 'title');
+        const metaZoneName = type ? cx('meta-' + type) : null;
+
+        return (
+            <Dropzone
+                {...dropzoneProps}
+                className={cx('dropzone')}
+                onError={e => _onFileError(e)}
+                onFileAdded={e => _onFileAdded(e)}
+                ref={dropzoneRef}>
+                <EventForm
+                    className={cname}
+                    onChange={_onFormChange}
+                    onSubmit={_onFormSubmit}
+                    ref={formRef}
+                    validator={_onValidate}
+                    value={state.value}>
+                    <Helmet>
+                        <title>{title}</title>
+                    </Helmet>
+                    {op.get(alert, 'message') && (
+                        <div className={cx('alert')}>
+                            <Alert
+                                dismissable
+                                ref={alertRef}
+                                onHide={() => setAlert(alertDefault)}
+                                color={op.get(alert, 'color')}
+                                icon={
+                                    <Icon
+                                        name={op.get(
+                                            alert,
+                                            'icon',
+                                            'Feather.AlertOctagon',
+                                        )}
+                                    />
+                                }>
+                                {op.get(alert, 'message')}
+                            </Alert>
+                        </div>
+                    )}
+                    <div className={cn(cx('main'), { visible: !!type })}>
+                        {type && <Zone zone={cx(type)} editor={handle} />}
+                    </div>
+                    {!type && <Spinner />}
+                    <Sidebar editor={handle}>
+                        <div className={cx('meta')}>
+                            <Zone zone={cx('meta')} editor={handle} />
+                            {type && (
+                                <Zone zone={metaZoneName} editor={handle} />
+                            )}
+                            <div className={cx('meta-spacer')} />
+                            <div className={cx('sidebar-footer')}>
+                                <Zone
+                                    zone={cx('sidebar-footer')}
+                                    editor={handle}
+                                />
+                            </div>
+                        </div>
+                    </Sidebar>
+                </EventForm>
+            </Dropzone>
+        );
+    });
+
+    return render();
+};
+
+const ErrorMessages = ({ editor, errors }) => {
+    const canFocus = element => typeof element.focus === 'function';
+
+    const jumpTo = (e, element) => {
+        e.preventDefault();
+        element.focus();
+    };
+
+    return (
+        <ul className={editor.cx('errors')}>
+            {errors.map(({ message, field, focus, value = '' }, i) => {
+                const replacers = {
+                    '%fieldName': field,
+                    '%value': value,
+                };
+                message = editor.parseErrorMessage(message, replacers);
+                message = !canFocus(focus) ? (
+                    message
+                ) : (
+                    <a href='#' onClick={e => jumpTo(e, focus)}>
+                        {message}
+                        <Icon
+                            name='Feather.CornerRightDown'
+                            size={12}
+                            className='ml-xs-8'
+                        />
+                    </a>
+                );
+                return <li key={`error-${i}`}>{message}</li>;
+            })}
+        </ul>
+    );
+};
+
+Editor.defaultProps = {
+    dropzoneProps: {
+        config: {
+            chunking: false,
+            clickable: true,
+            maxFiles: 1,
+            maxFilesize: ENUMS.MAX_SIZE / 1048576,
+            previewTemplate: '<span />',
+        },
+        debug: false,
+    },
+    namespace: 'admin-media-editor',
+    onChange: noop,
+    onError: noop,
+    onFail: noop,
+    onLoad: noop,
+    onReady: noop,
+    onStatus: noop,
+    onSubmit: noop,
+    onSuccess: noop,
+    onValidate: noop,
+    title: __('Media Editor'),
+};
+
+export { Editor, Editor as default };
diff --git a/reactium_modules_old/reactium-admin-core/Media/Empty/index.js b/reactium_modules_old/reactium-admin-core/Media/Empty/index.js
new file mode 100644
index 00000000..594aa573
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Empty/index.js
@@ -0,0 +1,39 @@
+import React from 'react';
+import cn from 'classnames';
+import ENUMS from '../enums';
+import domain from '../domain';
+import { Button, Icon } from 'reactium-ui';
+import { useHandle, useWindowSize, Zone } from 'reactium-core/sdk';
+
+const Empty = ({ Media }) => {
+    Media = Media || useHandle(domain.name);
+
+    const { breakpoint } = useWindowSize();
+
+    const onBrowseClick = e => Media.browseFiles(e);
+
+    const isMobile = () => ['xs', 'sm'].includes(breakpoint);
+
+    const mobile = isMobile();
+
+    return (
+        <div className={cn(Media.cname('library'), 'empty')}>
+            <div className='label'>
+                <Icon name='Linear.CloudUpload' size={mobile ? 96 : 128} />
+                <div className='my-xs-32 my-md-40 hide-xs show-md'>
+                    {ENUMS.TEXT.EMPTY}
+                </div>
+                <Button
+                    color='primary'
+                    appearance='pill'
+                    onClick={onBrowseClick}
+                    size={mobile ? 'md' : 'lg'}>
+                    {ENUMS.TEXT.BROWSE}
+                </Button>
+            </div>
+            <Zone zone='admin-media-empty' />
+        </div>
+    );
+};
+
+export default Empty;
diff --git a/reactium_modules_old/reactium-admin-core/Media/List/Card/index.js b/reactium_modules_old/reactium-admin-core/Media/List/Card/index.js
new file mode 100644
index 00000000..cef34eda
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/List/Card/index.js
@@ -0,0 +1,295 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import ReactPlayer from 'react-player';
+import { Link } from 'react-router-dom';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Reactium, {
+    useDerivedState,
+    useEventHandle,
+    useHookComponent,
+    Zone,
+} from 'reactium-core/sdk';
+
+import React, { useEffect, useRef } from 'react';
+
+const CardActions = props => {
+    const { refs } = props;
+
+    const containerRef = useRef();
+
+    const components = Reactium.Zone.getZoneComponents('media-actions');
+
+    const [state, setNewState] = useDerivedState({
+        components,
+        expanded: false,
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    const cname = () =>
+        cn('media-actions', {
+            expanded: state.expanded,
+            collapsed: !state.expanded,
+        });
+
+    const collapse = () => setState({ expanded: false });
+
+    const expand = () => setState({ expanded: true });
+
+    const toggle = () => setState({ expanded: !state.expanded });
+
+    const unMounted = () => !containerRef.current;
+
+    const _handle = () => ({
+        collapse,
+        expand,
+        setState,
+        state,
+        toggle,
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    // Set ref
+    useEffect(() => {
+        op.set(refs, 'actions.current', handle);
+    });
+
+    // Update handle
+    useEffect(() => {
+        const newHandle = _handle();
+        if (!_.isEqual(newHandle, handle)) {
+            setHandle(newHandle);
+        }
+    }, Object.values(state));
+
+    return _.isEmpty(state.components) ? null : (
+        <div className={cname()} ref={containerRef}>
+            <Scrollbars>
+                <div className='container'>
+                    <Zone zone='media-actions' {...props} />
+                </div>
+            </Scrollbars>
+        </div>
+    );
+};
+
+const CardInfo = ({ editURL, redirect = {}, refs, url }) => {
+    const redirectURL = op.get(redirect, 'url');
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+
+    const buttonProps = {
+        color: Button.ENUMS.COLOR.CLEAR,
+        style: {
+            borderRadius: 0,
+            flexShrink: 0,
+            width: 48,
+            padding: 0,
+        },
+    };
+
+    const toggleActions = () => {
+        if (!refs.actions.current) return;
+        refs.actions.current.toggle();
+    };
+
+    return (
+        <div className='media-info'>
+            <div className='label break-word'>
+                <a href={url} target='_blank'>
+                    {url}
+                </a>
+            </div>
+            {!redirectURL && (
+                <Button
+                    {...buttonProps}
+                    to={editURL}
+                    type={Button.ENUMS.TYPE.LINK}>
+                    <Icon name='Feather.Edit2' size={20} />
+                </Button>
+            )}
+            <Button {...buttonProps} onClick={toggleActions}>
+                <Icon name='Feather.MoreVertical' />
+            </Button>
+        </div>
+    );
+};
+
+const AudioCard = props => {
+    const { className, edgeURL, ext, poster, refs, type } = props;
+
+    const style = poster && {
+        backgroundImage: `url('${poster}')`,
+    };
+
+    return (
+        <div
+            className={className}
+            onMouseLeave={() => refs.actions.current.collapse()}>
+            <div>
+                <div className='media-preview' style={style}>
+                    <audio width='100%' height='100%' controls>
+                        {!poster && <MediaIcon type={type} />}
+                        <source src={edgeURL} type={`audio/${ext}`} />
+                        {ENUMS.TEXT.AUDIO_UNSUPPORTED}
+                    </audio>
+                    <CardActions {...props} />
+                </div>
+                <CardInfo {...props} />
+            </div>
+        </div>
+    );
+};
+
+const FileCard = props => {
+    const { className, editURL, poster, redirect = {}, refs, type } = props;
+    const redirectURL = op.get(redirect, 'url');
+
+    const style = poster && {
+        backgroundImage: `url('${poster}')`,
+    };
+
+    return (
+        <div
+            className={className}
+            onMouseLeave={() => refs.actions.current.collapse()}>
+            <div>
+                <div className='media-preview'>
+                    {redirectURL ? (
+                        <a href={redirectURL} target='_blank' style={style}>
+                            {!poster && <MediaIcon type={type} />}
+                        </a>
+                    ) : (
+                        <Link to={redirectURL || editURL} style={style}>
+                            {!poster && <MediaIcon type={type} />}
+                        </Link>
+                    )}
+                    <CardActions {...props} />
+                </div>
+                <CardInfo {...props} />
+            </div>
+        </div>
+    );
+};
+
+const ImageCard = props => {
+    const { className, editURL, poster, redirect = {}, refs, url } = props;
+    const redirectURL = op.get(redirect, 'url');
+    const style = {
+        backgroundImage: `url('${redirectURL || poster || url}')`,
+    };
+
+    return (
+        <div
+            className={className}
+            onMouseLeave={() => refs.actions.current.collapse()}>
+            <div>
+                <div className='media-preview'>
+                    {redirectURL ? (
+                        <a href={redirectURL} target='_blank' style={style} />
+                    ) : (
+                        <Link to={editURL} style={style} />
+                    )}
+                    <CardActions {...props} />
+                </div>
+                <CardInfo {...props} />
+            </div>
+        </div>
+    );
+};
+
+const VideoCard = props => {
+    const { className, edgeURL, poster, refs } = props;
+
+    return (
+        <div
+            className={className}
+            onMouseLeave={() => refs.actions.current.collapse()}>
+            <div>
+                <div className='media-preview'>
+                    <ReactPlayer
+                        controls
+                        width='100%'
+                        height='100%'
+                        url={edgeURL}
+                        poster={poster}
+                    />
+                    <CardActions {...props} />
+                </div>
+                <CardInfo {...props} />
+            </div>
+        </div>
+    );
+};
+
+const MediaIcon = ({ type, ...props }) => {
+    let name;
+    const types = Object.keys(ENUMS.TYPE);
+    type = types.includes(type) ? type : 'FILE';
+
+    const { Icon } = useHookComponent('ReactiumUI');
+
+    switch (String(type).toLowerCase()) {
+        case 'audio':
+            name = 'Linear.MusicNote3';
+            break;
+
+        case 'file':
+        default:
+            name = 'Linear.FileEmpty';
+    }
+
+    return <Icon {...props} name={name} />;
+};
+
+const MediaCard = props => {
+    const refs = { actions: useRef() };
+    let { objectId, thumbnail, type, url: edgeURL = '' } = props;
+    type = String(type).toLowerCase();
+
+    const className = cn('media-card', `media-card-${type}`);
+    const editURL = `/admin/media/edit/${objectId}`;
+    const ext = edgeURL.split('.').pop();
+    const poster = thumbnail && Reactium.Media.url(thumbnail);
+
+    const cardProps = {
+        ...props,
+        className,
+        edgeURL,
+        editURL,
+        ext,
+        poster,
+        refs,
+    };
+
+    if (!objectId) return null;
+
+    switch (type) {
+        case 'audio':
+            return <AudioCard {...cardProps} />;
+
+        case 'image':
+            return <ImageCard {...cardProps} />;
+
+        case 'video':
+            return <VideoCard {...cardProps} />;
+
+        default:
+            return <FileCard {...cardProps} />;
+    }
+};
+
+export {
+    AudioCard,
+    FileCard,
+    ImageCard,
+    MediaCard,
+    MediaCard as default,
+    VideoCard,
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Empty.js b/reactium_modules_old/reactium-admin-core/Media/List/Empty.js
similarity index 99%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Empty.js
rename to reactium_modules_old/reactium-admin-core/Media/List/Empty.js
index 1b1d449c..8db52ddc 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/Empty.js
+++ b/reactium_modules_old/reactium-admin-core/Media/List/Empty.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import Reactium, { __ } from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 const Empty = ({ buttonText, className, onClick, message }) => {
     return (
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaCopy.js b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaCopy.js
similarity index 95%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaCopy.js
rename to reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaCopy.js
index 8745234a..c07f8298 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaCopy.js
+++ b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaCopy.js
@@ -2,7 +2,7 @@ import op from 'object-path';
 import copy from 'copy-to-clipboard';
 import React, { useCallback } from 'react';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 import Reactium, { __, useHandle } from 'reactium-core/sdk';
 
 const MediaCopy = props => {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaDelete.js b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaDelete.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaDelete.js
rename to reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaDelete.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaDownload.js b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaDownload.js
similarity index 92%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaDownload.js
rename to reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaDownload.js
index f25b7184..321b2f4f 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/MediaDownload.js
+++ b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/MediaDownload.js
@@ -1,7 +1,7 @@
 import Reactium from 'reactium-core/sdk';
 import React, { useCallback } from 'react';
 import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const MediaDownload = props => {
     const onClick = useCallback(e =>
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/index.js b/reactium_modules_old/reactium-admin-core/Media/List/_plugins/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_plugins/index.js
rename to reactium_modules_old/reactium-admin-core/Media/List/_plugins/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_style.scss b/reactium_modules_old/reactium-admin-core/Media/List/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/List/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/index.js b/reactium_modules_old/reactium-admin-core/Media/List/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/index.js
rename to reactium_modules_old/reactium-admin-core/Media/List/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/List/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/List/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Media/List/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Audio.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Audio.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Audio.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Audio.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/DirectorySelect.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/DirectorySelect.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/DirectorySelect.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/DirectorySelect.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/DismissButton.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/DismissButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/DismissButton.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/DismissButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/File.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/File.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/File.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/File.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Image.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Image.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Image.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Image.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/ImportMedia.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/ImportMedia.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/ImportMedia.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/ImportMedia.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Item.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Item.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Item.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Item.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Pagination.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Pagination.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Pagination.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Pagination.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Placeholder.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Placeholder.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Placeholder.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Placeholder.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Remaining.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Remaining.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Remaining.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Remaining.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/SearchInput.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/SearchInput.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/SearchInput.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/SearchInput.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/SubmitButton.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/SubmitButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/SubmitButton.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/SubmitButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Title.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Title.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Title.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Title.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/ToastMessage.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/ToastMessage.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/ToastMessage.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/ToastMessage.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/TypeSelect.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/TypeSelect.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/TypeSelect.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/TypeSelect.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Uploader.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Uploader.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Uploader.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Uploader.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Video.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/Video.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/Video.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/Video.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/_style.scss b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/defaultProps.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/defaultProps.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/defaultProps.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/defaultProps.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/domain.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/domain.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/domain.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/MediaPicker/index.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/index.js
new file mode 100644
index 00000000..5b9aebf2
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/index.js
@@ -0,0 +1,647 @@
+import lunr from 'lunr';
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import ENUMS from '../enums';
+import camelcase from 'camelcase';
+import useData from '../_utils/useData';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Item from './Item';
+import Uploader from './Uploader';
+import propTypes from './propTypes';
+import Placeholder from './Placeholder';
+import defaultProps from './defaultProps';
+
+import React, {
+    useState,
+    useEffect,
+    forwardRef,
+    useImperativeHandle,
+} from 'react';
+
+import Reactium, {
+    __,
+    Zone,
+    useRefs,
+    useStatus,
+    ComponentEvent,
+    useEventHandle,
+    useHookComponent,
+} from 'reactium-core/sdk';
+
+const fetchMedia = () =>
+    Reactium.Media.fetch({ page: -1 }).then(results => ({
+        error: null,
+        fetched: true,
+        update: Date.now(),
+        data: results.files,
+        status: ENUMS.STATUS.READY,
+        directories: results.directories,
+    }));
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: MediaPicker
+ * -----------------------------------------------------------------------------
+ */
+let MediaPicker = (initialProps, ref) => {
+    const {
+        children,
+        className,
+        delayFetch,
+        dropzoneProps,
+        namespace,
+        onCancel,
+        onChange,
+        onDismiss,
+        onError,
+        onInit,
+        onItemSelect,
+        onItemUnselect,
+        onLoad,
+        onMount,
+        onStatus,
+        onSubmit,
+        onUnMount,
+        ...props
+    } = initialProps;
+
+    const initialData = op.get(props, 'data');
+
+    // -------------------------------------------------------------------------
+    // Components
+    // -------------------------------------------------------------------------
+    const { Button, Icon, Spinner } = useHookComponent('ReactiumUI');
+
+    // -------------------------------------------------------------------------
+    // Refs
+    // -------------------------------------------------------------------------
+    const refs = useRefs();
+
+    // -------------------------------------------------------------------------
+    // State
+    // -------------------------------------------------------------------------
+    const [state, updateState] = useState({
+        ...props,
+        uploads: {},
+        filters: _.isString(op.get(props, 'filters', []))
+            ? [props.filters]
+            : props.filters,
+    });
+
+    // -------------------------------------------------------------------------
+    // Status
+    // -------------------------------------------------------------------------
+    const [status, setStatus, isStatus] = useStatus(ENUMS.STATUS.INIT);
+
+    // -------------------------------------------------------------------------
+    // Media Data
+    // -------------------------------------------------------------------------
+    const [data, updateData] = useData(
+        fetchMedia,
+        'media-retrieve',
+        delayFetch,
+        initialData,
+    );
+
+    const setData = (newData, silent) => {
+        if (unMounted()) return;
+        updateData(newData, silent);
+        setState({ updated: Date.now() }, silent);
+    };
+
+    const setHandle = newHandle => {
+        if (unMounted()) return;
+        updateHandle(newHandle);
+    };
+
+    const setState = (newState, val) => {
+        if (unMounted()) return;
+
+        if (_.isString(newState)) {
+            newState = { [newState]: val };
+        }
+
+        newState = newState ? { ...state, ...newState } : {};
+        updateState(newState);
+        _.defer(() => {
+            if (unMounted()) return;
+            updateState({ ...newState, update: Date.now() });
+        });
+    };
+
+    // -------------------------------------------------------------------------
+    // Internal Interface
+    // -------------------------------------------------------------------------
+
+    // cx(suffix:String);
+    const cx = Reactium.Utils.cxFactory(className || namespace);
+
+    const browseFiles = e => {
+        if (e) e.preventDefault();
+        const dz = refs.get('media.picker.dropzone');
+        if (!dz) return;
+
+        dz.browseFiles();
+    };
+
+    const dismiss = () => {
+        if (!state.dismissable) return;
+        setStatus(ENUMS.STATUS.DISMISS, true);
+    };
+
+    // dispatch(eventType:String, eventData:Object, callback:Function);
+    const dispatch = (eventType, eventData, callback) => {
+        if (eventType !== 'mount' && unMounted()) return;
+
+        if (!_.isObject(eventData)) eventData = { data: eventData };
+
+        eventType = String(eventType)
+            .replace(/ /i, '-')
+            .replace(/[^a-z0-9\-\_]/gi)
+            .toLowerCase();
+
+        const evt = new ComponentEvent(eventType, eventData);
+
+        handle.dispatchEvent(evt);
+
+        Reactium.Hook.runSync(`media-picker-${eventType}`, evt, handle);
+
+        if (typeof callback === 'function') callback(evt);
+
+        if (state.debug === true) {
+            if (eventType !== 'status') {
+                console.log(eventType, evt);
+            } else {
+                console.log('\t\t', eventType, evt);
+            }
+        }
+    };
+
+    const getDirectories = () => {
+        if (!data) return [];
+        let { directories = [] } = data;
+        return directories;
+    };
+
+    const getFiles = () => {
+        // return empty array if no data
+        if (!data) {
+            return [];
+        }
+
+        // get parameters from state
+        let { directory = 'all', filter, filters = [], search, type } = state;
+        filters = _.isString(filters) ? [filters] : filters;
+
+        let files = op.get(data, 'data', {});
+
+        // convert data Object into array
+        files = Object.values(files);
+
+        // return if files array empty
+        if (files.length < 1) {
+            return [];
+        }
+
+        // pass the data over to the filter function if specified as a function
+        if (typeof filter === 'function') return files.filter(filter);
+
+        // filter files against directory and type values
+        files = files.filter(file => {
+            // folder match
+            if (directory !== 'all') {
+                if (file.directory !== directory) return false;
+            }
+
+            // type match
+            if (filters.length > 0 && !filters.includes('all')) {
+                if (!filters.includes(file.type)) return false;
+            }
+
+            if (type !== 'all') {
+                if (file.type !== type) return false;
+            }
+
+            return true;
+        });
+
+        files = _.sortBy(files, 'updatedAt').reverse();
+
+        // do a text search on the searchField properties
+        files = search ? textSearch(`${String(search).trim()}*`, files) : files;
+
+        // run media-picker-files hook
+        Reactium.Hook.runSync('media-picker-files', files, handle);
+
+        return files;
+    };
+
+    const getPage = () => {
+        const files = getFiles();
+        if (files.length < 1) return [];
+
+        let { itemsPerPage, page = 1 } = state;
+
+        const chunks = _.chunk(files, itemsPerPage);
+
+        const pages = chunks.length;
+
+        page = Math.min(pages, page);
+        page = Math.max(1, page) - 1;
+
+        return chunks[page];
+    };
+
+    const textSearch = (text, files) => {
+        files = files || Object.values(op.get(data, 'data', {}));
+        const { searchFields = [] } = state;
+        return searchFields.length < 1
+            ? files
+            : _.pluck(
+                  lunr(function() {
+                      const lnr = this;
+                      lnr.ref('objectId');
+
+                      // camelcase object path field names
+                      searchFields.forEach(field => {
+                          field = String(field);
+                          field = field.includes('.')
+                              ? camelcase(field.replace(/\./g, '-'))
+                              : field;
+
+                          // add field to lunr
+                          lnr.field(field);
+                      });
+
+                      // map file data to match camelcased field names
+                      files.forEach(file => {
+                          let obj = searchFields.reduce((o, field) => {
+                              const key = field.includes('.')
+                                  ? camelcase(field.replace(/\./g, '-'))
+                                  : field;
+
+                              o[key] = op.get(file, field);
+
+                              return o;
+                          }, {});
+
+                          obj['objectId'] = file.objectId;
+                          obj['directory'] = file.directory;
+                          obj['type'] = file.type;
+
+                          // add mapped object to lunr
+                          lnr.add(obj);
+                      });
+                  }).search(text),
+                  'ref',
+              ).map(objectId => _.findWhere(files, { objectId }));
+    };
+
+    const isSelected = objectId => {
+        const { selection = [] } = state;
+        return !!_.findWhere(selection, { objectId });
+    };
+
+    const _search = text => setState({ search: text });
+
+    const search = _.throttle(_search, 100);
+
+    const select = objectId => {
+        const { data: files = {} } = data;
+        const { confirm, maxSelect } = state;
+
+        const item = op.get(files, objectId);
+        if (!item) return;
+
+        let selection =
+            maxSelect === 1 ? [] : Array.from(op.get(state, 'selection', []));
+
+        selection = Array.isArray(selection) ? selection : [selection];
+
+        if (maxSelect && maxSelect > 1 && selection.length >= maxSelect) {
+            const message = __(
+                'Max selection of (%max) already reached',
+            ).replace(/\%max/gi, maxSelect);
+
+            const error = { message, icon: 'Feather.AlertOctagon' };
+
+            setState({ error }, true);
+            dispatch('error', { error, selection, max: maxSelect }, onError);
+            setStatus(ENUMS.STATUS.ERROR, true);
+            return;
+        }
+
+        const previous = Array.from(selection);
+
+        selection.push(item);
+
+        const count = selection.length;
+        const remaining = maxSelect && maxSelect > 0 ? maxSelect - count : null;
+
+        dispatch('select', { item, selection, remaining }, onItemSelect);
+        dispatch(
+            'change',
+            {
+                selection,
+                previous,
+                item,
+                remaining,
+            },
+            onChange,
+        );
+
+        setStatus(ENUMS.STATUS.UPDATE);
+        setState({ remaining, selection });
+
+        if (confirm !== true) submit(selection);
+    };
+
+    const submit = selection => {
+        selection = Array.isArray(selection)
+            ? selection
+            : op.get(state, 'selection', []);
+
+        selection = !Array.isArray(selection) ? [selection] : selection;
+
+        dispatch('submit', { selection }, onSubmit);
+    };
+
+    // unmount();
+    const unMounted = () => !refs.get('media.picker.dropzone');
+
+    const unselect = objectId => {
+        const { maxSelect, selection = [] } = state;
+        const previous = Array.from(selection);
+
+        const idx = _.findIndex(selection, { objectId });
+        const item = selection[idx];
+
+        selection.splice(idx, 1);
+
+        const count = selection.length;
+        let remaining = maxSelect && maxSelect > 0 ? maxSelect - count : null;
+
+        setState({ remaining, selection }, true);
+        dispatch('unselect', { item, selection, remaining }, onItemUnselect);
+        dispatch(
+            'change',
+            { current: selection, previous, item, remaining },
+            onChange,
+        );
+        setStatus(ENUMS.STATUS.UPDATE, true);
+    };
+
+    const unselectAll = () =>
+        setState({ remaining: state.maxSelect, selection: [] });
+
+    // -------------------------------------------------------------------------
+    // Handle
+    // -------------------------------------------------------------------------
+    const _handle = () => ({
+        browseFiles,
+        children,
+        className,
+        cx,
+        data,
+        directories: getDirectories(),
+        dismiss,
+        dispatch,
+        ENUMS,
+        files: getFiles(),
+        ID: uuid(),
+        isStatus,
+        namespace,
+        onStatus,
+        props,
+        refs,
+        search,
+        select,
+        setData,
+        setState,
+        setStatus,
+        state,
+        status,
+        submit,
+        unMounted,
+        unselect,
+        unselectAll,
+    });
+
+    const [handle, updateHandle] = useEventHandle(_handle());
+
+    useImperativeHandle(ref, () => handle);
+
+    // -------------------------------------------------------------------------
+    // Side effects
+    // -------------------------------------------------------------------------
+
+    // Mount/UnMount
+    useEffect(() => {
+        dispatch('mount', null, onMount);
+
+        return () => {
+            dispatch('unmount', null, onUnMount);
+        };
+    }, []);
+
+    // Status change
+    useEffect(() => {
+        if (status) {
+            dispatch(
+                'status',
+                { status: String(status).toUpperCase() },
+                onStatus,
+            );
+        }
+
+        if (isStatus(ENUMS.STATUS.PENDING)) {
+            setStatus(ENUMS.STATUS.INIT, true);
+            return;
+        }
+
+        if (isStatus(ENUMS.STATUS.INIT)) {
+            dispatch(ENUMS.STATUS.INIT, null, onInit);
+            return;
+        }
+
+        if (isStatus(ENUMS.STATUS.LOADING)) {
+            dispatch(ENUMS.STATUS.LOADING, null);
+            return;
+        }
+
+        if (isStatus(ENUMS.STATUS.LOADED)) {
+            dispatch(ENUMS.STATUS.LOADED, { data }, onLoad);
+            return;
+        }
+
+        if (isStatus(ENUMS.STATUS.CANCELED)) {
+            dispatch(ENUMS.STATUS.CANCELED, null, onCancel);
+            return;
+        }
+
+        if (isStatus(ENUMS.STATUS.DISMISS)) {
+            dispatch(ENUMS.STATUS.DISMISS, null, onDismiss);
+            return;
+        }
+    }, [data, status, state.selection]);
+
+    // Handle update
+    useEffect(() => {
+        const newHandle = _handle();
+
+        // shallow compare the handle
+        if (_.isEqual(newHandle, handle)) return;
+
+        // map newHandle onto handle
+        Object.entries(newHandle).forEach(([key, value]) =>
+            op.set(handle, key, value),
+        );
+
+        setHandle(handle);
+    });
+
+    // page change
+    useEffect(() => {
+        const { page, pages } = state;
+        dispatch('page-change', { page, pages });
+    }, [state.page, state.pages]);
+
+    // page count
+    useEffect(() => {
+        const files = getFiles();
+        const { itemsPerPage } = state;
+
+        const pages = Math.max(Math.ceil(files.length / itemsPerPage), 1);
+        if (pages !== state.pages) setState({ pages });
+    });
+
+    // Data loaded
+    useEffect(() => {
+        if (!data) {
+            if (
+                isStatus(ENUMS.STATUS.INIT) &&
+                !isStatus(ENUMS.STATUS.LOADING)
+            ) {
+                _.defer(() => {
+                    if (unMounted()) return;
+                    setStatus(ENUMS.STATUS.LOADING, true);
+                });
+            }
+        } else {
+            let { itemsPerPage } = state;
+            itemsPerPage = Math.max(1, itemsPerPage);
+            const count = getFiles().length;
+            const pages = Math.ceil(count / itemsPerPage);
+            handle.data = data;
+            setStatus(ENUMS.STATUS.LOADED);
+            setState({ pages }, true);
+            setHandle(handle);
+        }
+    }, [data]);
+
+    // -------------------------------------------------------------------------
+    // Render
+    // -------------------------------------------------------------------------
+    return !data ? (
+        <div className={cx('spinner')}>
+            <Spinner />
+        </div>
+    ) : (
+        <Uploader
+            picker={handle}
+            className={cx()}
+            {...dropzoneProps}
+            ref={elm => refs.set('media.picker.dropzone', elm)}>
+            <div className={cx('toolbar')}>
+                <Zone zone={cx('toolbar')} picker={handle} />
+            </div>
+            <div className={cx('content')}>
+                <div className={cx('library')}>
+                    <Scrollbars
+                        ref={elm => refs.set('media.picker.library', elm)}>
+                        <div className='grid'>
+                            <div className={cn('block', cx('item'), 'dz-btn')}>
+                                <div data-browse>
+                                    <Icon name='Feather.UploadCloud' />
+                                    <Button
+                                        readOnly
+                                        style={{ width: '50%', maxWidth: 150 }}
+                                        size={Button.ENUMS.SIZE.SM}
+                                        appearance={
+                                            Button.ENUMS.APPEARANCE.PILL
+                                        }>
+                                        {__('Upload')}
+                                    </Button>
+                                </div>
+                            </div>
+                            {Object.values(state.uploads).map(upload => (
+                                <Placeholder
+                                    {...upload}
+                                    picker={handle}
+                                    key={`upload-${upload.uuid}`}
+                                />
+                            ))}
+                            {getPage().map(file => (
+                                <Item
+                                    key={`mpi-${file.objectId}`}
+                                    {...file}
+                                    handle={handle}
+                                    onItemSelect={select}
+                                    onItemUnselect={unselect}
+                                    selected={isSelected(file.objectId)}
+                                />
+                            ))}
+                        </div>
+                    </Scrollbars>
+                </div>
+                {state.confirm === true && (
+                    <div className={cx('selection')}>
+                        {state.selection.length > 0 ? (
+                            <Scrollbars>
+                                <div className='grid'>
+                                    {Array.from(state.selection)
+                                        .reverse()
+                                        .map(file => (
+                                            <Item
+                                                key={`mpsi-${file.objectId}`}
+                                                {...file}
+                                                handle={handle}
+                                                onItemSelect={select}
+                                                onItemUnselect={unselect}
+                                                selected
+                                            />
+                                        ))}
+                                </div>
+                            </Scrollbars>
+                        ) : (
+                            <div className={cx('no-selection')}>
+                                <div className={cx('no-selection-icon')}>
+                                    <Icon name='Linear.FingerTap' />
+                                </div>
+                                <div className={cx('no-selection-label')}>
+                                    {state.maxSelect === 1
+                                        ? __('Select A File')
+                                        : __('Select Files')}
+                                </div>
+                            </div>
+                        )}
+                    </div>
+                )}
+            </div>
+            <div className={cx('footer')}>
+                <Zone zone={cx('footer')} picker={handle} />
+            </div>
+        </Uploader>
+    );
+};
+
+MediaPicker = forwardRef(MediaPicker);
+MediaPicker.ENUMS = ENUMS;
+MediaPicker.propTypes = propTypes;
+MediaPicker.defaultProps = defaultProps;
+
+export * from './TypeSelect';
+export { MediaPicker, MediaPicker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/propTypes.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/propTypes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/propTypes.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/propTypes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/MediaPicker/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Media/MediaPicker/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Pagination/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Pagination/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Pagination/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Pagination/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Pagination/index.js b/reactium_modules_old/reactium-admin-core/Media/Pagination/index.js
new file mode 100644
index 00000000..74e1f7db
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Pagination/index.js
@@ -0,0 +1,45 @@
+import React, { useRef } from 'react';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import { Pagination as PaginationUI } from 'reactium-ui';
+
+const Pagination = ({ Media }) => {
+    const { cname, page, state } = Media;
+    const { pagination } = state;
+
+    const pages = op.get(state, 'pagination.pages', 1);
+
+    const _onSelect = e => {
+        if (!op.get(e, 'item')) return;
+        Media.setPage(e.item.value);
+    };
+
+    const _onNext = e => {
+        const next = op.get(pagination, 'next');
+        Media.setPage(next);
+    };
+
+    const _onPrev = e => {
+        const prev = op.get(pagination, 'prev');
+        Media.setPage(prev);
+    };
+
+    return pagination && pages > 1 ? (
+        <div className={cname('pagination')}>
+            <PaginationUI
+                color={PaginationUI.COLOR.CLEAR}
+                dropdown
+                onClick={_onSelect}
+                onNextClick={_onNext}
+                onPrevClick={_onPrev}
+                page={page}
+                pages={pages}
+                size='md'
+                verticalAlign='top'
+            />
+        </div>
+    ) : null;
+};
+
+export { Pagination, Pagination as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/SidebarWidget/index.js b/reactium_modules_old/reactium-admin-core/Media/SidebarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/SidebarWidget/index.js
rename to reactium_modules_old/reactium-admin-core/Media/SidebarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Toolbar/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Toolbar/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Toolbar/index.js b/reactium_modules_old/reactium-admin-core/Media/Toolbar/index.js
new file mode 100644
index 00000000..abf462b2
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Toolbar/index.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import ENUMS from '../enums';
+import op from 'object-path';
+import { Zone } from 'reactium-core/sdk';
+import { useSelect } from '@atomic-reactor/use-select';
+import { Button, Icon } from 'reactium-ui';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Toolbar
+ * -----------------------------------------------------------------------------
+ */
+const Toolbar = ({ Media, zone = 'admin-media-toolbar' }) => {
+    const { empty } = useSelect(state => op.get(state, 'Media.pagination', {}));
+
+    return empty === true ? null : (
+        <div className={Media.cname('toolbar')}>
+            <div className='flex middle flex-grow'>
+                <div className='mr-xs-20'>
+                    <Button
+                        color='clear'
+                        className={Media.cname('toolbar-browse')}
+                        data-tooltip={ENUMS.TEXT.BROWSE}
+                        data-align='right'
+                        data-vertical-align='middle'
+                        onClick={e => Media.browseFiles(e)}>
+                        <Icon name='Linear.FileAdd' size={40} />
+                    </Button>
+                </div>
+                <div className='flex-grow show-md hide-xs'>
+                    <h2>{ENUMS.TEXT.TOOLBAR}</h2>
+                </div>
+            </div>
+            <div>
+                <Zone zone={zone} Media={Media} />
+            </div>
+        </div>
+    );
+};
+
+export default Toolbar;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/Toolbar/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Toolbar/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Media/Toolbar/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/_style.scss b/reactium_modules_old/reactium-admin-core/Media/Uploads/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/Uploads/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/Media/Uploads/index.js b/reactium_modules_old/reactium-admin-core/Media/Uploads/index.js
new file mode 100644
index 00000000..3372de71
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/Uploads/index.js
@@ -0,0 +1,215 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from '../enums';
+import op from 'object-path';
+import { bytesConvert } from '../_utils';
+import React, { useEffect, useRef } from 'react';
+import { TweenMax, Power2 } from 'gsap/umd/TweenMax';
+import { Button, Icon, Progress } from 'reactium-ui';
+import Reactium, {
+    useDerivedState,
+    useDocument,
+    useAsyncEffect,
+} from 'reactium-core/sdk';
+import { useStore } from '@atomic-reactor/use-select';
+
+export default ({ delay = 250, onRemoveFile, uploads }) => {
+    const iDoc = useDocument();
+
+    const store = useStore();
+    const animationRef = useRef({});
+    const [state, setState] = useDerivedState({
+        uploads: uploads || op.get(store.getState(), 'Media.uploads'),
+    });
+
+    const clearUploads = async () => {
+        if (Reactium.Media.completed.length < 1) return;
+
+        const cleared = [];
+
+        for (let item of Reactium.Media.completed) {
+            const { ID, file } = item;
+            await collapse(ID);
+            cleared.push({ ...file, ID });
+        }
+
+        _onRemoveFile(cleared);
+    };
+
+    const collapse = ID => {
+        if (animationRef.current[ID]) return animationRef.current[ID];
+
+        const elm = iDoc.getElementById(`upload-${ID}`);
+        if (!elm) return Promise.resolve();
+
+        animationRef.current[ID] = true;
+
+        return new Promise(resolve => {
+            elm.style.overflow = 'hidden';
+            TweenMax.to(elm, 0.125, {
+                height: 0,
+                opacity: 0,
+                ease: Power2.easeIn,
+                onComplete: () => resolve(ID),
+            });
+        });
+    };
+
+    const cx = cls => _.compact(['admin-media', cls]).join('-');
+
+    const getIcon = filename => {
+        if (isImage(filename)) return null;
+
+        const type = String(getType(filename)).toUpperCase();
+
+        if (ENUMS.TYPE.VIDEO.includes(type))
+            return <Icon size={36} name='Linear.FileVideo' />;
+
+        if (ENUMS.TYPE.AUDIO.includes(type))
+            return <Icon size={36} name='Linear.Mic' />;
+
+        return <Icon size={36} name='Linear.FileEmpty' />;
+    };
+
+    const getStyle = ({ file, filename }) =>
+        isImage(filename) ? { backgroundImage: `url(${file.dataURL})` } : null;
+
+    const getType = filename =>
+        String(filename)
+            .split('.')
+            .pop();
+
+    const isImage = filename =>
+        ['png', 'svg', 'gif', 'jpg', 'jpeg'].includes(getType(filename));
+
+    const _onRemoveFile = files => {
+        files = Array.isArray(files) ? files : [files];
+
+        Reactium.Media.cancel(files);
+
+        files.forEach(file => {
+            const ID = op.get(file, 'ID');
+            if (ID) delete animationRef.current[ID];
+            if (typeof onRemoveFile === 'function') onRemoveFile(file);
+        });
+    };
+
+    // Watch for uploads
+    useAsyncEffect(isMounted => {
+        const unsub = store.subscribe(() => {
+            const currentUploads = op.get(store.getState(), 'Media.uploads');
+            if (isMounted()) setState({ uploads: currentUploads });
+        });
+
+        return unsub;
+    }, []);
+
+    // Clear uploads
+    useEffect(() => {
+        Reactium.Pulse.register('MediaClearUploads', clearUploads, { delay });
+
+        return () => {
+            Reactium.Pulse.unregister('MediaClearUploads');
+        };
+    }, []);
+
+    const render = () => {
+        const currentUploads = op.get(state, 'uploads', {});
+
+        return Object.values(currentUploads).length < 1 ? null : (
+            <div className={cx('uploads')}>
+                <ul>
+                    {Object.values(currentUploads).map((upload, i) => {
+                        const file = op.get(upload, 'file');
+                        const filename = op.get(upload, 'filename');
+                        const style = getStyle({ file, filename });
+                        const status = op.get(upload, 'status');
+                        const size = bytesConvert(op.get(upload, 'total', 0));
+                        const url = op.get(upload, 'url', '...');
+
+                        const progress =
+                            status === ENUMS.STATUS.COMPLETE
+                                ? 1
+                                : op.get(upload, 'progress', 0);
+                        return (
+                            <li
+                                id={`upload-${file.ID}`}
+                                key={`media-upload-${i}`}
+                                className={cn(status, cx('upload'))}>
+                                <div
+                                    className={cn(status, cx('upload-image'))}
+                                    children={getIcon(filename)}
+                                    style={style}
+                                />
+                                <div className={cn(status, cx('upload-info'))}>
+                                    <div className={cx('upload-name')}>
+                                        {filename}
+                                        {' • '}
+                                        <span className={cx('upload-size')}>
+                                            {size}
+                                        </span>
+                                    </div>
+                                    <div style={{ width: 150 }}>
+                                        <Progress
+                                            size='xs'
+                                            color='primary'
+                                            value={progress}
+                                            appearance='pill'
+                                        />
+                                    </div>
+                                    <div className={cx('upload-url')}>
+                                        {url}
+                                    </div>
+                                </div>
+                                <div
+                                    className={cn(status, cx('upload-status'))}>
+                                    {status}
+                                </div>
+                                <div
+                                    className={cn(status, cx('upload-action'))}>
+                                    {status === ENUMS.STATUS.COMPLETE && (
+                                        <Button
+                                            size='xs'
+                                            color='primary'
+                                            appearance='circle'
+                                            onClick={() => _onRemoveFile(file)}>
+                                            <Icon
+                                                name='Feather.Check'
+                                                size={18}
+                                            />
+                                        </Button>
+                                    )}
+
+                                    {status === ENUMS.STATUS.QUEUED && (
+                                        <Button
+                                            onClick={() => _onRemoveFile(file)}
+                                            size='xs'
+                                            color='danger'
+                                            appearance='circle'>
+                                            <Icon name='Feather.X' size={18} />
+                                        </Button>
+                                    )}
+
+                                    {status === ENUMS.STATUS.UPLOADING && (
+                                        <Button
+                                            size='xs'
+                                            color='primary'
+                                            disabled
+                                            appearance='circle'>
+                                            <Icon
+                                                name='Feather.ArrowUp'
+                                                size={18}
+                                            />
+                                        </Button>
+                                    )}
+                                </div>
+                            </li>
+                        );
+                    })}
+                </ul>
+            </div>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/Uploads/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/Uploads/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Media/Uploads/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_style.scss b/reactium_modules_old/reactium-admin-core/Media/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_style.scss
rename to reactium_modules_old/reactium-admin-core/Media/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_svg/index.js b/reactium_modules_old/reactium-admin-core/Media/_svg/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_svg/index.js
rename to reactium_modules_old/reactium-admin-core/Media/_svg/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/index.js b/reactium_modules_old/reactium-admin-core/Media/_utils/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/index.js
rename to reactium_modules_old/reactium-admin-core/Media/_utils/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/sdk/enums.js b/reactium_modules_old/reactium-admin-core/Media/_utils/sdk/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/sdk/enums.js
rename to reactium_modules_old/reactium-admin-core/Media/_utils/sdk/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/sdk/index.js b/reactium_modules_old/reactium-admin-core/Media/_utils/sdk/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/sdk/index.js
rename to reactium_modules_old/reactium-admin-core/Media/_utils/sdk/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/useData.js b/reactium_modules_old/reactium-admin-core/Media/_utils/useData.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/useData.js
rename to reactium_modules_old/reactium-admin-core/Media/_utils/useData.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/useMediaFileTypes.js b/reactium_modules_old/reactium-admin-core/Media/_utils/useMediaFileTypes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_utils/useMediaFileTypes.js
rename to reactium_modules_old/reactium-admin-core/Media/_utils/useMediaFileTypes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_worker/umd-config.json b/reactium_modules_old/reactium-admin-core/Media/_worker/umd-config.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_worker/umd-config.json
rename to reactium_modules_old/reactium-admin-core/Media/_worker/umd-config.json
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/_worker/umd.js b/reactium_modules_old/reactium-admin-core/Media/_worker/umd.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/_worker/umd.js
rename to reactium_modules_old/reactium-admin-core/Media/_worker/umd.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/domain.js b/reactium_modules_old/reactium-admin-core/Media/domain.js
new file mode 100644
index 00000000..21a22a7b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/domain.js
@@ -0,0 +1,9 @@
+/**
+ * -----------------------------------------------------------------------------
+ * DDD Domain Media - Change name to place domain artifacts in this directory
+ * in a different domain.
+ * -----------------------------------------------------------------------------
+ */
+module.exports = {
+    name: 'Media',
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums.js b/reactium_modules_old/reactium-admin-core/Media/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums.js
rename to reactium_modules_old/reactium-admin-core/Media/enums.js
diff --git a/reactium_modules_old/reactium-admin-core/Media/index.js b/reactium_modules_old/reactium-admin-core/Media/index.js
new file mode 100644
index 00000000..84f7e31d
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Media/index.js
@@ -0,0 +1,280 @@
+import _ from 'underscore';
+import Empty from './Empty';
+import ENUMS from './enums';
+import op from 'object-path';
+import domain from './domain';
+import Pagination from './Pagination';
+import React, { useEffect, useRef } from 'react';
+import { Dropzone, Spinner } from 'reactium-ui';
+
+import Reactium, {
+    useAsyncEffect,
+    useDerivedState,
+    useEventHandle,
+    useHandle,
+    useHookComponent,
+    useRegisterHandle,
+    useStatus,
+} from 'reactium-core/sdk';
+
+import { useStore, useReduxState } from '@atomic-reactor/use-select';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Media
+ * -----------------------------------------------------------------------------
+ */
+let Media = ({ dropzoneProps, namespace, zone, title, ...props }) => {
+    // Store
+    const store = useStore();
+
+    // Refs
+    const containerRef = useRef();
+    const dropzoneRef = useRef();
+
+    // Components
+    const SearchBar = useHandle('SearchBar');
+    const Helmet = useHookComponent('Helmet');
+    const List = useHookComponent('MediaList');
+    const Toolbar = useHookComponent('MediaToolbar');
+    const Uploads = useHookComponent('MediaUploads');
+
+    // Redux state
+    const [reduxState, setReduxState] = useReduxState(domain.name);
+
+    // Internal state
+    const [state, updateState] = useDerivedState({
+        data: mapLibraryToList(reduxState.library),
+        directory: null,
+        page: props.page || 1,
+        search: null,
+        type: null,
+        updated: null,
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        updateState(newState);
+    };
+
+    const setData = (data = []) => {
+        setStatus(ENUMS.STATUS.READY);
+        setState({ data: mapLibraryToList(data) });
+    };
+
+    const setDirectory = directory => setState({ directory });
+    const setPage = page => setState({ page });
+    const setType = type => setState({ type });
+
+    // Status
+    const [status, setStatus, isStatus] = useStatus(ENUMS.STATUS.INIT);
+
+    // Functions
+    const browseFiles = () => dropzoneRef.current.browseFiles();
+
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const fetch = params => Reactium.Media.fetch({ ...params, page: -1 });
+
+    const isEmpty = () => {
+        if (isStatus(ENUMS.STATUS.READY)) {
+            return Object.values(op.get(state, 'data', {})).length < 1;
+        } else {
+            return op.get(reduxState, 'pagination.empty', true);
+        }
+    };
+
+    const isMounted = () => !unMounted();
+
+    const onError = ({ message }) => setReduxState({ error: { message } });
+
+    const onFileAdded = e => Reactium.Media.upload(e.added, state.directory);
+
+    const onFileRemoved = file => {
+        if (unMounted()) return;
+        dropzoneRef.current.removeFiles(file);
+        fetch();
+    };
+
+    const search = () => {
+        const { data, directory, type } = state;
+
+        const { search } = state;
+
+        return Reactium.Media.filter(
+            {
+                directory,
+                search,
+                type,
+                limit: 24,
+            },
+            Object.values(data),
+        );
+    };
+
+    const toggleSearch = () => {
+        SearchBar.setState({ visible: !isEmpty() });
+    };
+
+    const unMounted = () => !containerRef.current;
+
+    // Handle
+    const _handle = () => ({
+        ENUMS,
+        browseFiles,
+        cname: cx,
+        directory: state.directory,
+        isEmpty,
+        isMounted,
+        isStatus,
+        page: state.page,
+        setData,
+        setDirectory,
+        setPage,
+        setState,
+        setStatus,
+        setType,
+        state,
+        status,
+        type: state.type,
+        unMounted,
+        zone: Array.isArray(zone) ? zone[0] : zone,
+    });
+
+    const [handle, updateHandle] = useEventHandle(_handle());
+    const setHandle = newHandle => {
+        if (unMounted()) return;
+
+        if (_.isObject(newHandle)) {
+            Object.entries(newHandle).forEach(([key, value]) =>
+                op.set(handle, key, value),
+            );
+        }
+
+        updateHandle(handle);
+    };
+
+    // Side effects
+
+    // Fetch
+    useAsyncEffect(async () => {
+        if (isStatus(ENUMS.STATUS.INIT)) {
+            setStatus(ENUMS.STATUS.PENDING);
+            await fetch();
+            setStatus(ENUMS.STATUS.READY, true);
+        }
+    }, [status]);
+
+    // Update handle
+    useEffect(() => {
+        const watchKeys = ['directory', 'page', 'type'];
+
+        const changes = watchKeys.reduce((obj, key) => {
+            const hnd = op.get(handle, key);
+            const val = op.get(state, key);
+            if (hnd !== val) obj[key] = val;
+            return obj;
+        }, {});
+
+        if (Object.keys(changes).length > 0) setHandle(changes);
+    });
+
+    // Search
+    useEffect(toggleSearch, [SearchBar, isEmpty()]);
+    useEffect(() => {
+        const search = SearchBar.state.value;
+        if (state.search !== search) {
+            setState({ search });
+        }
+    }, [SearchBar.state.value]);
+
+    // Page change
+    useEffect(() => {
+        const { page = 1 } = state;
+        const pg = op.get(reduxState, 'page');
+
+        if (pg !== page) {
+            Reactium.Routing.history.push(`/admin/media/${page}`);
+        }
+    }, [state.page]);
+
+    // Watch for library updates
+    useEffect(() => {
+        const unsub = store.subscribe(() => {
+            const data = op.get(store.getState(), 'Media.library', {});
+            if (!data) return;
+
+            const currentData = Object.values(op.get(state, 'data', {}));
+            const equal = _.isEqual(
+                _.pluck(data, 'objectId').sort(),
+                _.pluck(currentData, 'objectId').sort(),
+            );
+
+            if (!equal) setData(data);
+        });
+
+        return unsub;
+    }, []);
+
+    useRegisterHandle(domain.name, () => handle, [handle]);
+
+    // Render
+    return (
+        <div ref={containerRef}>
+            <Helmet>
+                <title>{title}</title>
+            </Helmet>
+            {isStatus([ENUMS.STATUS.READY]) ? (
+                <Dropzone
+                    {...dropzoneProps}
+                    className={cx('dropzone')}
+                    files={{}}
+                    onError={onError}
+                    onFileAdded={e => onFileAdded(e)}
+                    ref={dropzoneRef}>
+                    <Uploads
+                        onRemoveFile={onFileRemoved}
+                        uploads={op.get(reduxState, 'uploads', {})}
+                    />
+                    {!isEmpty() ? (
+                        <>
+                            <Toolbar Media={handle} />
+                            <List data={search()} />
+                        </>
+                    ) : (
+                        <Empty Media={handle} />
+                    )}
+                    {!isEmpty() && <Pagination Media={handle} />}
+                </Dropzone>
+            ) : (
+                <div className={cx('spinner')}>
+                    <Spinner />
+                </div>
+            )}
+        </div>
+    );
+};
+
+const mapLibraryToList = library => {
+    if (Array.isArray(library)) return _.indexBy(library, 'objectId');
+    return library;
+};
+
+Media.ENUMS = ENUMS;
+
+Media.defaultProps = {
+    dropzoneProps: {
+        config: {
+            chunking: false,
+            clickable: true,
+            previewTemplate:
+                '<div class="dz-preview dz-file-preview"><span data-dz-name></div>',
+        },
+        debug: false,
+    },
+    namespace: 'admin-media',
+    page: 1,
+    title: ENUMS.TEXT.TITLE,
+};
+
+export { Media as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Media/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Media/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/reducers.js b/reactium_modules_old/reactium-admin-core/Media/reducers.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/reducers.js
rename to reactium_modules_old/reactium-admin-core/Media/reducers.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/state.js b/reactium_modules_old/reactium-admin-core/Media/state.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/state.js
rename to reactium_modules_old/reactium-admin-core/Media/state.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Media/text.js b/reactium_modules_old/reactium-admin-core/Media/text.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Media/text.js
rename to reactium_modules_old/reactium-admin-core/Media/text.js
diff --git a/reactium_modules_old/reactium-admin-core/Middleware/reactium-boot.js b/reactium_modules_old/reactium-admin-core/Middleware/reactium-boot.js
new file mode 100644
index 00000000..effc51f3
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Middleware/reactium-boot.js
@@ -0,0 +1,102 @@
+// const Reactium = require('@atomic-reactor/reactium-sdk-core').default;
+// const Enums = Reactium.Enums;
+// const proxy = require('http-proxy-middleware');
+// const op = require('object-path');
+// const _ = require('underscore');
+// const fs = require('fs');
+// const path = require('path');
+
+// const isSrc = () => {
+//     const d = path.normalize(
+//         path.join(process.cwd(), 'src', 'app', 'components', 'Admin', 'static'),
+//     );
+
+//     if (fs.existsSync(d)) return d;
+// };
+
+// Reactium.Server.Middleware.register('media-proxy', {
+//     name: 'media-proxy',
+//     use: (req, res, next) => {
+//         if (!global.restAPI) {
+//             next();
+//             return;
+//         }
+
+//         return proxy('/media', {
+//             target: restAPI.replace(/\/api$/, ''),
+//             changeOrigin: true,
+//             logLevel: process.env.DEBUG === 'on' ? 'debug' : 'error',
+//             ws: false,
+//         })(req, res, next);
+//     },
+//     order: Enums.priority.highest,
+// });
+
+// Reactium.Hook.register('Server.beforeApp', async (req, Server) => {
+//     try {
+//         const { plugins } = await Reactium.Cloud.run('plugins');
+//         req.plugins = global.plugins = plugins;
+//         Server.AppGlobals.register('plugins', {
+//             value: plugins,
+//             order: Enums.priority.highest,
+//         });
+//     } catch (error) {
+//         console.error('Unable to load plugins list', error);
+//     }
+// });
+
+// Reactium.Hook.registerSync(
+//     'Server.AppScripts',
+//     (req, AppScripts) => {
+//         _.sortBy(op.get(req, 'plugins', []), 'order').forEach(plugin => {
+//             const script = op.get(plugin, 'meta.assets.admin.script');
+//             AppScripts.unregister(plugin.ID);
+//             if (script && plugin.active) {
+//                 const url = !/^http/.test(script) ? '/api' + script : script;
+//                 AppScripts.register(plugin.ID, {
+//                     path: url,
+//                     order: Enums.priority.high,
+//                 });
+//             }
+//         });
+//     },
+//     Enums.priority.highest,
+// );
+
+// Reactium.Hook.registerSync(
+//     'Server.AppStyleSheets',
+//     (req, AppStyleSheets) => {
+//         _.sortBy(op.get(req, 'plugins', []), 'order').forEach(plugin => {
+//             const style = op.get(plugin, 'meta.assets.admin.style');
+//             AppStyleSheets.unregister(plugin.ID);
+//             if (style && plugin.active) {
+//                 const url = !/^http/.test(style) ? '/api' + style : style;
+//                 AppStyleSheets.register(plugin.ID, {
+//                     path: url,
+//                     order: Enums.priority.high,
+//                 });
+//             }
+//         });
+//     },
+//     Enums.priority.highest,
+// );
+
+// Reactium.Hook.registerSync(
+//     'Server.AppStyleSheets.includes',
+//     includes => {
+//         if (!includes.includes('admin.css') && isSrc()) {
+//             includes.push('admin.css');
+//         }
+//     },
+//     Enums.priority.highest,
+// );
+
+// Reactium.Hook.registerSync(
+//     'Server.AppStyleSheets.excludes',
+//     excludes => {
+//         if (!excludes.includes('style.css') && isSrc()) {
+//             excludes.push('style.css');
+//         }
+//     },
+//     Enums.priority.highest,
+// );
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/enums.js b/reactium_modules_old/reactium-admin-core/Password/Forgot/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/enums.js
rename to reactium_modules_old/reactium-admin-core/Password/Forgot/enums.js
diff --git a/reactium_modules_old/reactium-admin-core/Password/Forgot/index.js b/reactium_modules_old/reactium-admin-core/Password/Forgot/index.js
new file mode 100644
index 00000000..c06bb10e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Password/Forgot/index.js
@@ -0,0 +1,234 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import op from 'object-path';
+import { Redirect, Link } from 'react-router-dom';
+import React, { useEffect, useRef, useState } from 'react';
+import { Button, WebForm } from 'reactium-ui';
+import Reactium, { __, useHookComponent } from 'reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Forgot
+ * -----------------------------------------------------------------------------
+ */
+let Forgot = props => {
+    const Helmet = useHookComponent('Helmet');
+
+    const Logo = useHookComponent('Logo');
+
+    // Refs
+    const stateRef = useRef({
+        ...props,
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    // Side Effects
+    useEffect(
+        () => setState(props, 'Forgot -> useEffect()'),
+        Object.values(props),
+    );
+
+    const onSubmit = ({ value, valid }) => {
+        const { email } = value;
+        const { status } = stateRef.current;
+        if (status === ENUMS.STATUS.SUBMITTING) {
+            return;
+        }
+
+        setState({ ...value, error: {}, status: ENUMS.STATUS.SUBMITTING });
+
+        return Reactium.User.forgot(email)
+            .then(result => setState({ status: ENUMS.STATUS.SUCCESS }))
+            .catch(err =>
+                setState({
+                    error: {
+                        field: 'email',
+                        message: err.message,
+                    },
+                    status: ENUMS.STATUS.ERROR,
+                }),
+            );
+    };
+
+    const onChange = e => {
+        const { name, value } = e.target;
+        setState({ [name]: value });
+    };
+
+    const onError = ({ value, errors }) => {
+        const field = op.get(errors, 'fields.0');
+        const message = op.get(errors, 'errors.0');
+
+        setState({
+            error: {
+                field,
+                message,
+            },
+            status: ENUMS.STATUS.ERROR,
+        });
+
+        const elm = document.getElementById(field);
+        if (elm) {
+            elm.focus();
+        }
+    };
+
+    // Renderers
+    const render = () => {
+        if (Reactium.User.getSessionToken()) {
+            return <Redirect to={redirect} />;
+        }
+
+        const {
+            className,
+            email,
+            error = {},
+            signin,
+            signup,
+            status,
+        } = stateRef.current;
+
+        if (status === ENUMS.STATUS.SUCCESS) {
+            return (
+                <>
+                    <Helmet>
+                        <meta charSet='utf-8' />
+                        <title>{ENUMS.TEXT.TITLE}</title>
+                    </Helmet>
+                    <main className={className} role='main'>
+                        <WebForm
+                            onSubmit={onSubmit}
+                            onError={onError}
+                            value={{ email }}
+                            required={['email']}
+                            showError={false}>
+                            <div className='flex center mb-xs-40'>
+                                <Link to='/'>
+                                    <Logo width={80} height={80} />
+                                </Link>
+                            </div>
+                            <h1>{ENUMS.TEXT.SUCCESS}</h1>
+                            <input type='hidden' name='email' value={email} />
+                            <p className='text-center'>
+                                {ENUMS.TEXT.MESSAGE_SUCCESS[0]}
+                                <br />
+                                <kbd>{email}</kbd>
+                                <br />
+                                {ENUMS.TEXT.MESSAGE_SUCCESS[1]}
+                            </p>
+                            <div className='mt-xs-40'>
+                                <Button
+                                    block
+                                    color='secondary'
+                                    size='lg'
+                                    type='submit'
+                                    appearance='pill'
+                                    disabled={
+                                        status === ENUMS.STATUS.SUBMITTING
+                                    }>
+                                    {status === ENUMS.STATUS.SUBMITTING
+                                        ? ENUMS.TEXT.BUTTON.RESENDING
+                                        : ENUMS.TEXT.BUTTON.RESEND}
+                                </Button>
+                            </div>
+                        </WebForm>
+                    </main>
+                </>
+            );
+        }
+
+        return (
+            <>
+                <Helmet>
+                    <meta charSet='utf-8' />
+                    <title>{ENUMS.TEXT.TITLE}</title>
+                </Helmet>
+                <main className={className} role='main'>
+                    <WebForm
+                        onSubmit={onSubmit}
+                        onError={onError}
+                        value={{ email }}
+                        required={['email']}
+                        showError={false}>
+                        <div className='flex center mb-xs-40'>
+                            <Link to='/'>
+                                <Logo width={80} height={80} />
+                            </Link>
+                        </div>
+                        <h1>{ENUMS.TEXT.TITLE}</h1>
+                        <p className='text-center'>{ENUMS.TEXT.MESSAGE}</p>
+                        <div
+                            className={cn({
+                                'form-group': true,
+                                error: op.get(error, 'field') === 'email',
+                            })}>
+                            <input
+                                type='email'
+                                placeholder={ENUMS.TEXT.LABEL.EMAIL}
+                                name='email'
+                                value={email || ''}
+                                onChange={onChange}
+                                id='email'
+                                disabled={status === ENUMS.STATUS.SUBMITTING}
+                            />
+                            {op.get(error, 'field') === 'email' && (
+                                <small>{error.message}</small>
+                            )}
+                        </div>
+
+                        <div className='mt-xs-40'>
+                            <Button
+                                block
+                                color='secondary'
+                                size='lg'
+                                type='submit'
+                                appearance='pill'
+                                disabled={status === ENUMS.STATUS.SUBMITTING}>
+                                {status === ENUMS.STATUS.SUBMITTING
+                                    ? ENUMS.TEXT.BUTTON.SUBMITTING
+                                    : ENUMS.TEXT.BUTTON.SUBMIT}
+                            </Button>
+                        </div>
+                        <div className='links'>
+                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-left pr-xs-0 pr-sm-8 mt-xs-16'>
+                                <Link to={signin}>
+                                    {ENUMS.TEXT.LABEL.SIGNIN}
+                                </Link>
+                            </div>
+                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-right pl-xs-0 pl-sm-8 mt-xs-16'>
+                                <Link to={signup}>
+                                    {ENUMS.TEXT.LABEL.CREATE}
+                                </Link>
+                            </div>
+                        </div>
+                    </WebForm>
+                </main>
+            </>
+        );
+    };
+
+    return render();
+};
+
+Forgot.defaultProps = {
+    className: 'password',
+    signin: '/login',
+    signup: '/signup',
+};
+
+export { Forgot as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Password/Forgot/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Password/Forgot/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Password/Forgot/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/enums.js b/reactium_modules_old/reactium-admin-core/Password/Reset/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/enums.js
rename to reactium_modules_old/reactium-admin-core/Password/Reset/enums.js
diff --git a/reactium_modules_old/reactium-admin-core/Password/Reset/index.js b/reactium_modules_old/reactium-admin-core/Password/Reset/index.js
new file mode 100644
index 00000000..d0731a0e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/Password/Reset/index.js
@@ -0,0 +1,253 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import op from 'object-path';
+import { useSelect } from '@atomic-reactor/use-select';
+import { Redirect, Link } from 'react-router-dom';
+import React, { useEffect, useRef, useState } from 'react';
+import { Button, WebForm } from 'reactium-ui';
+import Reactium, { __, useHookComponent } from 'reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Reset
+ * -----------------------------------------------------------------------------
+ */
+let Reset = props => {
+    const Helmet = useHookComponent('Helmet');
+
+    const Logo = useHookComponent('Logo');
+
+    const token = useSelect({
+        select: state => op.get(state, 'Router.params.token'),
+    });
+
+    // Refs
+    const stateRef = useRef({
+        ...props,
+    });
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = (newState, caller) => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        if (ENUMS.DEBUG && caller) {
+            console.log('setState()', caller, {
+                state: stateRef.current,
+            });
+        }
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    // Side Effects
+    useEffect(
+        () => setState(props, 'Reset -> useEffect()'),
+        Object.values(props),
+    );
+
+    const cname = () => {
+        const { className, namespace } = stateRef.current;
+        return cn({ [className]: !!className, [namespace]: !!namespace });
+    };
+
+    const onChange = e => {
+        const { name, value } = e.target;
+        setState({ [name]: value });
+    };
+
+    const onError = ({ errors }) => {
+        const field = op.get(errors, 'fields.0');
+        const message = op.get(errors, 'errors.0');
+
+        setState({
+            error: {
+                field,
+                message,
+            },
+            status: ENUMS.STATUS.ERROR,
+        });
+
+        const elm = document.getElementById(field);
+        if (elm) {
+            elm.focus();
+        }
+    };
+
+    const onSubmit = ({ value }) => {
+        const { confirm, password } = value;
+
+        if (confirm !== password) {
+            onError({
+                errors: {
+                    errors: ['passwords do not match'],
+                    fields: ['password'],
+                },
+            });
+            return;
+        }
+
+        const { status } = stateRef.current;
+        if (status === ENUMS.STATUS.SUBMITTING) {
+            return;
+        }
+
+        setState({ ...value, error: {}, status: ENUMS.STATUS.SUBMITTING });
+
+        return Reactium.User.reset(token, password)
+            .then(result => {
+                setState({ status: ENUMS.STATUS.SUCCESS });
+
+                setTimeout(
+                    () => setState({ status: ENUMS.STATUS.COMPLETE }),
+                    100,
+                );
+            })
+            .catch(err => {
+                setState({
+                    error: {
+                        message: err.message,
+                    },
+                    status: ENUMS.STATUS.ERROR,
+                });
+            });
+    };
+
+    // Renderers
+    const render = () => {
+        const {
+            confirm,
+            error = {},
+            password,
+            signin,
+            signup,
+            status,
+        } = stateRef.current;
+
+        if (Reactium.User.getSessionToken()) {
+            return <Redirect to={redirect} />;
+        }
+
+        if (!token || status === ENUMS.STATUS.COMPLETE) {
+            return <Redirect to={signin} />;
+        }
+
+        const msg =
+            status === ENUMS.STATUS.SUCCESS || status === ENUMS.STATUS.COMPLETE
+                ? ENUMS.TEXT.SUCCESS
+                : ENUMS.TEXT.MESSAGE;
+
+        return (
+            <>
+                <Helmet>
+                    <meta charSet='utf-8' />
+                    <title>{ENUMS.TEXT.TITLE}</title>
+                </Helmet>
+                <main className={cname()} role='main'>
+                    <WebForm
+                        onSubmit={onSubmit}
+                        onError={onError}
+                        value={{ password, confirm }}
+                        required={['password', 'confirm']}
+                        showError={false}>
+                        <div className='flex center mb-xs-40'>
+                            <Link to='/'>
+                                <Logo width={80} height={80} />
+                            </Link>
+                        </div>
+                        <h1>{ENUMS.TEXT.TITLE}</h1>
+                        {op.get(error, 'message') && !op.get(error, 'field') ? (
+                            <p className='text-center red'>{error.message}</p>
+                        ) : (
+                            <p className='text-center'>{msg}</p>
+                        )}
+                        <div
+                            className={cn({
+                                'form-group': true,
+                                error: op.get(error, 'field') === 'password',
+                            })}>
+                            <input
+                                type='password'
+                                placeholder={ENUMS.TEXT.LABEL.PASSWORD}
+                                name='password'
+                                id='password'
+                                autoComplete='off'
+                                value={password || ''}
+                                onChange={onChange}
+                                disabled={status === ENUMS.STATUS.SUBMITTING}
+                            />
+                            {op.get(error, 'field') === 'password' && (
+                                <small>{error.message}</small>
+                            )}
+                        </div>
+                        <div
+                            className={cn({
+                                'form-group': true,
+                                error: op.get(error, 'field') === 'confirm',
+                            })}>
+                            <input
+                                type='password'
+                                placeholder={ENUMS.TEXT.LABEL.CONFIRM}
+                                name='confirm'
+                                id='confirm'
+                                autoComplete='off'
+                                value={confirm || ''}
+                                onChange={onChange}
+                                disabled={status === ENUMS.STATUS.SUBMITTING}
+                            />
+                            {op.get(error, 'field') === 'confirm' && (
+                                <small>{error.message}</small>
+                            )}
+                        </div>
+
+                        <div className='mt-xs-40'>
+                            <Button
+                                block
+                                color='secondary'
+                                size='lg'
+                                type='submit'
+                                appearance='pill'
+                                disabled={status === ENUMS.STATUS.SUBMITTING}>
+                                {status === ENUMS.STATUS.SUBMITTING ? (
+                                    <>{ENUMS.TEXT.BUTTON.SUBMITTING}...</>
+                                ) : (
+                                    <>{ENUMS.TEXT.BUTTON.SUBMIT}</>
+                                )}
+                            </Button>
+                        </div>
+                        <div className='links'>
+                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-left pr-xs-0 pr-sm-8 mt-xs-16'>
+                                <Link to={signin}>
+                                    {ENUMS.TEXT.LABEL.SIGNIN}
+                                </Link>
+                            </div>
+                            <div className='col-xs-12 col-sm-6 text-xs-center text-sm-right pl-xs-0 pl-sm-8 mt-xs-16'>
+                                <Link to={signup}>
+                                    {ENUMS.TEXT.LABEL.CREATE}
+                                </Link>
+                            </div>
+                        </div>
+                    </WebForm>
+                </main>
+            </>
+        );
+    };
+
+    return render();
+};
+
+Reset.defaultProps = {
+    namespace: 'password',
+    signin: '/login',
+    signup: '/signup',
+};
+
+export { Reset as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/Password/Reset/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Password/Reset/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/Password/Reset/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/Password/_style.scss b/reactium_modules_old/reactium-admin-core/Password/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/Password/_style.scss
rename to reactium_modules_old/reactium-admin-core/Password/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Breadcrumbs/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/Breadcrumbs/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Breadcrumbs/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/Breadcrumbs/index.js
diff --git a/reactium_modules_old/reactium-admin-core/PluginManager/Card/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/Card/index.js
new file mode 100644
index 00000000..495e1fa7
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/PluginManager/Card/index.js
@@ -0,0 +1,117 @@
+import React, { useEffect, useState } from 'react';
+import Reactium, { __, Zone } from 'reactium-core/sdk';
+import op from 'object-path';
+import cn from 'classnames';
+import { Toggle } from 'reactium-ui';
+import { Link } from 'react-router-dom';
+import { Icon } from 'reactium-ui';
+
+const Card = ({ plugin, canActivate = true }) => {
+    const core =
+        op.get(plugin, 'meta.builtIn', false) && plugin.group === 'core';
+    const defaultGraphic = core
+        ? '/assets/images/atomic-reactor-logo.svg'
+        : '/assets/images/plugin.svg';
+    let graphic = op.get(plugin, 'meta.assets.admin.logo', defaultGraphic);
+    if (!/^http/.test(graphic) && graphic !== defaultGraphic) {
+        if (typeof window !== 'undefined')
+            graphic = (window.restAPI || '/api') + graphic;
+        else
+            graphic =
+                (process.env.REST_API_URL || 'http://localhost:9000/api') +
+                graphic;
+    }
+
+    const { name, description, active, group } = plugin;
+
+    const toggleActivate = async () => {
+        const { ID } = plugin;
+        if (plugin.active) {
+            await Reactium.Cloud.run('plugin-deactivate', { plugin: ID });
+        } else {
+            await Reactium.Cloud.run('plugin-activate', { plugin: ID });
+        }
+
+        // reload the page to get plugin assets
+        if (typeof window !== 'undefined') location.reload(true);
+    };
+
+    const renderActivation = () => {
+        return (
+            <>
+                <div className='plugin-card-status'>
+                    <strong>
+                        {active ? __('Plugin Active') : __('Plugin Disabled')}
+                    </strong>
+                </div>
+                {group !== 'core' && canActivate && (
+                    <div className='plugin-card-toggle'>
+                        <Toggle
+                            label={
+                                plugin.active
+                                    ? __('Deactivate')
+                                    : __('Activate')
+                            }
+                            defaultChecked={plugin.active}
+                            onChange={toggleActivate}
+                        />
+                    </div>
+                )}
+            </>
+        );
+    };
+
+    const render = () => {
+        const settings = op.get(plugin, 'meta.settings', false);
+        const settingsUrl = op.get(plugin, 'meta.settingsUrl');
+        const settingsTitle = __('Plugin settings for %s').replace(
+            '%s',
+            plugin.name,
+        );
+
+        return (
+            <div
+                className={cn(
+                    'plugin-card',
+                    { 'plugin-card--core': core },
+                    `plugin-card--${plugin.ID}`
+                        .toLowerCase()
+                        .replace(/[^a-z0-9]/g, '-'),
+                )}>
+                <div className='plugin-card__graphic'>
+                    <img src={graphic} alt={plugin.name} />
+                </div>
+                <div className='plugin-card__details'>
+                    {!!name && <h3>{name}</h3>}
+                    {!!description && <p className='mt-8'>{description}</p>}
+                    <Zone zone='plugin-card-description' plugin={plugin} />
+                </div>
+                <div className='plugin-card__actions'>
+                    {plugin.active && settings && (
+                        <Link
+                            className={cn(
+                                'plugin-settings-link',
+                                `plugin-settings-link-${plugin.ID}`,
+                                'icon-link',
+                            )}
+                            to={
+                                settingsUrl
+                                    ? settingsUrl
+                                    : `/admin/plugins/${plugin.ID}`
+                            }
+                            title={settingsTitle}>
+                            <span className='sr-only'>{settingsTitle}</span>
+                            <Icon.Feather.Settings />
+                        </Link>
+                    )}
+                    {renderActivation()}
+                    <Zone zone='plugin-card-actions' plugin={plugin} />
+                </div>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+export default Card;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Group/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/Group/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Group/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/Group/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/List/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/List/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/List/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/List/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Settings/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/Settings/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/Settings/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/Settings/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/SidebarWidget/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/SidebarWidget/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/SidebarWidget/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/SidebarWidget/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/_style.scss b/reactium_modules_old/reactium-admin-core/PluginManager/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/_style.scss
rename to reactium_modules_old/reactium-admin-core/PluginManager/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/domain.js b/reactium_modules_old/reactium-admin-core/PluginManager/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/domain.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/index.js b/reactium_modules_old/reactium-admin-core/PluginManager/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/index.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/PluginManager/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/reducers.js b/reactium_modules_old/reactium-admin-core/PluginManager/reducers.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/reducers.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/reducers.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/state.js b/reactium_modules_old/reactium-admin-core/PluginManager/state.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/PluginManager/state.js
rename to reactium_modules_old/reactium-admin-core/PluginManager/state.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/_style.scss b/reactium_modules_old/reactium-admin-core/SearchBar/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/_style.scss
rename to reactium_modules_old/reactium-admin-core/SearchBar/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/domain.js b/reactium_modules_old/reactium-admin-core/SearchBar/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/domain.js
rename to reactium_modules_old/reactium-admin-core/SearchBar/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/enums.js b/reactium_modules_old/reactium-admin-core/SearchBar/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/enums.js
rename to reactium_modules_old/reactium-admin-core/SearchBar/enums.js
diff --git a/reactium_modules_old/reactium-admin-core/SearchBar/index.js b/reactium_modules_old/reactium-admin-core/SearchBar/index.js
new file mode 100644
index 00000000..bef94a7e
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/SearchBar/index.js
@@ -0,0 +1,130 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import ENUMS from './enums';
+import op from 'object-path';
+import domain from './domain';
+import deps from 'dependencies';
+import { Button, Icon } from 'reactium-ui';
+import React, { forwardRef, useEffect, useRef } from 'react';
+import { useHandle, useRegisterHandle } from 'reactium-core/sdk';
+import { useReduxState } from '@atomic-reactor/use-select';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Functional Component: Search
+ * -----------------------------------------------------------------------------
+ */
+let Search = ({ className, namespace, ...props }, ref) => {
+    const [state, setState] = useReduxState(domain.name);
+
+    const Tools = useHandle('AdminTools');
+
+    const inputRef = useRef();
+
+    const cname = cn({
+        [className]: !!className,
+        [namespace]: !!namespace,
+    });
+
+    const cx = cls => _.compact([namespace, cls]).join('-');
+
+    const onChange = e => {
+        const { value: val = '' } = e.target;
+        setState({ value: val });
+    };
+
+    const onClear = () => {
+        const input = inputRef.current;
+        setState({ value: null });
+        input.focus();
+    };
+
+    const onFocus = e => {
+        e.target.select();
+        Tools.Tooltip.hide(e);
+        setState({ focused: true });
+    };
+
+    const onBlur = () => setState({ focused: null });
+
+    const render = () => {
+        const { focused, icon = {}, placeholder, value, visible } = state;
+
+        const tooltip =
+            value || focused
+                ? {}
+                : {
+                      'data-tooltip': placeholder,
+                      'data-vertical-align': 'middle',
+                      'data-align': 'right',
+                  };
+
+        return visible !== true ? null : (
+            <div className={cname}>
+                <input
+                    aria-label={ENUMS.TEXT.ARIA_SEARCH}
+                    onBlur={onBlur}
+                    onChange={onChange}
+                    onFocus={onFocus}
+                    placeholder={placeholder}
+                    ref={inputRef}
+                    value={value || ''}
+                    {...tooltip}
+                />
+                <Icon
+                    className={cx('icon')}
+                    name={op.get(icon, 'search', 'Feather.Search')}
+                />
+                {value && (
+                    <Button
+                        appearance='circle'
+                        aria-label={ENUMS.TEXT.ARIA_CLEAR}
+                        color='primary'
+                        data-align='right'
+                        data-tooltip={ENUMS.TEXT.ARIA_CLEAR}
+                        data-vertical-align='middle'
+                        onClick={onClear}
+                        size='xs'>
+                        <Icon
+                            name={op.get(icon, 'clear', 'Feather.X')}
+                            size={16}
+                        />
+                    </Button>
+                )}
+            </div>
+        );
+    };
+
+    const handle = () => ({
+        ENUMS,
+        input: inputRef.current,
+        ref,
+        setState,
+        state,
+        value: op.get(state, 'value'),
+        visible: op.get(state, 'visible'),
+    });
+
+    useRegisterHandle('SearchBar', handle, [
+        op.get(state, 'value'),
+        op.get(state, 'visible'),
+    ]);
+
+    return render();
+};
+
+Search = forwardRef(Search);
+
+Search.defaultProps = {
+    focused: null,
+    icon: {
+        clear: 'Feather.X',
+        search: 'Feather.Search',
+    },
+    namespace: 'admin-search-bar',
+    placeholder: ENUMS.TEXT.PLACEHOLDER,
+    value: null,
+    visible: false,
+};
+
+export default Search;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/SearchBar/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/SearchBar/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/reducers.js b/reactium_modules_old/reactium-admin-core/SearchBar/reducers.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/reducers.js
rename to reactium_modules_old/reactium-admin-core/SearchBar/reducers.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/state.js b/reactium_modules_old/reactium-admin-core/SearchBar/state.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/SearchBar/state.js
rename to reactium_modules_old/reactium-admin-core/SearchBar/state.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/arcli-install.js b/reactium_modules_old/reactium-admin-core/arcli-install.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/arcli-install.js
rename to reactium_modules_old/reactium-admin-core/arcli-install.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/arcli-publish.js b/reactium_modules_old/reactium-admin-core/arcli-publish.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/arcli-publish.js
rename to reactium_modules_old/reactium-admin-core/arcli-publish.js
diff --git a/reactium_modules_old/reactium-admin-core/colors.json b/reactium_modules_old/reactium-admin-core/colors.json
new file mode 100644
index 00000000..9e5f3a20
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/colors.json
@@ -0,0 +1,17 @@
+{
+    "color-black": "#000000",
+    "color-gray-dark": "#333333",
+    "color-gray": "#999999",
+    "color-grey": "#CFCFCF",
+    "color-grey-light": "#F7F7F7",
+    "color-white": "#FFFFFF",
+    "color-white-dark": "#FDFDFD",
+    "color-yellow": "#F4F19C",
+    "color-orange": "#E69840",
+    "color-pink": "#D877A0",
+    "color-red": "#E09797",
+    "color-purple": "#7A7CEF",
+    "color-blue": "#4F82BA",
+    "color-green": "#659A3F",
+    "color-green-light": "#B2BB50"
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/gulp.config.override.js b/reactium_modules_old/reactium-admin-core/gulp.config.override.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/gulp.config.override.js
rename to reactium_modules_old/reactium-admin-core/gulp.config.override.js
diff --git a/reactium_modules_old/reactium-admin-core/package.json b/reactium_modules_old/reactium-admin-core/package.json
new file mode 100644
index 00000000..efe2f893
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/package.json
@@ -0,0 +1,61 @@
+{
+  "actinium": {
+    "version": "3.6.6"
+  },
+  "reactium": {
+    "version": "4.1.4"
+  },
+  "name": "@atomic-reactor/reactium-admin-core",
+  "version": "1.0.2",
+  "description": "Reactium based Admin UI for the Actinium Application Management System.",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Atomic-Reactor/Reactium-Admin-Plugins.git"
+  },
+  "keywords": [
+    "reactium",
+    "actinium",
+    "atomic",
+    "reactor"
+  ],
+  "author": "Reactium LLC",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins/issues"
+  },
+  "homepage": "https://github.com/Atomic-Reactor/Reactium-Admin-Plugins#readme",
+  "dependencies": {
+    "@atomic-reactor/actinium-auth": "^1.0.2",
+    "reactium-ui": "latest",
+    "classnames": "^2.2.6",
+    "copy-to-clipboard": "^3.3.1",
+    "fullscrn": "^1.3.3",
+    "gsap": "^2.1.3",
+    "gulp-sass": "^4.1.0",
+    "is-hotkey": "^0.1.6",
+    "lunr": "^2.3.8",
+    "memory-cache": "^0.2.0",
+    "moment": "^2.27.0",
+    "node-sass": "^5.0.0",
+    "node-sass-functions-json": "^1.0.0",
+    "object-path": "^0.11.4",
+    "parse": "^2.15.0",
+    "pluralize": "^8.0.0",
+    "react-custom-scrollbars": "^4.2.1",
+    "react-draggable": "^4.2.0",
+    "react-jsx-parser": "^1.21.0",
+    "react-live": "^2.2.2",
+    "react-player": "^2.7.2",
+    "react-spring": "^9.1.2",
+    "react-use-gesture": "^7.0.11",
+    "slate": "^0.57.1",
+    "slate-history": "^0.57.1",
+    "slate-react": "^0.57.1",
+    "underscore": "*",
+    "uuid": "^3.4.0"
+  }
+}
\ No newline at end of file
diff --git a/reactium_modules_old/reactium-admin-core/reactium-gulp.js b/reactium_modules_old/reactium-admin-core/reactium-gulp.js
new file mode 100644
index 00000000..67967250
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/reactium-gulp.js
@@ -0,0 +1,40 @@
+const op = require('object-path');
+
+// ReactiumGulp.Enums.style = {
+//     MIXINS: -1000,
+//     VARIABLES: -900,
+//     BASE: -800,
+//     ATOMS: 0,
+//     MOLECULES: 800,
+//     ORGANISMS: 900,
+//     OVERRIDES: 1000,
+// };
+ReactiumGulp.Hook.registerSync('ddd-styles-partial', SassPartial => {
+    const Priority = op.get(ReactiumGulp, 'Enums.style');
+    op.set(Priority, 'ADMIN_BASE', Priority.ORGANISMS + 1);
+    op.set(Priority, 'ADMIN_PLUGIN', Priority.ORGANISMS + 10);
+
+    SassPartial.register('admin-plugin-ddd', {
+        pattern: /_reactium-style-admin-plugin/,
+        exclude: false,
+        priority: Priority.ADMIN_PLUGIN,
+    });
+
+    SassPartial.register('admin-plugin-dir', {
+        pattern: /admin-plugin\/_reactium-style/,
+        exclude: false,
+        priority: Priority.ADMIN_PLUGIN,
+    });
+
+    SassPartial.register('admin-ddd', {
+        pattern: /_reactium-style-admin/,
+        exclude: false,
+        priority: Priority.ADMIN_BASE,
+    });
+
+    SassPartial.register('admin-dir', {
+        pattern: /admin\/_reactium-style/,
+        exclude: false,
+        priority: Priority.ADMIN_BASE,
+    });
+});
diff --git a/reactium_modules_old/reactium-admin-core/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/reactium-hooks.js
new file mode 100644
index 00000000..6b3d9426
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/reactium-hooks.js
@@ -0,0 +1,7 @@
+import { Link } from 'react-router-dom';
+import Reactium from 'reactium-core/sdk';
+import { Button } from 'reactium-ui';
+
+Reactium.Plugin.register('ButtonEnums').then(
+    () => (Button.ENUMS.ELEMENT.LINK = props => <Link {...props} />),
+);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/Blocker/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/Blocker/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/Blocker/index.js b/reactium_modules_old/reactium-admin-core/registered-components/Blocker/index.js
new file mode 100644
index 00000000..eb2293b1
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/Blocker/index.js
@@ -0,0 +1,48 @@
+import React from 'react';
+import Proptypes from 'prop-types';
+import { useHookComponent } from 'reactium-core/sdk';
+import { Spinner } from 'reactium-ui';
+
+const Blocker = props => {
+    const Portal = useHookComponent('Portal');
+    return (
+        <Portal>
+            <Spinner {...props} />
+        </Portal>
+    );
+};
+
+Blocker.propTypes = {
+    ...Spinner.propTypes,
+};
+
+Blocker.defaultProps = {
+    className: 'ar-blocker',
+};
+
+export default Blocker;
+
+/**
+ * @api {RegisteredComponent} <Blocker/> Blocker
+ * @apiDescription Overlay that displays the Reactium UI `<Spinner />` component and disables interaction with the rest of the UI.
+ * @apiName Blocker
+ * @apiGroup Registered Component
+ * @apiParam {Object} props See the documentation for the [http://ui.reactium.io/toolkit/components/spinner-molecule](Spinner component).
+ * @apiExample Basic Usage:
+import Blocker from 'reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker';
+
+...
+
+<Blocker />
+
+ * @apiExample useHookComponent Example:
+import { useHookComponent } from 'reactium-core/sdk';
+
+const Component = props => {
+    const Blocker = useHookComponent('Blocker');
+
+    return <Blocker />
+};
+
+export default Component;
+ */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/Blocker/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/Blocker/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/Blocker/reactium-hooks.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/ColorPicker/index.js b/reactium_modules_old/reactium-admin-core/registered-components/ColorPicker/index.js
new file mode 100644
index 00000000..181ac4dc
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/ColorPicker/index.js
@@ -0,0 +1,257 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
+
+import Reactium, {
+    ComponentEvent,
+    useDerivedState,
+    useEventHandle,
+    useIsContainer,
+    useRefs,
+    useStatus,
+} from 'reactium-core/sdk';
+
+const noop = () => {};
+
+let ColorPicker = (
+    {
+        maxHeight,
+        minHeight,
+        namespace,
+        onBlur = noop,
+        onFocus = noop,
+        onChange = noop,
+        onKeyUp = noop,
+        value: initialValue,
+        visible: initialVisible,
+        ...props
+    },
+    ref,
+) => {
+    const refs = useRefs();
+
+    const [status, setStatus, isStatus] = useStatus();
+
+    const [state, update] = useDerivedState({
+        value: props.defaultValue || initialValue,
+        visible: initialVisible,
+    });
+
+    const setState = (k, v) => {
+        if (unMounted()) return;
+        const newState = _.isString(k) ? { [k]: v } : k;
+        update(newState);
+    };
+
+    const setValue = v => setState('value', v);
+
+    const setVisible = v => setState('visible', v);
+
+    const dispatch = (e, eventObj) => {
+        const evt = new ComponentEvent(e, eventObj);
+        handle.dispatchEvent(evt);
+        return evt;
+    };
+
+    const isContainer = useIsContainer();
+
+    const hide = () => setVisible(false);
+
+    const show = () => setVisible(true);
+
+    const toggle = () => setVisible(!state.visible);
+
+    const _onBlur = e => {
+        const container = refs.get('container');
+        if (container && isContainer(e.target, container)) {
+            return;
+        } else {
+            setVisible(false);
+            onBlur(e);
+        }
+    };
+
+    const _onChange = e => setValue(e.target.value);
+
+    const _onFocus = e => {
+        setVisible(true);
+        onFocus(e);
+    };
+
+    const _onKeyUp = e => {
+        let v = e.target.value;
+        if (String(v).startsWith('#')) {
+            v = String(v).toUpperCase();
+        }
+
+        e.target.value = v;
+
+        onKeyUp(e);
+    };
+
+    const _onSelect = v => () => {
+        setValue(v);
+        hide();
+    };
+
+    const _value = () => {
+        let val = !_.chain([op.get(state, 'value')])
+            .flatten()
+            .compact()
+            .isEmpty()
+            .value()
+            ? state.value
+            : ColorPicker.defaultProps.value;
+
+        if (!val) return;
+
+        val = String(val).startsWith('#') ? String(val).toUpperCase() : val;
+
+        return val;
+    };
+
+    const colors = () => Object.values(Reactium.RTE.colors);
+
+    const unMounted = () => !refs.get('container');
+
+    const _handle = () => ({
+        ...props,
+        blur: hide,
+        colors: colors(),
+        dispatch,
+        focus: show,
+        hide,
+        isStatus,
+        refs,
+        show,
+        setState,
+        setStatus,
+        setValue,
+        setVisible,
+        state,
+        status,
+        toggle,
+        unMounted,
+        value: _value(),
+    });
+
+    const [handle, updateHandle] = useEventHandle(_handle());
+    const setHandle = newHandle => {
+        if (unMounted()) return;
+        updateHandle(newHandle);
+    };
+
+    useImperativeHandle(ref, () => handle);
+
+    useEffect(() => {
+        const newValue = _value();
+
+        if (handle.value !== newValue) {
+            handle.value = newValue;
+            if (!isStatus('pending')) {
+                onChange(dispatch('change', { value: handle.value }));
+            }
+
+            const input = refs.get('input');
+            if (input && handle.value && input.value !== handle.value) {
+                input.value = handle.value;
+            }
+
+            setHandle(handle);
+        }
+    }, [state.value]);
+
+    useEffect(() => {
+        dispatch('status', { status, isStatus, setStatus });
+
+        switch (status) {
+            case 'pending':
+                setStatus('ready', true);
+                break;
+        }
+    }, [status]);
+
+    useEffect(() => {
+        if (!window) return;
+        window.addEventListener('mousedown', _onBlur);
+        window.addEventListener('touchstart', _onBlur);
+
+        return () => {
+            window.removeEventListener('mousedown', _onBlur);
+            window.removeEventListener('touchstart', _onBlur);
+        };
+    }, []);
+
+    return (
+        <div className={cn(namespace)} ref={elm => refs.set('container', elm)}>
+            <div className='fieldset'>
+                <input
+                    {...props}
+                    type='text'
+                    onFocus={_onFocus}
+                    onKeyUp={_onKeyUp}
+                    onChange={_onChange}
+                    defaultValue={state.value}
+                    ref={elm => refs.set('input', elm)}
+                />
+                <Swatch value={_value()} disabled />
+            </div>
+            <div
+                className='ar-color-select'
+                style={{ display: !state.visible ? 'none' : null }}>
+                <Scrollbars
+                    autoHeight
+                    autoHeightMax={maxHeight}
+                    autoHeightMin={minHeight}>
+                    <div className='ar-color-select-swatches'>
+                        {colors().map((item, i) => (
+                            <Swatch
+                                onClick={_onSelect(item.value)}
+                                active={state.value === item.value}
+                                key={`color-${item.value}-${i}`}
+                                {...item}
+                            />
+                        ))}
+                    </div>
+                </Scrollbars>
+            </div>
+        </div>
+    );
+};
+
+ColorPicker = forwardRef(ColorPicker);
+
+ColorPicker.defaultProps = {
+    maxHeight: 256,
+    minHeight: 48,
+    namespace: 'input-button',
+    value: null,
+    visible: false,
+};
+
+const Swatch = ({
+    active,
+    className,
+    label,
+    onClick = noop,
+    disabled,
+    value,
+    ...props
+}) => (
+    <div
+        className={cn('swatch', className, {
+            light: value && Reactium.RTE.isLight(value),
+            disabled,
+            active,
+        })}
+        onClick={!disabled ? onClick : noop}
+        style={{ backgroundColor: value }}
+        title={label || value}
+        {...props}
+    />
+);
+
+export { ColorPicker, ColorPicker as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ColorPicker/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/ColorPicker/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/ColorPicker/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/ColorPicker/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/DragPanel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/DragPanel/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/domain.js b/reactium_modules_old/reactium-admin-core/registered-components/DragPanel/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/domain.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DragPanel/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/DragPanel/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DragPanel/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/DragPanel/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DragPanel/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DragPanel/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Comparison.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Comparison.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Comparison.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Comparison.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Controller.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Controller.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Controller.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Controller.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/DragHandle.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/DragHandle.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/DragHandle.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/DragHandle.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js
new file mode 100644
index 00000000..7349b7de
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/Editor.js
@@ -0,0 +1,268 @@
+import React, { useRef, useState, useEffect, memo } from 'react';
+import { Alert, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useHookComponent,
+    useAsyncEffect,
+} from 'reactium-core/sdk';
+import MenuList from './MenuList';
+import _ from 'underscore';
+import op from 'object-path';
+import cn from 'classnames';
+
+const noop = () => {};
+const Menu = props => {
+    const {
+        items = [],
+        setItems = noop,
+        onRemoveItem = noop,
+        onUpdateItem = noop,
+        itemTypes = {},
+        fieldName,
+        editor,
+    } = props;
+
+    const onReorder = (reordered = []) => {
+        const currentItemsById = _.indexBy(items, 'id');
+        const newItems = _.compact(
+            reordered.map(({ key, depth = 0 }) => ({
+                ...currentItemsById[key],
+                depth,
+            })),
+        ).map((item, idx, items) => {
+            const depth =
+                idx > 0
+                    ? // children are at most 1 deeper than parent
+                      Math.min(
+                          op.get(items, [idx - 1, 'depth'], 0) + 1,
+                          item.depth,
+                      )
+                    : // top-most parent must be depth 0
+                      0;
+
+            return {
+                ...item,
+                depth,
+            };
+        });
+
+        if (
+            items.length !== newItems.length ||
+            !_.isEqual(_.pluck(items, 'id'), _.pluck(newItems, 'id')) ||
+            !_.isEqual(_.pluck(items, 'depth'), _.pluck(newItems, 'depth'))
+        ) {
+            setItems(newItems);
+        }
+    };
+
+    return (
+        <div className='menu-list-wrapper'>
+            <MenuList
+                fieldName={fieldName}
+                editor={editor}
+                onReorder={onReorder}
+                items={items.map(item => ({
+                    ...item,
+                    MenuItem: op.get(itemTypes, [item.type, 'MenuItem']),
+                }))}
+                onRemoveItem={onRemoveItem}
+                onUpdateItem={onUpdateItem}
+            />
+        </div>
+    );
+};
+
+const areEqual = (pv, nx) => {
+    return pv.editor === nx.editor && pv.fieldName === nx.fieldName;
+};
+
+const MenuEditor = memo(props => {
+    const fieldName = op.get(props, 'fieldName');
+    const namespace = op.get(props, 'namespace', 'menu-editor');
+    const [value, _setValue] = useState(
+        op.get(props.editor, ['value', fieldName], { items: [] }),
+    );
+    const valueRef = useRef(value);
+
+    const setValue = value => {
+        valueRef.current = value;
+        _setValue(value);
+    };
+
+    const getValue = () => valueRef.current;
+
+    const items = op.get(value, 'items', []);
+
+    const mapFieldsToItems = items => {
+        const fieldVal = op.get(
+            props.editor.EventForm.getValue(),
+            [fieldName],
+            {},
+        );
+
+        return items.map(item => {
+            const id = item.id;
+            if (op.has(fieldVal, [id])) {
+                return {
+                    ...item,
+                    ...op.get(fieldVal, [id]),
+                };
+            }
+
+            return item;
+        });
+    };
+
+    const setItems = items => {
+        const fieldVal = op.get(
+            props.editor.EventForm.getValue(),
+            [fieldName],
+            {},
+        );
+
+        const newValue = {
+            ...value,
+            ...fieldVal,
+            items: mapFieldsToItems(items),
+        };
+
+        setValue(newValue);
+        _.defer(() => props.editor.setValue({ [fieldName]: newValue }));
+    };
+
+    const addItems = item => {
+        const added = _.flatten([item]);
+        setItems(items.concat(added));
+    };
+
+    const removeItem = ({ id }) => () => {
+        setItems(items.filter(item => item.id !== id));
+    };
+
+    const updateItem = item => {
+        setItems(
+            items.map(current => {
+                if (current.id !== item.id) return current;
+                return {
+                    ...current,
+                    item,
+                };
+            }),
+        );
+    };
+
+    const ElementDialog = useHookComponent('ElementDialog');
+    const itemTypes = Reactium.MenuBuilder.ItemType.list || [];
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const clean = e => {
+        const formValue = op.get(e.value, [fieldName], {});
+        setValue(formValue);
+    };
+
+    const save = async statusEvt => {
+        const currentValue = getValue();
+        const formValue = op.get(statusEvt, ['value', fieldName], {});
+
+        const saveItems = mapFieldsToItems(op.get(currentValue, 'items', []));
+        await new Promise(async resolve => {
+            for (const item of saveItems) {
+                Reactium.Hook.runSync('menu-build-item-save', fieldName, item);
+                await Reactium.Hook.run(
+                    'menu-build-item-save',
+                    fieldName,
+                    item,
+                );
+            }
+
+            resolve();
+        });
+
+        op.set(statusEvt, ['value', fieldName], {
+            ...formValue,
+            items: saveItems,
+        });
+    };
+
+    useEffect(() => {
+        props.editor.addEventListener('clean', clean);
+        props.editor.addEventListener('save-success', clean);
+        return () => {
+            props.editor.removeEventListener('clean', clean);
+            props.editor.removeEventListener('save-success', clean);
+        };
+    }, [props.editor]);
+
+    useAsyncEffect(async isMounted => {
+        const saveId = Reactium.Hook.register(
+            'form-editor-status',
+            async (statusEvt, type, handle) => {
+                if (statusEvt.event === 'SAVE' && isMounted()) {
+                    await save(statusEvt, type, handle);
+                }
+            },
+        );
+
+        return () => Reactium.Hook.unregister(saveId);
+    });
+
+    const renderEditor = () => (
+        <div className={'menu-container'}>
+            {items.length < 1 && (
+                <div className={'px-xs-20'}>
+                    <Alert
+                        dismissable={false}
+                        color={Alert.ENUMS.COLOR.INFO}
+                        icon={<Icon name={'Feather.Flag'} />}>
+                        {__('Add Menu Item to begin menu.')}
+                    </Alert>
+                </div>
+            )}
+            <div className={'menu'}>
+                <Menu
+                    {...props}
+                    items={items}
+                    setItems={setItems}
+                    itemTypes={_.indexBy(itemTypes, 'id')}
+                    onRemoveItem={removeItem}
+                    onUpdateItem={updateItem}
+                />
+            </div>
+        </div>
+    );
+
+    const renderControls = () => {
+        return itemTypes.map(itemType => {
+            const Control = op.get(itemType, 'Control', () => null);
+
+            return (
+                <Control
+                    key={itemType.id}
+                    itemType={itemType}
+                    cx={cx}
+                    onAddItems={addItems}
+                    {...props}
+                />
+            );
+        });
+    };
+
+    const render = () => {
+        return (
+            <ElementDialog {...props}>
+                <div className={cn(cx(), 'row')}>
+                    <div className={cn(cx('controls'), 'col-xs-12 col-sm-4')}>
+                        {renderControls()}
+                    </div>
+                    <div className={cn(cx('items'), 'col-xs-12 col-sm-8')}>
+                        {renderEditor()}
+                    </div>
+                </div>
+            </ElementDialog>
+        );
+    };
+
+    return render();
+}, areEqual);
+
+export default MenuEditor;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/FieldType.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/FieldType.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Compare.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Compare.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Compare.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Compare.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js
new file mode 100644
index 00000000..bc7a1d57
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/Control.js
@@ -0,0 +1,290 @@
+import React, { useRef, useState } from 'react';
+import { Tabs, Dialog, Button, Icon, Checkbox, Pagination } from 'reactium-ui';
+import op from 'object-path';
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import Reactium, { __, useAsyncEffect } from 'reactium-core/sdk';
+
+const noop = () => {};
+const Search = ({ onSearch = noop }) => {
+    return (
+        <label className='ar-data-table-search pb-xs-8'>
+            <input
+                type='text'
+                className='dialog-search'
+                placeholder={__('Search')}
+                onChange={onSearch}
+            />
+            <span className='bg' />
+            <span className='ico'>
+                <Icon name='Feather.Search' />
+            </span>
+        </label>
+    );
+};
+
+const ContentTypeOptions = ({ items, type, onChange, selected = [] }) => {
+    return items.map(item => {
+        item.type = type;
+        const display = op.get(item, 'title', op.get(item, 'slug'));
+
+        return (
+            <li key={item.uuid} className={'content-option'}>
+                <Checkbox
+                    onChange={onChange(item)}
+                    checked={Boolean(selected.find(i => i.uuid === item.uuid))}
+                    label={display}
+                    labelAlign={'right'}
+                />
+            </li>
+        );
+    });
+};
+
+const SearchTab = ({ type, onAddItems = noop }) => {
+    const [term, setTerm] = useState('');
+    const updateTerm = useRef(_.throttle(search => setTerm(search), 500))
+        .current;
+    const [result, setResult] = useState({
+        count: 0,
+        next: null,
+        page: 1,
+        pages: 1,
+        prev: null,
+        results: [],
+    });
+    const [selected, setSelected] = useState([]);
+
+    const results = op.get(result, 'results', []);
+
+    const searchListener = e => {
+        const search = e.currentTarget.value;
+        updateTerm(search);
+    };
+
+    const checkListener = item => e => {
+        if (e.target.checked) {
+            setSelected(selected.concat(item));
+        } else {
+            setSelected(selected.filter(i => i.uuid !== item.uuid));
+        }
+    };
+
+    useAsyncEffect(
+        async isMounted => {
+            if (term.length >= 3) {
+                const { collection } = type;
+                const result = await Reactium.Cloud.run('search', {
+                    index: collection,
+                    search: term,
+                });
+                if (isMounted()) {
+                    setResult(result);
+                    setSelected([]);
+                }
+            }
+        },
+        [term],
+    );
+    return (
+        <div className='p-xs-16'>
+            <Search onSearch={searchListener} />
+            <ul className='content-options'>
+                <ContentTypeOptions
+                    type={type}
+                    items={results}
+                    onChange={checkListener}
+                    selected={selected}
+                />
+            </ul>
+
+            <Button
+                disabled={selected.length < 1}
+                onClick={() => {
+                    onAddItems(selected);
+                    setSelected([]);
+                }}>
+                {__('Add')}
+            </Button>
+        </div>
+    );
+};
+
+const PaginatedTab = ({ type, onAddItems = noop }) => {
+    const [result, setResult] = useState({
+        count: 0,
+        next: null,
+        page: 1,
+        pages: 1,
+        prev: null,
+        results: [],
+    });
+    const [selected, setSelected] = useState([]);
+
+    const results = op.get(result, 'results', []);
+    const page = op.get(result, 'page');
+    const pages = op.get(result, 'pages');
+
+    const checkListener = item => e => {
+        if (e.target.checked) {
+            setSelected(selected.concat(item));
+        } else {
+            setSelected(selected.filter(i => i.uuid !== item.uuid));
+        }
+    };
+
+    useAsyncEffect(
+        async isMounted => {
+            if (page <= pages) {
+                const { collection } = type;
+                const result = await Reactium.Cloud.run('content-list', {
+                    type,
+                    page,
+                    limit: 10,
+                    orderBy: 'updatedAt',
+                    direction: 'descending',
+                    resolveRelations: true,
+                });
+
+                if (isMounted()) {
+                    setResult(result);
+                    setSelected([]);
+                }
+            }
+        },
+        [page],
+    );
+
+    const nextPage = () => {
+        setResult({
+            ...result,
+            page: page + 1,
+        });
+    };
+
+    const prevPage = () => {
+        setResult({
+            ...result,
+            page: page - 1,
+        });
+    };
+
+    return (
+        <div className='p-xs-16'>
+            <ul className='content-options'>
+                <ContentTypeOptions
+                    type={type}
+                    items={results}
+                    onChange={checkListener}
+                    selected={selected}
+                />
+            </ul>
+            {pages > 1 && (
+                <div className='col-xs-12 col-sm-6 col-lg-4 pb-xs-20'>
+                    <Pagination
+                        page={page}
+                        pages={pages}
+                        onNextClick={nextPage}
+                        onPrevClick={prevPage}
+                    />
+                </div>
+            )}
+
+            <Button
+                disabled={selected.length < 1}
+                onClick={() => {
+                    onAddItems(selected);
+                    setSelected([]);
+                }}>
+                {__('Add')}
+            </Button>
+        </div>
+    );
+};
+
+const ContentTypeControl = props => {
+    const cx = op.get(props, 'cx');
+    const itemType = op.get(props, 'itemType');
+    const types = op.get(itemType, 'types', []);
+    const onAddItems = op.get(props, 'onAddItems', noop);
+    const addItems = items => {
+        onAddItems(
+            items.map(item => ({
+                id: uuid(),
+                type: 'ContentType',
+                item: {
+                    icon: op.get(item, 'type.meta.icon', 'Linear.Papers'),
+                    title: op.get(item, 'title', op.get(item, 'slug', '')),
+                    url: op.get(
+                        item,
+                        'urls.0.route',
+                        `/${op.get(item, 'type.machineName')}/${op.get(
+                            item,
+                            'slug',
+                        )}`,
+                    ),
+                    context: item,
+                },
+                depth: 0,
+            })),
+        );
+    };
+
+    const tabs = type => {
+        return [
+            {
+                id: 'all',
+                tab: __('View All'),
+                content: <PaginatedTab type={type} onAddItems={addItems} />,
+            },
+            {
+                id: 'search',
+                tab: __('Search'),
+                content: <SearchTab type={type} onAddItems={addItems} />,
+            },
+        ];
+    };
+
+    return (
+        <div className={cx('control', 'control-types')}>
+            {types.map(type => {
+                const uuid = op.get(type, 'uuid');
+                const icon = op.get(type, 'meta.icon', 'Linear.Papers');
+                const title = op.get(
+                    type,
+                    'meta.label',
+                    op.get(type, 'type', ''),
+                );
+
+                return (
+                    <Dialog
+                        key={uuid}
+                        header={{
+                            title: (
+                                <div className='control-title'>
+                                    <Button
+                                        className='ar-dialog-header-btn'
+                                        color={Button.ENUMS.COLOR.CLEAR}
+                                        readOnly
+                                        style={{ padding: 0, border: 'none' }}>
+                                        <Icon name={icon} />
+                                    </Button>
+                                    <span>{title}</span>
+                                </div>
+                            ),
+                        }}
+                        pref={cx(`control-${title}`)}>
+                        <Tabs
+                            activeTab={0}
+                            collapsible={false}
+                            data={tabs(type)}
+                            onAddItems={onAddItems}
+                        />
+                    </Dialog>
+                );
+            })}
+        </div>
+    );
+};
+
+export default ContentTypeControl;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/MenuItem.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/MenuItem.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/MenuItem.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/MenuItem.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/index.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/ContentType/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Compare.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Compare.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Compare.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Compare.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js
new file mode 100644
index 00000000..ddb12cd6
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/Control.js
@@ -0,0 +1,101 @@
+import React, { useState } from 'react';
+import { Dialog, Button, Icon } from 'reactium-ui';
+import op from 'object-path';
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import { __ } from 'reactium-core/sdk';
+
+const noop = () => {};
+
+const defaultLink = {
+    title: '',
+    url: '',
+};
+
+const AddLinkControl = ({ onAddItems = noop }) => {
+    const [link, setLink] = useState(defaultLink);
+
+    const onChange = type => e => {
+        const value = e.target.value;
+
+        setLink({
+            ...link,
+            [type]: value,
+        });
+    };
+
+    const clearLink = () => setLink(defaultLink);
+    const title = op.get(link, 'title', '');
+    const url = op.get(link, 'url', '');
+
+    return (
+        <div className='p-xs-16'>
+            <div className='form-group'>
+                <input
+                    type='text'
+                    onChange={onChange('title')}
+                    placeholder={__('Link Title')}
+                    value={title}
+                />
+            </div>
+
+            <div className='form-group'>
+                <input
+                    type='text'
+                    onChange={onChange('url')}
+                    placeholder={__('Link URL')}
+                    value={url}
+                />
+            </div>
+
+            <Button
+                className='mt-xs-16'
+                disabled={!title || !title.length || !url.length}
+                onClick={() => {
+                    onAddItems(link);
+                    clearLink();
+                }}>
+                {__('Add')}
+            </Button>
+        </div>
+    );
+};
+
+const LinkControl = props => {
+    const cx = op.get(props, 'cx');
+    const onAddItems = op.get(props, 'onAddItems', noop);
+
+    const addItems = item => {
+        onAddItems({
+            id: uuid(),
+            type: 'Link',
+            item,
+            depth: 0,
+        });
+    };
+
+    return (
+        <div className={cx('control', 'control-link')}>
+            <Dialog
+                header={{
+                    title: (
+                        <div className='control-title'>
+                            <Button
+                                className='ar-dialog-header-btn'
+                                color={Button.ENUMS.COLOR.CLEAR}
+                                readOnly
+                                style={{ padding: 0, border: 'none' }}>
+                                <Icon name='Feather.Link' />
+                            </Button>
+                            <span>{__('Link')}</span>
+                        </div>
+                    ),
+                }}
+                pref={cx('control-link')}>
+                <AddLinkControl onAddItems={addItems} />
+            </Dialog>
+        </div>
+    );
+};
+
+export default LinkControl;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/MenuItem.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/MenuItem.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/MenuItem.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/MenuItem.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/index.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuItem/Link/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuList.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuList.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuList.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/MenuList.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/index.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js
new file mode 100644
index 00000000..872ed0e6
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/reactium-hooks.js
@@ -0,0 +1,53 @@
+import Reactium, { __ } from 'reactium-core/sdk';
+import FieldType from './FieldType';
+import Editor from './Editor';
+import Comparison from './Comparison';
+import { Icon } from 'reactium-ui';
+import {
+    ContentTypeControl,
+    ContentTypeMenuItem,
+    ContentTypeCompare,
+} from './MenuItem/ContentType';
+import { LinkControl, LinkMenuItem, LinkCompare } from './MenuItem/Link';
+import SDK from './sdk';
+
+const ID = 'MenuBuilder';
+
+const fieldType = {
+    label: __('Menu Field'),
+    icon: Icon.Feather.Menu,
+    tooltip: __('Adds a menu field to your content type.'),
+    component: 'FieldTypeMenuBuilder',
+    order: Reactium.Enums.priority.highest,
+};
+
+const pluginInit = async () => {
+    await Reactium.Plugin.register(ID);
+    Reactium.MenuBuilder = SDK;
+
+    // Register FieldType component
+    Reactium.Component.register(fieldType.component, FieldType);
+    // Register FieldType with Content Type Editor
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+    // Register FieldType with Editor
+    Reactium.Content.Editor.register(ID, { component: Editor });
+
+    Reactium.Content.Comparison.register(ID, { component: Comparison });
+
+    // Menu Builder Item Types
+    Reactium.MenuBuilder.ItemType.register('Link', {
+        Control: LinkControl,
+        MenuItem: LinkMenuItem,
+        Compare: LinkCompare,
+    });
+
+    const types = await Reactium.ContentType.types();
+    Reactium.MenuBuilder.ItemType.register('ContentType', {
+        types,
+        Control: ContentTypeControl,
+        MenuItem: ContentTypeMenuItem,
+        Compare: ContentTypeCompare,
+    });
+};
+
+pluginInit();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/sdk.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/sdk.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/MenuBuilder/sdk.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/MenuBuilder/sdk.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/index.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/DraggableList/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/DraggableList/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/DraggableList/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Action.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Action.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Action.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Action.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/DirectoryPicker.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/DirectoryPicker.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/DirectoryPicker.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/DirectoryPicker.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/External.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/External.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/External.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/External.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Library.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Library.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Library.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Library.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js
new file mode 100644
index 00000000..4a61f4a2
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/Scene/Upload.js
@@ -0,0 +1,245 @@
+import _ from 'underscore';
+import op from 'object-path';
+import useLocalState from '../../useLocalState';
+import DirectoryPicker from '../../DirectoryPicker';
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+} from 'react';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, {
+    __,
+    useEventHandle,
+    useHookComponent,
+    useAsyncEffect,
+} from 'reactium-core/sdk';
+import { useStore } from '@atomic-reactor/use-select';
+
+const Upload = forwardRef((props, ref) => {
+    const store = useStore();
+
+    const {
+        active,
+        browseFiles,
+        cx,
+        directories,
+        isActive,
+        back,
+        nav,
+        onCloseSelect,
+    } = props.handle;
+
+    const Uploads = useHookComponent('MediaUploads');
+    const { Alert, Button, Icon } = useHookComponent('ReactiumUI');
+
+    const defaultColor = Alert.ENUMS.COLOR.PRIMARY;
+    const defaultIcon = useMemo(() => 'Feather.HelpCircle');
+    const defaultMessage = useMemo(() =>
+        __('Select directory and file to upload'),
+    );
+
+    // -------------------------------------------------------------------------
+    // State
+    // -------------------------------------------------------------------------
+    const [state, setState, getState] = useLocalState({
+        color: defaultColor,
+        directory: null,
+        icon: defaultIcon,
+        message: defaultMessage,
+        uploads: op.get(store.getState(), 'Media.uploads'),
+        pending: null,
+        watch: {},
+    });
+
+    // -------------------------------------------------------------------------
+    // Internal interface
+    // -------------------------------------------------------------------------
+    const add = (added = {}) => {
+        const { watch = {} } = state;
+        Object.entries(added).forEach(([key, value]) =>
+            op.set(watch, key, value),
+        );
+        setState({ watch });
+    };
+
+    const hasUploads = () => {
+        const uploads = getState('uploads');
+        if (!uploads) return false;
+        return Object.keys(uploads).length > 0;
+    };
+
+    const onWorkerMessage = (...args) => {
+        const worker = args[0];
+        const { type, ...e } = worker;
+
+        if (type !== 'status') return;
+
+        const status = op.get(e.params, 'status');
+
+        if (status === 'complete') {
+            const ID = op.get(e.params, 'ID');
+            const { directory, objectId, url } = e.params.result;
+
+            const media = Reactium.Cache.get('editor.media');
+            if (media) {
+                let { data = {}, directories = [] } = media;
+
+                directories.push(directory);
+                directories = _.uniq(directories);
+                directories.sort();
+
+                op.set(data, objectId, e.params.result);
+                op.set(data, 'directories', directories);
+                op.set(media, 'data', data);
+
+                Reactium.Cache.set('editor.media', media);
+            }
+
+            _.defer(() => select({ ID, objectId, url }));
+        }
+    };
+
+    const reset = () => {
+        if (isActive(props.id)) return;
+        setState({ uploads: null, directory: null });
+    };
+
+    const select = async ({ ID, ...item }) => {
+        const watch = getState('watch', {});
+        props.handle.add(item);
+        op.del(watch, ID);
+
+        setState('watch', watch);
+
+        if (Object.keys(watch).length < 1) {
+            Reactium.Media.clear();
+            props.handle.onCloseSelect();
+        }
+    };
+
+    const setDirectory = directory => setState('directory', directory);
+
+    const setError = (message, pending = null, icon = 'Feather.AlertOctagon') =>
+        setState({
+            color: Alert.ENUMS.COLOR.DANGER,
+            icon,
+            message,
+            pending,
+        });
+
+    // -------------------------------------------------------------------------
+    // External interface
+    // -------------------------------------------------------------------------
+    const _handle = () => ({
+        add,
+        setDirectory,
+        setError,
+        value: { directory: getState('directory') },
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+
+    useImperativeHandle(ref, () => handle, [state.directory]);
+
+    // -------------------------------------------------------------------------
+    // Side effects
+    // -------------------------------------------------------------------------
+
+    // reset on inactive
+    useEffect(reset, [active]);
+
+    // update hande on directory change
+    useEffect(() => {
+        op.set(handle, 'value.directory', state.directory);
+        setHandle(handle);
+    }, [state.directory]);
+
+    // upload pending files
+    useAsyncEffect(
+        async isMounted => {
+            if (!getState('directory')) return;
+            if (!getState('pending')) return;
+            add(Reactium.Media.upload(state.pending, state.directory));
+            if (isMounted()) setState('pending', null);
+        },
+        [state.directory],
+    );
+
+    // uploads subscription
+    useEffect(() => {
+        return store.subscribe(() => {
+            const uploads = op.get(store.getState(), 'Media.uploads');
+            setState('uploads', uploads);
+        });
+    }, []);
+
+    // Regsiter media-worker hook
+    useEffect(() => {
+        const mw = Reactium.Hook.register('media-worker', onWorkerMessage);
+        return () => {
+            Reactium.Hook.unregister(mw);
+        };
+    }, []);
+
+    // -------------------------------------------------------------------------
+    // Render
+    // -------------------------------------------------------------------------
+    return isActive(props.id) ? (
+        <div className={cx('upload')}>
+            <div className='p-xs-40 block'>
+                <Message state={state} />
+                <DirectoryPicker
+                    defaultValue={state.directory}
+                    directories={directories}
+                    onChange={({ value }) => setState('directory', value)}
+                />
+            </div>
+            <div className='content'>
+                {hasUploads() && (
+                    <div className='list'>
+                        <Scrollbars>
+                            <Uploads uploads={getState('uploads')} />
+                            <div style={{ height: '50vh' }} />
+                        </Scrollbars>
+                    </div>
+                )}
+                <div className='dropbox'>
+                    <div className={cx('label-dnd')}>{__('Drag and Drop')}</div>
+                    <div className={cx('label-or')}>{__('or')}</div>
+                    <div className={cx('btn-container')}>
+                        <Button
+                            appearance={Button.ENUMS.APPEARANCE.PILL}
+                            color={Button.ENUMS.COLOR.PRIMARY}
+                            onClick={browseFiles}
+                            size={Button.ENUMS.SIZE.MD}>
+                            {__('Upload A File')}
+                        </Button>
+                    </div>
+                </div>
+            </div>
+            <span className='back-btn'>
+                <Button
+                    color={Button.ENUMS.COLOR.CLEAR}
+                    onClick={onCloseSelect}>
+                    <Icon name='Feather.X' />
+                </Button>
+            </span>
+        </div>
+    ) : null;
+});
+
+const Message = ({ state = {} }) => {
+    const { Alert, Icon } = useHookComponent('ReactiumUI');
+
+    return op.get(state, 'message') ? (
+        <div className='block mb-xs-24'>
+            <Alert icon={<Icon name={state.icon} />} color={state.color}>
+                {state.message}
+            </Alert>
+        </div>
+    ) : null;
+};
+
+export default Upload;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/index.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Scenes/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Scenes/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js
new file mode 100644
index 00000000..a97560a1
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Multiple.js
@@ -0,0 +1,132 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import Toolbar from './Toolbar';
+import ReactPlayer from 'react-player';
+import { TypeIcon } from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/MediaPicker';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, { useHookComponent } from 'reactium-core/sdk';
+
+import React, { forwardRef } from 'react';
+
+const Multiple = forwardRef(({ selection, handle, media }, ref) => {
+    const { cx, nav, remove, removeAll } = handle;
+
+    const { Button, DataTable, Icon } = useHookComponent('ReactiumUI');
+
+    const columns = () => {
+        const output = {
+            thumb: {
+                width: '80px',
+            },
+            link: {
+                verticalAlign: 'middle',
+            },
+            delete: {
+                width: '80px',
+                textAlign: 'right',
+                verticalAlign: 'middle',
+            },
+        };
+
+        Reactium.Hook.runSync('media-field-data-table-columns', output);
+
+        return output;
+    };
+
+    const data = () =>
+        _.compact(
+            selection.map(({ objectId }) => {
+                const item = op.get(media.data, objectId);
+                if (!item) return null;
+
+                const thumbnail = op.get(item, 'thumbnail')
+                    ? url(item, 'thumbnail')
+                    : null;
+
+                const relURL = url(item, 'relative');
+                op.set(item, 'url', relURL);
+
+                op.set(
+                    item,
+                    'link',
+                    <a href={relURL} target='_blank' children={relURL} />,
+                );
+
+                op.set(
+                    item,
+                    'delete',
+                    <DeleteButton onClick={() => remove(objectId)} />,
+                );
+
+                op.set(
+                    item,
+                    'thumb',
+                    <Thumbnail {...item} thumbnail={thumbnail} />,
+                );
+
+                return item;
+            }),
+        );
+
+    return (
+        <div className={cn(cx('thumbs'), 'multiple')} ref={ref}>
+            <Toolbar nav={nav}>
+                <div className='delete-all-container'>
+                    <Button
+                        className='delete-btn'
+                        color={Button.ENUMS.COLOR.DANGER}
+                        onClick={() => removeAll()}
+                        outline>
+                        <Icon name='Feather.X' />
+                    </Button>
+                </div>
+            </Toolbar>
+            <div className='table'>
+                <Scrollbars>
+                    <DataTable columns={columns()} data={data()} />
+                </Scrollbars>
+            </div>
+        </div>
+    );
+});
+
+const DeleteButton = props => {
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    return (
+        <Button
+            color={Button.ENUMS.COLOR.DANGER}
+            className='delete-btn'
+            {...props}>
+            <Icon name='Feather.X' />
+        </Button>
+    );
+};
+
+const Thumbnail = ({ thumbnail, type, url }) =>
+    type === 'VIDEO' ? (
+        <div className='thumb'>
+            <ReactPlayer controls url={url} width={200} height={100} />
+        </div>
+    ) : (
+        <div
+            className='thumb'
+            style={{ backgroundImage: thumbnail ? `url(${thumbnail})` : null }}>
+            {!thumbnail && <TypeIcon type={type} />}
+        </div>
+    );
+
+const url = (item, which) => {
+    switch (which) {
+        case 'thumbnail':
+            return Reactium.Media.url(op.get(item, 'thumbnail'));
+
+        case 'relative':
+            return op.get(item, 'url');
+
+        default:
+            return op.get(item, 'redirect.url', op.get(item, 'url'));
+    }
+};
+
+export { Multiple, Multiple as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Single.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Single.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Single.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Single.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Toolbar.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Toolbar.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/Toolbar.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/Toolbar.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/index.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/Thumb/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/Thumb/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/enums.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/enums.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/index.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/useDirectoryState.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/useDirectoryState.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/useDirectoryState.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/useDirectoryState.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/useLocalState.js b/reactium_modules_old/reactium-admin-core/registered-components/MediaTool/useLocalState.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/MediaTool/useLocalState.js
rename to reactium_modules_old/reactium-admin-core/registered-components/MediaTool/useLocalState.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/index.js b/reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/index.js
new file mode 100644
index 00000000..08e192d0
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/index.js
@@ -0,0 +1,435 @@
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import ENUMS from 'reactium_modules/@atomic-reactor/reactium-admin-core/Media/enums';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import Reactium, { useRegisterHandle } from 'reactium-core/sdk';
+import { Button, Dropdown, Icon, TagsInput } from 'reactium-ui';
+
+import React, {
+    forwardRef,
+    useImperativeHandle,
+    useEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const noop = () => {};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: PermissionSelector
+ * -----------------------------------------------------------------------------
+ */
+let PermissionSelector = ({ children, ...props }, ref) => {
+    // Refs
+    const containerRef = useRef();
+    const stateRef = useRef({
+        ...props,
+        canRead: [],
+        canWrite: [],
+    });
+
+    const permissionSelect = useRef();
+    const userSelect = useRef();
+
+    // State
+    const [, setNewState] = useState(stateRef.current);
+
+    // Internal Interface
+    const setState = newState => {
+        // Update the stateRef
+        stateRef.current = {
+            ...stateRef.current,
+            ...newState,
+        };
+
+        // Trigger useEffect()
+        setNewState(stateRef.current);
+    };
+
+    const cx = () => {
+        const { className, namespace } = stateRef.current;
+        return cn({ [className]: !!className, [namespace]: !!namespace });
+    };
+
+    // Side Effects
+    useEffect(() => setState(props), Object.values(props));
+
+    const permissions = () => {
+        return [
+            {
+                label: ENUMS.TEXT.FOLDER_CREATOR.CAN_VIEW,
+                icon: 'Feather.Eye',
+                value: 'read',
+            },
+            {
+                label: ENUMS.TEXT.FOLDER_CREATOR.CAN_EDIT,
+                icon: 'Feather.Edit2',
+                value: 'write',
+            },
+        ];
+    };
+
+    const onSearch = search => setState({ search });
+
+    const onSelectUser = e => {
+        const { selection } = e;
+        setState({ selection });
+    };
+
+    const onSelectPermission = e => {
+        try {
+            const { value } = e.item;
+            setState({ permission: value });
+        } catch (err) {}
+    };
+
+    const reset = () => {
+        setState({ ...props, search: null, selection: [] });
+        permissionSelect.current.setState({ selection: [] });
+        userSelect.current.setState({ selection: [] });
+    };
+
+    const getData = () => {
+        const { data, selection = [] } = stateRef.current;
+
+        if (!data) return;
+
+        let output = [];
+        let selected = [];
+
+        // loop through roles
+        const roles = op.get(data, 'roles', []);
+        roles.forEach(role => {
+            let { objectId, label, name } = role;
+            label = label || name;
+            const item = { label, value: objectId, type: 'role' };
+
+            // if (selection.includes(objectId)) selected.push(item);
+            // else output.push(item);
+            selected.push(item);
+        });
+
+        // loop through users
+        const users = op.get(data, 'users', []);
+        users.forEach(user => {
+            const { objectId, fname, lname, username } = user;
+            const fullname = _.compact([fname, lname]).join(' ');
+            const label = fullname.length > 0 ? fullname : username;
+            const item = { label, value: objectId, type: 'user' };
+
+            // if (selection.includes(objectId)) selected.push(item);
+            // else output.push(item);
+            selected.push(item);
+        });
+
+        return selected.concat(output);
+    };
+
+    const getLabels = ({ selection, data }) =>
+        _.pluck(
+            data.filter(({ value, label }) => {
+                return selection.includes(value);
+            }),
+            'label',
+        ).join(', ');
+
+    const getValue = () => {
+        const data = op.get(stateRef.current, 'data') || {
+            roles: [],
+            users: [],
+        };
+        const { canRead = [], canWrite = [] } = stateRef.current;
+        const selected = canRead.concat(canWrite);
+
+        const roles = data.roles
+            .filter(({ objectId }) => selected.includes(objectId))
+            .map(item => {
+                item.type = 'role';
+                item.permission = canWrite.includes(item.objectId)
+                    ? 'write'
+                    : 'read';
+                return item;
+            });
+
+        const users = data.users
+            .filter(({ objectId }) => selected.includes(objectId))
+            .map(item => {
+                item.type = 'user';
+                item.permission = canWrite.includes(item.objectId)
+                    ? 'write'
+                    : 'read';
+                return item;
+            });
+
+        return roles.concat(users);
+    };
+
+    const addItems = () => {
+        let {
+            canWrite = [],
+            canRead = [],
+            permission,
+            selection,
+        } = stateRef.current;
+
+        let sel = permission === 'read' ? canRead : canWrite;
+        sel = _.chain(sel.concat(selection))
+            .compact()
+            .uniq()
+            .value();
+
+        if (sel.length < 1) return;
+
+        setState({
+            permission,
+            search: null,
+            canWrite: permission !== 'read' ? sel : canWrite,
+            canRead: permission === 'read' ? sel : canRead,
+            selection: [],
+        });
+
+        userSelect.current.setState({ selection: [] });
+        permissionSelect.current.setState({ selection: [permission] });
+    };
+
+    const tagFormatter = value => {
+        const data = getData();
+        const item = _.findWhere(data, { value });
+        return op.get(item, 'label', value);
+    };
+
+    const onTagsChange = ({ target, value }) => {
+        const name = target.name;
+        let { canWrite = [], canRead = [] } = stateRef.current;
+
+        if (name === 'view') canRead = value;
+        if (name === 'write') canWrite = value;
+
+        setState({ canWrite, canRead });
+    };
+
+    const renderUserSelect = () => {
+        const perms = permissions();
+        const { permission, search, selection = [] } = stateRef.current;
+        const perm = _.findWhere(perms, { value: permission });
+
+        const data = getData();
+
+        return (
+            <div className='flex middle pl-xs-16 pr-xs-8 permission'>
+                <span className='blue'>
+                    <Icon name='Feather.User' className='mr-xs-4' />
+                </span>
+                <Dropdown
+                    ref={userSelect}
+                    data={data}
+                    filter={search}
+                    selection={selection}
+                    onChange={onSelectUser}
+                    collapseEvent='blur'
+                    multiSelect
+                    className='flex-grow'
+                    maxHeight={168}
+                    expandEvent={['focus', 'click']}>
+                    <label className='input-group' style={{ width: '100%' }}>
+                        <input
+                            type='text'
+                            value={search || ''}
+                            data-dropdown-element
+                            placeholder={
+                                selection.length > 0
+                                    ? getLabels({ selection, data })
+                                    : ENUMS.TEXT.FOLDER_CREATOR.USER
+                            }
+                            onChange={e => onSearch(e.target.value)}
+                        />
+                    </label>
+                </Dropdown>
+                <Dropdown
+                    ref={permissionSelect}
+                    data={perms}
+                    iconField='ico'
+                    onChange={onSelectPermission}
+                    selection={[permission]}>
+                    <Button
+                        outline
+                        color='tertiary'
+                        size='sm'
+                        style={{
+                            padding: '6px 9px',
+                            minWidth: 135,
+                            justifyContent: 'flex-start',
+                        }}
+                        data-dropdown-element>
+                        <Icon
+                            size={16}
+                            name={op.get(perm, 'icon')}
+                            style={{ marginRight: 12 }}
+                        />
+                        {op.get(perm, 'label')}
+                    </Button>
+                </Dropdown>
+                <Button
+                    onClick={addItems}
+                    color='tertiary'
+                    style={{
+                        padding: 0,
+                        width: 32,
+                        height: 32,
+                        marginLeft: 8,
+                    }}>
+                    <Icon size={20} name='Feather.Plus' />
+                </Button>
+            </div>
+        );
+    };
+
+    const renderCanWrite = () => {
+        const { canWrite = [] } = stateRef.current;
+        if (canWrite.length < 1) return;
+
+        return (
+            <div className='px-xs-8 pt-xs-16'>
+                <div className='flex middle mb-xs-4'>
+                    <span className='blue'>
+                        <Icon
+                            name='Feather.Edit2'
+                            size={24}
+                            className='mr-xs-4 ml-xs-8'
+                        />
+                    </span>
+                    <div className='px-xs-10 gray'>Can Edit</div>
+                </div>
+                <TagsInput
+                    editable
+                    name='write'
+                    value={canWrite}
+                    onChange={onTagsChange}
+                    formatter={e => tagFormatter(e)}
+                />
+            </div>
+        );
+    };
+
+    const renderCanRead = () => {
+        const { canRead = [] } = stateRef.current;
+        if (canRead.length < 1) return;
+
+        return (
+            <div className='px-xs-8 pt-xs-16'>
+                <div className='flex middle mb-xs-4'>
+                    <span className='blue'>
+                        <Icon
+                            name='Feather.Eye'
+                            size={24}
+                            className='mr-xs-4 ml-xs-8'
+                        />
+                    </span>
+                    <div className='px-xs-10 gray'>Can View</div>
+                </div>
+                <TagsInput
+                    editable
+                    name='view'
+                    value={canRead}
+                    onChange={onTagsChange}
+                    formatter={e => tagFormatter(e)}
+                />
+            </div>
+        );
+    };
+
+    const cname = () => {
+        const { namespace, className } = stateRef.current;
+        return cn({ [namespace]: !!namespace, [className]: !!className });
+    };
+
+    // Renderer
+    const render = () => {
+        return (
+            <div className={cname()} ref={ref}>
+                {renderUserSelect()}
+                <Scrollbars autoHeight autoHeightMax={185}>
+                    <div className='selections'>
+                        {renderCanWrite()}
+                        {renderCanRead()}
+                    </div>
+                </Scrollbars>
+            </div>
+        );
+    };
+
+    // Side effects
+    useEffect(() => {
+        const { search } = stateRef.current;
+    }, [op.get(stateRef.current, 'search')]);
+
+    useEffect(() => {
+        const { data, fetching } = stateRef.current;
+        if (data || fetching) return;
+
+        const fetched = Reactium.Cache.get('acl-targets');
+        if (!fetched) return;
+
+        setState({ data: fetched });
+    }, [op.get(stateRef.current, 'data')]);
+
+    useEffect(() => {
+        const { onChange, canWrite = [], canRead = [] } = stateRef.current;
+
+        onChange({
+            type: 'change',
+            value: getValue(),
+        });
+    }, [
+        op.get(stateRef.current, 'canRead'),
+        op.get(stateRef.current, 'canWrite'),
+    ]);
+
+    // External Interface
+    const handle = () => ({
+        container: containerRef.current,
+        setState,
+        state: stateRef.current,
+        value: getValue(),
+    });
+
+    useRegisterHandle('PermissionSelector', handle, [
+        op.get(stateRef.current, 'canRead'),
+        op.get(stateRef.current, 'canWrite'),
+    ]);
+
+    useImperativeHandle(ref, handle);
+
+    // Render
+    return render();
+};
+
+PermissionSelector = forwardRef(PermissionSelector);
+
+PermissionSelector.ENUMS = ENUMS;
+
+PermissionSelector.propTypes = {
+    canWrite: PropTypes.array,
+    canRead: PropTypes.array,
+    className: PropTypes.string,
+    data: PropTypes.object,
+    namespace: PropTypes.string,
+    onChange: PropTypes.func,
+    permission: PropTypes.oneOf(['read', 'write']),
+    search: PropTypes.string,
+    selection: PropTypes.array,
+};
+
+PermissionSelector.defaultProps = {
+    data: null,
+    namespace: 'permission-selector',
+    onChange: noop,
+    permission: 'read',
+    search: null,
+    selection: [],
+};
+
+export { PermissionSelector as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/PermissionSelector/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/PermissionSelector/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Element/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Element/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Element/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Element/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js
new file mode 100644
index 00000000..ac05db81
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Comparison.js
@@ -0,0 +1,41 @@
+import React, { useEffect, useRef } from 'react';
+import op from 'object-path';
+import { Dialog, Checkbox, Slider } from 'reactium-ui';
+import Reactium, {
+    __,
+    useFulfilledObject,
+    useHookComponent,
+} from 'reactium-core/sdk';
+
+const Comparison = props => {
+    const field = op.get(props, 'field', {});
+    const value = op.get(props, 'value');
+    const { fieldName: title } = field;
+    const RichTextEditor = useHookComponent('RichTextEditor');
+    const editorRef = useRef();
+
+    const displayValue = !value ? null : (
+        <RichTextEditor
+            value={value}
+            readOnly={true}
+            contentEditable={false}
+            ref={editorRef}
+        />
+    );
+
+    useEffect(() => {
+        if (value && editorRef.current) {
+            editorRef.current.setValue(value);
+        }
+    }, [value, editorRef.current]);
+
+    return (
+        <Dialog header={{ title }} collapsible={false}>
+            <div className='p-xs-20' style={{ minHeight: '60px' }}>
+                {displayValue}
+            </div>
+        </Dialog>
+    );
+};
+
+export default Comparison;
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js
new file mode 100644
index 00000000..e2a246f8
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/Editor.js
@@ -0,0 +1,108 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import op from 'object-path';
+import { Icon } from 'reactium-ui';
+import React, { useEffect, useRef, useState } from 'react';
+import { __, useFulfilledObject, useHookComponent } from 'reactium-core/sdk';
+
+const defaultValue = {
+    type: 'div',
+    children: [{ type: 'p', children: [{ text: '' }] }],
+};
+
+export default props => {
+    let { editor, fieldName: name, label, placeholder } = props;
+
+    label = label || __('Content');
+    placeholder = placeholder || __('Enter content...');
+
+    const { slug } = editor;
+
+    const valueRef = useRef(op.get(editor.value, [name]) || defaultValue);
+
+    const editorRef = useRef();
+
+    const RichTextEditor = useHookComponent('RichTextEditor');
+
+    const [previousSlug, setPreviousSlug] = useState();
+    const [value, setNewValue] = useState(valueRef.current);
+    const [ready] = useFulfilledObject(editor.value, [name]);
+
+    const setValue = newValue => {
+        if (newValue === null) {
+            valueRef.current = null;
+        } else {
+            newValue = { ...valueRef.current, ...newValue };
+            valueRef.current = newValue;
+        }
+        updateValue();
+    };
+
+    const onEditorChange = e => {
+        let value = e.target.value || defaultValue;
+        setValue(value);
+    };
+
+    const _updateValue = () => {
+        const val = { ...editor.value, [name]: valueRef.current };
+        setNewValue(valueRef.current);
+        editor.setValue(val);
+    };
+
+    const updateValue = _.throttle(_updateValue, 500, { leading: false });
+
+    const reload = e => {
+        const newValue = e
+            ? op.get(e, ['value', name])
+            : op.get(editor, ['value', name]) || defaultValue;
+
+        editorRef.current.setValue(newValue);
+        setPreviousSlug(slug);
+        setValue(newValue);
+    };
+
+    const onSave = e => op.set(e.value, name, valueRef.current);
+
+    useEffect(() => {
+        if (!ready) return;
+        if (!editorRef.current) return;
+        if (slug === previousSlug) return;
+        reload();
+    }, [editorRef.current, ready, slug]);
+
+    useEffect(() => {
+        if (!editor) return;
+        editor.addEventListener('load', reload);
+        editor.addEventListener('before-save', onSave);
+
+        return () => {
+            editor.removeEventListener('load', reload);
+            editor.removeEventListener('before-save', onSave);
+        };
+    }, [editor]);
+
+    const render = () => {
+        return (
+            <section className={editor.cx('rte')}>
+                <header>
+                    <div className='icon'>
+                        <Icon name='Feather.Feather' />
+                    </div>
+                    <h2>{label}</h2>
+                </header>
+                <div className='editor'>
+                    <RichTextEditor
+                        ref={editorRef}
+                        value={value || defaultValue}
+                        name={name}
+                        onChange={onEditorChange}
+                        placeholder={placeholder}
+                    />
+                </div>
+                <div className='line' />
+            </section>
+        );
+    };
+
+    return render();
+};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js
new file mode 100644
index 00000000..a7ebe97d
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/FieldTypeRichText/reactium-hooks.js
@@ -0,0 +1,31 @@
+import Editor from './Editor';
+import { __ } from 'reactium-core/sdk';
+import FieldTypeRichText from './index';
+import Comparison from './Comparison';
+import Reactium from 'reactium-core/sdk';
+import { Icon } from 'reactium-ui';
+
+const ID = 'RichText';
+const fieldType = {
+    label: __('Rich Text Field'),
+    icon: Icon.Feather.Feather,
+    tooltip: __('Adds a rich text field to your content type.'),
+    component: 'FieldTypeRichText',
+    order: Reactium.Enums.priority.highest,
+};
+
+const registerFieldTypePlugin = async () => {
+    await Reactium.Plugin.register(fieldType.component);
+
+    Reactium.Component.register('FieldTypeRichText', FieldTypeRichText);
+
+    Reactium.Content.Editor.register(ID, { component: Editor });
+
+    Reactium.Content.Comparison.register(ID, {
+        component: Comparison,
+    });
+
+    Reactium.ContentType.FieldType.register(ID, fieldType);
+};
+
+registerFieldTypePlugin();
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Leaf/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Leaf/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Leaf/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Leaf/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/MediaInsert.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/MediaInsert.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/MediaInsert.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/MediaInsert.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/RTEPlugin.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/RTEPlugin.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/RTEPlugin.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/RTEPlugin.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/AlignStyles.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/AlignStyles.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/AlignStyles.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/AlignStyles.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BackgroundColor.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BackgroundColor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BackgroundColor.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BackgroundColor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderColors.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderColors.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderColors.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderColors.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderRadius.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderRadius.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderRadius.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderRadius.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderSizes.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderSizes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderSizes.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderSizes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderStyles.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderStyles.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderStyles.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/BorderStyles.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/ColorSelect.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/ColorSelect.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/ColorSelect.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/ColorSelect.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/MarginStyles.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/MarginStyles.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/MarginStyles.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/MarginStyles.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Opacity.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Opacity.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Opacity.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Opacity.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/PaddingStyles.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/PaddingStyles.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/PaddingStyles.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/PaddingStyles.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Position.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Position.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Position.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Position.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js
new file mode 100644
index 00000000..6831510c
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Settings.js
@@ -0,0 +1,315 @@
+import _ from 'underscore';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import { ReactEditor, useEditor } from 'slate-react';
+import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
+
+import Reactium, {
+    __,
+    ComponentEvent,
+    useDerivedState,
+    useEventHandle,
+    useHookComponent,
+    useRefs,
+    useStatus,
+    Zone,
+} from 'reactium-core/sdk';
+
+const noop = () => {};
+
+const CloseButton = props => {
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    return (
+        <Button
+            size={Button.ENUMS.SIZE.XS}
+            color={Button.ENUMS.COLOR.CLEAR}
+            className='ar-dialog-header-btn dismiss'
+            {...props}>
+            <Icon name='Feather.X' />
+        </Button>
+    );
+};
+
+const SubmitButton = props => {
+    const { Button } = useHookComponent('ReactiumUI');
+    return <Button block size={Button.ENUMS.SIZE.MD} {...props} />;
+};
+
+let Settings = (initialProps, ref) => {
+    const {
+        children,
+        footer,
+        header,
+        id,
+        onChange,
+        onSubmit,
+        submitLabel: initialSubmitLabel,
+        title: initialTitle,
+        value: initialValue,
+        ...props
+    } = initialProps;
+
+    const editor = useEditor();
+
+    const { Dialog, EventForm } = useHookComponent('ReactiumUI');
+
+    const refs = useRefs();
+
+    const [, setVisible, isVisible] = useStatus(false);
+
+    const [, setReady, isReady] = useStatus(false);
+
+    const [state, _update] = useDerivedState({
+        ...props,
+        excludes: ['id'],
+        submitLabel: initialSubmitLabel,
+        title: initialTitle,
+        value: {},
+    });
+
+    const update = _.debounce(_update, 250);
+
+    const setState = newState =>
+        new Promise(resolve => {
+            if (unMounted()) return;
+
+            newState = { ...state, ...newState };
+            Object.entries(newState).forEach(([key, value]) => {
+                op.set(state, key, value);
+            });
+
+            update(newState);
+
+            _.defer(() => resolve());
+        });
+
+    const setValue = newValue => {
+        const form = refs.get('form');
+        const value = _getValue(newValue);
+
+        Object.entries(newValue).forEach(([key, val]) =>
+            op.set(value, key, val),
+        );
+
+        if (_.isEqual(state.value, newValue)) return;
+
+        setState({ value });
+        form.setValue(value);
+    };
+
+    const hide = (animate = true, clear = true) => {
+        editor.panel.hide(animate, clear).setID('rte-panel');
+        ReactEditor.focus(editor);
+    };
+
+    const unMounted = () => !refs.get('container');
+
+    const submit = () => {
+        const form = refs.get('form');
+        if (form) form.submit();
+    };
+
+    const _header = () => {
+        if (_.isFunction(header)) {
+            return header();
+        }
+
+        if (_.isObject(header)) {
+            return header;
+        }
+
+        return {
+            elements: [<CloseButton onClick={hide} key='close-btn' />],
+            title: state.title,
+        };
+    };
+
+    const _footer = () => {
+        if (_.isFunction(footer)) {
+            return footer();
+        }
+
+        if (_.isObject(footer)) {
+            return footer;
+        }
+
+        return {
+            align: 'right',
+            elements: [
+                <SubmitButton
+                    onClick={submit}
+                    key='submit-btn'
+                    children={state.submitLabel}
+                />,
+            ],
+        };
+    };
+
+    const _getValue = merge => {
+        let value = JSON.parse(JSON.stringify(op.get(state, 'value')));
+        value = { ...value, ...merge };
+
+        const form = refs.get('form');
+
+        const keys = _.compact(
+            Object.entries(form.elements).map(([, elm]) => {
+                try {
+                    return elm.getAttribute('name');
+                } catch (err) {}
+            }),
+        );
+
+        const newValue = keys.reduce((obj, key) => {
+            if (key === 'null') return obj;
+
+            const val = op.get(value, key, null);
+            op.set(obj, key, val);
+            return obj;
+        }, {});
+
+        if (_.isObject(newValue)) {
+            Object.keys(newValue).forEach(key => {
+                if (state.excludes.includes(key)) op.del(newValue, key);
+            });
+        }
+
+        Reactium.Hook.runSync('rte-settings-value', newValue);
+
+        return newValue;
+    };
+
+    const _onChange = e => {
+        if (isReady(false)) return;
+
+        const value = _getValue(e.value);
+        const evt = new ComponentEvent('change', { value });
+
+        if (_.isEqual(state.value, value)) return;
+
+        state.value = value;
+        handle.state = state;
+        handle.value = value;
+
+        handle.dispatchEvent(evt);
+        onChange(evt);
+        setState({ value });
+    };
+
+    const _onSubmit = ({ value }) => {
+        value = _getValue(value);
+        const evt = new ComponentEvent('submit', { value });
+
+        state.value = value;
+        handle.state = state;
+        handle.value = value;
+
+        handle.dispatchEvent(evt);
+        onSubmit(evt);
+    };
+
+    const _handle = () => ({
+        hide,
+        props,
+        refs,
+        setState,
+        setValue,
+        state,
+        submit,
+        unMounted,
+        updateHandle,
+        value: state.value,
+    });
+
+    const [handle, setHandle] = useEventHandle(_handle());
+    const updateHandle = (overrides = {}) => {
+        if (unMounted()) return;
+        const newHandle = _handle();
+        Object.entries(overrides).forEach(([key, val]) =>
+            op.set(newHandle, key, val),
+        );
+        Object.entries(newHandle).forEach(([key, val]) =>
+            op.set(handle, key, val),
+        );
+        setHandle(handle);
+    };
+
+    useImperativeHandle(ref, () => handle);
+
+    useEffect(() => {
+        const value = _getValue(initialValue);
+        setState({ value }).then(() => setReady(true, true));
+    }, [initialValue]);
+
+    // Move panel to center
+    useEffect(() => {
+        if (!editor.panel || !refs.get('container')) return;
+        if (!isVisible(true)) {
+            const container = refs.get('container');
+
+            let { width, height } = container.getBoundingClientRect();
+
+            width = width / 2;
+            height = height / 2;
+
+            let ox = window.innerWidth / 2;
+            let oy = window.innerHeight / 4;
+            let x = ox - width;
+            let y = oy - height;
+            x = Math.floor(x);
+            y = Math.floor(y);
+
+            editor.panel.moveTo(x, y);
+
+            setVisible(true, true);
+        }
+    }, [editor.panel, refs.get('container')]);
+
+    const render = () => {
+        return (
+            <div ref={elm => refs.set('container', elm)} {...props}>
+                <EventForm
+                    onChange={_onChange}
+                    onSubmit={_onSubmit}
+                    ref={elm => refs.set('form', elm)}
+                    value={state.value}>
+                    <Dialog
+                        className='ar-settings-dialog'
+                        collapsible={false}
+                        dismissable={false}
+                        footer={_footer()}
+                        header={_header()}>
+                        <Scrollbars>
+                            {children}
+                            {id && <Zone zone={id} handle={handle} />}
+                        </Scrollbars>
+                    </Dialog>
+                </EventForm>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Settings = forwardRef(Settings);
+
+Settings.propTypes = {
+    header: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
+    footer: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
+    onChange: PropTypes.func,
+    onSubmit: PropTypes.func,
+    submitLabel: PropTypes.node,
+    title: PropTypes.node,
+    value: PropTypes.object,
+};
+
+Settings.defaultProps = {
+    onChange: noop,
+    onSubmit: noop,
+    submitLabel: __('Update Properties'),
+    title: __('Property Inspector'),
+    value: {},
+};
+
+export { Settings, Settings as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Sizing.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Sizing.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/Sizing.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/Sizing.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/TextColor.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/TextColor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/TextColor.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/TextColor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/utils.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/utils.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Settings/utils.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Settings/utils.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Sidebar/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Sidebar/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Sidebar/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Sidebar/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Toolbar/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Toolbar/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/Toolbar/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/Toolbar/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_components.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_components.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_components.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_components.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/_style.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Actions/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Actions/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Actions/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Actions/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Element.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Element.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Element.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Element.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js
new file mode 100644
index 00000000..a168fa18
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/Settings.js
@@ -0,0 +1,350 @@
+import React from 'react';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import { Transforms } from 'slate';
+import { useEditor } from 'slate-react';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+    useRefs,
+} from 'reactium-core/sdk';
+
+const borderStyleValues = [
+    'solid',
+    'dotted',
+    'dashed',
+    'double',
+    'groove',
+    'ridge',
+    'inset',
+    'outset',
+    'none',
+];
+
+const Panel = ({ node, path, ...props }) => {
+    const editor = useEditor();
+
+    const refs = useRefs();
+
+    const [state, setState] = useDerivedState({
+        nodeProps: op.get(node, 'nodeProps', { style: {} }),
+        previous: op.get(node, 'nodeProps', { style: {} }),
+    });
+
+    const {
+        BackgroundColor,
+        BorderColors,
+        BorderRadius,
+        BorderSizes,
+        BorderStyles,
+        MarginStyles,
+        Opacity,
+        PaddingStyles,
+        Position,
+        Sizing,
+    } = useHookComponent('RichTextEditorSettings');
+
+    const { Dialog } = useHookComponent('ReactiumUI');
+
+    const cx = Reactium.Utils.cxFactory('rte-settings');
+
+    const hide = (animate = true, clear = true) =>
+        editor.panel.hide(animate, clear).setID('rte-panel');
+
+    const heading = title => ({ title });
+
+    const _header = () => ({
+        title: __('Property Inspector'),
+        elements: [<CloseButton onClick={hide} key='close-btn' />],
+    });
+
+    const _footer = () => ({
+        align: 'center',
+        elements: [
+            <SubmitButton
+                onClick={submit}
+                key='submit-btn'
+                children={__('Submit')}
+            />,
+        ],
+    });
+
+    const pref = suffix => `admin.rte.settings.block.${suffix}`;
+
+    const submit = () => onSubmit({ value: state.nodeProps });
+
+    const onInputChange = e => setValue(e.target.name, e.target.value);
+
+    const onSubmit = ({ value }) => {
+        Reactium.Hook.runSync('rte-settings-apply', value, {
+            node,
+            path,
+            state,
+        });
+        Transforms.select(editor, path);
+        Transforms.collapse(editor, { edge: 'end' });
+        Transforms.setNodes(editor, { nodeProps: value }, { at: path });
+    };
+
+    const mergeValue = newValue => {
+        let value = JSON.parse(JSON.stringify(state.nodeProps));
+        value.style = !value.style ? {} : value.style;
+
+        Object.entries(newValue).forEach(([key, val]) => {
+            if (key === 'style') return;
+            op.set(value, key, val);
+        });
+
+        if (op.get(newValue, 'style')) {
+            Object.entries(newValue.style).forEach(([key, val]) =>
+                op.set(value.style, key, val),
+            );
+        }
+
+        Reactium.Hook.runSync('rte-settings-value', value, {
+            state,
+            props,
+        });
+
+        return value;
+    };
+
+    const setValue = (...args) => {
+        let newValue = _.isString(args[0]) ? { [args[0]]: args[1] } : args[0];
+
+        const next = mergeValue(newValue);
+        const prev = state.previous;
+
+        const equal = _.isEqual(
+            JSON.parse(JSON.stringify(next)),
+            JSON.parse(JSON.stringify(prev)),
+        );
+
+        if (equal) return;
+
+        setState({
+            nodeProps: next,
+            previous: JSON.parse(JSON.stringify(next)),
+        });
+    };
+
+    const setBackgroundColor = e =>
+        updateStyle({ key: 'backgroundColor', value: e.target.value });
+
+    const setBorderColor = ({ key, value }) => updateStyle({ key, value });
+
+    const setBorderStyle = ({ key, value }) => updateStyle({ key, value });
+
+    const setOpacity = ({ value }) => updateStyle({ key: 'opacity', value });
+
+    const setPosition = ({ key, value }) => updateStyle({ key, value });
+
+    const updateStyle = ({ key, value }) => {
+        let style = JSON.parse(
+            JSON.stringify(op.get(state, 'nodeProps.style', {})),
+        );
+
+        if (Array.isArray(key) && _.isObject(value)) {
+            key.forEach(k => op.set(style, k, op.get(value, k)));
+        } else {
+            op.set(style, key, value);
+        }
+
+        setValue({ style });
+    };
+
+    const _value = key =>
+        op.get(state, _.flatten(['nodeProps', key.split('.')]), '');
+
+    return op.get(state, 'inspector') === false ? null : (
+        <div ref={elm => refs.set('container', elm)} className={cx()}>
+            <Dialog
+                footer={_footer()}
+                header={_header()}
+                collapsible={false}
+                dismissable={false}
+                className='ar-settings-dialog'>
+                <Scrollbars>
+                    <Dialog
+                        className='sub'
+                        pref={pref('id')}
+                        header={heading(__('ID'))}>
+                        <div className={cx('row')}>
+                            <div className='col-xs-12 form-group'>
+                                <input
+                                    data-focus
+                                    type='text'
+                                    name='data.id'
+                                    title={__('id')}
+                                    onChange={onInputChange}
+                                    defaultValue={_value('data.id')}
+                                />
+                            </div>
+                        </div>
+                    </Dialog>
+
+                    {node.linkable && (
+                        <Dialog
+                            className='sub'
+                            pref={pref('link')}
+                            header={heading(__('Link'))}>
+                            <div className={cx('row')}>
+                                <div className='col-xs-12 form-group'>
+                                    <input
+                                        data-focus
+                                        type='text'
+                                        name='data.link'
+                                        onChange={onInputChange}
+                                        title={__('hyperlink to a page')}
+                                        defaultValue={_value('data.link')}
+                                    />
+                                </div>
+                            </div>
+                        </Dialog>
+                    )}
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('classname')}
+                        header={heading(__('CSS Class'))}>
+                        <div className={cx('row')}>
+                            <div className='col-xs-12 form-group'>
+                                <input
+                                    type='text'
+                                    name='className'
+                                    title={__('css class')}
+                                    onChange={onInputChange}
+                                    defaultValue={_value('className')}
+                                />
+                            </div>
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('align')}
+                        header={heading(__('Position'))}>
+                        <div className={cn(cx('row'), 'pb-xs-0')}>
+                            <Position
+                                className='col-xs-12'
+                                onChange={setPosition}
+                                onInputChange={onInputChange}
+                                styles={state.nodeProps.style}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('sizing')}
+                        header={heading(__('Size'))}>
+                        <div className={cx('row')}>
+                            <Sizing
+                                value={state.nodeProps}
+                                onChange={onInputChange}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('opacity')}
+                        header={heading(__('Opacity'))}>
+                        <div className={cx('row')}>
+                            <Opacity
+                                onChange={setOpacity}
+                                styles={state.nodeProps.style}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('spacing.margin')}
+                        header={heading(__('Margin'))}>
+                        <div className={cx('row')}>
+                            <MarginStyles
+                                onChange={onInputChange}
+                                styles={state.nodeProps.style}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        pref={pref('spacing.padding')}
+                        header={heading(__('Padding'))}>
+                        <div className={cx('row')}>
+                            <PaddingStyles
+                                onChange={onInputChange}
+                                styles={state.nodeProps.style}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        header={heading(__('Background Color'))}
+                        pref={pref('spacing.backgroundColor')}>
+                        <div style={{ marginTop: -1 }}>
+                            <BackgroundColor
+                                styles={state.nodeProps.style}
+                                onChange={setBackgroundColor}
+                            />
+                        </div>
+                    </Dialog>
+
+                    <Dialog
+                        className='sub'
+                        header={heading(__('Borders'))}
+                        pref={pref('borders')}>
+                        <div className={cx('row')}>
+                            <BorderSizes
+                                onChange={onInputChange}
+                                styles={state.nodeProps.style}
+                            />
+                            <BorderRadius
+                                className='mt-xs-8'
+                                onChange={onInputChange}
+                                styles={state.nodeProps.style}
+                            />
+                            <BorderStyles
+                                styles={state.nodeProps.style}
+                                onChange={setBorderStyle}
+                                borderStyles={borderStyleValues}
+                            />
+                            <BorderColors
+                                onChange={setBorderColor}
+                                styles={state.nodeProps.style}
+                            />
+                        </div>
+                    </Dialog>
+                </Scrollbars>
+            </Dialog>
+        </div>
+    );
+};
+
+const CloseButton = props => {
+    const { Button, Icon } = useHookComponent('ReactiumUI');
+    return (
+        <Button
+            size={Button.ENUMS.SIZE.XS}
+            color={Button.ENUMS.COLOR.CLEAR}
+            className='ar-dialog-header-btn dismiss'
+            {...props}>
+            <Icon name='Feather.X' />
+        </Button>
+    );
+};
+
+const SubmitButton = props => {
+    const { Button } = useHookComponent('ReactiumUI');
+    return <Button block size={Button.ENUMS.SIZE.MD} {...props} />;
+};
+
+export default Panel;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/ToolbarButton.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/ToolbarButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/ToolbarButton.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/ToolbarButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/blockNode.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/blockNode.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/blockNode.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/blockNode.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/insertBlock.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/insertBlock.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/insertBlock.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/insertBlock.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/normalizeNode.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/normalizeNode.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/normalizeNode.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/normalizeNode.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBlock/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js
similarity index 96%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js
index 82ad865b..61eedf81 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withBold.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'bold', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withButton.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withButton.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js
new file mode 100644
index 00000000..62b4db06
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/Panel/index.js
@@ -0,0 +1,229 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Editor, Range, Transforms } from 'slate';
+import { ReactEditor, useSlate } from 'slate-react';
+import { ColorSelect } from '../../withFormatter/Panel/ColorSelect';
+import { Button, Dialog, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useDerivedState,
+    useEventHandle,
+    useFocusEffect,
+    useHandle,
+} from 'reactium-core/sdk';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useMemo,
+    useRef,
+    useState,
+} from 'react';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+
+let Panel = (
+    {
+        removeButtonLabel,
+        submitButtonLabel,
+        children,
+        color: initialColor,
+        selection: initialSelection,
+        title,
+        ...props
+    },
+    ref,
+) => {
+    const formRef = useRef();
+
+    const editor = useSlate();
+
+    const [state, setNewState] = useDerivedState({
+        color: initialColor,
+        colors: editor.colors,
+        selection: initialSelection,
+        value: {},
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    // className prefixer
+    const cx = cls =>
+        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
+            .compact()
+            .uniq()
+            .value()
+            .join('-');
+
+    const isColorActive = () => {
+        const [color] = Editor.nodes(editor, {
+            match: n =>
+                n.type === 'color' && op.get(n, 'style.color') !== 'inherit',
+        });
+        return !!color;
+    };
+
+    const unMounted = () => !formRef.current;
+
+    const unwrapColor = () => {
+        Transforms.unwrapNodes(editor, { match: n => n.type === 'color' });
+    };
+
+    const wrapColor = () => {
+        if (isColorActive()) {
+            unwrapColor();
+        }
+
+        const { color, selection } = state;
+
+        const isCollapsed = selection && Range.isCollapsed(selection);
+
+        const [_node] = Editor.node(editor, selection);
+
+        const text = op.get(_node, 'text');
+
+        const node = {
+            type: 'color',
+            style: { color },
+            children: [{ text }],
+        };
+
+        if (isCollapsed) {
+            Transforms.insertNodes(editor, node, { at: selection });
+        } else {
+            Transforms.wrapNodes(editor, node, { split: true, at: selection });
+        }
+
+        editor.updated = Date.now();
+    };
+
+    const _onClearColor = e => {
+        hide();
+        _.defer(() => unwrapColor(), 1);
+    };
+
+    const _onChange = e => setState({ color: e.target.value });
+
+    const _onSelect = e => setState({ color: e.item.value });
+
+    const _onSubmit = () => {
+        if (unMounted()) return;
+        if (!state.color) return;
+        wrapColor();
+        hide();
+    };
+
+    const hide = () => {
+        editor.panel.hide(false).setID('rte-panel');
+    };
+
+    // Set selection
+    useEffect(() => {
+        if (!editor.selection) return;
+        setState({ selection: editor.selection });
+    }, [editor.selection]);
+
+    // Set colors
+    useEffect(() => {
+        setState({ colors: editor.colors });
+    }, [editor.colors]);
+
+    useFocusEffect(editor.panel.container);
+
+    // Renderers
+    const render = () => {
+        const isActive = isColorActive();
+        const { color, colors, selection } = state;
+
+        return (
+            <div ref={formRef} className={cx()}>
+                <Dialog
+                    collapsible={false}
+                    dismissable={false}
+                    header={{
+                        title,
+                        elements: [
+                            <Button
+                                onClick={e => {
+                                    e.preventDefault();
+                                    hide();
+                                }}
+                                size={Button.ENUMS.SIZE.XS}
+                                color={Button.ENUMS.COLOR.CLEAR}
+                                className='ar-dialog-header-btn dismiss'>
+                                <Icon name='Feather.X' />
+                            </Button>,
+                        ],
+                    }}>
+                    {!isActive && (
+                        <ColorSelect
+                            color={color}
+                            colors={colors}
+                            data-focus
+                            name='color'
+                            onColorChange={_onChange}
+                            onColorSelect={_onSelect}
+                            title={null}
+                        />
+                    )}
+                    <div className='p-xs-8'>
+                        {isActive ? (
+                            <Button
+                                block
+                                color='danger'
+                                data-focus
+                                size='sm'
+                                type='button'
+                                onClick={_onClearColor}>
+                                {removeButtonLabel}
+                            </Button>
+                        ) : (
+                            <Button
+                                block
+                                color='primary'
+                                onClick={_onSubmit}
+                                size='sm'
+                                type='button'>
+                                {submitButtonLabel}
+                            </Button>
+                        )}
+                    </div>
+                </Dialog>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Panel = forwardRef(Panel);
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    color: PropTypes.string,
+    namespace: PropTypes.string,
+    removeButtonLabel: PropTypes.node,
+    submitButtonLabel: PropTypes.node,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    color: '#000000',
+    namespace: 'rte-color-insert',
+    removeButtonLabel: __('Remove Color'),
+    submitButtonLabel: __('Apply Color'),
+    title: __('Text color'),
+};
+
+export { Panel as default };
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js
new file mode 100644
index 00000000..b0c24cf1
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withColor/index.js
@@ -0,0 +1,91 @@
+import Panel from './Panel';
+import op from 'object-path';
+import { Editor } from 'slate';
+import { useSlate } from 'slate-react';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium from 'reactium-core/sdk';
+import React, { useEffect, useState } from 'react';
+import { Button, Icon } from 'reactium-ui';
+
+const Plugin = new RTEPlugin({ type: 'color', order: 100 });
+
+Plugin.callback = editor => {
+    // register leaf format
+    Reactium.RTE.Format.register(Plugin.type, {
+        element: ({ type, ...props }) => <span {...props} />,
+    });
+
+    // register toolbar button
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: 50,
+        toolbar: true,
+        button: props => {
+            const editor = useSlate();
+            const [backgroundColor, setBGColor] = useState('#000000');
+            const [node, setNode] = useState();
+            const [selection, setSelection] = useState();
+
+            const onButtonClick = e => {
+                const btn = e.currentTarget;
+                const rect = editor.toolbar.container.current.getBoundingClientRect();
+
+                let { width, height, x, y } = rect;
+
+                x += width / 2 - 150;
+                y += height;
+
+                editor.panel
+                    .setID('color')
+                    .setContent(<Panel selection={editor.selection} />)
+                    .moveTo(x, y)
+                    .show();
+            };
+
+            useEffect(() => {
+                if (!op.get(editor, 'selection')) return;
+                setSelection(editor.selection);
+            }, [editor.selection]);
+
+            useEffect(() => {
+                if (!selection) return;
+                try {
+                    const [_node] = Editor.parent(editor, selection);
+                    if (_node) setNode(_node);
+                } catch (err) {}
+            }, [selection]);
+
+            useEffect(() => {
+                if (op.get(node, 'plugins')) return;
+                const clr = op.get(node, 'style.color');
+                if (!clr) {
+                    setBGColor('#000000');
+                    return;
+                }
+                setBGColor(clr);
+            }, [node]);
+
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    active={op.has(node, 'style.color')}
+                    onClick={onButtonClick}
+                    {...props}>
+                    <div
+                        className='color-circle'
+                        style={{ backgroundColor }}
+                        data-color={backgroundColor}
+                    />
+                </Button>
+            );
+        },
+    });
+
+    // Editor overrides
+    const { isInline } = editor;
+    editor.isInline = element =>
+        element.type === Plugin.type ? true : isInline(element);
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withData.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withData.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withData.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withData.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js
new file mode 100644
index 00000000..c8878bc9
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/Panel/index.js
@@ -0,0 +1,268 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Editor, Range, Transforms } from 'slate';
+import { ReactEditor, useSlate } from 'slate-react';
+import { FontSelect } from '../../withFormatter/Panel/FontSelect';
+import { Button, Dialog, EventForm, Icon } from 'reactium-ui';
+import Reactium, {
+    __,
+    useDerivedState,
+    useFocusEffect,
+    useFulfilledObject,
+} from 'reactium-core/sdk';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useLayoutEffect as useWindowEffect,
+    useRef,
+    useState,
+} from 'react';
+
+const useLayoutEffect =
+    typeof window !== 'undefined' ? useWindowEffect : useEffect;
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+
+let Panel = (
+    { removeButtonLabel, submitButtonLabel, children, title, ...props },
+    ref,
+) => {
+    const formRef = useRef();
+
+    const editor = useSlate();
+
+    // Initial state
+    const [state, setNewState] = useDerivedState({
+        ...props,
+        fonts: _.sortBy(editor.fonts, 'label'),
+        selection: editor.selection,
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    const [ready, readyObj] = useFulfilledObject(state, [
+        'fonts',
+        'fontFamily',
+        'fontSize',
+        'fontWeight',
+        'selection',
+    ]);
+
+    // className prefixer
+    const cx = cls =>
+        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
+            .compact()
+            .uniq()
+            .value()
+            .join('-');
+
+    const initialize = () => {
+        if (!state.fonts) return;
+
+        const { fonts, fontFamily, fontSize, fontWeight } = state;
+
+        const newState = {};
+        const font = fonts[0];
+
+        if (!fontFamily) op.set(newState, 'fontFamily', font);
+        if (!fontSize) op.set(newState, 'fontSize', { label: 16, value: 16 });
+        if (!fontWeight) op.set(newState, 'fontWeight', font.weight[0]);
+
+        if (Object.keys(newState).length > 0) setState(newState);
+    };
+
+    const isNodeActive = () => {
+        const [_font] = Editor.nodes(editor, {
+            match: n => n.type === 'font',
+        });
+        return !!_font;
+    };
+
+    const unMounted = () => !formRef.current;
+
+    const unwrapNode = () => {
+        Transforms.unwrapNodes(editor, { match: n => n.type === 'font' });
+    };
+
+    const wrapNode = () => {
+        if (isNodeActive()) {
+            unwrapNode();
+        }
+
+        const { fontFamily, fontSize, fontWeight, selection } = state;
+
+        const isCollapsed = selection && Range.isCollapsed(selection);
+
+        const [_node] = Editor.node(editor, selection);
+
+        const text = op.get(_node, 'text');
+
+        const node = {
+            type: 'font',
+            style: {},
+            children: [{ text }],
+        };
+
+        if (fontFamily) {
+            node.style.fontFamily = op.get(fontFamily, 'weight.0.family');
+        }
+
+        if (fontWeight) {
+            node.style.fontWeight = op.get(fontWeight, 'weight');
+        }
+
+        if (fontSize) {
+            node.style.fontSize = op.get(fontSize, 'value', 16);
+        }
+
+        if (isCollapsed) {
+            Transforms.insertNodes(editor, node, { at: selection });
+        } else {
+            Transforms.wrapNodes(editor, node, { split: true, at: selection });
+        }
+
+        editor.updated = Date.now();
+    };
+
+    const _onClear = e => {
+        hide();
+        setTimeout(() => unwrapNode(), 1);
+    };
+
+    const _onFontSelect = e => setState({ fontFamily: e.item });
+
+    const _onSizeSelect = e => setState({ fontSize: e.item });
+
+    const _onWeightSelect = e => setState({ fontWeight: e.item });
+
+    const _onSubmit = () => {
+        if (unMounted()) return;
+        wrapNode();
+        hide();
+    };
+
+    const hide = () => editor.panel.setID('rte-panel').hide(false, true);
+
+    useEffect(() => {
+        if (!editor.selection) return;
+        setState({ selection: editor.selection });
+    }, [editor.selection]);
+
+    // Set fonts
+    useEffect(() => {
+        if (!editor.fonts) return;
+        setState({ fonts: _.sortBy(editor.fonts, 'label') });
+    }, [editor.fonts]);
+
+    useEffect(() => {
+        initialize();
+    }, [state.fonts]);
+
+    const [focused] = useFocusEffect(formRef.current, [formRef.current]);
+    const [focusRetry, setFocusRetry] = useState(0);
+
+    useLayoutEffect(() => {
+        if (!ready) return;
+        if (!focused && focusRetry < 10) setFocusRetry(focusRetry + 1);
+    }, [ready, focusRetry]);
+
+    // Renderers
+    const render = () => {
+        const { fonts, fontFamily, fontSize, fontWeight } = state;
+
+        const isActive = isNodeActive();
+
+        return (
+            <div ref={formRef} className={cx()}>
+                {ready && (
+                    <Dialog
+                        collapsible={false}
+                        dismissable={false}
+                        header={{
+                            title,
+                            elements: [
+                                <Button
+                                    onClick={e => {
+                                        e.preventDefault();
+                                        hide();
+                                    }}
+                                    size={Button.ENUMS.SIZE.XS}
+                                    color={Button.ENUMS.COLOR.CLEAR}
+                                    className='ar-dialog-header-btn dismiss'>
+                                    <Icon name='Feather.X' />
+                                </Button>,
+                            ],
+                        }}>
+                        {!isActive && (
+                            <FontSelect
+                                data-focus
+                                font={fontFamily}
+                                fonts={fonts}
+                                onFontSelect={_onFontSelect}
+                                onSizeSelect={_onSizeSelect}
+                                onWeightSelect={_onWeightSelect}
+                                size={fontSize}
+                                weight={fontWeight}
+                            />
+                        )}
+                        <div className='p-xs-8'>
+                            {isActive ? (
+                                <Button
+                                    block
+                                    color='danger'
+                                    data-focus
+                                    size='sm'
+                                    type='button'
+                                    onClick={_onClear}>
+                                    {removeButtonLabel}
+                                </Button>
+                            ) : (
+                                <Button
+                                    block
+                                    color='primary'
+                                    onClick={_onSubmit}
+                                    size='sm'
+                                    type='button'>
+                                    {submitButtonLabel}
+                                </Button>
+                            )}
+                        </div>
+                    </Dialog>
+                )}
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Panel = forwardRef(Panel);
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    removeButtonLabel: PropTypes.node,
+    submitButtonLabel: PropTypes.node,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    namespace: 'rte-color-insert',
+    removeButtonLabel: __('Remove Font'),
+    submitButtonLabel: __('Apply Font'),
+    title: __('Font'),
+    value: {},
+};
+
+export { Panel as default };
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js
new file mode 100644
index 00000000..776c4ff8
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFont/index.js
@@ -0,0 +1,96 @@
+import Panel from './Panel';
+import op from 'object-path';
+import { Editor } from 'slate';
+import { useSlate } from 'slate-react';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium from 'reactium-core/sdk';
+import React, { useEffect, useState } from 'react';
+import { Button, Icon } from 'reactium-ui';
+
+const Plugin = new RTEPlugin({ type: 'font', order: 100 });
+
+Plugin.callback = editor => {
+    // register leaf format
+    Reactium.RTE.Format.register(Plugin.type, {
+        element: ({ type, ...props }) => <span {...props} />,
+    });
+
+    // register toolbar button
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: 53,
+        toolbar: true,
+        button: props => {
+            const editor = useSlate();
+            const [fontFamily, setFontFamily] = useState();
+            const [fontSize, setFontSize] = useState();
+            const [fontWeight, setFontWeight] = useState();
+            const [node, setNode] = useState();
+            const [selection, setSelection] = useState();
+
+            const onButtonClick = e => {
+                const btn = e.currentTarget;
+                const rect = editor.toolbar.container.current.getBoundingClientRect();
+                let { width, height, x, y } = rect;
+
+                x += width / 2 - 150;
+                y += height;
+
+                editor.panel
+                    .setID('color')
+                    .setContent(<Panel selection={editor.selection} />)
+                    .moveTo(x, y)
+                    .show();
+            };
+
+            useEffect(() => {
+                if (!op.get(editor, 'selection')) return;
+                setSelection(editor.selection);
+            }, [editor.selection]);
+
+            useEffect(() => {
+                if (!selection) return;
+                try {
+                    const [_node] = Editor.parent(editor, selection);
+                    if (_node) setNode(_node);
+                } catch (err) {}
+            }, [selection]);
+
+            useEffect(() => {
+                if (op.get(node, 'plugins')) return;
+
+                const _fontFamily = op.get(node, 'style.fontFamily');
+                const _fontSize = op.get(node, 'style.fontSize');
+                const _fontWeight = op.get(node, 'style.fontWeight');
+
+                if (!_fontFamily || !_fontSize || !_fontWeight) return;
+
+                if (fontFamily !== _fontFamily) setFontFamily(_fontFamily);
+                if (fontSize !== _fontSize) setFontSize(_fontSize);
+                if (fontWeight !== _fontWeight) setFontWeight(_fontWeight);
+            }, [node]);
+
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    active={
+                        op.has(node, 'style.fontFamily') ||
+                        op.has(node, 'style.fontSize') ||
+                        op.has(node, 'style.fontWeight')
+                    }
+                    onClick={onButtonClick}
+                    {...props}>
+                    <span className='ico'>F</span>
+                </Button>
+            );
+        },
+    });
+
+    // Editor overrides
+    const { isInline } = editor;
+    editor.isInline = element =>
+        element.type === Plugin.type ? true : isInline(element);
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Element.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Element.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Element.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Element.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js
new file mode 100644
index 00000000..30f1db48
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Panel/index.js
@@ -0,0 +1,172 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Transforms } from 'slate';
+import React, { useEffect, useState } from 'react';
+import { ReactEditor, useEditor } from 'slate-react';
+import { Button, Dialog, Icon } from 'reactium-ui';
+import Reactium, { __, useFocusEffect, useRefs } from 'reactium-core/sdk';
+
+const useElements = props => {
+    const [elements, setElements] = useState(props.elements);
+
+    useEffect(() => {
+        let elms = props.elements;
+
+        Reactium.Hook.runSync('rte-form-elements', elms);
+
+        setElements(elms);
+    }, [props.elements]);
+
+    return [elements, setElements];
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+const CloseButton = props => (
+    <Button
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.CLEAR}
+        className='ar-dialog-header-btn dismiss'
+        {...props}>
+        <Icon name='Feather.X' />
+    </Button>
+);
+
+const Panel = ({ submitButtonLabel, namespace, title, ...props }) => {
+    const refs = useRefs();
+    const editor = useEditor();
+    const [elements] = useElements(props);
+
+    // className prefixer
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const insertNode = e => {
+        if (e) e.preventDefault();
+
+        const id = uuid();
+        const { value: element, label } = _.findWhere(elements, {
+            value: refs.get('element').value,
+        });
+
+        const nodeProps = {};
+
+        if (element === 'button') {
+            nodeProps.data = { type: 'button' };
+        }
+
+        const children = [
+            {
+                children: [{ text: label }],
+                element,
+                id: `form-element-${id}`,
+                type: 'formElement',
+                nodeProps,
+            },
+            { children: [{ text: '' }], type: 'p' },
+        ];
+
+        const node = {
+            blockID: `block-${id}`,
+            children,
+            id: `form-${id}`,
+            type: 'form',
+        };
+
+        const selection = JSON.parse(
+            JSON.stringify(editor.selection.anchor.path),
+        );
+
+        let block = Reactium.RTE.getBlock(editor, selection);
+        block = block ? block.node : null;
+
+        const isForm = block ? op.get(block, 'form') : false;
+
+        if (!isForm) {
+            Reactium.RTE.insertBlock(editor, node, {
+                id,
+                className: 'rte-form',
+                form: true,
+            });
+            Transforms.move(editor, { distance: 2, edge: 'end', unit: 'line' });
+        } else {
+            op.set(node, 'blockID', block.id);
+            Transforms.insertNodes(editor, node);
+        }
+
+        Transforms.collapse(editor, { edge: 'end' });
+
+        ReactEditor.focus(editor);
+        // hide();
+    };
+
+    const hide = () => {
+        editor.panel.hide(true, true);
+        ReactEditor.focus(editor);
+    };
+
+    const header = () => ({
+        elements: [<CloseButton onClick={hide} key='close-btn' />],
+        title,
+    });
+
+    useFocusEffect(editor.panel.container);
+
+    // Renderers
+    return (
+        <Dialog collapsible={false} dismissable={false} header={header()}>
+            <div className='p-xs-12'>
+                <div className='form-group'>
+                    <select ref={elm => refs.set('element', elm)}>
+                        {elements.map(({ value, label }, i) => (
+                            <option value={value} key={`element-${i}`}>
+                                {label}
+                            </option>
+                        ))}
+                    </select>
+                </div>
+            </div>
+            <div className={cx('footer')}>
+                <Button block color='tertiary' size='md' onClick={insertNode}>
+                    {submitButtonLabel}
+                </Button>
+            </div>
+        </Dialog>
+    );
+};
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    elements: PropTypes.array,
+    namespace: PropTypes.string,
+    removeButtonLabel: PropTypes.node,
+    submitButtonLabel: PropTypes.node,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    elements: [
+        { value: 'text', label: __('Text') },
+        { value: 'textarea', label: __('Text Area') },
+        { value: 'number', label: __('Number') },
+        { value: 'email', label: __('Email') },
+        { value: 'password', label: __('Password') },
+        { value: 'tel', label: __('Phone') },
+        { value: 'hidden', label: __('Hidden') },
+        { value: 'select', label: __('Select') },
+        { value: 'search', label: __('Search') },
+        { value: 'url', label: __('URL') },
+        { value: 'checkbox', label: __('Checkbox') },
+        { value: 'radio', label: __('Radio') },
+        { value: 'button', label: __('Button') },
+    ],
+    namespace: 'rte-form-panel',
+    submitButtonLabel: __('Insert Element'),
+    title: __('Form Element'),
+};
+
+export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/Select.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/Select.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/Select.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/Select.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/Settings/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js
new file mode 100644
index 00000000..4ec08c49
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withForm/index.js
@@ -0,0 +1,59 @@
+import React from 'react';
+import Panel from './Panel';
+import Element from './Element';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+
+const Plugin = new RTEPlugin({ type: 'form', order: 100 });
+
+Plugin.callback = editor => {
+    const onButtonClick = () => {
+        const x = window.innerWidth / 2 - 150;
+        const y = 80;
+
+        editor.panel
+            .setID(Plugin.type)
+            .setContent(<Panel selection={editor.selection} />)
+            .moveTo(x, y)
+            .show();
+    };
+
+    Reactium.RTE.Block.register('form', {
+        element: props => <div {...props} />,
+    });
+
+    Reactium.RTE.Format.register('formElement', {
+        element: Element,
+    });
+
+    // register toolbar button
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: 100,
+        sidebar: true,
+        button: props => {
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    onClick={onButtonClick}
+                    data-tooltip={__('Form Element')}
+                    {...props}>
+                    <Icon
+                        {...Reactium.RTE.ENUMS.PROPS.ICON}
+                        name='Linear.Select2'
+                        size={22}
+                    />
+                </Button>
+            );
+        },
+    });
+
+    // Editor overrides
+    const { isInline } = editor;
+    editor.isInline = element =>
+        element.type === Plugin.type ? false : isInline(element);
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js
similarity index 98%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js
index f13f60ad..35f0faab 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/ColorSelect.js
@@ -2,7 +2,7 @@ import _ from 'underscore';
 import cn from 'classnames';
 import op from 'object-path';
 import React, { useMemo } from 'react';
-import { Button, Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Dropdown, Icon } from 'reactium-ui';
 
 const noop = () => {};
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js
similarity index 98%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js
index 4b0a24d9..88b1313e 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/FontSelect.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import _ from 'underscore';
 import op from 'object-path';
-import { Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { Dropdown, Icon } from 'reactium-ui';
 
 export const FontLabel = ({ label, ...item }) => {
     const style = {};
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextAlignSelect.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextAlignSelect.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextAlignSelect.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextAlignSelect.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js
similarity index 96%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js
index ea4a3c00..3936a3d8 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/TextStyleSelect.js
@@ -1,7 +1,7 @@
 import _ from 'underscore';
 import op from 'object-path';
 import React, { useMemo } from 'react';
-import { Dropdown, Icon } from '@atomic-reactor/reactium-ui';
+import { Dropdown, Icon } from 'reactium-ui';
 
 export const TextStyleSelect = ({
     blocks,
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js
new file mode 100644
index 00000000..0c0632fa
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/index.js
@@ -0,0 +1,550 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Editor, Range, Transforms } from 'slate';
+import { ReactEditor, useSlate } from 'slate-react';
+import { Button, Dialog, Icon } from 'reactium-ui';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useEventHandle,
+    useStatus,
+} from 'reactium-core/sdk';
+
+import React, {
+    forwardRef,
+    useEffect,
+    useImperativeHandle,
+    useRef,
+} from 'react';
+
+import { FontSelect } from './FontSelect';
+import { ColorSelect } from './ColorSelect';
+import { hexToRgb, rgbToHex } from './utils';
+import { TextStyleSelect } from './TextStyleSelect';
+import { TextAlignSelect } from './TextAlignSelect';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+const CloseButton = props => (
+    <Button
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.CLEAR}
+        className='ar-dialog-header-btn dismiss'
+        {...props}>
+        <Icon name='Feather.X' />
+    </Button>
+);
+
+let Panel = ({ selection: initialSelection, ...props }, ref) => {
+    const formRef = useRef();
+    const editor = useSlate();
+
+    const [, setVisible, isVisible] = useStatus(false);
+
+    // Initial state
+    const [state, setNewState] = useDerivedState({
+        ...props,
+        align: 'align-left',
+        bgColor: 'transparent',
+        blocks: _.where(editor.blocks, { formatter: true }),
+        buttons: _.where(editor.buttons, item => op.has(item, 'formatter')),
+        color: 'inherit',
+        colors: editor.colors,
+        focused: null,
+        fonts: _.sortBy(editor.fonts, 'label'),
+        opacity: 100,
+        bgOpacity: 100,
+        selection: initialSelection || editor.selection,
+        size: { label: 16, value: 16 },
+        style: {},
+        value: {},
+    });
+
+    const setState = newState => {
+        if (unMounted()) return;
+        setNewState(newState);
+    };
+
+    // apply state to style
+    const applyStyle = params => {
+        const { style } = state;
+
+        let {
+            align,
+            bgColor: backgroundColor,
+            bgOpacity,
+            color,
+            font,
+            opacity,
+            size,
+            weight,
+        } = params;
+
+        let newStyle = { ...style, padding: 0 };
+
+        if (align) {
+            newStyle = {
+                ...newStyle,
+                textAlign: String(align)
+                    .split('align-')
+                    .pop(),
+            };
+        }
+
+        if (backgroundColor) {
+            if (bgOpacity) {
+                if (String(backgroundColor).substr(0, 1) === '#') {
+                    const RGB = hexToRgb(backgroundColor).join(', ');
+                    backgroundColor = `rgba(${RGB}, ${bgOpacity / 100}`;
+                }
+            }
+
+            const padding =
+                backgroundColor !== 'transparent' ? '0 10px' : undefined;
+            newStyle = { ...newStyle, backgroundColor, padding };
+        }
+
+        if (color) {
+            if (opacity) {
+                if (String(color).substr(0, 1) === '#') {
+                    const RGB = hexToRgb(color).join(', ');
+                    color = `rgba(${RGB}, ${opacity / 100}`;
+                }
+            }
+
+            newStyle = { ...newStyle, color };
+        }
+
+        if (font) {
+            const { family: fontFamily } = op.get(font, ['weight', 0]);
+            newStyle = { ...newStyle, fontFamily };
+        }
+
+        if (weight) {
+            const { weight: fontWeight } = weight;
+            newStyle = { ...newStyle, fontWeight };
+        }
+
+        if (size) {
+            newStyle = { ...newStyle, fontSize: size.value };
+        } else {
+            newStyle = { ...newStyle, fontSize: 16 };
+        }
+
+        if (_.isEqual(newStyle, style)) return;
+
+        setState({ style: newStyle });
+    };
+
+    // className prefixer
+    const cx = cls =>
+        _.chain([op.get(state, 'className', op.get(state, 'namespace')), cls])
+            .compact()
+            .uniq()
+            .value()
+            .join('-');
+
+    const hide = () => {
+        editor.panel.hide(false, true).setID('rte-panel');
+        ReactEditor.focus(editor);
+    };
+
+    const styleToState = currentStyle => {
+        let newState = {};
+
+        // text align
+        let textAlign = op.get(currentStyle, 'textAlign');
+        if (textAlign) {
+            op.set(newState, 'align', `align-${textAlign}`);
+        }
+
+        const _fonts = _.sortBy(editor.fonts, 'label');
+        let _font = _fonts[0];
+
+        // default font values
+        newState = {
+            ...newState,
+            font: _font,
+            size: { label: 16, value: 16 },
+            weight: _font.weight[0],
+        };
+
+        // map font
+        if (op.has(currentStyle, 'fontFamily')) {
+            const label = op
+                .get(currentStyle, 'fontFamily')
+                .split(',')
+                .shift();
+            _font = _.findWhere(editor.fonts, { label }) || newState.font;
+
+            newState = {
+                ...newState,
+                font: _font,
+                weight: _font.weight[0],
+            };
+        }
+
+        if (op.has(currentStyle, 'fontSize')) {
+            const fontSize = op.get(currentStyle, 'fontSize');
+            const size = { label: fontSize, value: fontSize };
+            newState['size'] = size;
+        }
+
+        if (op.has(currentStyle, 'fontWeight')) {
+            const fontWeight = Number(op.get(currentStyle, 'fontWeight', 400));
+            const weights = newState.font;
+            const weight = _.findWhere(weights, { weight: fontWeight });
+            newState['weight'] = weight;
+        }
+
+        // map color values to state
+        const colors = [
+            {
+                key: 'bgColor',
+                opacity: 'bgOpacity',
+                css: 'backgroundColor',
+            },
+            {
+                key: 'color',
+                opacity: 'opacity',
+                css: 'color',
+            },
+        ];
+
+        colors.forEach(({ key, opacity, css }) => {
+            let clr = op.get(currentStyle, css);
+
+            newState[key] = clr;
+
+            if (clr && String(clr).substr(0, 3) === 'rgb') {
+                clr = clr
+                    .split('(')
+                    .pop()
+                    .split(')')
+                    .shift()
+                    .split(', ');
+
+                newState[key] = rgbToHex(...clr);
+                newState[opacity] =
+                    Number(clr.length === 4 ? clr.pop() : 1) * 100;
+            }
+        });
+
+        // Update state
+        if (Object.keys(newState).length > 0 && !_.isEqual(state, newState)) {
+            setState(newState);
+        }
+    };
+
+    const unMounted = () => !formRef.current;
+
+    const _onBgColorChange = e => {
+        const bgColor = e.target.value;
+        setState({ bgColor });
+    };
+
+    const _onBgColorSelect = e => {
+        const { item } = e;
+        setState({ bgColor: item.value });
+    };
+
+    const _onBgOpacityChange = e => {
+        const bgOpacity = e.target.value;
+        setState({ bgOpacity });
+    };
+
+    const _onFontSelect = e => {
+        const { item: font } = e;
+        setState({ font });
+    };
+
+    const _onTextColorChange = e => {
+        const color = e.target.value;
+        setState({ color });
+    };
+
+    const _onTextColorSelect = e => {
+        const { item } = e;
+        setState({ color: item.value });
+    };
+
+    const _onTextOpacityChange = e => {
+        const opacity = e.target.value;
+        setState({ opacity });
+    };
+
+    const _onTextStyleChange = e => {
+        const { size: currentSize } = state;
+        const { item: textStyle } = e;
+
+        const size = op.get(textStyle, 'size')
+            ? { label: textStyle.size, value: textStyle.size }
+            : currentSize;
+
+        setState({ size, textStyle });
+    };
+
+    const _onTextAlignChange = e => {
+        //const align = e.currentTarget.dataset.align;
+        const align = e.target.value;
+        setState({ align });
+    };
+
+    const _onSizeSelect = e => {
+        const { item: size } = e;
+        setState({ size });
+    };
+
+    const _onWeightSelect = e => {
+        const { item: weight } = e;
+        setState({ weight });
+    };
+
+    const _onSubmit = () => {
+        const { selection, style, textStyle } = state;
+
+        Transforms.select(editor, selection);
+
+        if (Range.isExpanded(selection)) {
+            if (op.get(textStyle, 'id') === 'styled') {
+                Editor.addMark(editor, 'style', style);
+            } else {
+                Transforms.setNodes(
+                    editor,
+                    { style, type: textStyle.id },
+                    { split: true },
+                );
+            }
+        } else {
+            Reactium.RTE.insertBlock(editor, {
+                style,
+                type: textStyle.id,
+                children: [{ text: textStyle.label || '' }],
+            });
+        }
+        Transforms.collapse(editor, { edge: 'end' });
+        hide();
+    };
+
+    // Handle
+    const _handle = () => ({
+        setState,
+        state,
+    });
+
+    const [handle] = useEventHandle(_handle());
+
+    useImperativeHandle(ref, () => handle, [handle]);
+
+    // Editor load
+    useEffect(() => {
+        const { blocks, selection } = state;
+        if (blocks && selection) {
+            const textStyle = _.findWhere(blocks, { id: 'styled' });
+
+            setState({ textStyle });
+        }
+    }, [state.blocks, state.selection]);
+
+    // Set blocks
+    useEffect(() => {
+        setState({ blocks: _.where(editor.blocks, { formatter: true }) });
+    }, [editor.blocks]);
+
+    // Set buttons
+    useEffect(() => {
+        setState({
+            buttons: _.where(editor.buttons, item => op.has(item, 'formatter')),
+        });
+    }, [editor.buttons]);
+
+    // Set colors
+    useEffect(() => {
+        setState({ colors: editor.colors });
+    }, [editor.colors]);
+
+    // Set fonts
+    useEffect(() => {
+        setState({ fonts: _.sortBy(editor.fonts, 'label') });
+    }, [editor.fonts]);
+
+    useEffect(() => {
+        if (!state.fonts) return;
+        if (!op.get(state, 'font')) {
+            const font = state.fonts[0];
+            const size = 16;
+
+            setState({
+                font,
+                size: { label: size, value: size },
+                weight: font.weight[0],
+            });
+        }
+    }, [state.fonts]);
+
+    // Set style on state changes
+    useEffect(() => {
+        applyStyle(state);
+    }, [Object.values(state)]);
+
+    // Get styles from current node
+    useEffect(() => {
+        const { selection } = state;
+        if (!selection) return;
+
+        let parent;
+        try {
+            parent = Editor.parent(editor, selection);
+        } catch (err) {
+            return;
+        }
+
+        if (!parent) return;
+
+        const [currentNode] = parent;
+
+        if (!currentNode) return;
+
+        if (op.has(currentNode, 'style')) {
+            let currentStyle = _.clone(op.get(currentNode, 'style', {}));
+            styleToState(currentStyle);
+        }
+
+        setState({ node: currentNode });
+    }, [state.node, state.selection]);
+
+    // Update selection
+    useEffect(() => {
+        if (!editor.selection) return;
+        if (_.isEqual(state.selection, editor.selection)) return;
+
+        setState({ selection: editor.selection });
+    }, [editor.selection]);
+
+    // Move panel to center
+    useEffect(() => {
+        if (!editor.panel || !formRef.current) return;
+        if (!isVisible(true)) {
+            let { width, height } = formRef.current.getBoundingClientRect();
+
+            width = width / 2;
+            height = height / 2;
+
+            let ox = window.innerWidth / 2;
+            let oy = window.innerHeight / 2;
+            let x = ox - width;
+            let y = oy - height;
+            x = Math.floor(x);
+            y = Math.floor(y);
+
+            editor.panel.moveTo(x, y);
+
+            setVisible(true, true);
+        }
+    }, [editor.panel, formRef.current]);
+
+    // Renderers
+    const render = () => {
+        const {
+            align,
+            bgColor,
+            bgOpacity,
+            blocks,
+            color,
+            colors,
+            font,
+            fonts,
+            opacity,
+            size,
+            style,
+            title,
+            textStyle,
+            weight,
+        } = state;
+
+        const header = {
+            elements: [<CloseButton onClick={hide} key='close-btn' />],
+            title,
+        };
+
+        return (
+            <div ref={formRef} className={cx()}>
+                <Dialog collapsible={false} dismissable={false} header={header}>
+                    <TextStyleSelect
+                        blocks={blocks}
+                        onSelect={_onTextStyleChange}
+                        style={style}
+                        textStyle={textStyle}
+                    />
+                    <FontSelect
+                        font={font}
+                        fonts={_.sortBy(fonts, 'label')}
+                        onFontSelect={_onFontSelect}
+                        onSizeSelect={_onSizeSelect}
+                        onWeightSelect={_onWeightSelect}
+                        size={size}
+                        weight={weight}
+                        title={__('Font')}
+                    />
+                    <ColorSelect
+                        color={color || '#000000'}
+                        colors={colors}
+                        inherit
+                        onColorChange={_onTextColorChange}
+                        onColorSelect={_onTextColorSelect}
+                        onOpacityChange={_onTextOpacityChange}
+                        opacity={opacity}
+                        title={__('Text color')}
+                    />
+                    <ColorSelect
+                        color={bgColor || '#FFFFFF'}
+                        colors={colors}
+                        onColorChange={_onBgColorChange}
+                        onColorSelect={_onBgColorSelect}
+                        onOpacityChange={_onBgOpacityChange}
+                        opacity={bgOpacity}
+                        title={__('Background color')}
+                        transparent
+                    />
+                    <TextAlignSelect
+                        value={align}
+                        onChange={_onTextAlignChange}
+                    />
+                    <div className='p-xs-8'>
+                        <Button
+                            block
+                            color='primary'
+                            onClick={_onSubmit}
+                            size='sm'
+                            type='button'>
+                            {__('Apply Formatting')}
+                        </Button>
+                    </div>
+                </Dialog>
+            </div>
+        );
+    };
+
+    return render();
+};
+
+Panel = forwardRef(Panel);
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    namespace: 'formatter',
+    title: 'Text style',
+};
+
+export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/utils.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/utils.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/utils.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/Panel/utils.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js
new file mode 100644
index 00000000..fc0d6b18
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/index.js
@@ -0,0 +1,337 @@
+import React, { useEffect, useState } from 'react';
+import _ from 'underscore';
+import op from 'object-path';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Editor, Transforms } from 'slate';
+import { Button, Icon } from 'reactium-ui';
+import Panel from './Panel';
+
+export const colors = {
+    'color-black': '#000000',
+    'color-gray-dark': '#333333',
+    'color-gray': '#999999',
+    'color-grey': '#CFCFCF',
+    'color-grey-light': '#F7F7F7',
+    'color-white': '#FFFFFF',
+    'color-white-dark': '#FDFDFD',
+    'color-yellow': '#F4F19C',
+    'color-orange': '#E69840',
+    'color-pink': '#D877A0',
+    'color-red': '#E09797',
+    'color-purple': '#7A7CEF',
+    'color-blue': '#4F82BA',
+    'color-green': '#659A3F',
+    'color-green-light': '#B2BB50',
+};
+
+const Plugin = new RTEPlugin({ type: 'formatter', order: 100 });
+
+Plugin.callback = editor => {
+    const onButtonClick = (editor, e) => {
+        e.preventDefault();
+        editor.panel
+            .setID('formatter')
+            .setContent(<Panel selection={editor.selection} />)
+            .show();
+    };
+
+    // register buttons
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: -1000,
+        sidebar: true,
+        button: ({ editor, ...props }) => {
+            const [selection, setSelection] = useState(editor.selection);
+            useEffect(() => {
+                if (!_.isEqual(selection, editor.selection)) {
+                    setSelection(editor.selection);
+                }
+            }, [editor.selection]);
+
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    onClick={e => onButtonClick(editor, e)}
+                    data-tooltip={__('Text Formatter')}
+                    {...props}>
+                    <Icon
+                        {...Reactium.RTE.ENUMS.PROPS.ICON}
+                        name='Feather.Type'
+                    />
+                </Button>
+            );
+        },
+    });
+
+    Reactium.RTE.Button.register('align-left', {
+        order: 0,
+        formatter: 'alignment',
+        button: props => (
+            <Button {...props}>
+                <Icon name='Feather.AlignLeft' />
+            </Button>
+        ),
+    });
+
+    Reactium.RTE.Button.register('align-center', {
+        order: 0,
+        formatter: 'alignment',
+        button: props => (
+            <Button {...props}>
+                <Icon name='Feather.AlignCenter' />
+            </Button>
+        ),
+    });
+
+    Reactium.RTE.Button.register('align-justify', {
+        order: 0,
+        formatter: 'alignment',
+        button: props => (
+            <Button {...props}>
+                <Icon name='Feather.AlignJustify' />
+            </Button>
+        ),
+    });
+
+    Reactium.RTE.Button.register('align-right', {
+        order: 0,
+        formatter: 'alignment',
+        button: props => (
+            <Button {...props}>
+                <Icon name='Feather.AlignRight' />
+            </Button>
+        ),
+    });
+
+    // register blocks
+    Reactium.RTE.Block.register('styled', {
+        order: -1,
+        formatter: true,
+        label: 'Body Text',
+        size: 16,
+        element: props => <span {...props} className='ar-rte-styled' />,
+    });
+
+    Reactium.RTE.Block.register('p', {
+        order: 0,
+        formatter: true,
+        label: 'Paragraph',
+        size: 16,
+        element: ({ children, ...props }) => <p {...props}>{children}</p>,
+    });
+
+    Reactium.RTE.Block.register('break', {
+        element: ({ children }) => (
+            <>
+                <br />
+                {children}
+            </>
+        ),
+    });
+
+    Reactium.RTE.Block.register('h1', {
+        order: 1,
+        formatter: true,
+        label: 'Heading 1',
+        size: 32,
+        element: props => <h1 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('h2', {
+        order: 2,
+        formatter: true,
+        label: 'Heading 2',
+        size: 24,
+        element: props => <h2 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('h3', {
+        order: 3,
+        formatter: true,
+        label: 'Heading 3',
+        size: 18,
+        element: props => <h3 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('h4', {
+        order: 4,
+        formatter: true,
+        label: 'Heading 4',
+        size: 16,
+        element: props => <h4 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('h5', {
+        order: 5,
+        formatter: true,
+        label: 'Heading 5',
+        size: 14,
+        element: props => <h5 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('h6', {
+        order: 6,
+        formatter: true,
+        label: 'Heading 6',
+        size: 12,
+        element: props => <h6 {...props} />,
+    });
+
+    Reactium.RTE.Block.register('blockquote', {
+        order: 10,
+        formatter: true,
+        label: 'Quote',
+        size: 16,
+        element: props => <blockquote {...props} />,
+    });
+
+    Reactium.RTE.Block.register('div', {
+        element: element => {
+            const node = op.get(element, 'children.props.node');
+            const props = { ...node };
+
+            op.del(props, 'type');
+            op.del(props, 'blocked');
+            op.del(props, 'children');
+
+            return <div {...element} {...props} />;
+        },
+    });
+
+    // register fonts
+    Reactium.RTE.Font.register('font-1', {
+        label: 'Montserrat',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            {
+                weight: 100,
+                label: 'Thin',
+                family: 'Montserrat, Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 200,
+                label: 'Extra Light',
+                family: '"Montserrat Thin", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 300,
+                label: 'Light',
+                family: '"Montserrat Light", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 400,
+                label: 'Regular',
+                family: '"Montserrat Regular", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 500,
+                label: 'Medium',
+                family: '"Montserrat Medium", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 600,
+                label: 'Semi-Bold',
+                family: '"Montserrat SemiBold", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 800,
+                label: 'Bold',
+                family: '"Montserrat Bold", Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 900,
+                label: 'Black',
+                family: '"Montserrat Black", Helvetica, Arial, sans-serif',
+            },
+        ],
+    });
+
+    Reactium.RTE.Font.register('font-2', {
+        label: 'Cardo',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            {
+                weight: 400,
+                label: 'Regular',
+                family: 'Cardo, "Times New Roman", Gotham, serif',
+            },
+            {
+                weight: 600,
+                label: 'Semi-Bold',
+                family: 'Cardo, "Times New Roman", Gotham, serif',
+            },
+            {
+                weight: 800,
+                label: 'Bold',
+                family: 'Cardo, "Times New Roman", Gotham, serif',
+            },
+        ],
+    });
+
+    Reactium.RTE.Font.register('font-3', {
+        label: 'Arial',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            { weight: 400, label: 'Regular', family: 'Arial, sans-serif' },
+            { weight: 600, label: 'Semi-Bold', family: 'Arial, sans-serif' },
+            { weight: 800, label: 'Bold', family: 'Arial, sans-serif' },
+        ],
+    });
+
+    Reactium.RTE.Font.register('font-4', {
+        label: 'Helvetica',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            {
+                weight: 400,
+                label: 'Regular',
+                family: 'Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 600,
+                label: 'Semi-Bold',
+                family: 'Helvetica, Arial, sans-serif',
+            },
+            {
+                weight: 800,
+                label: 'Bold',
+                family: 'Helvetica, Arial, sans-serif',
+            },
+        ],
+    });
+
+    Reactium.RTE.Font.register('font-5', {
+        label: 'Courier',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            {
+                weight: 400,
+                label: 'Regular',
+                family: '"Courier New", Courier, monospace',
+            },
+            {
+                weight: 600,
+                label: 'Semi-Bold',
+                family: '"Courier New", Courier, monospace',
+            },
+            {
+                weight: 800,
+                label: 'Bold',
+                family: '"Courier New", Courier, monospace',
+            },
+        ],
+    });
+
+    // register colors
+    Object.entries(colors).forEach(([key, value]) =>
+        Reactium.RTE.Color.register(key, { value, label: value }),
+    );
+
+    // Extend editor
+    editor.lastLine = () => [editor.children.length - 1, 0];
+    editor.focusEnd = () => Transforms.select(editor, Editor.end(editor, []));
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withFormatter/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js
new file mode 100644
index 00000000..2863679b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/Panel/index.js
@@ -0,0 +1,333 @@
+import React, { useEffect } from 'react';
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import op from 'object-path';
+import isHotkey from 'is-hotkey';
+import PropTypes from 'prop-types';
+import { Transforms } from 'slate';
+import { ReactEditor, useEditor } from 'slate-react';
+import { Button, Dialog, Icon } from 'reactium-ui';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useFocusEffect,
+    useRefs,
+} from 'reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+const CloseButton = props => (
+    <Button
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.CLEAR}
+        className='ar-dialog-header-btn dismiss'
+        {...props}>
+        <Icon name='Feather.X' />
+    </Button>
+);
+
+const Panel = ({ submitButtonLabel, namespace, title, ...props }) => {
+    const refs = useRefs();
+    const editor = useEditor();
+
+    // Initial state
+    const [state, setState] = useDerivedState({
+        max: 12,
+        min: 1,
+        id: op.get(props, 'id', uuid()),
+        columns: JSON.parse(JSON.stringify(op.get(props, 'columns', []))),
+        node: op.get(props, 'node'),
+        path: op.get(props, 'path'),
+        selection: editor.selection,
+        sizes: ['xs', 'sm', 'md', 'lg'],
+    });
+
+    // className prefixer
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const submit = e => {
+        if (e) e.preventDefault();
+        if (op.get(state, 'node')) {
+            updateNode(e);
+        } else {
+            insertNode(e);
+        }
+    };
+
+    const insertNode = () => {
+        const { columns = [], id } = state;
+
+        const nodes = columns.map((col, i) => ({
+            addAfter: false,
+            addBefore: false,
+            blocked: true,
+            children: [
+                {
+                    type: 'block',
+                    blocked: true,
+                    deletable: false,
+                    inspector: false,
+                    data: { column: col },
+                    id: `block-inner-${id}-${i}`,
+                    children: [{ type: 'p', children: [{ text: '' }] }],
+                },
+            ],
+            className: Object.entries(col)
+                .map(([size, val]) => `col-${size}-${val}`)
+                .join(' '),
+            column: col,
+            deletable: false,
+            id: `block-${id}-${i}`,
+            inspector: false,
+            type: 'block',
+        }));
+
+        Transforms.select(editor, state.selection.anchor.path);
+        Reactium.RTE.insertBlock(editor, nodes, {
+            id,
+            className: 'row',
+            inspector: true,
+            row: columns,
+        });
+
+        hide();
+    };
+
+    const updateNode = () => {
+        const { columns = [], id, node, path } = state;
+        if (columns.length < 1) return;
+
+        let children = op.get(node, 'children', []);
+
+        // Add/Remove columns if needed
+        const diff = columns.length - children.length;
+
+        if (diff > 0) {
+            const at = _.flatten([path, columns.length - 1]);
+            const cols = columns.slice(columns.length - diff);
+
+            const nodes = cols.map((col, i) => ({
+                addAfter: false,
+                addBefore: false,
+                blocked: true,
+                children: [
+                    {
+                        type: 'block',
+                        blocked: true,
+                        deletable: false,
+                        inspector: false,
+                        data: { column: col },
+                        id: `block-inner-${id}-${i}`,
+                        children: [{ type: 'p', children: [{ text: '' }] }],
+                    },
+                ],
+                className: Object.entries(col)
+                    .map(([size, val]) => `col-${size}-${val}`)
+                    .join(' '),
+                column: col,
+                deletable: false,
+                id: `block-${id}-${i}`,
+                type: 'block',
+            }));
+
+            Transforms.insertNodes(editor, nodes, { at });
+            Transforms.select(editor, at);
+        }
+
+        if (diff < 0) {
+            const orig = _.range(children.length);
+            const indices = _.range(children.length + Math.abs(diff));
+            _.without(indices, ...orig).forEach(i =>
+                Transforms.delete(editor, { at: _.flatten([path, i - 1]) }),
+            );
+        }
+
+        // Update the row element
+        Transforms.setNodes(editor, { row: columns }, { at: path });
+
+        columns.forEach((col, i) => {
+            if (!col) return;
+
+            const cpath = _.flatten([path, i]);
+            const className = Object.entries(col)
+                .map(([size, val]) => `col-${size}-${val}`)
+                .join(' ');
+
+            Transforms.setNodes(
+                editor,
+                { className, column: col },
+                { at: cpath },
+            );
+        });
+
+        hide();
+    };
+
+    const _onChange = (e, { index, size }) => {
+        const { columns = [] } = state;
+        op.set(columns, [index, size], e.target.value);
+        setState({ columns });
+    };
+
+    const _onColumnAdd = e => {
+        if (e.type === 'keydown') {
+            if (!isHotkey('enter', e)) return;
+            e.preventDefault();
+        }
+
+        const { columns = [] } = state;
+
+        const values = Object.values(refs.get('size')).reduce(
+            (output, input) => {
+                if (!_.isEmpty(input.value)) {
+                    op.set(output, input.name, Number(input.value));
+                }
+
+                input.value = '';
+                return output;
+            },
+            {},
+        );
+
+        const firstInput = refs.get('size.xs');
+        if (firstInput) firstInput.focus();
+
+        columns.push(values);
+
+        setState({ columns });
+    };
+
+    const _onColumnDelete = index => {
+        const { columns = [] } = state;
+        columns.splice(index, 1);
+        setState({ columns });
+    };
+
+    const hide = () => {
+        editor.panel.hide(true, true).setID('rte-panel');
+        ReactEditor.focus(editor);
+    };
+
+    const header = () => ({
+        elements: [<CloseButton onClick={hide} key='close-btn' />],
+        title,
+    });
+
+    useFocusEffect(editor.panel.container);
+
+    useEffect(() => {
+        if (!editor.selection) return;
+        setState({
+            selection: editor.selection,
+            columns: JSON.parse(
+                JSON.stringify(
+                    op.get(props, 'columns', op.get(state, 'columns', [])),
+                ),
+            ),
+        });
+    }, [editor.selection]);
+
+    // Renderers
+    return (
+        <Dialog collapsible={false} dismissable={false} header={header()}>
+            <div className={cx('form')}>
+                <h4>
+                    {__('Column %num').replace(
+                        /\%num/gi,
+                        state.columns.length + 1,
+                    )}
+                </h4>
+                <div className='input-group'>
+                    {state.sizes.map(size => (
+                        <input
+                            key={`col-size-${size}`}
+                            type='number'
+                            placeholder={size}
+                            onKeyDown={_onColumnAdd}
+                            name={size}
+                            data-focus={size === 'xs'}
+                            max={state.max}
+                            min={state.min}
+                            ref={elm => refs.set(`size.${size}`, elm)}
+                        />
+                    ))}
+                    <Button
+                        color={Button.ENUMS.COLOR.TERTIARY}
+                        onClick={_onColumnAdd}
+                        type='button'
+                        size='sm'>
+                        <Icon name='Feather.Plus' size={20} />
+                    </Button>
+                </div>
+            </div>
+            {state.columns.length > 0 && (
+                <div style={{ height: '50vh', minHeight: 200 }}>
+                    <Scrollbars>
+                        {state.columns.map((column, i) => (
+                            <div className={cx('col')} key={`row-${i}`}>
+                                <div className='input-group'>
+                                    {state.sizes.map(size => (
+                                        <input
+                                            key={`row-${i}-${size}`}
+                                            type='number'
+                                            placeholder={size}
+                                            name={size}
+                                            max={state.max}
+                                            min={state.min}
+                                            onChange={e =>
+                                                _onChange(e, { index: i, size })
+                                            }
+                                            value={op.get(column, size, '')}
+                                            ref={elm =>
+                                                refs.set(
+                                                    `column.${i}.${size}`,
+                                                    elm,
+                                                )
+                                            }
+                                        />
+                                    ))}
+                                    <Button
+                                        onClick={() => _onColumnDelete(i)}
+                                        type='button'
+                                        color={Button.ENUMS.COLOR.DANGER}
+                                        size='sm'>
+                                        <Icon name='Feather.X' size={18} />
+                                    </Button>
+                                </div>
+                            </div>
+                        ))}
+                    </Scrollbars>
+                </div>
+            )}
+
+            {state.columns.length > 0 && (
+                <div className={cx('footer')}>
+                    <Button block color='tertiary' size='md' onClick={submit}>
+                        {submitButtonLabel}
+                    </Button>
+                </div>
+            )}
+        </Dialog>
+    );
+};
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    removeButtonLabel: PropTypes.node,
+    submitButtonLabel: PropTypes.node,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    namespace: 'rte-grid-panel',
+    submitButtonLabel: __('Apply Grid'),
+    title: __('Grid'),
+};
+
+export { Panel as default };
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js
new file mode 100644
index 00000000..f11c52ed
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withGrid/index.js
@@ -0,0 +1,45 @@
+import React from 'react';
+import Panel from './Panel';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium, { __ } from 'reactium-core/sdk';
+import { Button, Icon } from 'reactium-ui';
+
+const Plugin = new RTEPlugin({ type: 'grid', order: 100 });
+
+Plugin.callback = editor => {
+    const onButtonClick = () => {
+        const x = window.innerWidth / 2 - 150;
+        const y = 50;
+
+        editor.panel
+            .setID(Plugin.type)
+            .setContent(<Panel selection={editor.selection} />)
+            .moveTo(x, y)
+            .show();
+    };
+
+    // register toolbar button
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: 60,
+        sidebar: true,
+        button: props => {
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    onClick={onButtonClick}
+                    data-tooltip={__('Grid Layout')}
+                    {...props}>
+                    <Icon
+                        {...Reactium.RTE.ENUMS.PROPS.ICON}
+                        name='Feather.Layout'
+                        size={22}
+                    />
+                </Button>
+            );
+        },
+    });
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js
new file mode 100644
index 00000000..38a5b1bc
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/Panel/index.js
@@ -0,0 +1,164 @@
+import _ from 'underscore';
+import uuid from 'uuid/v4';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Transforms } from 'slate';
+import { ReactEditor, useEditor } from 'slate-react';
+import React, { useEffect, useRef, useState } from 'react';
+import { __, useFocusEffect, useHookComponent } from 'reactium-core/sdk';
+import { Button, Dialog, Icon } from 'reactium-ui';
+
+const CloseButton = props => (
+    <Button
+        size={Button.ENUMS.SIZE.XS}
+        color={Button.ENUMS.COLOR.CLEAR}
+        className='ar-dialog-header-btn dismiss'
+        {...props}>
+        <Icon name='Feather.X' />
+    </Button>
+);
+
+const Panel = ({
+    onDismiss,
+    onSelect,
+    selection: initialSelection,
+    title,
+    ...props
+}) => {
+    const pickerRef = useRef();
+
+    const editor = useEditor();
+
+    const IconPicker = useHookComponent('IconPicker');
+
+    const [header, setNewHeader] = useState();
+
+    const [selection, setSelection] = useState(initialSelection);
+
+    const cx = cls =>
+        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
+            .compact()
+            .uniq()
+            .value()
+            .join('-');
+
+    const hide = () => {
+        if (onDismiss) return onDismiss();
+
+        editor.panel.hide(false, true).setID('rte-panel');
+        ReactEditor.focus(editor);
+    };
+
+    const insertNode = icon => {
+        const { color, size } = pickerRef.current;
+        const children = [{ text: '' }];
+        const id = uuid();
+        const node = {
+            id,
+            children,
+            color,
+            icon,
+            size,
+            nodeProps: {
+                name: icon,
+                size,
+                style: {
+                    fill: color,
+                    width: size,
+                    height: size,
+                },
+            },
+            type: 'icon',
+        };
+
+        Transforms.insertNodes(editor, node, { at: selection });
+    };
+
+    const _search = value => pickerRef.current.setSearch(value);
+    const search = _.throttle(_search, 100);
+
+    const setHeader = () =>
+        setNewHeader({
+            elements: [<CloseButton onClick={hide} key='close-button' />],
+            title,
+        });
+
+    const _size = value => pickerRef.current.setSize(Number(value || 24));
+    const size = _.throttle(_size, 100);
+
+    const _onSelect = e => {
+        if (typeof onSelect === 'function') return onSelect(e);
+
+        insertNode(e.item);
+        // pickerRef.current.setValue([]);
+        // hide();
+    };
+
+    useEffect(() => {
+        if (!header) setHeader();
+    }, [header]);
+
+    useEffect(() => {
+        if (!editor.selection) return;
+        setSelection(editor.selection);
+    }, [editor.selection]);
+
+    useEffect(() => {
+        if (!initialSelection) return;
+        setSelection(initialSelection);
+    }, [initialSelection]);
+
+    useFocusEffect(editor.panel.container);
+
+    const render = () => {
+        return (
+            <Dialog collapsible={false} dismissable={false} header={header}>
+                <div className={cx()}>
+                    <div className={cx('search')}>
+                        <div className='form-group'>
+                            <div className='input-group'>
+                                <input
+                                    type='number'
+                                    placeholder='size'
+                                    min={18}
+                                    defaultValue={18}
+                                    onFocus={e => e.target.select()}
+                                    onChange={e => size(e.target.value)}
+                                />
+                                <input
+                                    data-focus
+                                    type='search'
+                                    placeholder='search'
+                                    className='grow'
+                                    onFocus={e => e.target.select()}
+                                    onChange={e => search(e.target.value)}
+                                />
+                            </div>
+                        </div>
+                    </div>
+                    <IconPicker
+                        ref={pickerRef}
+                        onSelect={_onSelect}
+                        height={250}
+                    />
+                </div>
+            </Dialog>
+        );
+    };
+
+    return render();
+};
+
+Panel.propTypes = {
+    namespace: PropTypes.string,
+    onDismiss: PropTypes.string,
+    onSelect: PropTypes.func,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    namespace: 'rte-icons',
+    title: __('Icons'),
+};
+
+export { Panel as default };
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withIcon/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js
similarity index 95%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js
index 4679ed34..b4fc48b5 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withItalic.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'italic', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/_style.scss
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js
new file mode 100644
index 00000000..0562fd3b
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/Panel/index.js
@@ -0,0 +1,412 @@
+import _ from 'underscore';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Editor, Range, Transforms } from 'slate';
+import { ReactEditor, useSlate } from 'slate-react';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+import React, { forwardRef, useEffect, useState } from 'react';
+
+import Reactium, {
+    __,
+    useHookComponent,
+    useRefs,
+    useStatus,
+} from 'reactium-core/sdk';
+
+const STATUS = {
+    PENDING: 'pending',
+    FETCHING: 'fetching',
+    COMPLETE: 'complete',
+};
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Panel
+ * -----------------------------------------------------------------------------
+ */
+
+let Panel = (
+    {
+        removeButtonLabel,
+        submitButtonLabel,
+        title,
+        updateButtonLabel,
+        ...props
+    },
+    ref,
+) => {
+    const refs = useRefs();
+
+    const editor = useSlate();
+
+    const [selection, setSelection] = useState();
+
+    const activeNode = () => {
+        const [results] = Editor.nodes(editor, {
+            match: n => n.type === 'link',
+        });
+        return Array.isArray(results) && results.length > 0
+            ? _.first(results)
+            : undefined;
+    };
+
+    const [node, setNode] = useState(activeNode());
+
+    const [isButton, setButton] = useState(false);
+
+    const [, setStatus, isStatus] = useStatus(STATUS.PENDING);
+
+    const { Button, Dialog, Icon, Spinner, Toggle } = useHookComponent(
+        'ReactiumUI',
+    );
+
+    // className prefixer
+    const cx = cls =>
+        _.chain([op.get(props, 'className', op.get(props, 'namespace')), cls])
+            .compact()
+            .uniq()
+            .value()
+            .join('-');
+
+    const isExpanded = () => selection && !Range.isCollapsed(selection);
+
+    const isLinkActive = () => !!activeNode();
+
+    const fetch = async ({ refresh = false, route }) => {
+        if (refresh === true) Reactium.Cache.del('link-lookup');
+
+        let req = Reactium.Cache.get('link-lookup');
+
+        if (req) return req;
+
+        req = new Reactium.Query('Route').matches(
+            'route',
+            new RegExp(route, 'i'),
+        );
+
+        Reactium.Cache.set('link-lookup', req, 2000);
+
+        return req.first().then(response => {
+            Reactium.Cache.del('link-lookup');
+
+            if (!response) return null;
+            const route = response.get('route');
+            const meta = response.get('meta');
+
+            return {
+                ...meta,
+                route,
+            };
+        });
+    };
+
+    const unMounted = () => !refs.get('container');
+
+    const unwrapLink = () =>
+        Transforms.unwrapNodes(editor, { match: n => n.type === 'link' });
+
+    const wrapLink = async params => {
+        if (!isExpanded()) return;
+        if (isLinkActive()) unwrapLink();
+
+        const href = op.get(params, 'url');
+        const button = op.get(params, 'button');
+        const target = op.get(params, 'target');
+        const className = op.get(params, 'className');
+        const node = {
+            href,
+            button,
+            target,
+            className,
+            content: null,
+            type: 'link',
+        };
+
+        if (String(href).startsWith('/')) {
+            setStatus(STATUS.FETCHING, true);
+            const content = await fetch({ route: href });
+            if (unMounted()) return;
+            setStatus(STATUS.COMPLETE);
+            op.set(node, 'content', content);
+        }
+
+        Transforms.wrapNodes(editor, node, { split: true, at: selection });
+
+        hide();
+    };
+
+    const _onClearLink = () => {
+        unwrapLink();
+        hide();
+    };
+
+    const _onDismiss = () => hide();
+
+    const _onSubmit = e => {
+        if (e) e.preventDefault();
+
+        const url = refs.get('url');
+        const size = refs.get('size');
+        const color = refs.get('color');
+        const width = refs.get('width');
+        const height = refs.get('height');
+        const cls = refs.get('className');
+        const target = refs.get('target');
+        const outline = refs.get('outline');
+        const appearance = refs.get('appearance');
+
+        const button = isButton
+            ? {
+                  size: size.value,
+                  color: color.value,
+                  width: width.value,
+                  height: height.value,
+                  outline: outline.checked ? outline.value : null,
+                  appearance: appearance.checked ? appearance.value : null,
+              }
+            : null;
+
+        wrapLink({
+            button,
+            url: url.value,
+            className: cls.value,
+            target: target.value,
+        });
+    };
+
+    const _onTypeToggle = e => setButton(e.target.checked);
+
+    const hide = () => {
+        editor.panel.hide(false, true).setID('rte-panel');
+        Transforms.collapse(editor, { edge: 'end' });
+        ReactEditor.focus(editor);
+    };
+
+    useEffect(() => {
+        if (unMounted()) return;
+        if (!editor.selection) return;
+
+        if (!_.isEqual(selection, editor.selection)) {
+            setSelection(editor.selection);
+        }
+
+        const newNode = activeNode();
+        if (newNode && isButton !== !!op.get(newNode, 'button')) {
+            setButton(!!op.get(newNode, 'button'));
+            setNode(newNode);
+        }
+    }, [selection, editor.selection]);
+
+    // Renderers
+    const submitLabel = node ? updateButtonLabel : submitButtonLabel;
+
+    return (
+        <div className={cx()} ref={ref}>
+            <Dialog
+                dismissable
+                header={{ title }}
+                collapsible={false}
+                onDismiss={_onDismiss}
+                pref='admin.dialog.formatter'
+                ref={elm => refs.set('container', elm)}>
+                <Scrollbars autoHeight autoHeightMin={286} autoHeightMax='80vh'>
+                    <div className='p-xs-20'>
+                        <div className='form-group'>
+                            <input
+                                data-focus
+                                type='text'
+                                ref={elm => refs.set('url', elm)}
+                                defaultValue={op.get(node, 'href', '')}
+                                placeholder={__('http://site.com/page')}
+                            />
+                            <Icon name='Feather.Link' />
+                        </div>
+                        <div className='form-group'>
+                            <input
+                                type='text'
+                                placeholder={__('class')}
+                                ref={elm => refs.set('className', elm)}
+                                defaultValue={op.get(node, 'className', '')}
+                            />
+                            <Icon name='Feather.Droplet' />
+                        </div>
+                        <div className='form-group'>
+                            <input
+                                type='text'
+                                placeholder={__('target')}
+                                ref={elm => refs.set('target', elm)}
+                                defaultValue={op.get(node, 'target', '')}
+                            />
+                            <Icon name='Feather.Target' />
+                        </div>
+                        <hr style={{ marginLeft: -20, marginRight: -20 }} />
+                        <div className='form-group'>
+                            <Toggle
+                                checked={isButton}
+                                label={__('Button')}
+                                onChange={_onTypeToggle}
+                            />
+                        </div>
+                        <ButtonOptions
+                            refs={refs}
+                            node={node}
+                            isButton={isButton}
+                        />
+                    </div>
+                </Scrollbars>
+                <hr />
+                <div className='p-xs-8'>
+                    {node && (
+                        <Button
+                            block
+                            outline
+                            size='sm'
+                            data-focus
+                            type='button'
+                            color='danger'
+                            className='my-xs-8'
+                            onClick={_onClearLink}
+                            children={removeButtonLabel}
+                            disabled={isStatus(STATUS.FETCHING)}
+                        />
+                    )}
+                    <Button
+                        block
+                        size='sm'
+                        type='button'
+                        color='primary'
+                        onClick={_onSubmit}
+                        children={submitLabel}
+                        disabled={isStatus(STATUS.FETCHING)}
+                    />
+                </div>
+                {isStatus(STATUS.FETCHING) && <Spinner />}
+            </Dialog>
+        </div>
+    );
+};
+
+const ButtonOptions = ({ isButton, node, refs }) => {
+    const [outline, setOutline] = useState(
+        op.get(node, 'button.outline', false),
+    );
+    const [appearance, setAppearance] = useState(
+        op.get(node, 'button.appearance', false),
+    );
+
+    const { Button, Icon, Toggle } = useHookComponent('ReactiumUI');
+
+    return !isButton ? null : (
+        <>
+            <hr style={{ marginLeft: -20, marginRight: -20 }} />
+            <div className='form-group'>
+                <Toggle
+                    ref={elm => refs.set('outline', op.get(elm, 'input'))}
+                    onChange={e => setOutline(e.target.checked)}
+                    label={__('Outline')}
+                    checked={outline}
+                    value='outline'
+                />
+            </div>
+            <div className='form-group'>
+                <Toggle
+                    ref={elm => refs.set('appearance', op.get(elm, 'input'))}
+                    onChange={e => setAppearance(e.target.checked)}
+                    label={__('Rounded')}
+                    checked={appearance}
+                    value='pill'
+                />
+            </div>
+            <div className='form-group'>
+                <select
+                    ref={elm => refs.set('size', elm)}
+                    defaultValue={op.get(
+                        node,
+                        'button.size',
+                        Button.ENUMS.SIZE.SM,
+                    )}>
+                    {Object.entries(Button.ENUMS.SIZE).map(([key, value]) => (
+                        <option value={value} key={key}>
+                            {String(key).toLowerCase()}
+                        </option>
+                    ))}
+                </select>
+            </div>
+            <div className='form-group'>
+                <select
+                    ref={elm => refs.set('color', elm)}
+                    defaultValue={op.get(
+                        node,
+                        'button.color',
+                        Button.ENUMS.COLOR.PRIMARY,
+                    )}>
+                    {Object.entries(Button.ENUMS.COLOR).map(([key, value]) => (
+                        <option value={value} key={key}>
+                            {String(key).toLowerCase()}
+                        </option>
+                    ))}
+                </select>
+            </div>
+            <div className='form-group'>
+                <div
+                    className='flex flex-middle'
+                    style={{
+                        justifyContent: 'space-between',
+                        position: 'relative',
+                        width: '100%',
+                    }}>
+                    <input
+                        style={{
+                            flexGrow: 0,
+                            maxWidth: '42%',
+                            paddingLeft: 10,
+                            textAlign: 'center',
+                        }}
+                        ref={elm => refs.set('width', elm)}
+                        placeholder={__('width')}
+                        type='text'
+                    />
+                    <Icon
+                        name='Feather.X'
+                        style={{
+                            left: '50%',
+                            transform: 'translateY(-50%) translateX(-50%)',
+                        }}
+                    />
+                    <input
+                        style={{
+                            flexGrow: 0,
+                            maxWidth: '42%',
+                            paddingLeft: 10,
+                            textAlign: 'center',
+                        }}
+                        ref={elm => refs.set('height', elm)}
+                        placeholder={__('height')}
+                        type='text'
+                    />
+                </div>
+            </div>
+        </>
+    );
+};
+
+Panel = forwardRef(Panel);
+
+Panel.propTypes = {
+    className: PropTypes.string,
+    namespace: PropTypes.string,
+    removeButtonLabel: PropTypes.node,
+    submitButtonLabel: PropTypes.node,
+    updateButtonLabel: PropTypes.node,
+    title: PropTypes.string,
+};
+
+Panel.defaultProps = {
+    namespace: 'rte-link-insert',
+    removeButtonLabel: __('Remove Link'),
+    submitButtonLabel: __('Insert Link'),
+    updateButtonLabel: __('Update Link'),
+    title: __('Link'),
+};
+
+export { Panel as default };
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js
new file mode 100644
index 00000000..e10e95b3
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withLink/index.js
@@ -0,0 +1,118 @@
+import _ from 'underscore';
+import Panel from './Panel';
+import cn from 'classnames';
+import op from 'object-path';
+import { Editor } from 'slate';
+import { useEditor } from 'slate-react';
+import RTEPlugin from '../../RTEPlugin';
+import Reactium from 'reactium-core/sdk';
+import React, { useEffect, useState } from 'react';
+import { Button, Icon } from 'reactium-ui';
+
+const Plugin = new RTEPlugin({ type: 'link', order: 100 });
+
+Plugin.callback = editor => {
+    // register leaf format
+    Reactium.RTE.Format.register(Plugin.type, {
+        element: elementProps => {
+            let { button, className, style = {}, ...props } = elementProps;
+
+            op.del(props, 'content');
+            op.del(props, 'type');
+
+            let cls = null;
+
+            if (button) {
+                cls = _.chain([
+                    'btn',
+                    op.get(button, 'color'),
+                    op.get(button, 'size'),
+                    op.get(button, 'outline'),
+                    op.get(button, 'appearance'),
+                ])
+                    .flatten()
+                    .compact()
+                    .value()
+                    .join('-');
+
+                op.set(style, 'width', op.get(button, 'width'));
+                op.set(style, 'height', op.get(button, 'height'));
+            } else {
+                className = className || 'link';
+            }
+
+            return (
+                <a {...props} style={style} className={cn(className, cls)} />
+            );
+        },
+    });
+
+    // register toolbar button
+    Reactium.RTE.Button.register(Plugin.type, {
+        order: 52,
+        toolbar: true,
+        button: props => {
+            const editor = useEditor();
+            const [active, setActive] = useState(false);
+
+            const isActive = () => {
+                if (!editor.selection) return false;
+
+                try {
+                    const node = op.get(
+                        Editor.parent(editor, editor.selection),
+                        '0',
+                    );
+
+                    if (!op.get(node, 'type')) {
+                        return false;
+                    }
+
+                    return node ? op.get(node, 'type') === Plugin.type : false;
+                } catch (err) {
+                    return false;
+                }
+            };
+
+            const onButtonClick = e => {
+                if (e) e.preventDefault();
+
+                const x = window.innerWidth / 2 - 150;
+                const y = 50;
+
+                editor.panel
+                    .setID('link')
+                    .setContent(<Panel selection={editor.selection} />)
+                    .moveTo(x, y)
+                    .show();
+            };
+
+            useEffect(() => {
+                const activeCheck = isActive();
+                if (active !== activeCheck) setActive(activeCheck);
+            }, [editor.selection]);
+
+            return (
+                <Button
+                    {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                    active={active}
+                    onClick={onButtonClick}
+                    {...props}>
+                    <Icon
+                        {...Reactium.RTE.ENUMS.PROPS.ICON}
+                        name='Feather.Link'
+                    />
+                </Button>
+            );
+        },
+    });
+
+    // Editor overrides
+    const { isInline } = editor;
+    editor.isInline = element =>
+        element.type === Plugin.type ? true : isInline(element);
+
+    return editor;
+};
+
+export default Plugin;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js
similarity index 99%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js
index 3da935ec..2e1f736d 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withList.js
@@ -7,7 +7,7 @@ import { ReactEditor } from 'slate-react';
 
 import RTEPlugin from '../RTEPlugin';
 import Reactium, { __ } from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const insertNode = (editor, type) => {
     const [current, path] = Editor.above(editor);
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/Element.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/Element.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/Element.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/Element.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaImage/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Element.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Element.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Element.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Element.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js
new file mode 100644
index 00000000..c16188c6
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/Settings.js
@@ -0,0 +1,312 @@
+import React from 'react';
+import _ from 'underscore';
+import cn from 'classnames';
+import op from 'object-path';
+import PropTypes from 'prop-types';
+import { Transforms } from 'slate';
+import { ReactEditor, useEditor } from 'slate-react';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
+
+import Reactium, {
+    __,
+    useDerivedState,
+    useHookComponent,
+    useRefs,
+    useStatus,
+} from 'reactium-core/sdk';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Hook Component: Settings
+ * -----------------------------------------------------------------------------
+ */
+
+const cloneObj = obj => JSON.parse(JSON.stringify(obj));
+
+const Settings = ({
+    namespace,
+    node = {},
+    path = [],
+    title,
+    updateButtonLabel,
+}) => {
+    const refs = useRefs();
+
+    const editor = useEditor();
+
+    const [, setVisible, isVisible] = useStatus(true);
+
+    const MediaPicker = useHookComponent('MediaPicker');
+
+    const { Button, Dialog, Icon, Slider, Toggle } = useHookComponent(
+        'ReactiumUI',
+    );
+
+    const [value, updateValue] = useDerivedState(cloneObj(node));
+
+    const getValue = (key, def = '') => op.get(value, key, def) || def;
+
+    const setValue = (key, newValue, silent) => {
+        if (unMounted()) return;
+
+        if (!_.isString(key)) {
+            updateValue(cloneObj(key), newValue);
+        } else {
+            if (_.isNumber(newValue)) {
+                newValue = Number(newValue);
+            }
+
+            if (_.isString(newValue) && String(newValue).length < 1) {
+                newValue = null;
+            }
+
+            updateValue({ [key]: newValue }, silent);
+        }
+    };
+
+    // className prefixer
+    const cx = Reactium.Utils.cxFactory(namespace);
+
+    const hide = () => {
+        editor.panel.hide(false, true).setID('rte-panel');
+        Transforms.collapse(editor, { edge: 'end' });
+        ReactEditor.focus(editor);
+    };
+
+    const showPicker = (TYPE, TITLE) => () => {
+        setVisible(false, true);
+        const { Modal } = Reactium.Handle.get('AdminTools').current;
+        Modal.show(
+            <MediaPicker
+                dismissable
+                title={TITLE}
+                filters={TYPE}
+                confirm={false}
+                onDismiss={() => Modal.hide()}
+                onSubmit={_onMediaSelect(TYPE)}
+            />,
+        );
+    };
+
+    const submit = (newValue = {}) =>
+        Transforms.setNodes(editor, { ...value, ...newValue }, { at: path });
+
+    const unMounted = () => !refs.get('container');
+
+    const _header = () => ({ title });
+
+    const _footer = () => ({
+        align: 'center',
+        elements: [
+            <Button
+                block
+                size='sm'
+                type='button'
+                color='primary'
+                key='submit-btn'
+                onClick={_onSubmit}
+                children={updateButtonLabel}
+            />,
+        ],
+    });
+
+    const _onDismiss = () => hide();
+
+    const _onInput = KEY => e => setValue(KEY, e.target.value);
+
+    const _onMediaSelect = TYPE => e => {
+        if (!Array.isArray(e.selection) || e.selection.length < 1) return;
+        const item = e.selection.pop();
+
+        const { Modal } = Reactium.Handle.get('AdminTools').current;
+
+        let newValue;
+
+        if (TYPE === 'VIDEO') {
+            const { objectId, url: src, ext } = item;
+            newValue = { objectId, src, ext };
+        }
+
+        if (TYPE === 'IMAGE') {
+            const { url: thumbnail } = item;
+            newValue = { thumbnail, autoplay: !!thumbnail };
+        }
+        submit(newValue);
+        Modal.hide();
+    };
+
+    const _onSubmit = e => {
+        if (e) e.preventDefault();
+        submit();
+        hide();
+    };
+
+    const _onToggle = KEY => e => setValue(KEY, e.target.checked);
+
+    // Renderer
+    return (
+        <Dialog
+            dismissable
+            footer={_footer()}
+            header={_header()}
+            collapsible={false}
+            onDismiss={_onDismiss}
+            visible={isVisible(true)}
+            className='ar-settings-dialog'
+            ref={elm => refs.set('container', elm)}>
+            <div className={cn('rte-settings', cx())}>
+                <Scrollbars autoHeight autoHeightMin={286} autoHeightMax='80vh'>
+                    <Container title={__('URL')} id='classname'>
+                        <div className='p-xs-16'>
+                            <div className='form-group'>
+                                <div className='input-group-full'>
+                                    <input
+                                        type='text'
+                                        onChange={_onInput('src')}
+                                        value={getValue('src', '')}
+                                        ref={elm => refs.set('src', elm)}
+                                    />
+                                    <Button
+                                        title={__('Select Video')}
+                                        className={cx('btn-inline')}
+                                        color={Button.ENUMS.COLOR.TERTIARY}
+                                        onClick={showPicker(
+                                            'VIDEO',
+                                            __('Select Video'),
+                                        )}>
+                                        <Icon name='Feather.Film' />
+                                    </Button>
+                                </div>
+                            </div>
+                        </div>
+                    </Container>
+                    <Container title={__('Thumbnail')} id='classname'>
+                        <div className='p-xs-16'>
+                            <div className='form-group'>
+                                <div className='input-group-full'>
+                                    <input
+                                        type='text'
+                                        onChange={_onInput('thumbnail')}
+                                        value={getValue('thumbnail', '')}
+                                        ref={elm => refs.set('thumbnail', elm)}
+                                    />
+                                    <Button
+                                        className={cx('btn-inline')}
+                                        title={__('Select Thumbnail')}
+                                        color={Button.ENUMS.COLOR.TERTIARY}
+                                        onClick={showPicker(
+                                            'IMAGE',
+                                            __('Select Thumbnail'),
+                                        )}>
+                                        <Icon name='Feather.Camera' />
+                                    </Button>
+                                </div>
+                            </div>
+                        </div>
+                    </Container>
+                    <Container title={__('Size')} id='size'>
+                        <div className='flex flex-middle p-xs-16'>
+                            <div className='col-xs-5'>
+                                <div className='form-group'>
+                                    <input
+                                        type='text'
+                                        title={__('width')}
+                                        className='text-center'
+                                        placeholder={__('width')}
+                                        value={getValue('width')}
+                                        onChange={_onInput('width')}
+                                    />
+                                </div>
+                            </div>
+                            <div className='col-xs-2 flex middle center gray'>
+                                <Icon name='Feather.X' />
+                            </div>
+                            <div className='col-xs-5'>
+                                <div className='form-group'>
+                                    <input
+                                        type='text'
+                                        title={__('height')}
+                                        className='text-center'
+                                        placeholder={__('height')}
+                                        value={getValue('height')}
+                                        onChange={_onInput('height')}
+                                    />
+                                </div>
+                            </div>
+                        </div>
+                    </Container>
+                    <Container title={__('Settings')} id='player'>
+                        <div className='p-xs-16'>
+                            <div className='form-group'>
+                                <Toggle
+                                    label={__('Autoplay')}
+                                    onChange={_onToggle('autoplay')}
+                                    checked={getValue('autoplay', false)}
+                                />
+                            </div>
+                            <div className='form-group'>
+                                <Toggle
+                                    label={__('Play Controls')}
+                                    onChange={_onToggle('controls')}
+                                    checked={getValue('controls', false)}
+                                />
+                            </div>
+                            <div className='form-group'>
+                                <Toggle
+                                    label={__('Loop')}
+                                    onChange={_onToggle('loop')}
+                                    checked={getValue('loop', false)}
+                                />
+                            </div>
+                            <div className='form-group'>
+                                <Toggle
+                                    label={__('Muted')}
+                                    onChange={_onToggle('muted')}
+                                    checked={getValue('muted', false)}
+                                />
+                            </div>
+                        </div>
+                    </Container>
+                    <Container title={__('Volume')} id='volume'>
+                        <div className='py-xs-16 px-xs-32'>
+                            <Slider
+                                value={getValue('volume', 0)}
+                                onChange={({ value }) =>
+                                    setValue('volume', value)
+                                }
+                            />
+                        </div>
+                    </Container>
+                </Scrollbars>
+            </div>
+        </Dialog>
+    );
+};
+
+Settings.propTypes = {
+    title: PropTypes.string,
+    namespace: PropTypes.string,
+    updateButtonLabel: PropTypes.node,
+};
+
+Settings.defaultProps = {
+    title: __('Video Properties'),
+    namespace: 'rte-video-settings',
+    updateButtonLabel: __('Apply Settings'),
+};
+
+const Container = ({ children, id, title }) => {
+    const { Dialog } = useHookComponent('ReactiumUI');
+
+    return (
+        <Dialog
+            collapsible
+            className='sub'
+            header={{ title }}
+            pref={`admin.dialog.rteVideo.setting.${id}`}>
+            {children}
+        </Dialog>
+    );
+};
+
+export default Settings;
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withMediaVideo/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js
similarity index 96%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js
index adf118a4..edd13ffd 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withStrike.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'strike', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js
similarity index 95%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js
index 75a5ad1d..1003d4a7 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSub.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'sub', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js
similarity index 95%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js
index 304a9077..9738264e 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withSup.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button } from '@atomic-reactor/reactium-ui';
+import { Button } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'sup', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Element.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Element.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Element.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Element.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Tab.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Tab.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Tab.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/Tab.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabContent.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabContent.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabContent.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabContent.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabEditor.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabEditor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabEditor.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabEditor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsHorizontal.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsHorizontal.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsHorizontal.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsHorizontal.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsVertical.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsVertical.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsVertical.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/TabsVertical.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/ToolbarButton.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/ToolbarButton.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/ToolbarButton.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/ToolbarButton.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_horizontal-tab.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_horizontal-tab.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_horizontal-tab.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_horizontal-tab.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_vertical-tab.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_vertical-tab.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_vertical-tab.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/_vertical-tab.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withTab/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js
similarity index 95%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js
index 564ac6d0..0ed738e4 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_plugins/withUnderline.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import RTEPlugin from '../RTEPlugin';
 import Reactium from 'reactium-core/sdk';
-import { Button, Icon } from '@atomic-reactor/reactium-ui';
+import { Button, Icon } from 'reactium-ui';
 
 const Plugin = new RTEPlugin({ type: 'underline', order: 100 });
 
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_style.scss b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_style.scss
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/index.js
diff --git a/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js
new file mode 100644
index 00000000..de70b5c0
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/sdk.js
@@ -0,0 +1,989 @@
+import uuid from 'uuid/v4';
+import _ from 'underscore';
+import op from 'object-path';
+import ENUMS from '../enums';
+import isHotkey from 'is-hotkey';
+import { plural } from 'pluralize';
+import cb from 'copy-to-clipboard';
+import RTEPlugin from '../RTEPlugin';
+import Reactium from 'reactium-core/sdk';
+import { isDark, isLight } from '../Settings/utils';
+import { Editor, Node, Path, Transforms } from 'slate';
+import { isBlockActive, isMarkActive, toggleBlock, toggleMark } from '.';
+
+// TODO: Convert to Reactium.Utils.registryFactory
+export class Registry {
+    constructor() {
+        this.__registered = [];
+        this.__unregister = [];
+    }
+
+    get registered() {
+        return this.__registered;
+    }
+
+    register(id, data) {
+        data['order'] = op.get(data, 'order', 200);
+        const item = { ...data, id };
+        this.__registered.push(item);
+        return item;
+    }
+
+    unregister(id) {
+        if (id) {
+            this.__unregister.push(id);
+        }
+        return this.__unregister;
+    }
+
+    list() {
+        const unregister = _.uniq(this.__unregister);
+        const registered = Array.from(this.__registered).filter(
+            ({ id }) => !unregister.includes(id),
+        );
+        return _.chain(registered)
+            .sortBy('order')
+            .indexBy('id')
+            .value();
+    }
+}
+
+class RTE {
+    constructor() {
+        this.ENUMS = ENUMS;
+        this.pluginFactory = options => new RTEPlugin(options);
+
+        this.isLight = isLight;
+        this.isDark = isDark;
+
+        this.isBlockActive = isBlockActive;
+        this.isHotkey = isHotkey;
+        this.isMarkActive = isMarkActive;
+        this.toggleBlock = toggleBlock;
+        this.toggleMark = toggleMark;
+
+        this.Action = new Registry();
+        this.Block = new Registry();
+        this.Button = new Registry();
+        this.Color = new Registry();
+        this.Font = new Registry();
+        this.Format = new Registry();
+        this.Hotkey = new Registry();
+        this.Plugin = new Registry();
+        this.Tab = new Registry();
+
+        this.Ext = {
+            Action: this.Action,
+            Block: this.Block,
+            Button: this.Button,
+            Color: this.Color,
+            Font: this.Font,
+            Format: this.Format,
+            Hotkey: this.Hotkey,
+            Plugin: this.Plugin,
+            Tab: this.Tab,
+        };
+    }
+
+    extend(id) {
+        id =
+            String(id)
+                .charAt(0)
+                .toUpperCase() + String(id).slice(1);
+
+        if (op.get(this.Ext, id) || op.get(this, id)) {
+            console.log('RTE registry "' + id + '" already exists');
+            return this[id];
+        }
+
+        this.Ext[id] = new Registry();
+        this[id] = this.Ext[id];
+
+        return this[id];
+    }
+
+    register(ext, id, data) {
+        ext = op.get(this.Ext, ext, this.extend(ext));
+        ext.register(id, data);
+    }
+
+    unregister(ext, id) {
+        ext = op.get(this.Ext, ext);
+        if (ext) {
+            ext.unregister(id);
+        }
+    }
+
+    get list() {
+        return Object.entries(this.Ext).reduce((obj, [id, item]) => {
+            id = String(plural(id)).toLowerCase();
+            obj[id] = item.list();
+            return obj;
+        }, {});
+    }
+
+    get actions() {
+        return this.list.actions;
+    }
+
+    get blocks() {
+        return this.list.blocks;
+    }
+
+    get buttons() {
+        return this.list.buttons;
+    }
+
+    get colors() {
+        let clrObj = this.Color.list();
+
+        Reactium.Hook.runSync('rte-colors', clrObj);
+
+        let clrArr = Object.values(clrObj);
+
+        Reactium.Hook.runSync('colors', clrArr);
+
+        return clrArr;
+    }
+
+    get fonts() {
+        return this.list.fonts;
+    }
+
+    get formats() {
+        return this.list.formats;
+    }
+
+    get hotkeys() {
+        return this.list.hotkeys;
+    }
+
+    get nodes() {
+        const nodes = Object.entries({ ...this.formats, ...this.blocks }).map(
+            ([id, value]) => {
+                op.set(value, 'id', id);
+                return value;
+            },
+        );
+
+        return _.sortBy(nodes, 'order');
+    }
+
+    get plugins() {
+        return this.list.plugins;
+    }
+
+    get tabs() {
+        return this.list.tabs;
+    }
+
+    get emptyNode() {
+        return {
+            type: 'p',
+            children: [{ text: '' }],
+        };
+    }
+
+    onKeyDown(editor, event, hotkeys) {
+        if (!editor || !event) return;
+
+        let next = true;
+        hotkeys.forEach(item => {
+            if (next === false) return;
+
+            const { keys, callback } = item;
+
+            if (typeof callback !== 'function') return;
+
+            const isKey =
+                _.chain([keys])
+                    .flatten()
+                    .compact()
+                    .uniq()
+                    .value()
+                    .filter(key => this.isHotkey(key, event)).length > 0;
+
+            if (!isKey) return;
+
+            try {
+                next = callback({ editor, event, keys }) || next;
+            } catch (err) {
+                next = false;
+            }
+        });
+    }
+
+    isEmpty(node) {
+        const text = Node.string(node);
+        return op.get(node, 'blocked') === true
+            ? false
+            : String(text).length < 1;
+    }
+
+    getNodeByID(editor, id) {
+        const nodes = Editor.nodes(editor, {
+            at: [],
+            match: node =>
+                op.get(node, 'id') === id || op.get(node, 'ID') === id,
+        });
+
+        const node = _.first(Array.from(nodes));
+        return node ? _.object(['node', 'path'], node) : { node: {}, path: [] };
+    }
+
+    getNode(editor, path) {
+        let node, p, root;
+
+        if (_.isString(path)) {
+            const n = this.getNodeByID(editor, path);
+            node = op.get(n, 'node');
+            p = op.get(n, 'path');
+            root = p.length === 1;
+        } else {
+            const s = editor.selection || editor.lastSelection || {};
+            path = path || op.get(s, 'anchor.path') || [0];
+
+            root = path.length === 1;
+            p = Array.from(path);
+            p = root === true ? [Math.max(Number(_.first(p) - 1), 0), 0] : p;
+
+            const result = Editor.above(editor, { at: p });
+
+            p = result.pop();
+            node = result.pop();
+        }
+
+        let empty = Object.keys(node).length > 0 ? this.isEmpty(node) : true;
+
+        return { node, path: p, root, empty, blocked: op.get(node, 'blocked') };
+    }
+
+    siblings(editor, path) {
+        let children = [];
+        const s = editor.selection || editor.lastSelection || {};
+        path = path || op.get(s, 'anchor.path') || [0];
+        path = Array.from(path);
+
+        path.pop();
+
+        let parent = Editor.above(editor, { at: path });
+        if (parent) {
+            parent = _.object(['node', 'path'], parent);
+            children = op.get(parent, 'node.children', []);
+        }
+        return children;
+    }
+
+    sibling(editor, path, offset = -1) {
+        const s = editor.selection || editor.lastSelection || {};
+        path = path || op.get(s, 'anchor.path') || [0];
+        path = Array.from(path);
+
+        let node;
+
+        const siblings = this.siblings(editor, path);
+        const sibpath = Array.from(path);
+        sibpath.pop();
+
+        if (sibpath.length >= 1) {
+            let idx = sibpath.pop() + offset;
+            if (!_.range(siblings.length).includes(idx)) {
+                return;
+            }
+            node = siblings[idx];
+        }
+
+        return node;
+    }
+
+    before(editor, path) {
+        return this.sibling(editor, path);
+    }
+
+    after(editor, path) {
+        return this.sibling(editor, path, 1);
+    }
+
+    getBlock(editor, path) {
+        // const nodes = Array.from(
+        //     Node.ancestors(editor, path, { reverse: true }),
+        // );
+        // const blocks = nodes.filter(([node]) => {
+        //     if (Editor.isEditor(node)) return false;
+        //     return op.get(node, 'type') === 'block';
+        // });
+        //
+        // let block = _.first(blocks);
+        // block = block ? _.object(['node', 'path'], block) : null;
+        let block = Editor.above(editor, {
+            at: path,
+            match: ({ type }) => type === 'block',
+        });
+
+        block = block ? _.object(['node', 'path'], block) : null;
+
+        if (block) {
+            op.set(block, 'empty', String(Node.string(block.node)).length < 1);
+        }
+
+        return block;
+    }
+
+    insertBlock(editor, children, options = {}) {
+        children = Array.isArray(children) ? children : [children];
+
+        let { at, id, ...props } = options;
+        id = id || uuid();
+        id = String(id).startsWith('block-') ? id : `block-${id}`;
+
+        const current = _.object(
+            ['node', 'path'],
+            Editor.above(editor, { at }),
+        );
+
+        const blockNode = {
+            ...props,
+            blocked: true,
+            children,
+            id,
+            type: 'block',
+        };
+
+        const replace = ['p'];
+        const type = op.get(current, 'node.type');
+        const isEmpty = Editor.isEmpty(editor, current.node);
+
+        Transforms.insertNodes(editor, blockNode, {
+            at: Path.next(current.path),
+        });
+
+        if (replace.includes(type) && isEmpty) {
+            Transforms.delete(editor, { at: current.path });
+        }
+
+        /*
+        const args = [editor];
+        if (at) args.push({ at });
+
+        let parent = Editor.above(...args) || Editor.node(...args);
+        parent = parent ? _.object(['node', 'path'], parent) : null;
+
+        const block = parent ? this.getBlock(editor, parent.path) : null;
+        const isEmpty = Editor.isEmpty(editor, parent.node);
+        const path = parent.path;
+        let next = Path.next(path);
+
+        const node = {
+            ...props,
+            blocked: true,
+            children,
+            id,
+            type: 'block',
+        };
+
+        // Transforms.move(editor, { edge: 'end' });
+
+        if (block) {
+            if (block.empty) {
+                Transforms.insertNodes(editor, node, {
+                    at: Path.next(block.path),
+                    split: true,
+                });
+                Transforms.delete(editor, { at: block.path });
+            } else {
+                Transforms.insertNodes(editor, node, { at: next, split: true });
+                if (isEmpty) Transforms.delete(editor, { at: path });
+            }
+        } else {
+            Transforms.insertNodes(editor, node, { at: next, split: true });
+            if (isEmpty) Transforms.delete(editor, { at: path });
+        }
+        */
+    }
+
+    clone(editor, node, selection) {
+        const dupe = this.reassign(node);
+        Transforms.insertNodes(editor, dupe, { at: Path.next(selection) });
+        return dupe;
+    }
+
+    copy(node) {
+        const newNode = JSON.stringify(node);
+        cb(newNode);
+        return newNode;
+    }
+
+    reassign(node) {
+        if (_.isObject(node) || _.isArray(node)) {
+            node = JSON.stringify(node);
+        }
+
+        node = _.isString(node)
+            ? JSON.stringify(JSON.parse(node), null, 2)
+            : node;
+
+        const ids = [];
+        const regexes = [
+            /\"id\": \"(.*)\"\,/gim,
+            /\"id\": \"block-inner-(.*)\"\,/gm,
+            /\"id\": \"block-(.*)\"\,/gm,
+        ];
+
+        // Get ids
+        regexes.forEach(regex => {
+            let m;
+            while ((m = regex.exec(node)) !== null) {
+                if (m.index === regex.lastIndex) regex.lastIndex++;
+                m.forEach(match =>
+                    ids.push(
+                        String(match)
+                            .replace(/block-inner/gm, '')
+                            .replace(/block-/gm, '')
+                            .replace(/\"ID": /gim, '')
+                            .replace(/\"/gm, '')
+                            .replace(/\,/gm, '')
+                            .replace(/ /gm, ''),
+                    ),
+                );
+            }
+        });
+
+        node = ids.reduce((n, id) => n.split(id).join(uuid()), node);
+        return JSON.parse(node);
+    }
+
+    removeEmptyNodes(content) {
+        let newContent = _.compact(JSON.parse(JSON.stringify(content)));
+        let i = newContent.length - 1;
+
+        for (i; i >= 0; i--) {
+            const text = Node.string(newContent[i]);
+            if (String(text).length < 1) newContent.splice(i, 1);
+        }
+
+        return newContent;
+    }
+}
+
+export default new RTE();
+
+/**
+ * @api {Function} Block.register(id,options) Block.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Block.register
+ * @apiDescription Register a block level formatter.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the block.
+ * @apiParam {Object} options The configuration object for the block.
+ * @apiParam (Options) {Component} element The React component to render.
+ * @apiParam (Options) {Boolean} [inline=false] Whether the block is inline or not.
+ * @apiParam (Options) {Number} [order=100] The sort order of the block. Useful when overwriting an existing block.
+ * @apiExample Usage:
+
+ // reactium-hooks.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+Plugin.callback = editor => {
+    // Register h6 block
+    Reactium.RTE.Block.register('h6', {
+        inline: false,
+        element: props => <h6 {...props} />,
+        order: 6
+    });
+
+    return editor;
+};
+
+export default Plugin;
+ *
+ */
+
+/**
+ * @api {Function} Block.unregister(id) Block.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Block.unregister
+ * @apiDescription Unregister a block level formatter.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the block.
+ */
+
+/**
+ * @api {Function} Block.list() Block.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Block.list
+ * @apiDescription Return a list of the registered blocks.
+ */
+
+/**
+ * @api {Function} Button.register(id,options) Button.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Button.register
+ * @apiDescription Register a button in the editor toolbar and/or sidebar.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the button.
+ * @apiParam {Object} options The configuration object for the button.
+ * @apiParam (Options) {Component} button The React component to render. If you have an `onClick` callback on your button, be sure to call `preventDefault()` so that the editor doesn't lose focus when the button is clicked.
+ * @apiParam (Options) {Number} [order=100] The sort order of the button. Useful whe overwriting an existing button.
+ * @apiParam (Options) {Boolean} [sidebar=false] Whether the button should show up in the sidebar. The sidebar is used for formats and blocks that don't require text to be selected.
+ * @apiParam (Options) {Boolean} [toolbar=false] Whether the button should show up in the toolbar. The toolbar is used for formats and blocks that require text to be selected.
+ * @apiExample Usage:
+// reactium-hooks.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { Button } from 'reactium-ui';
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+Plugin.callback = editor => {
+    // register toolbar button
+    Reactium.RTE.Button.register('bold', {
+        order: 110,
+        toolbar: true,
+        button: ({ editor, ...props }) => (
+            <Button
+                {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                {...props}
+                active={Reactium.RTE.isMarkActive(editor, 'bold')}
+                onClick={e => Reactium.RTE.toggleMark(editor, 'bold', e)}>
+                <span className='ico'>B</span>
+            </Button>
+        ),
+    });
+
+    return editor;
+};
+
+export default Plugin;
+ *
+ */
+
+/**
+ * @api {Function} Button.unregister(id) Button.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Button.unregister
+ * @apiDescription Unregister a button.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the button.
+ */
+
+/**
+ * @api {Function} Button.list() Button.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Button.list
+ * @apiDescription Return a list of the registered buttons.
+ */
+
+/**
+  * @api {Function} Color.register(id,options) Color.register()
+  * @apiGroup Reactium.RTE
+  * @apiName Color.register
+  * @apiDescription Register a color used in the block level text formatter configuration panel.
+
+> **Note:** This function should be called within the editor plugin callback function.
+  * @apiParam {String} id The id of the color.
+  * @apiParam {Object} options The configuration object for the color.
+  * @apiParam (Options) {String} label Display label for the color.
+  * @apiParam (Options) {String} value Valid CSS HEX color value.
+  * @apiExample Example
+ // reactium-hooks.js
+
+ import Reactium from 'reactium-core/sdk';
+ import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+ const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+ Plugin.callback = editor => {
+     // Register Red color
+     Reactium.RTE.Color.register('red', {
+         label: 'Red',
+         value: '#FF0000',
+     });
+
+     return editor;
+ };
+
+ export default Plugin;
+*/
+
+/**
+ * @api {Function} Color.unregister(id) Color.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Color.unregister
+ * @apiDescription Unregister a color.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the color.
+ */
+
+/**
+ * @api {Function} Color.list() Color.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Color.list
+ * @apiDescription Return a list of the registered colors.
+ */
+
+/**
+ * @api {Function} Font.register(id,options) Font.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Font.register
+ * @apiDescription Register a font used in the block level text formatter configuration panel.
+
+> **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the font.
+ * @apiParam {Object} options The configuration object for the font.
+ * @apiParam (Options) {String} label Display label for the font.
+ * @apiParam (Options) {Number[]} size List of font sizes your font to supports.
+ * @apiParam (Options) {Object[]} weight List of font weights your font supports.
+ * @apiParam (Options) {String} weight[label] Display label for the font-weight.
+ * @apiParam (Options) {String} weight[family] Valid CSS font-family value.
+ * @apiParam (Options) {Number} weight[weight] Valid CSS font-weight value.
+ * @apiExample Usage:
+ // reactium-hooks.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+Plugin.callback = editor => {
+    // Register Arial font
+    Reactium.RTE.Font.register('arial', {
+        label: 'Arial',
+        size: [10, 12, 14, 16, 18, 24, 32, 44, 56, 64, 72, 96],
+        weight: [
+            { label: 'Regular', family: 'Arial, sans-serif', weight: 400 },
+            { label: 'Semi-Bold', family: 'Arial, sans-serif', weight: 600 },
+            { label: 'Bold', family: 'Arial, sans-serif', weight: 800 },
+        ],
+    });
+
+    return editor;
+};
+
+export default Plugin;
+ */
+
+/**
+ * @api {Function} Font.unregister(id) Font.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Font.unregister
+ * @apiDescription Unregister a font.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the font.
+ */
+
+/**
+ * @api {Function} Font.list() Font.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Font.list
+ * @apiDescription Return a list of the registered fonts.
+ */
+
+/**
+ * @api {Function} Format.register(id,options) Format.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Format.register
+ * @apiDescription Register an inline formatter.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the format.
+ * @apiParam {Object} options The configuration object for the format.
+ * @apiParam (Options) {Component} element The React component to render.
+ * @apiParam (Options) {Boolean} [inline=true] Whether the element is inline or not.
+ * @apiParam (Options) {Number} [order=100] The sort order of the element. Useful when overwriting an existing format.
+ * @apiExample Usage:
+ // reactium-hooks.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+Plugin.callback = editor => {
+    // register bold formatter
+    Reactium.RTE.Format.register('bold', {
+        element: props => <strong {...props} />,
+        inline: true,
+    });
+
+    return editor;
+ };
+
+ export default Plugin;
+ */
+
+/**
+ * @api {Function} Format.unregister(id) Format.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Format.unregister
+ * @apiDescription Unregister a inline formatter.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the formatter.
+ */
+
+/**
+ * @api {Function} Format.list() Format.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Format.list
+ * @apiDescription Return a list of the registered inline formats.
+ */
+
+/**
+ * @api {Function} Hotkey.register(id,options) Hotkey.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Hotkey.register
+ * @apiDescription Register a keyboard shortcut.
+
+> **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the hotkey.
+ * @apiParam {Object} options The configuration object for the hotkey.
+ * @apiParam (Options) {Array} keys The key combination. See [isHotkey](https://www.npmjs.com/package/is-hotkey) for available values.
+ * @apiParam (Options) {Function} callback The function to execute when the hotkey is pressed. If your function returns `false` no other matching hotkey definitions will be processed. The callback function receives a single paramter object containing a reference to the current `editor` and the keyboard `event`.
+ * @apiParam (Options) {Number} [order=100] The sort order of the hotkey. Useful when overwriting an existing hotkey or processing the same keys with a different set of rules.
+ * @apiExample Usage:
+ // reactium-hooks.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+
+const Plugin = new RTEPlugin({ type: 'MyPlugin' });
+
+Plugin.callback = editor => {
+    // register bold hotkey
+    Reactium.RTE.Hotkey.register('toggle-bold', {
+        keys: ['mod+b'],
+        callback: ({ editor, event }) => {
+            event.preventDefault();
+            Reactium.RTE.toggleMark(editor, Plugin.type);
+        },
+    });
+
+    return editor;
+};
+
+export default Plugin;
+ */
+
+/**
+ * @api {Function} Hotkey.unregister(id) Hotkey.unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName Hotkey.unregister
+ * @apiDescription Unregister a hotkey.
+
+ > **Note:** This function should be called within the editor plugin callback function.
+ * @apiParam {String} id The id of the hotkey.
+ */
+
+/**
+ * @api {Function} Hotkey.list() Hotkey.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Hotkey.list
+ * @apiDescription Return a list of the registered hotkeys.
+ */
+
+/**
+ * @api {Function} Plugin.register(id,plugin) Plugin.register()
+ * @apiGroup Reactium.RTE
+ * @apiName Plugin.register
+ * @apiDescription Register a RichTextEditor plugin.
+
+> **Note:** This function should be called within a `reactium-hooks.js` file.
+ * @apiParam {String} id The id of the plugin.
+ * @apiParam {RTEPlugin} plugin The plugin instance.
+
+ */
+
+/**
+  * @api {Function} Plugin.unregister(id) Plugin.unregister()
+  * @apiGroup Reactium.RTE
+  * @apiName Plugin.unregister
+  * @apiDescription Unregister a plugin.
+
+  > **Note:** This function should be called within the editor plugin callback function.
+  * @apiParam {String} id The id of the plugin.
+  */
+
+/**
+ * @api {Function} Plugin.list() Plugin.list()
+ * @apiGroup Reactium.RTE
+ * @apiName Plugin.list
+ * @apiDescription Return a list of the registered plugins.
+ */
+
+/**
+ * @api {Class} RTEPlugin(constructor) RTEPlugin
+ * @apiGroup Reactium.RTE
+ * @apiName RTEPlugin
+ * @apiDescription RichTextEditor plugin instance used as the base when creating or extending RichTextEditor functionality.
+
+## Import
+```
+import { RTEPlugin } from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor';
+```
+
+> **See:** [Slate Plugins](https://docs.slatejs.org/concepts/07-plugins) for more information on how to augment the editor instance.
+
+ * @apiParam (Constructor) {Function} callback The plugin function where your editor customization and registrations are executed. The callback can be overwritten via the `.callback` property.
+ * @apiParam (Constructor) {Number} [order=100] The sort order applied to your plugin when registering it with the RichTextEditor component. The order can be overwritten via the `.order` property.
+ * @apiParam (Constructor) {String} [type] The type is how your plugin is identified with the certain RichTextEditor functionality such as blocks and formats. The type cannot be changed outside of the constructor.
+ * @apiExample Example Plugin
+// withBold.js
+
+import React from 'react';
+import Reactium from 'reactium-core/sdk';
+import { Button } from 'reactium-ui';
+import RTEPlugin from 'reactium_modules/@atomic-reactor/admin/registered-components/RichTextEditor/RTEPlugin';
+
+const withBold = new RTEPlugin({ type: 'bold', order: 100 });
+
+withBold.callback = editor => {
+    // Register inline formatter
+    Reactium.RTE.Format.register('bold', {
+        element: props => <strong {...props} />,
+    });
+
+    // Register toolbar button
+    Reactium.RTE.Button.register('bold', {
+        order: 110,
+        toolbar: true,
+        button: ({ editor, ...props }) => (
+            <Button
+                {...Reactium.RTE.ENUMS.PROPS.BUTTON}
+                active={Reactium.RTE.isMarkActive(editor, 'bold')}
+                onClick={e => Reactium.RTE.toggleMark(editor, 'bold', e)}
+                {...props}>
+                <span className='ico'>B</span>
+            </Button>
+        ),
+    });
+
+    // Register hotkeys
+    Reactium.RTE.Hotkey.register('bold', {
+        keys: ['mod+b'],
+        callback: ({ editor, event }) => {
+            event.preventDefault();
+            Reactium.RTE.toggleMark(editor, 'bold');
+        },
+    });
+
+    // Editor overrides
+    const { isInline } = editor;
+
+    // override the editor.isInline function to check for the 'bold' element type.
+    editor.isInline = element =>
+        element.type === 'bold' ? true : isInline(element);
+
+    // Return the updated editor object
+    return editor;
+};
+
+export {
+    withBold
+};
+
+ ...
+
+// reactium-hooks.js
+
+import Reactium from 'reactium-core/sdk';
+import { withBold } from './withBold';
+import { withReact } from 'slate-react';
+import { withHistory } from 'slate-history';
+
+Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
+    () => {
+        // Register my custom plugin - withBold
+        Reactium.RTE.Plugin.register('withBold', withBold);
+
+        // Register 3rd party Slate plugins
+        Reactium.RTE.Plugin.register('withReact', new RTEPlugin({ callback: withReact, order: 0 }));
+        Reactium.RTE.Plugin.register('withHistory', new RTEPlugin({ callback: withHistory, order: 1 }));
+    },
+);
+ */
+
+/**
+ * @api {Function} extend(id) extend()
+ * @apiGroup Reactium.RTE
+ * @apiName extend
+ * @apiDescription Creates a new Registry object that can be used in RTE plugin development.
+ * @apiParam {String} id The id of the extension.
+ * @apiExample Example
+// reactium-hooks.js
+
+import Reactium from 'reactium-core/sdk';
+
+Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
+    () => {
+        // Register RTE extension: Icon
+        Reactium.RTE.extend('Icon');
+    },
+);
+ */
+
+/**
+ * @api {Function} register(ext,id,options) register()
+ * @apiGroup Reactium.RTE
+ * @apiName register
+ * @apiDescription Register elements on custom Registry objects.
+ * @apiExample Example
+// reactium-hooks.js
+
+import Reactium from 'reactium-core/sdk';
+
+Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
+    () => {
+        // Register RTE extension: Icon
+        Reactium.RTE.extend('Icon');
+
+        // Register a new Icon element
+        Reactium.RTE.register('Icon', 'FeatherChevronUp', {
+            set: 'Feather',
+            name: 'ChevronUp'
+        });
+    },
+);
+ */
+
+/**
+ * @api {Function} unregister(ext,id) unregister()
+ * @apiGroup Reactium.RTE
+ * @apiName unregister
+ * @apiDescription Unregister elements from custom Registry objects.
+ * @apiExample Example
+ // reactium-hooks.js
+
+ import Reactium from 'reactium-core/sdk';
+
+ Reactium.Plugin.register('rte-plugins', Reactium.Enums.priority.lowest).then(
+     () => {
+         // Register RTE extension: Icon
+         Reactium.RTE.extend('Icon');
+
+         // Register a new Icon element
+         Reactium.RTE.register('Icon', 'FeatherChevronUp', {
+             set: 'Feather',
+             name: 'ChevronUp'
+         });
+
+         // Unregister an Icon element
+         Reactium.RTE.unregister('Icon', 'FeatherChevronUp');
+     },
+ );
+ */
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorPlugins.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorPlugins.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorPlugins.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorPlugins.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorSelection.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorSelection.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorSelection.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useEditorSelection.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useFormats.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useFormats.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useFormats.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useFormats.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useRegistryFilter.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useRegistryFilter.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useRegistryFilter.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useRegistryFilter.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useSelectProps.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useSelectProps.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/_utils/useSelectProps.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/_utils/useSelectProps.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/domain.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/domain.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/enums.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/enums.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/enums.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/enums.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/index.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/index.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/RichTextEditor/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/RichTextEditor/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/VideoPlayer/reactium-hooks.js b/reactium_modules_old/reactium-admin-core/registered-components/VideoPlayer/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/registered-components/VideoPlayer/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-core/registered-components/VideoPlayer/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_admin.scss b/reactium_modules_old/reactium-admin-core/style/_admin.scss
similarity index 97%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_admin.scss
rename to reactium_modules_old/reactium-admin-core/style/_admin.scss
index 62d463b7..e658817c 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_admin.scss
+++ b/reactium_modules_old/reactium-admin-core/style/_admin.scss
@@ -5,7 +5,7 @@
 @import 'variables';
 
 // Reactium UI
-@import '~@atomic-reactor/reactium-ui/assets/style/reactium-ui';
+@import '~reactium-ui/assets/style/reactium-ui';
 
 // Admin theme
 @import 'theme';
diff --git a/reactium_modules_old/reactium-admin-core/style/_base.scss b/reactium_modules_old/reactium-admin-core/style/_base.scss
new file mode 100644
index 00000000..bfd35896
--- /dev/null
+++ b/reactium_modules_old/reactium-admin-core/style/_base.scss
@@ -0,0 +1,61 @@
+a.icon-link {
+    &:hover,
+    &:active,
+    &:focus {
+        .icon {
+            fill: $fill-focus-icon-link;
+        }
+    }
+
+    &:focus {
+        outline: none;
+
+        .icon {
+            stroke: $stroke-focus-icon-link;
+        }
+    }
+}
+
+button {
+    svg {
+        fill: currentColor;
+    }
+}
+
+.input-group {
+    &.error {
+        @extend .error;
+    }
+}
+
+.form-group,
+.form-group label {
+    position: relative;
+    input,
+    textarea,
+    select {
+        font-family: #{map-get($fonts, sans-serif)};
+        font-weight: 400;
+        letter-spacing: .5px;
+    }
+
+    .input-lg {
+        font-size: 24px;
+        font-weight: 400;
+    }
+
+    .input-sm {
+        font-size: 14px;
+        padding: 6px 10px;
+    }
+}
+
+.form-group label {
+    &:first-child {
+        &:not(:last-child) {
+            * {
+                margin-top: 0;
+            }
+        }
+    }
+}
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_colors.scss b/reactium_modules_old/reactium-admin-core/style/_colors.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_colors.scss
rename to reactium_modules_old/reactium-admin-core/style/_colors.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_header.scss b/reactium_modules_old/reactium-admin-core/style/_header.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_header.scss
rename to reactium_modules_old/reactium-admin-core/style/_header.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_layout.scss b/reactium_modules_old/reactium-admin-core/style/_layout.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_layout.scss
rename to reactium_modules_old/reactium-admin-core/style/_layout.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_mixins.scss b/reactium_modules_old/reactium-admin-core/style/_mixins.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_mixins.scss
rename to reactium_modules_old/reactium-admin-core/style/_mixins.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_theme.scss b/reactium_modules_old/reactium-admin-core/style/_theme.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_theme.scss
rename to reactium_modules_old/reactium-admin-core/style/_theme.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/style/_variables.scss b/reactium_modules_old/reactium-admin-core/style/_variables.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/style/_variables.scss
rename to reactium_modules_old/reactium-admin-core/style/_variables.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/umd.webpack.override.js b/reactium_modules_old/reactium-admin-core/umd.webpack.override.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/umd.webpack.override.js
rename to reactium_modules_old/reactium-admin-core/umd.webpack.override.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-core/webpack.override.js b/reactium_modules_old/reactium-admin-core/webpack.override.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-core/webpack.override.js
rename to reactium_modules_old/reactium-admin-core/webpack.override.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/Breadcrumbs.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/Breadcrumbs.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/Breadcrumbs.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/Breadcrumbs.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/Attributes.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/Attributes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/Attributes.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/Attributes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/_style.scss b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/_style.scss
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/index.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/Panel/index.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/Panel/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/index.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/RTE/index.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/RTE/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/SaveWidget.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/SaveWidget.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/SaveWidget.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/SaveWidget.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/ShortcodeListItem.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/ShortcodeListItem.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/ShortcodeListItem.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/ShortcodeListItem.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/Shortcodes.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/Shortcodes.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/Shortcodes.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/Shortcodes.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/SidebarWidget.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/SidebarWidget.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/SidebarWidget.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/SidebarWidget.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/_style.scss b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/_style.scss
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/reactium-hooks.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/sdk.js b/reactium_modules_old/reactium-admin-shortcodes/Shortcodes/sdk.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/Shortcodes/sdk.js
rename to reactium_modules_old/reactium-admin-shortcodes/Shortcodes/sdk.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/_reactium-style-admin-plugin.scss b/reactium_modules_old/reactium-admin-shortcodes/_reactium-style-admin-plugin.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/_reactium-style-admin-plugin.scss
rename to reactium_modules_old/reactium-admin-shortcodes/_reactium-style-admin-plugin.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-shortcodes/package.json b/reactium_modules_old/reactium-admin-shortcodes/package.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-shortcodes/package.json
rename to reactium_modules_old/reactium-admin-shortcodes/package.json
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Breadcrumbs.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Breadcrumbs.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Breadcrumbs.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Breadcrumbs.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Checklist.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Checklist.js
similarity index 97%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Checklist.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Checklist.js
index 0550e7c2..4e6d87dc 100644
--- a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Checklist.js
+++ b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Checklist.js
@@ -1,7 +1,7 @@
 import _ from 'underscore';
 import op from 'object-path';
 import React, { useState } from 'react';
-import { Scrollbars } from 'react-custom-scrollbars';
+import { Scrollbars } from '@atomic-reactor/react-custom-scrollbars';
 import { __, useHookComponent } from 'reactium-core/sdk';
 
 export const Checklist = props => {
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/ContentEditor.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/ContentEditor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/ContentEditor.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/ContentEditor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/FieldType.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/FieldType.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/FieldType.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/FieldType.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/SidebarWidget.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/SidebarWidget.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/SidebarWidget.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/SidebarWidget.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Tagbox.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Tagbox.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/Tagbox.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/Tagbox.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyEditor.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyEditor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyEditor.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyEditor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyEvent.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyEvent.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyEvent.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyEvent.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyTypeEditor.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyTypeEditor.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/TaxonomyTypeEditor.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/TaxonomyTypeEditor.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/_style.scss b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/_style.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/_style.scss
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/_style.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/domain.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/domain.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/domain.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/domain.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/index.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/index.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/index.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/index.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/reactium-hooks.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/reactium-hooks.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/reactium-hooks.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/reactium-hooks.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/sdk.js b/reactium_modules_old/reactium-admin-taxonomy/Taxonomy/sdk.js
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/Taxonomy/sdk.js
rename to reactium_modules_old/reactium-admin-taxonomy/Taxonomy/sdk.js
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/_reactium-style-admin-plugin.scss b/reactium_modules_old/reactium-admin-taxonomy/_reactium-style-admin-plugin.scss
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/_reactium-style-admin-plugin.scss
rename to reactium_modules_old/reactium-admin-taxonomy/_reactium-style-admin-plugin.scss
diff --git a/reactium_modules/@atomic-reactor/reactium-admin-taxonomy/package.json b/reactium_modules_old/reactium-admin-taxonomy/package.json
similarity index 100%
rename from reactium_modules/@atomic-reactor/reactium-admin-taxonomy/package.json
rename to reactium_modules_old/reactium-admin-taxonomy/package.json
diff --git a/src/app/components/ForceAdmin/route.js b/src/app/components/ForceAdmin/route.js
new file mode 100644
index 00000000..678855f7
--- /dev/null
+++ b/src/app/components/ForceAdmin/route.js
@@ -0,0 +1,18 @@
+import Reactium from 'reactium-core/sdk';
+import React, { useEffect } from 'react';
+import op from 'object-path';
+
+const setLoading = op.get(window, 'LoadingRef.current.setVisible', () => {});
+
+export default {
+    exact: true,
+    path: '/',
+    component: () => {
+        useEffect(() => {
+            setLoading(true);
+            Reactium.Routing.history.push('/admin');
+            setLoading(false);
+        }, []);
+        return null;
+    },
+};
diff --git a/src/app/components/PickerTest/reactium-hooks.js b/src/app/components/PickerTest/reactium-hooks.js
index f2fa0107..358e4a27 100644
--- a/src/app/components/PickerTest/reactium-hooks.js
+++ b/src/app/components/PickerTest/reactium-hooks.js
@@ -1,61 +1,61 @@
-/**
- * -----------------------------------------------------------------------------
- * Reactium Plugin PickerTest
- * -----------------------------------------------------------------------------
- */
+// /**
+//  * -----------------------------------------------------------------------------
+//  * Reactium Plugin PickerTest
+//  * -----------------------------------------------------------------------------
+//  */
 
-import Component from './index';
-import Reactium from 'reactium-core/sdk';
-import Blueprint from 'reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint';
-import op from 'object-path';
+// import Component from './index';
+// import Reactium from 'reactium-core/sdk';
+// import Blueprint from 'reactium_modules/@atomic-reactor/reactium-admin-core/Blueprint';
+// import op from 'object-path';
 
-// Manually create blueprint and route with Blueprint component
-Reactium.Hook.register('blueprints', registry => {
-    registry.register('PickerTest', {
-        sections: {
-            sidebar: {
-                zones: ['admin-sidebar'],
-                meta: {},
-            },
-            main: {
-                zones: ['admin-header', 'admin-picker-test', 'admin-actions'],
-                meta: {},
-            },
-            tools: {
-                zones: ['admin-tools'],
-            },
-        },
-        ID: 'PickerTest',
-        description: 'Test Media Picker',
-    });
+// // Manually create blueprint and route with Blueprint component
+// Reactium.Hook.register('blueprints', registry => {
+//     registry.register('PickerTest', {
+//         sections: {
+//             sidebar: {
+//                 zones: ['admin-sidebar'],
+//                 meta: {},
+//             },
+//             main: {
+//                 zones: ['admin-header', 'admin-picker-test', 'admin-actions'],
+//                 meta: {},
+//             },
+//             tools: {
+//                 zones: ['admin-tools'],
+//             },
+//         },
+//         ID: 'PickerTest',
+//         description: 'Test Media Picker',
+//     });
 
-    const route = {
-        id: 'picker-test',
-        path: ['/picker-test'],
-        component: Blueprint,
-        blueprint: registry.get('PickerTest'),
-    };
+//     const route = {
+//         id: 'picker-test',
+//         path: ['/picker-test'],
+//         component: Blueprint,
+//         blueprint: registry.get('PickerTest'),
+//     };
 
-    op.set(
-        route,
-        'load',
-        Blueprint.actions.loadFactory(
-            route,
-            {
-                blueprint: 'PickerTest',
-            },
-            route.blueprint,
-        ),
-    );
+//     op.set(
+//         route,
+//         'load',
+//         Blueprint.actions.loadFactory(
+//             route,
+//             {
+//                 blueprint: 'PickerTest',
+//             },
+//             route.blueprint,
+//         ),
+//     );
 
-    Reactium.Routing.register(route);
-});
+//     Reactium.Routing.register(route);
+// });
 
-Reactium.Plugin.register('PickerTest-plugin').then(() => {
-    Reactium.Zone.addComponent({
-        id: 'PICKER-TEST',
-        component: Component,
-        zone: ['admin-picker-test'],
-        order: Reactium.Enums.priority.highest,
-    });
-});
+// Reactium.Plugin.register('PickerTest-plugin').then(() => {
+//     Reactium.Zone.addComponent({
+//         id: 'PICKER-TEST',
+//         component: Component,
+//         zone: ['admin-picker-test'],
+//         order: Reactium.Enums.priority.highest,
+//     });
+// });
diff --git a/src/app/components/Playground/Playground.jsx b/src/app/components/Playground/Playground.jsx
new file mode 100644
index 00000000..3f263ecb
--- /dev/null
+++ b/src/app/components/Playground/Playground.jsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Dropfile } from '@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/Dropfile';
+
+/**
+ * -----------------------------------------------------------------------------
+ * Component: Playground
+ * -----------------------------------------------------------------------------
+ */
+export const Playground = () => {
+    return (
+        <Dropfile
+            maxFiles={5}
+            onError={console.log}
+            onChange={console.log}
+            style={{ height: '100vh', width: '100vw' }}
+        />
+    );
+};
+
+export default Playground;
diff --git a/src/app/components/Playground/_reactium-style-organisms-Playground.scss b/src/app/components/Playground/_reactium-style-organisms-Playground.scss
new file mode 100644
index 00000000..52271800
--- /dev/null
+++ b/src/app/components/Playground/_reactium-style-organisms-Playground.scss
@@ -0,0 +1,3 @@
+.playground {
+    
+}
diff --git a/src/app/components/Playground/reactium-domain-playground.js b/src/app/components/Playground/reactium-domain-playground.js
new file mode 100644
index 00000000..e36974d5
--- /dev/null
+++ b/src/app/components/Playground/reactium-domain-playground.js
@@ -0,0 +1,9 @@
+/**
+ * -----------------------------------------------------------------------------
+ * DDD Domain Playground - Change name to place domain artifacts in this directory
+ * in a different domain.
+ * -----------------------------------------------------------------------------
+ */
+module.exports = {
+    name: 'Playground',
+};
diff --git a/src/app/components/Playground/reactium-hooks-playground.js b/src/app/components/Playground/reactium-hooks-playground.js
new file mode 100644
index 00000000..56902b0a
--- /dev/null
+++ b/src/app/components/Playground/reactium-hooks-playground.js
@@ -0,0 +1,20 @@
+/**
+ * -----------------------------------------------------------------------------
+ * Reactium Plugin Playground
+ * -----------------------------------------------------------------------------
+ */
+(async () => {
+    const { Hook, Enums, Component } = await import(
+        '@atomic-reactor/reactium-core/sdk'
+    );
+
+    Hook.register(
+        'plugin-init',
+        async () => {
+            const { Playground } = await import('./Playground');
+            Component.register('Playground', Playground);
+        },
+        Enums.priority.normal,
+        'plugin-init-Playground',
+    );
+})();
diff --git a/src/app/components/Playground/reactium-route-playground.js b/src/app/components/Playground/reactium-route-playground.js
new file mode 100644
index 00000000..afeddc53
--- /dev/null
+++ b/src/app/components/Playground/reactium-route-playground.js
@@ -0,0 +1,10 @@
+import { Playground as component } from './Playground';
+
+export default [
+    {
+        id: 'route-Playground-1',
+        exact: true,
+        component,
+        path: ['/test'],
+    },
+];
diff --git a/src/app/components/plugin-src/reset/BigRed.js b/src/app/components/plugin-src/reset/BigRed.js
index 3c5d9b3b..3da4eccc 100644
--- a/src/app/components/plugin-src/reset/BigRed.js
+++ b/src/app/components/plugin-src/reset/BigRed.js
@@ -1,11 +1,14 @@
 import React from 'react';
-import Reactium, { __, useHandle, useHookComponent } from 'reactium-core/sdk';
+import Reactium, {
+    __,
+    useHookComponent,
+} from '@atomic-reactor/reactium-core/sdk';
 import op from 'object-path';
 
-const BigRed = props => {
-    const tools = useHandle('AdminTools');
-    const Modal = op.get(tools, 'Modal');
-    const Toast = op.get(tools, 'Toast');
+const BigRed = () => {
+    const Modal = op.get(Reactium.State, 'Tools.Modal');
+    const Toast = op.get(Reactium.State, 'Tools.Toast');
+
     const ConfirmBox = useHookComponent('ConfirmBox');
     const { Icon, Dialog, Button } = useHookComponent('ReactiumUI');
     const title = __('Actinium Reset');
diff --git a/src/app/components/plugin-src/reset/index.js b/src/app/components/plugin-src/reset/index.js
index 177fdb9f..53cdbb0b 100644
--- a/src/app/components/plugin-src/reset/index.js
+++ b/src/app/components/plugin-src/reset/index.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import BigRed from './BigRed';
 
 const registerResetPlugin = async () => {
diff --git a/src/app/components/plugin-src/reset/reactium-hooks.js b/src/app/components/plugin-src/reset/reactium-hooks.js
index c50fc239..6affad99 100644
--- a/src/app/components/plugin-src/reset/reactium-hooks.js
+++ b/src/app/components/plugin-src/reset/reactium-hooks.js
@@ -4,7 +4,7 @@
  * Use `arcli plugin local` to activate local development, and `arcli plugin eject`
  */
 
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import op from 'object-path';
 
 Reactium.Hook.register(
diff --git a/src/app/components/plugin-src/s3-adapter/Settings/index.js b/src/app/components/plugin-src/s3-adapter/Settings/index.js
index 4b0df728..1493a17f 100644
--- a/src/app/components/plugin-src/s3-adapter/Settings/index.js
+++ b/src/app/components/plugin-src/s3-adapter/Settings/index.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import { useHookComponent, Zone, __ } from 'reactium-core/sdk';
+import { useHookComponent, Zone, __ } from '@atomic-reactor/reactium-core/sdk';
 
 const settings = {
     title: __('S3 Adapter Settings'),
diff --git a/src/app/components/plugin-src/s3-adapter/SidebarWidget/index.js b/src/app/components/plugin-src/s3-adapter/SidebarWidget/index.js
index 86be056a..4bf3b5d3 100644
--- a/src/app/components/plugin-src/s3-adapter/SidebarWidget/index.js
+++ b/src/app/components/plugin-src/s3-adapter/SidebarWidget/index.js
@@ -1,5 +1,5 @@
 import React from 'react';
-import { __, useHookComponent } from 'reactium-core/sdk';
+import { __, useHookComponent } from '@atomic-reactor/reactium-core/sdk';
 
 /**
  * -----------------------------------------------------------------------------
diff --git a/src/app/components/plugin-src/s3-adapter/index.js b/src/app/components/plugin-src/s3-adapter/index.js
index 6b6745c0..1fd6a919 100644
--- a/src/app/components/plugin-src/s3-adapter/index.js
+++ b/src/app/components/plugin-src/s3-adapter/index.js
@@ -1,4 +1,4 @@
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import Settings from './Settings';
 import SidebarWidget from './SidebarWidget';
 
diff --git a/src/app/components/plugin-src/s3-adapter/reactium-hooks.js b/src/app/components/plugin-src/s3-adapter/reactium-hooks.js
index c19c850d..aed27580 100644
--- a/src/app/components/plugin-src/s3-adapter/reactium-hooks.js
+++ b/src/app/components/plugin-src/s3-adapter/reactium-hooks.js
@@ -4,7 +4,7 @@
  * Use `arcli plugin local` to activate local development, and `arcli plugin eject`
  */
 
-import Reactium from 'reactium-core/sdk';
+import Reactium from '@atomic-reactor/reactium-core/sdk';
 import op from 'object-path';
 
 Reactium.Hook.register(
diff --git a/src/app/components/plugin-src/syndicate-client/ContentEditorControl/index.js b/src/app/components/plugin-src/syndicate-client/ContentEditorControl/index.js
deleted file mode 100644
index dc0b1022..00000000
--- a/src/app/components/plugin-src/syndicate-client/ContentEditorControl/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import React, { useEffect, useState, useRef } from 'react';
-import { useHookComponent, useHandle, __ } from 'reactium-core/sdk';
-import op from 'object-path';
-import _ from 'underscore';
-
-const ContentEditorControl = ({ editor }) => {
-    const Tools = useHandle('AdminTools');
-    const Modal = op.get(Tools, 'Modal');
-    const revisionManagerRef = useRef();
-    const ElementDialog = useHookComponent('ElementDialog');
-    const Revisions = useHookComponent('Revisions');
-    const { Button, Toggle, Alert, Icon } = useHookComponent('ReactiumUI');
-    const content = op.get(editor, 'value', {});
-    const toggleLabels = {
-        on: __('Turn off synchronization'),
-        off: __('Turn on synchronization'),
-    };
-
-    const [syndicate, setSyndicate] = useState(
-        op.get(content, 'meta.syndicate'),
-    );
-
-    const manual = op.get(syndicate, 'manual', false) === true;
-    const toggleLabel = toggleLabels[manual === false ? 'on' : 'off'];
-
-    const _onManualToggle = e => {
-        const newMeta = {
-            meta: {
-                ...op.get(content, 'meta', {}),
-                syndicate: {
-                    ...syndicate,
-                    manual: e.target.checked === false,
-                },
-            },
-        };
-
-        editor.save(newMeta);
-    };
-
-    const _clean = e => {
-        setSyndicate(op.get(e.value, 'meta.syndicate'));
-    };
-
-    useEffect(() => {
-        editor.addEventListener('clean', _clean);
-        editor.addEventListener('save-success', _clean);
-
-        return () => {
-            editor.addEventListener('clean', _clean);
-            editor.addEventListener('save-success', _clean);
-        };
-    }, [editor]);
-
-    // not syndicated content
-    if (syndicate === undefined) return null;
-
-    const currentVersion = op.get(
-        content,
-        ['branches', op.get(content, 'history.branch'), 'history'],
-        [],
-    );
-    const syndicatedVersion = op.get(content, 'branches.syndicate.history', []);
-
-    const updated =
-        op.get(currentVersion, 0) !== op.get(syndicatedVersion, 0) ||
-        currentVersion.length !== syndicatedVersion.length ||
-        _.difference(syndicatedVersion, currentVersion).length > 0;
-
-    const showRevisionManager = async () => {
-        Modal.show(
-            <Revisions
-                ref={revisionManagerRef}
-                startingContent={editor.value}
-                onClose={() => Modal.hide()}
-                editor={editor}
-            />,
-        );
-
-        const handle = await new Promise(resolve => {
-            let int = setInterval(() => {
-                if (revisionManagerRef.current) {
-                    clearInterval(int);
-                    resolve(revisionManagerRef.current);
-                }
-            }, 100);
-        });
-
-        handle.setBranch('syndicate', 'compare');
-        handle.navTo('branches');
-    };
-
-    const renderCompare = () => {
-        return (
-            manual === true &&
-            updated && (
-                <Button
-                    size='sm'
-                    appearance='pill'
-                    onClick={showRevisionManager}
-                    type='button'>
-                    <Icon name='Feather.GitBranch' className='mr-xs-8' />
-                    {__('Merge Changes')}
-                </Button>
-            )
-        );
-    };
-
-    return (
-        <ElementDialog
-            editor={editor}
-            pref='admin.dialog.syndicate.editor'
-            title={__('Syndication')}
-            helpText={__(
-                'Use to toggle manual synchronization on this content.',
-            )}>
-            <div className='p-xs-20'>
-                <div className='form-group mb-xs-8'>
-                    <label>
-                        <span>{toggleLabel}</span>
-                        <Toggle
-                            value={true}
-                            checked={manual === false}
-                            onChange={_onManualToggle}
-                        />
-                    </label>
-                </div>
-                {renderCompare()}
-            </div>
-        </ElementDialog>
-    );
-};
-
-export default ContentEditorControl;
diff --git a/src/app/components/plugin-src/syndicate-client/Settings/Check.js b/src/app/components/plugin-src/syndicate-client/Settings/Check.js
deleted file mode 100644
index 4b3b44da..00000000
--- a/src/app/components/plugin-src/syndicate-client/Settings/Check.js
+++ /dev/null
@@ -1,117 +0,0 @@
-import React, { memo, useState } from 'react';
-import Reactium, {
-    useHookComponent,
-    useAsyncEffect,
-    __,
-} from 'reactium-core/sdk';
-import op from 'object-path';
-import shallow from 'shallow-equals';
-
-const settings = group => ({
-    appId: op.get(group, 'appId'),
-    host: op.get(group, 'host'),
-    token: op.get(group, 'token'),
-});
-
-const checkEqual = (pv, nx) => {
-    return (
-        op.get(pv, 'groupName') === op.get(nx, 'groupName') &&
-        shallow(op.get(pv, 'settingGroup'), op.get(nx, 'settingGroup'))
-    );
-};
-
-const Check = memo(({ settingGroup }) => {
-    const { Spinner, Alert, Icon, Button } = useHookComponent('ReactiumUI');
-    const [state, setState] = useState({
-        loading: true,
-        valid: false,
-        forceUpdated: new Date(),
-    });
-
-    const updateState = newState => {
-        setState({
-            ...state,
-            ...newState,
-        });
-    };
-
-    const retest = () => {
-        updateState({
-            forceUpdated: new Date(),
-        });
-    };
-
-    const { appId, host, token } = settings(settingGroup);
-    useAsyncEffect(
-        async isMounted => {
-            if ((appId, host, token)) {
-                updateState({ loading: true });
-                // console.log('state change, call syndicate-satellite-test');
-                const valid = await Reactium.Cloud.run(
-                    'syndicate-satellite-test',
-                );
-
-                // console.log('syndicate-satellite-test back, mounted', { mounted: isMounted() });
-                if (isMounted()) {
-                    updateState({
-                        loading: false,
-                        valid,
-                    });
-                }
-            }
-        },
-        [appId, host, token, state.forceUpdated],
-    );
-
-    if (!(appId && host && token)) return null;
-    if (state.loading) {
-        return (
-            <div
-                style={{
-                    display: 'flex',
-                    height: '60px',
-                    justifyContent: 'center',
-                    alignItems: 'center',
-                }}>
-                <Spinner />
-            </div>
-        );
-    }
-
-    const msgs = {
-        success: __('Connection test successful.'),
-        failure: __('Connection test failed.'),
-    };
-
-    return (
-        <div className='p-xs-20'>
-            <Alert
-                dismissable
-                color={
-                    state.valid
-                        ? Alert.ENUMS.COLOR.SUCCESS
-                        : Alert.ENUMS.COLOR.DANGER
-                }
-                icon={
-                    <Icon
-                        name={
-                            state.valid
-                                ? 'Feather.Check'
-                                : 'Feather.AlertOctagon'
-                        }
-                    />
-                }>
-                {state.valid ? msgs.success : msgs.failure}
-                <Button
-                    className='ml-xs-16'
-                    size='xs'
-                    appearance='pill'
-                    onClick={() => retest()}>
-                    {__('Refresh')}
-                </Button>
-            </Alert>
-        </div>
-    );
-}, checkEqual);
-
-export default Check;
diff --git a/src/app/components/plugin-src/syndicate-client/Settings/Sync.js b/src/app/components/plugin-src/syndicate-client/Settings/Sync.js
deleted file mode 100644
index 38c43d3b..00000000
--- a/src/app/components/plugin-src/syndicate-client/Settings/Sync.js
+++ /dev/null
@@ -1,157 +0,0 @@
-import React, { memo, useState } from 'react';
-import Reactium, {
-    useHookComponent,
-    useAsyncEffect,
-    useHandle,
-    __,
-} from 'reactium-core/sdk';
-import op from 'object-path';
-import shallow from 'shallow-equals';
-
-const settings = group => ({
-    appId: op.get(group, 'appId'),
-    host: op.get(group, 'host'),
-    token: op.get(group, 'token'),
-});
-
-const checkEqual = (pv, nx) => {
-    return (
-        op.get(pv, 'groupName') === op.get(nx, 'groupName') &&
-        shallow(op.get(pv, 'settingGroup'), op.get(nx, 'settingGroup'))
-    );
-};
-
-const defaultSyncContext = {
-    label: '',
-    count: [0, 0],
-};
-
-const Sync = memo(({ settingGroup }) => {
-    const tools = useHandle('AdminTools');
-    const Toast = op.get(tools, 'Toast');
-    const { Icon, Button } = useHookComponent('ReactiumUI');
-    const [state, setState] = useState({
-        loading: true,
-        valid: false,
-        forceUpdated: new Date(),
-    });
-    const [syncState, setSyncState] = useState({
-        syncStatus: 'end',
-        syncContext: defaultSyncContext,
-    });
-
-    const updateState = newState => {
-        setState({
-            ...state,
-            ...newState,
-        });
-    };
-
-    const { appId, host, token } = settings(settingGroup);
-    useAsyncEffect(
-        async isMounted => {
-            if ((appId, host, token)) {
-                updateState({ loading: true });
-                // console.log('state change, call syndicate-satellite-test');
-                const valid = await Reactium.Cloud.run(
-                    'syndicate-satellite-test',
-                );
-
-                // console.log('syndicate-satellite-test back, mounted', { mounted: isMounted() });
-                if (isMounted()) {
-                    updateState({
-                        loading: false,
-                        valid,
-                    });
-                }
-            }
-        },
-        [appId, host, token, state.forceUpdated],
-    );
-
-    const syncStatusLabels = {
-        end: __('Sync Content'),
-        begin: __('Starting...'),
-        taxonomies: __('Syncing Taxonomies...'),
-        media: __('Syncing Media...'),
-        types: __('Syncing Types...'),
-        content: __('Syncing %context...'),
-        relations: __('Syncing %context...'),
-    };
-
-    Reactium.Hook.runSync('syndicate-client-status-labels', syncStatusLabels);
-
-    const sync = async () => {
-        const {
-            syncStatus = 'end',
-            syncContext = defaultSyncContext,
-        } = await Reactium.Cloud.run('syndicate-satellite-sync');
-        // console.log('sync', { syncStatus, syncContext });
-
-        setSyncState({ syncStatus, syncContext });
-    };
-
-    const { syncStatus, syncContext } = syncState;
-    useAsyncEffect(
-        async isMounted => {
-            if (syncStatus !== 'end') {
-                const check = setInterval(async () => {
-                    const {
-                        syncStatus = 'end',
-                        syncContext = defaultSyncContext,
-                    } = await Reactium.Cloud.run('syndicate-satellite-status');
-
-                    // console.log('check', { syncStatus, syncContext });
-
-                    if (isMounted()) setSyncState({ syncStatus, syncContext });
-                }, 500);
-
-                return () => clearInterval(check);
-            }
-
-            // return;
-            // if (syncStatus === 'end') {
-            //     await Reactium.Cloud.run('syndicate-satellite-sync-reset');
-            //     if (isMounted())
-            //         setSyncState({
-            //             syncStatus: 'idle',
-            //             syncContext: defaultSyncContext,
-            //         });
-            // } else {
-            // }
-        },
-        [syncStatus, ...op.get(syncContext, 'count', defaultSyncContext.count)],
-    );
-
-    if (!(appId && host && token)) return null;
-    if (state.loading || state.valid) null;
-
-    const contextLabel = op.get(syncContext, 'label', '');
-    const [n, of] = op.get(syncContext, 'count', [0, 0]);
-    // console.log({ syncStatus, contextLabel, n, of });
-    return (
-        <div className='m-xs-20'>
-            <Button
-                size='md'
-                color={syncStatus === 'end' ? 'danger' : 'clear'}
-                onClick={() => sync()}
-                disabled={syncStatus !== 'end'}>
-                {syncStatus !== 'end' && (
-                    <div
-                        className='mr-xs-8'
-                        style={{ width: '20px', height: '20px' }}>
-                        <Icon name={'Feather.DownloadCloud'} />
-                    </div>
-                )}{' '}
-                {op
-                    .get(syncStatusLabels, [syncStatus], syncStatusLabels.start)
-                    .replace(
-                        '%context',
-                        `${contextLabel} ${of > 0 && `${n}/${of}`}`,
-                    )}
-            </Button>
-        </div>
-    );
-}, checkEqual);
-
-export default Sync;
diff --git a/src/app/components/plugin-src/syndicate-client/Settings/index.js b/src/app/components/plugin-src/syndicate-client/Settings/index.js
deleted file mode 100644
index 75e63b90..00000000
--- a/src/app/components/plugin-src/syndicate-client/Settings/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import React from 'react';
-import { useHookComponent, Zone, __ } from 'reactium-core/sdk';
-
-const settings = {
-    title: __('Syndicate Client Settings'),
-    group: 'SyndicateClient',
-    inputs: {
-        'SyndicateClient.appId': {
-            type: 'text',
-            label: __('Syndicate Host App ID'),
-            tooltip: __(
-                'The Application ID of the syndication root site (e.g. Actinium).',
-            ),
-            required: true,
-        },
-        'SyndicateClient.host': {
-            type: 'text',
-            label: __('Syndicate Host'),
-            tooltip: __('The API URL for the syndication root site.'),
-            required: true,
-        },
-        'SyndicateClient.token': {
-            type: 'text',
-            label: __('Client Refresh Token'),
-            tooltip: __('The refresh token of this syndication client.'),
-            required: true,
-        },
-        'SyndicateClient.enable': {
-            type: 'toggle',
-            label: __('Client Sync Enabled'),
-            tooltip: __('Enable or disable sychronizing to this satellite.'),
-            required: false,
-        },
-        'SyndicateClient.cron': {
-            type: 'text',
-            label: __('Client Sync Schedule'),
-            tooltip: __(
-                'The node-cron schedule of the updated (e.g. */30 * * * *).',
-            ),
-            required: false,
-        },
-    },
-};
-
-const capabilities = [
-    {
-        capability: 'setting.SyndicateClient-get',
-        title: __('View Syndication client settings.'),
-        tooltip: __(
-            'Able to see Syndicate Client plugin settings, but not necessarily change them.',
-        ),
-    },
-    {
-        capability: 'setting.SyndicateClient-set',
-        title: __('Edit Syndication Client Plugin Settings'),
-        tooltip: __(
-            'Provides ability to configure settings for the Syndicate Client plugin.',
-        ),
-    },
-];
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: Settings
- * -----------------------------------------------------------------------------
- */
-const Settings = () => {
-    const SettingEditor = useHookComponent('SettingEditor');
-    const CapabilityEditor = useHookComponent('CapabilityEditor');
-
-    return (
-        <div className='syndicate-client-settings'>
-            <SettingEditor settings={settings} />
-            <CapabilityEditor capabilities={capabilities} />
-            <Zone zone='syndicate-client-settings' />
-        </div>
-    );
-};
-
-export default Settings;
diff --git a/src/app/components/plugin-src/syndicate-client/SidebarWidget/index.js b/src/app/components/plugin-src/syndicate-client/SidebarWidget/index.js
deleted file mode 100644
index d1e2045b..00000000
--- a/src/app/components/plugin-src/syndicate-client/SidebarWidget/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import React from 'react';
-import { __, useHookComponent } from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: SidebarWidget
- * -----------------------------------------------------------------------------
- */
-const SidebarWidget = props => {
-    const MenuItem = useHookComponent('MenuItem');
-    return (
-        <MenuItem
-            route={'/admin/plugins/SyndicateClient'}
-            label={__('Syndicate Client')}
-        />
-    );
-};
-
-export default SidebarWidget;
diff --git a/src/app/components/plugin-src/syndicate-client/assets/style/syndicate-client-plugin.scss b/src/app/components/plugin-src/syndicate-client/assets/style/syndicate-client-plugin.scss
deleted file mode 100644
index e2f6280b..00000000
--- a/src/app/components/plugin-src/syndicate-client/assets/style/syndicate-client-plugin.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-// Generated by arcli
-// If you wish to use images in your styles, add a plugin-assets.json to this directory, with assets pathed relative to this directory.
-//
-// e.g. Given a "src/app/components/plugin-src/syndicateclient/assets/images/logo.png" file, your plugin-assets.json would look like:
-// {
-//     "my-logo": "../images/logo.png"
-// }
-//
-// This will produce a partial "_plugin-assets.scss" that will contain an map $assets, containing the data uri for this asset.
-// Do not hard-code paths to assets relative to your stylesheet, or they will not work when you export your css to another location (such as CDN)
-//
-// Example usage:
-//
-// @import './plugin-assets';
-// .my-logo {
-//     background: url(map-get($assets, 'my-logo'));
-// }
diff --git a/src/app/components/plugin-src/syndicate-client/index.js b/src/app/components/plugin-src/syndicate-client/index.js
deleted file mode 100644
index 781c2036..00000000
--- a/src/app/components/plugin-src/syndicate-client/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import Settings from './Settings';
-import SettingsCheck from './Settings/Check';
-import Synchronize from './Settings/Sync';
-import SidebarWidget from './SidebarWidget';
-import ContentEditorControl from './ContentEditorControl';
-
-const registerPlugin = async () => {
-    await Reactium.Plugin.register('syndicate-client');
-
-    const canManagePlugin = await Reactium.Capability.check(
-        [
-            'setting.create',
-            'setting.update',
-            'setting.syndicateClient-get',
-            'setting.syndicateClient-set',
-        ],
-        false,
-    );
-
-    if (canManagePlugin) {
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-CLIENT-SETTINGS-ALL',
-            zone: ['plugin-settings-SyndicateClient'],
-            component: Settings,
-            order: 0,
-        });
-
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-CLIENT-SIDEBAR-WIDGET',
-            zone: ['admin-sidebar-settings'],
-            component: SidebarWidget,
-            order: 0,
-        });
-
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-CLIENT-SETTINGS-CHECK',
-            zone: ['settings-editor-SyndicateClient'],
-            component: SettingsCheck,
-            order: 0,
-        });
-
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-CLIENT-SETTINGS-SYNC',
-            zone: ['settings-editor-SyndicateClient'],
-            component: Synchronize,
-            order: Reactium.Enums.priority.lowest,
-        });
-
-        Reactium.Zone.addComponent({
-            id: '',
-            zone: ['admin-content-sidebar'],
-            component: ContentEditorControl,
-            order: Reactium.Enums.priority.highest,
-        });
-    }
-};
-
-registerPlugin();
diff --git a/src/app/components/plugin-src/syndicate-client/reactium-boot.js b/src/app/components/plugin-src/syndicate-client/reactium-boot.js
deleted file mode 100644
index 33c2bba6..00000000
--- a/src/app/components/plugin-src/syndicate-client/reactium-boot.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// const SDK = require('@atomic-reactor/reactium-sdk-core').default;
-const { development } = require('./reactium-hooks.json');
-
-// For local development only
-if (development) {
-    // SDK.Hook.runSync('Server.AppStyleSheets', (req, AppStyleSheets) => {
-    //     AppStyleSheets.register('syndicate-client-plugin', {
-    //         path: '/assets/style/syndicate-client-plugin.css',
-    //         order: SDK.Enums.priority.normal,
-    //     });
-    // });
-}
diff --git a/src/app/components/plugin-src/syndicate-client/reactium-hooks.js b/src/app/components/plugin-src/syndicate-client/reactium-hooks.js
deleted file mode 100644
index b5efd0e4..00000000
--- a/src/app/components/plugin-src/syndicate-client/reactium-hooks.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * reactium-hooks.js file generated by arcli.
- * To develop this plugin, make your development changes to './index.js', not here.
- * Use `arcli plugin local` to activate local development, and `arcli plugin eject`
- */
-
-import Reactium from 'reactium-core/sdk';
-import op from 'object-path';
-
-Reactium.Hook.register(
-    'plugin-dependencies',
-    async () => {
-        const runtime = require('./reactium-hooks.json');
-
-        if (op.get(runtime, 'development', false)) {
-            Reactium.Plugin.unregister('syndicate-client');
-
-            // make your edits to index.js, not here
-            require('./index');
-        }
-    },
-    Reactium.Enums.priority.highest,
-);
diff --git a/src/app/components/plugin-src/syndicate-client/reactium-hooks.json b/src/app/components/plugin-src/syndicate-client/reactium-hooks.json
deleted file mode 100644
index 2d08ccad..00000000
--- a/src/app/components/plugin-src/syndicate-client/reactium-hooks.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "development": false
-}
diff --git a/src/app/components/plugin-src/syndicate-client/umd-config.json b/src/app/components/plugin-src/syndicate-client/umd-config.json
deleted file mode 100644
index 1186b40c..00000000
--- a/src/app/components/plugin-src/syndicate-client/umd-config.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "libraryName": "syndicate-client"
-}
diff --git a/src/app/components/plugin-src/syndicate-client/umd.js b/src/app/components/plugin-src/syndicate-client/umd.js
deleted file mode 100644
index b69cee79..00000000
--- a/src/app/components/plugin-src/syndicate-client/umd.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * This file was generated by arcli. This file when found in your Reactium
- * instance, will produce a UMD (Universal Module Definition) module,
- * named syndicateclient.js, produced in public/assets/js/umd/syndicateclient by default.
- *
- * To develop this plugin, make your development changes to index.js, not here.
- */
-require('./index');
diff --git a/src/app/components/plugin-src/syndicate/Settings/Clients/_clients.scss b/src/app/components/plugin-src/syndicate/Settings/Clients/_clients.scss
deleted file mode 100644
index be411660..00000000
--- a/src/app/components/plugin-src/syndicate/Settings/Clients/_clients.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-.syndicate-clients {
-    padding: 16px;
-
-    &-header {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-    }
-
-    &-list {
-        list-style: none;
-        margin: 0;
-    }
-
-    .token-column {
-        &:hover {
-            cursor: pointer;
-        }
-    }
-}
-
-.syndicate-new {
-    padding: 16px;
-    width: 300px;
-    &-controls {
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-    }
-}
diff --git a/src/app/components/plugin-src/syndicate/Settings/Clients/index.js b/src/app/components/plugin-src/syndicate/Settings/Clients/index.js
deleted file mode 100644
index de3c34fa..00000000
--- a/src/app/components/plugin-src/syndicate/Settings/Clients/index.js
+++ /dev/null
@@ -1,233 +0,0 @@
-import React, { useState } from 'react';
-import Reactium, {
-    __,
-    useHandle,
-    useHookComponent,
-    useAsyncEffect,
-} from 'reactium-core/sdk';
-import op from 'object-path';
-import copy from 'copy-to-clipboard';
-
-const useModal = () => {
-    const tools = useHandle('AdminTools');
-    return op.get(tools, 'Modal');
-};
-
-const useToast = () => {
-    const tools = useHandle('AdminTools');
-    return op.get(tools, 'Toast');
-};
-
-const noop = () => {};
-const NewClient = ({ onSave = noop, onCancel = noop }) => {
-    const { Dialog, Button } = useHookComponent('ReactiumUI');
-    const [name, setName] = useState('');
-    const clientNameLabel = __('Client Name');
-
-    return (
-        <Dialog header={{ title: __('New Client') }}>
-            <div className='syndicate-new'>
-                <div className={'syndicate-new-name form-group'}>
-                    <label>
-                        <span>{clientNameLabel}</span>
-                        <input
-                            type='text'
-                            onChange={e => setName(e.target.value)}
-                            placeholder={clientNameLabel}
-                        />
-                    </label>
-                </div>
-
-                <div className='syndicate-new-controls'>
-                    <Button
-                        size='sm'
-                        type='button'
-                        color={'danger'}
-                        onClick={onCancel}>
-                        {__('Cancel')}
-                    </Button>
-                    <Button
-                        size='sm'
-                        type='button'
-                        color={'primary'}
-                        onClick={() => onSave(name)}
-                        disabled={!name || !name.length}>
-                        {__('Save')}
-                    </Button>
-                </div>
-            </div>
-        </Dialog>
-    );
-};
-
-const Clients = () => {
-    const [loading, setLoading] = useState(true);
-    const [clients, setClients] = useState({});
-    const { Spinner, Button, Icon, DataTable } = useHookComponent('ReactiumUI');
-    const ConfirmBox = useHookComponent('ConfirmBox');
-    const Modal = useModal();
-    const Toast = useToast();
-
-    useAsyncEffect(async isMounted => {
-        const result = await Reactium.Syndicate.Client.list();
-        if (isMounted) {
-            setClients(op.get(result, 'results', {}));
-            setLoading(false);
-        }
-    }, []);
-
-    const newClient = async name => {
-        const client = await Reactium.Syndicate.Client.create({ client: name });
-        const newClients = { [client.objectId]: client, ...clients };
-        setClients(newClients);
-        Toast.show({
-            icon: 'Feather.Check',
-            message: __('Client Created'),
-            type: Toast.TYPE.INFO,
-        });
-        Modal.hide();
-    };
-
-    const confirmDelete = client => async () => {
-        await Reactium.Syndicate.Client.delete(client);
-        const newClients = { ...clients };
-        op.del(newClients, client.objectId);
-        setClients(newClients);
-
-        Toast.show({
-            icon: 'Feather.Check',
-            message: __('Deleted Client'),
-            type: Toast.TYPE.INFO,
-        });
-        Modal.hide();
-    };
-
-    const showNew = () => {
-        Modal.show(
-            <NewClient onCancel={() => Modal.hide()} onSave={newClient} />,
-        );
-    };
-
-    const showDelete = client => () => {
-        Modal.show(
-            <ConfirmBox
-                message={__('Are you sure?')}
-                onCancel={() => Modal.hide()}
-                onConfirm={confirmDelete(client)}
-                title={__('Delete %client').replace(
-                    '%client',
-                    op.get(client, 'client', ''),
-                )}
-            />,
-        );
-    };
-
-    const copyToken = token => () => {
-        copy(token);
-        Toast.show({
-            icon: 'Feather.Check',
-            message: __('Token Copied'),
-            type: Toast.TYPE.INFO,
-        });
-    };
-
-    const getColumns = () => ({
-        client: {
-            label: __('Client'),
-            verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
-            width: 100,
-        },
-        token: {
-            label: __('Token'),
-            verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
-        },
-        delete: {
-            label: null,
-            verticalAlign: DataTable.ENUMS.VERTICAL_ALIGN.MIDDLE,
-            textAlign: DataTable.ENUMS.TEXT_ALIGN.RIGHT,
-            width: 90,
-        },
-    });
-
-    const mapActions = client => {
-        const copyText = __('Copy Token');
-        const deleteText = __('Delete');
-
-        return {
-            ...client,
-            token: (
-                <div
-                    className='token-column'
-                    data-tooltip={copyText}
-                    data-align='left'
-                    data-vertical-align='top'
-                    onClick={copyToken(client.token)}>
-                    <Icon name='Feather.Copy' size={18} />
-                    <span className='ml-xs-8'>{client.token}</span>
-                </div>
-            ),
-            copy: (
-                <Button
-                    color={Button.ENUMS.COLOR.CLEAR}
-                    size={Button.ENUMS.SIZE.XS}
-                    data-tooltip={copyText}
-                    data-align='center'
-                    data-vertical-align='top'
-                    onClick={copyToken(client.token)}>
-                    <Icon name='Feather.Copy' size={18} />
-                    <span className='sr-only'>{copyText}</span>
-                </Button>
-            ),
-            delete: (
-                <Button
-                    color={Button.ENUMS.COLOR.DANGER}
-                    size={Button.ENUMS.SIZE.XS}
-                    data-tooltip={deleteText}
-                    data-align='center'
-                    data-vertical-align='top'
-                    onClick={showDelete(client)}>
-                    <Icon name='Feather.X' size={18} />
-                    <span className='sr-only'>{deleteText}</span>
-                </Button>
-            ),
-        };
-    };
-
-    const renderClients = () => {
-        if (loading)
-            return (
-                <div className='syndicate-loading'>
-                    <Spinner />
-                </div>
-            );
-
-        return (
-            <DataTable
-                scrollable={true}
-                columns={getColumns()}
-                data={Object.values(clients).map(mapActions)}
-            />
-        );
-    };
-
-    return (
-        <div className='syndicate-clients'>
-            <div className='syndicate-clients-header'>
-                <h2 className='h3'>{__('Syndication Clients')}</h2>
-                <Button
-                    appearance={Button.ENUMS.APPEARANCE.PILL}
-                    className='mr-xs-24'
-                    color={Button.ENUMS.COLOR.PRIMARY}
-                    outline
-                    size={Button.ENUMS.SIZE.XS}
-                    onClick={showNew}>
-                    <Icon name='Feather.Plus' size={18} />
-                    <span>{__('New Client')}</span>
-                </Button>
-            </div>
-            {renderClients()}
-        </div>
-    );
-};
-
-export default Clients;
diff --git a/src/app/components/plugin-src/syndicate/Settings/Types/index.js b/src/app/components/plugin-src/syndicate/Settings/Types/index.js
deleted file mode 100644
index c1f90d52..00000000
--- a/src/app/components/plugin-src/syndicate/Settings/Types/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import React, { useState } from 'react';
-import Reactium, {
-    useAsyncEffect,
-    useHookComponent,
-    __,
-} from 'reactium-core/sdk';
-import op from 'object-path';
-
-const Types = () => {
-    const SettingEditor = useHookComponent('SettingEditor');
-    const { Spinner } = useHookComponent('ReactiumUI');
-    const [types, setTypes] = useState([]);
-
-    useAsyncEffect(async isMounted => {
-        const types = await Reactium.ContentType.types();
-        if (isMounted()) setTypes(types);
-    }, []);
-
-    if (!types.length)
-        return (
-            <div className='syndicate-loading'>
-                <Spinner />
-            </div>
-        );
-
-    const inputs = types.reduce((inputs, type) => {
-        const machineName = op.get(type, 'machineName');
-        const label = op.get(
-            type,
-            'meta.label',
-            op.get(type, 'type', machineName),
-        );
-
-        const input = {
-            type: 'toggle',
-            label,
-            tooltip: __('Syndicate %type').replace('%type', label),
-            required: false,
-        };
-
-        op.set(inputs, [`Syndicate.types.${machineName}`], input);
-        return inputs;
-    }, {});
-
-    return (
-        <SettingEditor
-            settings={{
-                title: __('Syndication Types'),
-                group: 'Syndicate',
-                inputs,
-            }}
-        />
-    );
-};
-
-export default Types;
diff --git a/src/app/components/plugin-src/syndicate/Settings/index.js b/src/app/components/plugin-src/syndicate/Settings/index.js
deleted file mode 100644
index 21530e73..00000000
--- a/src/app/components/plugin-src/syndicate/Settings/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import React from 'react';
-import { useHookComponent, Zone, __ } from 'reactium-core/sdk';
-import Clients from './Clients';
-import Types from './Types';
-
-const capabilities = [
-    {
-        capability: 'SyndicateClient.create',
-        title: __('Create a client'),
-        tooltip: __('Create a syndication client.'),
-    },
-    {
-        capability: 'SyndicateClient.retrieve',
-        title: __('View any client'),
-        tooltip: __(
-            'Able to view and retrieve refresh token for any syndication client.',
-        ),
-    },
-    {
-        capability: 'SyndicateClient.delete',
-        title: __('Delete any client'),
-        tooltip: __(
-            'Delete a client, preventing access to syndicated content.',
-        ),
-    },
-];
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: Settings
- * -----------------------------------------------------------------------------
- */
-const Settings = () => {
-    const CapabilityEditor = useHookComponent('CapabilityEditor');
-    const { Tabs } = useHookComponent('ReactiumUI');
-
-    const tabs = () => [
-        {
-            id: 'types',
-            tab: __('Types'),
-            content: <Types />,
-        },
-        {
-            id: 'clients',
-            tab: __('Clients'),
-            content: <Clients />,
-        },
-    ];
-
-    return (
-        <div className='syndication-settings'>
-            <Tabs activeTab={0} collapsible={false} data={tabs()} />
-
-            <CapabilityEditor capabilities={capabilities} />
-            <Zone zone='syndication-settings' />
-        </div>
-    );
-};
-
-export default Settings;
diff --git a/src/app/components/plugin-src/syndicate/SidebarWidget/index.js b/src/app/components/plugin-src/syndicate/SidebarWidget/index.js
deleted file mode 100644
index ff655e2d..00000000
--- a/src/app/components/plugin-src/syndicate/SidebarWidget/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from 'react';
-import { __, useHookComponent } from 'reactium-core/sdk';
-
-/**
- * -----------------------------------------------------------------------------
- * Functional Component: SidebarWidget
- * -----------------------------------------------------------------------------
- */
-const SidebarWidget = props => {
-    const MenuItem = useHookComponent('MenuItem');
-    return (
-        <MenuItem route={'/admin/plugins/Syndicate'} label={__('Syndicate')} />
-    );
-};
-
-export default SidebarWidget;
diff --git a/src/app/components/plugin-src/syndicate/assets/style/syndicate-plugin.scss b/src/app/components/plugin-src/syndicate/assets/style/syndicate-plugin.scss
deleted file mode 100644
index d934eb38..00000000
--- a/src/app/components/plugin-src/syndicate/assets/style/syndicate-plugin.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-@import '../../Settings/Clients/clients';
-
-.syndicate-loading {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 100px;
-}
diff --git a/src/app/components/plugin-src/syndicate/index.js b/src/app/components/plugin-src/syndicate/index.js
deleted file mode 100644
index f86fbfa7..00000000
--- a/src/app/components/plugin-src/syndicate/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import Settings from './Settings';
-import SidebarWidget from './SidebarWidget';
-import SDK from './sdk';
-
-const registerPlugin = async () => {
-    await Reactium.Plugin.register('syndicate');
-
-    const canManagePlugin = await Reactium.Capability.check(
-        ['setting.create', 'setting.update', 'setting.retrieve'],
-        false,
-    );
-
-    Reactium.Syndicate = SDK;
-
-    if (canManagePlugin) {
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-PLUGIN-SETTINGS-ALL',
-            zone: 'plugin-settings-Syndicate',
-            component: Settings,
-            order: 0,
-        });
-
-        Reactium.Zone.addComponent({
-            id: 'SYNDICATE-PLUGIN-SIDEBAR-WIDGET',
-            zone: 'admin-sidebar-settings',
-            component: SidebarWidget,
-            order: 0,
-        });
-    }
-};
-
-registerPlugin();
diff --git a/src/app/components/plugin-src/syndicate/reactium-boot.js b/src/app/components/plugin-src/syndicate/reactium-boot.js
deleted file mode 100644
index f3e45f95..00000000
--- a/src/app/components/plugin-src/syndicate/reactium-boot.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const SDK = require('@atomic-reactor/reactium-sdk-core').default;
-const { development } = require('./reactium-hooks.json');
-
-// For local development only
-if (development) {
-    SDK.Server.AppStyleSheets.register('syndicate-plugin', {
-        path: '/assets/style/syndicate-plugin.css',
-        order: SDK.Enums.priority.normal,
-    });
-}
diff --git a/src/app/components/plugin-src/syndicate/reactium-hooks.js b/src/app/components/plugin-src/syndicate/reactium-hooks.js
deleted file mode 100644
index 0ce88555..00000000
--- a/src/app/components/plugin-src/syndicate/reactium-hooks.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * reactium-hooks.js file generated by arcli.
- * To develop this plugin, make your development changes to './index.js', not here.
- * Use `arcli plugin local` to activate local development, and `arcli plugin eject`
- */
-
-import Reactium from 'reactium-core/sdk';
-import op from 'object-path';
-
-Reactium.Hook.register(
-    'plugin-dependencies',
-    async () => {
-        const runtime = require('./reactium-hooks.json');
-
-        if (op.get(runtime, 'development', false)) {
-            Reactium.Plugin.unregister('syndicate');
-
-            // make your edits to index.js, not here
-            require('./index');
-        }
-    },
-    Reactium.Enums.priority.highest,
-);
diff --git a/src/app/components/plugin-src/syndicate/reactium-hooks.json b/src/app/components/plugin-src/syndicate/reactium-hooks.json
deleted file mode 100644
index 2d08ccad..00000000
--- a/src/app/components/plugin-src/syndicate/reactium-hooks.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "development": false
-}
diff --git a/src/app/components/plugin-src/syndicate/sdk.js b/src/app/components/plugin-src/syndicate/sdk.js
deleted file mode 100644
index 8dbfe029..00000000
--- a/src/app/components/plugin-src/syndicate/sdk.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Reactium from 'reactium-core/sdk';
-import op from 'object-path';
-
-const functions = [
-    { key: 'Client.create', value: 'syndicate-client-create' },
-    { key: 'Client.retrieve', value: 'syndicate-client-retrieve' },
-    { key: 'Client.list', value: 'syndicate-clients' },
-    { key: 'Client.delete', value: 'syndicate-client-delete' },
-];
-
-const SDK = {};
-
-functions.forEach(({ key, value }) =>
-    op.set(SDK, key, params => Reactium.Cloud.run(value, params)),
-);
-
-export default SDK;
diff --git a/src/app/components/plugin-src/syndicate/umd-config.json b/src/app/components/plugin-src/syndicate/umd-config.json
deleted file mode 100644
index 566d971c..00000000
--- a/src/app/components/plugin-src/syndicate/umd-config.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "libraryName": "syndicate"
-}
diff --git a/src/app/components/plugin-src/syndicate/umd.js b/src/app/components/plugin-src/syndicate/umd.js
deleted file mode 100644
index f279911d..00000000
--- a/src/app/components/plugin-src/syndicate/umd.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * This file was generated by arcli. This file when found in your Reactium
- * instance, will produce a UMD (Universal Module Definition) module,
- * named syndicate.js, produced in public/assets/js/umd/syndicate by default.
- *
- * To develop this plugin, make your development changes to index.js, not here.
- */
-require('./index');
diff --git a/src/app/main.js b/src/app/main.js
index 3552ea2d..fa0e5e60 100644
--- a/src/app/main.js
+++ b/src/app/main.js
@@ -1,29 +1,29 @@
-import { App, AppError } from 'reactium-core/app';
+// Uncomment this if you need corejs polyfills or runtime
+// import 'core-js/stable';
+// import 'regenerator-runtime/runtime';
+import { Shell } from '@atomic-reactor/reactium-core/app/shell';
 
-let render = App;
+(async () => {
+    try {
+        await Shell();
+    } catch (error) {
+        const { AppError } = await import('@atomic-reactor/reactium-core/app');
+        await AppError(error);
+    }
 
-/**
- * @description Initialize the app.
- */
-if (module.hot) {
-    render = () => {
-        try {
-            App();
-        } catch (error) {
-            AppError(error);
-        }
-    };
-
-    module.hot.accept(
-        [
-            '../.././.core/dependencies/index.js',
-            '../.././.core/app.js',
-            '../.././.core/sdk/index.js',
-        ],
-        () => {
-            window.location.reload();
-        },
-    );
-}
-
-render();
+    /**
+     * @description Initialize the app.
+     */
+    if (module.hot) {
+        module.hot.accept(
+            [
+                '../../reactium_modules/@atomic-reactor/reactium-core/dependencies/index.js',
+                '../../reactium_modules/@atomic-reactor/reactium-core/app.js',
+                '../../reactium_modules/@atomic-reactor/reactium-core/sdk/index.js',
+            ],
+            () => {
+                window.location.reload();
+            },
+        );
+    }
+})();
diff --git a/src/app/server/webpack-manifest.json b/src/app/server/webpack-manifest.json
new file mode 100644
index 00000000..0f629f1a
--- /dev/null
+++ b/src/app/server/webpack-manifest.json
@@ -0,0 +1 @@
+["main.js"]
diff --git a/src/assets/style/_scss/_reactium-modules.scss b/src/assets/style/_scss/_reactium-modules.scss
index a0418d72..0e608916 100644
--- a/src/assets/style/_scss/_reactium-modules.scss
+++ b/src/assets/style/_scss/_reactium-modules.scss
@@ -2,9 +2,49 @@
 // WARNING: Do not directly edit this file !!!!
 // File generated by gulp styles:partials task
 
-@import '../../../app/components/common-ui/_reactium-style';
-@import '+@atomic-reactor/reactium-admin-core/style/_reactium-style-admin';
-@import '+@atomic-reactor/reactium-admin-component-manager/_reactium-style-admin-plugin';
-@import '+@atomic-reactor/reactium-admin-content/_reactium-style-admin-plugin';
-@import '+@atomic-reactor/reactium-admin-shortcodes/_reactium-style-admin-plugin';
-@import '+@atomic-reactor/reactium-admin-taxonomy/_reactium-style-admin-plugin';
+@import '+@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-mixins';
+@import '+@atomic-reactor/reactium-admin-core/reactium-ui/assets/style/_reactium-style-mixins-base-rui';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-mixins-colors-admin-theme';
+@import '+@atomic-reactor/reactium-core/assets/images/_reactium-style-variables';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-variables-admin';
+@import '+@atomic-reactor/reactium-admin-core/reactium-ui/_reactium-style-variables-colors';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/_reactium-style-base-admin-cte';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/Fullscreen/_reactium-style-base-admin-fullscreen';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-base-admin-theme';
+@import '+@atomic-reactor/reactium-admin-core/reactium-ui/Form/_reactium-style-atoms';
+@import '+@atomic-reactor/reactium-admin-core/AdminLogo/_reactium-style-atoms-admin-logo';
+@import '_reactium-style-molecules-loader';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/MenuItem/_reactium-style-molecules-menu-item';
+@import '+@atomic-reactor/reactium-core/app/_reactium-style';
+@import '+@atomic-reactor/reactium-admin-core/Sidebar/_reactium-style-organism-admin-menu-toggle';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/Dialog/_reactium-style-organism-cte-dialog';
+@import '+@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/_reactium-style-organisms';
+@import '+@atomic-reactor/reactium-admin-core/Media/CTE/FieldTypeFile/Uploader/_reactium-style-organisms';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/CapabilityEditor/_reactium-style-organisms-admin-cap-editor';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/ConfirmBox/_reactium-style-organisms-admin-confirm-box';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Fields/_reactium-style-organisms-admin-cte-fields';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/FieldType/_reactium-style-organisms-admin-cte-fieldtype';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/IconPicker/_reactium-style-organisms-admin-cte-iconpicker';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeList/_reactium-style-organisms-admin-cte-list';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Tools/_reactium-style-organisms-admin-cte-tools';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/TypeName/_reactium-style-organisms-admin-cte-typename';
+@import '+@atomic-reactor/reactium-admin-core/Dashboard/_reactium-style-organisms-admin-dashboard';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-organisms-admin-layout';
+@import '+@atomic-reactor/reactium-admin-core/Login/_reactium-style-organisms-admin-login';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/ProfileWidget/_reactium-style-organisms-admin-profile-widget';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/SettingEditor/_reactium-style-organisms-admin-settings-editor';
+@import '+@atomic-reactor/reactium-admin-core/User/Editor/_reactium-style-organisms-admin-user-editor';
+@import '+@atomic-reactor/reactium-admin-core/User/List/_reactium-style-organisms-admin-user-list';
+@import '+@atomic-reactor/reactium-admin-core/Content/Editor/_reactium-style-organisms-ce';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeBoolean/_reactium-style-organisms-ftboolean';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeDate/_reactium-style-organisms-ftdate';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeNumber/_reactium-style-organisms-ftnumber';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeObject/_reactium-style-organisms-ftobject';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeSelect/_reactium-style-organisms-ftselect';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeText/_reactium-style-organisms-fttext';
+@import '+@atomic-reactor/reactium-admin-core/Content/TypeEditor/Plugins/FieldTypeURL/_reactium-style-organisms-fturl';
+@import '+@atomic-reactor/reactium-admin-core/registered-components/IconPicker/_reactium-style-organisms-icon-picker';
+@import '+@atomic-reactor/reactium-admin-core/Media/_reactium-style-organisms-Media';
+@import '../../../app/components/Playground/_reactium-style-organisms-Playground';
+@import '+@atomic-reactor/reactium-admin-core/Theme/_reactium-style-admin';
diff --git a/src/assets/style/_scss/_reactium-style-molecules-loader.scss b/src/assets/style/_scss/_reactium-style-molecules-loader.scss
new file mode 100644
index 00000000..5da67595
--- /dev/null
+++ b/src/assets/style/_scss/_reactium-style-molecules-loader.scss
@@ -0,0 +1,59 @@
+$reactium-blue: #4f82ba !default;
+$reactium-white: #ffffff !default;
+
+.reactium-loading {
+    top: 0;
+    left: 0;
+    width: 100vw;
+    height: 100vh;
+    position: fixed;
+    background-color: $reactium-white;
+
+    &,
+    * {
+        box-sizing: border-box;
+    }
+
+    &:before {
+        content: '';
+        width: 64px;
+        height: 64px;
+        border-radius: 100%;
+        z-index: 1;
+        left: 50%;
+        top: 50%;
+        position: absolute;
+        transform: translate(-50%, -50%);
+        box-shadow: 0 0 0 0 rgba($reactium-blue, 1);
+        animation: reactium-pulse 1.2s infinite;
+    }
+
+    &:after {
+        content: '';
+        width: 64px;
+        height: 64px;
+        z-index: 2;
+        left: 50%;
+        top: 50%;
+        position: absolute;
+        transform: translate(-50%, -50%);
+        background-size: cover;
+        background-position: center;
+        background-repeat: no-repeat;
+        background-image: url('/assets/images/logo.png');
+    }
+}
+
+@keyframes reactium-pulse {
+    0% {
+        box-shadow: 0 0 0 0 rgba($reactium-blue, 0.7);
+    }
+
+    70% {
+        box-shadow: 0 0 0 12px rgba($reactium-blue, 0);
+    }
+
+    100% {
+        box-shadow: 0 0 0 0 rgba($reactium-white, 0);
+    }
+}
diff --git a/src/externals-manifest.js b/src/externals-manifest.js
new file mode 100644
index 00000000..f94a9b5d
--- /dev/null
+++ b/src/externals-manifest.js
@@ -0,0 +1,29 @@
+/**
+ * Generated by Reactium
+ * DO NOT directly edit this file !!!!!!
+ */
+import { isBrowserWindow } from '@atomic-reactor/reactium-sdk-core';
+
+if (isBrowserWindow()) {
+    window['axios'] = require('axios');
+    window['classnames'] = require('classnames');
+    window['copy-to-clipboard'] = require('copy-to-clipboard');
+    window['moment'] = require('dayjs');
+    window['dayjs'] = require('dayjs');
+    window['object-path'] = require('object-path');
+    window['prop-types'] = require('prop-types');
+    window['react'] = require('react');
+    window['react-router-dom'] = require('react-router-dom');
+    window['react-dom'] = require('react-dom');
+    window[
+        '@atomic-reactor/reactium-core/sdk'
+    ] = require('@atomic-reactor/reactium-core/sdk');
+    window['semver'] = require('semver');
+    window['shallow-equals'] = require('shallow-equals');
+    window['underscore'] = require('underscore');
+    window['uuid'] = require('uuid');
+    window['xss'] = require('xss');
+    window['React'] = window['react'];
+    window['ReactDOM'] = window['react-dom'];
+    window['Reactium'] = window['@atomic-reactor/reactium-core/sdk'];
+}
diff --git a/src/index.mjs b/src/index.mjs
new file mode 100644
index 00000000..43862f51
--- /dev/null
+++ b/src/index.mjs
@@ -0,0 +1,5 @@
+/**
+ * Reactium Server Start
+ */
+import { start } from '@atomic-reactor/reactium-core';
+start();
\ No newline at end of file
diff --git a/src/server.crt b/src/server.crt
new file mode 100644
index 00000000..c7a3658b
--- /dev/null
+++ b/src/server.crt
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3UCFGEzBaUMG8FVpMs+f1XH3lOiA92sMA0GCSqGSIb3DQEBCwUAMIGC
+MQswCQYDVQQGEwJVUzEPMA0GA1UECAwGSGF3YWlpMREwDwYDVQQHDAhIb251bHVs
+dTEVMBMGA1UECgwMUmVhY3RpdW0gTExDMRcwFQYDVQQDDA5yZWFjdGl1bS5sb2Nh
+bDEfMB0GCSqGSIb3DQEJARYQam9obkByZWFjdGl1bS5pbzAeFw0yMzA0MjExNTEz
+MjdaFw0yNDA0MjAxNTEzMjdaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECAwGSGF3
+YWlpMREwDwYDVQQHDAhIb251bHVsdTEVMBMGA1UECgwMUmVhY3RpdW0gTExDMRcw
+FQYDVQQDDA5yZWFjdGl1bS5sb2NhbDEfMB0GCSqGSIb3DQEJARYQam9obkByZWFj
+dGl1bS5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMhxAXaSIVY3
+hG31QmjZZiDXlRwLYiRTADpbhTDEJL32eT2lPVOPiGYq9Qzj3K967wMhv03spesn
+tjD7BikN5CBkuzlj2LFYfK8dRW2eYTVh8trj0TyMjTKORIDxaubgOXMxiLrVGKl3
+ZpbwhHc/MG66tYZsL0m2mPIOr9LPYWs2jgLi9Azkka3i+6U+WFbYG2QdE7zVAWbF
+yR7HHiyiMIJr+kPtxKnhqVUgCrR1ZZpUyGBhqR8LR4JJAEC6TI22mibZ55hBsi8X
+NWrxXM/DOtqZpGFyqkaZx1+y8zJ8RiO1uMngShJqbQTx4e3ANIRqM1wM0UJ3YcUV
+yo/q1bx/poaPw6N5N54UGJoi8zKk02PdMIeyEYAzpV+nQPPzCZhkuujfGFTFTQhS
++eVTDi56jhPdcRHPpxGWVUguqdV3MIo42AzC/O9t/22my4APYCNcKxOGoBlmURRj
+nNMjAfbOqEwpVS0uVDPJYqSKrSqzG95U9uAH7evGzSHyuuOACyKsmegd8H0SRaYI
+9QZii2jfGcvWx/dtbPPX3jea5GfN7cs+T8t6RASdpOGkoaTGFOWeq7pnB8b73J2D
+13Gxzl9jFB4RSVhQ21+Lptt/y8ouI2UWgtQOoY3BH3hGXNZ1oqgsIJmaniPd9fz3
+iJDXspg3cE3FGAkwtfYJJF8dOHNqELsZAgMBAAEwDQYJKoZIhvcNAQELBQADggIB
+AAynspRmVKZ0lNtghVJ+WhGrT43jt/9+XGQ2UQ/VR+f66xkAOwSTj7NbrebAgcnY
+m1OuUVYPg6aGWrKz2iPBKpA+l9QcjFmwdrFMk6fobUPiCfe4rKSyn01iJOZJDsl9
+ajD4SKdNCzkJQvtRC8Ki0YMO7gEPlVlEr1lb8w+ZEXzcgUhhieq0GhwNBX3jza+3
+QOEHFYqgD7/QZ6p/T17fsV4dQPsNnlrI1IoBkoF86d6PSLYuRLo3cdS8ClLKaQkk
+ta8oBTWnNER3dFXYNmzuZsNgkGbtKAQa40wcDL/On8pLOynQbtNjHDpPpJ1yJrtZ
+dTSjFbKIa/3XGFyHo8ByeKKcVYmOXLkkvNAujpJkGRN+FDsk2ewzMaAPVc0/b6hZ
+tOxhNOsV/o4Hsvln4xHJsnVppn/FhHdq/wchuC/FgMxkrO9GWwfxBMzDEfBxWE0W
+T4a6digk9xLp7uPVeVYTh9xKZx5TI0K0qqUL8QGiNVbrM3/quCjKA5I/iPk0IWVF
+nD7pJns9Q773IDYYxjwF1ohOV/7teWWrk8HhjsVhQrGBVanpNiaXJl7VsfEk87o2
+ID67PP3bnSb2d5hLCqy/Galk3go3CBU9DRcAHIQZmUq8V99H/omP694bq9Kb0tfR
+oT/ROT0hQX17bY3eb72DggjPQ+2xkoCsyx9+n4pBX7ir
+-----END CERTIFICATE-----
diff --git a/src/server.key b/src/server.key
new file mode 100644
index 00000000..08474520
--- /dev/null
+++ b/src/server.key
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQDIcQF2kiFWN4Rt
+9UJo2WYg15UcC2IkUwA6W4UwxCS99nk9pT1Tj4hmKvUM49yveu8DIb9N7KXrJ7Yw
++wYpDeQgZLs5Y9ixWHyvHUVtnmE1YfLa49E8jI0yjkSA8Wrm4DlzMYi61Ripd2aW
+8IR3PzBuurWGbC9JtpjyDq/Sz2FrNo4C4vQM5JGt4vulPlhW2BtkHRO81QFmxcke
+xx4sojCCa/pD7cSp4alVIAq0dWWaVMhgYakfC0eCSQBAukyNtpom2eeYQbIvFzVq
+8VzPwzramaRhcqpGmcdfsvMyfEYjtbjJ4EoSam0E8eHtwDSEajNcDNFCd2HFFcqP
+6tW8f6aGj8OjeTeeFBiaIvMypNNj3TCHshGAM6Vfp0Dz8wmYZLro3xhUxU0IUvnl
+Uw4ueo4T3XERz6cRllVILqnVdzCKONgMwvzvbf9tpsuAD2AjXCsThqAZZlEUY5zT
+IwH2zqhMKVUtLlQzyWKkiq0qsxveVPbgB+3rxs0h8rrjgAsirJnoHfB9EkWmCPUG
+Yoto3xnL1sf3bWzz1943muRnze3LPk/LekQEnaThpKGkxhTlnqu6ZwfG+9ydg9dx
+sc5fYxQeEUlYUNtfi6bbf8vKLiNlFoLUDqGNwR94RlzWdaKoLCCZmp4j3fX894iQ
+17KYN3BNxRgJMLX2CSRfHThzahC7GQIDAQABAoICAD3wjd8yMRMPfODt1WPJKoIj
+nHRaIC3RaFSgS3xSYHhDXhvqoBTeWewYgjlFgMDJYGq7Vv6hjnQohWiFadXt8P0B
+o8mMTT4gdgc3KGlDdA6nAgEaPWJUnJ1u0UR3Ve2ahKZQPExf5YsY1p72HDktUa4m
+DEpJzCMfRgwm9bZTV2tmJGRH9dq2Fz6A0fqyVWIgzfYV9i94M0KrBAd6yJxKUms7
+Ks8q/obwsP8ZM7WoQYl7gaAnDbgGKEbegDGAYH+6WdB/rc2jH4jlxyARDfk1/03m
+BKIIaQ4AH1g3WGfVd2c5lKztnnYqZR4OER8DMjdpCg379/5uHcxle38Vto7Vc4O9
+iHr0kwpMKMwWtMTgcjgA3qz1GPo8Aum6XzX2Wdyg2LUaihCHQPR0h58QBmRkB2K/
+gz8nAMSu7XFF0mxUmuNfPPde1PYP0BQZCOWy+H/QzIsh3HIpde+i6fiI548gpzaA
+e/9EG+B3O/jjZLQH66+fOlvSmNZWHq69r8CHKLHhWKvxZoB9ThTEHzo8cJi5RB9p
+8/vxjv5QRgOuphTyNXZ1fwWTw92xq+EDG0eTc4sS99QKzgBAzT4FLckBJ+jCC6OE
+k2iN9anKx/eiL1kJFTBhcOJVaPUJnsJ3/DIKZzNUrwyd9ZKYlTdvNGtHAKK7lSJT
+wahXZfyMZOLbJvsDrdexAoIBAQDniGkeePvnC9MOf0roHUEfblNSA4c4i2LASSKO
+FU+cLvmrB1H89r/zQHzUGIcHUewbsN2UXpx2jHqVxOLlWrVGGkJosI5h/DhS3Ct7
+LwRtJ5nW5lIbyCtUn0azpEIKRRyAYofN+XtNal3v6xA0boXv+4JmeHn2X0VRfpfg
+eQ17H8jdU7LQluArV6KoLlQucAzIw44Ws6dN0VFcoOvmwB5qlbDPY/TYkd6MbJgW
+NJahIzYuk0x5Fi4bB8APrSvid9XJ/UadiWRHPbN/7IWHZ+XgI0wWVYsFa46ceRhE
+GeXNNueCiBf9r8rXDTonvnRlCv2/qF6QG7wSjr0B9Rd5SJnPAoIBAQDdn3zut5Gm
+6v+dkYpVBLRsrCLVLzNrST4C0Ps9nlcb6HCad4N/wrF5tm4c5lQKkpUwW3Lzousk
+TuS2uvP/ajv38fA6Fela0CQSZI0cILQG+dGVvd+wXgTocPCqOFb4YxiBhxoTAQPI
+nh7evsYMAQhd+qt8SWR6j3msbdGt6kBZIvxja13AQn3WFL0gndZSjgd8M5AM6li7
+86tHSsUqPrTUQ7KS4+LMyl6tQ1MwEHaMo+IvBkNpk26e0KCBgUwNHqoQgCJ4Vfqn
+pL1I2Og3hDaSIPzXpGoNHJOsB7fXHK81eMWzIodF24ICzZ+oKweA/bxQ02AVk1m8
+uO+Ej/ww/F6XAoIBAGEJd90Qoaq89vDtgqxzjlao+3y1A9g7+uBSBox7/AieW39F
+qyQVGm/NyENwIC9+MzGL1+IWIQdCayIYCWxMrwq5eLm9vX7toYGAyyxukTFaVoyN
+rT39j8OAmbYykocRXheks/wsonPYr5Qc9Ya0B6iDxaxCtAMA/OFh6C9pLLA8qwev
+y5LGmR8xNHe+KwPnbEQ8SXHUS7s+jhX/T78/J8BOCnNxFi4qPJan8Lnlwne4dT3h
++DwLgrlLb0BiuLDKvqxQXWcrLP76qh9kNraAYgSlZn85zPExmeyUiAoKvJhceXzo
+ov1sztuArK35kXjDuYO5AiDtrs4sSqTmXrczKVsCggEAVuGbPIpCU0l1A/R2YnYB
+tUiWLzTd14VTBg+fLrzQMWSiICwSJRfSM4DNEg9JiwuD6P0wx0prHETBbNFFri+b
+aswx/NNyM+O9AGji2NAJQ2LUQvu4oY96JRWBg3mqvp06kizAkAqpzRAP0gq/4RzW
+huEqMQMknNd6P5qdxKw8pbUNdHw2uJRYeICQ1CSMTLjZPluIcUe9mZEg6EXrnXAP
+u9b+Po+P7fC3xPzLs+AAWYo1tXGjI9RkXWY0RhDGG66VxPo2iS5LoUT334MJJhpy
+uj6sYG1YFePKEHrGG1JnbXL3Lg6vMTeodCjgGjEkM/FEzfrPhCXL3Cwz2agImbuV
+6QKCAQAQ6xAIDC2cKqJdVrxENyHRoTlyWgC2n9GcBYzIXFCkZXa0kGk7Vug12oQz
+Kfewx9v6z+ONGdQlaJ/xrgUzsGC4MxijzQu248tQYUlll4DPCJKEzxCoTWFeocFM
+bipQUJEyZyOrc1Fv70zz7rnz2fXO8/NmUAATvexo3m5lVlt+oUwxvUuzj2lCZrkY
+ubYNz31VSqRNTQLYFRd4U72rEUXjr6Su8cOaE2H5iaPH3io8Ay2sJb9X8UcprGki
+hFvAKeSdgmKNyLQn9sawzTLjVTdiavM3Z7MeaitLLLmCnD8zUug4K/TgpSvdmFAr
+kKAFPPVdIM56Mzpc1mrHa59kDhX+
+-----END PRIVATE KEY-----
diff --git a/src/sw/umd.js b/src/sw/umd.js
deleted file mode 100644
index 5436269e..00000000
--- a/src/sw/umd.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Welcome to your Workbox-powered service worker!
- *
- * You'll need to register this file in your web app and you should
- * disable HTTP caching for this file too.
- * See https://goo.gl/nhQhGp
- *
- * The rest of the code is auto-generated. Please don't update this file
- * directly; instead, make changes to your Workbox build configuration
- * and re-run your build process.
- * See https://goo.gl/2aRDsh
- */
-import { skipWaiting, clientsClaim, cacheNames } from 'workbox-core';
-import { precacheAndRoute } from 'workbox-precaching';
-import { registerRoute } from 'workbox-routing';
-import { CacheOnly } from 'workbox-strategies';
-import op from 'object-path';
-
-const SW_VERSION = '1.0.0';
-
-const messageTypes = {
-    GET_VERSION: 'GET_VERSION',
-};
-
-const customCacheNames = {
-    media: 'site-media',
-};
-
-// This is for static assets. You will need to implement your own precaching
-// for dynamic resources
-precacheAndRoute(self.__WB_MANIFEST);
-
-/**
- * Example Dynamic loading of content
- */
-// const apiConfig = workerRestAPIConfig;
-// const getParseApi = () => {
-//     return (url, body = {}, config = {}) => {
-//         return fetch(`${apiConfig.restAPI}${url}`, {
-//             ...config,
-//             method: 'POST',
-//             body: JSON.stringify(body),
-//             headers: {
-//                 ...op.get(config, 'headers', {}),
-//                 'X-Parse-Application-Id': apiConfig.actiniumAppId,
-//             },
-//         });
-//     };
-// };
-
-// const prefetchMedia = async () => {
-//     const api = getParseApi();
-//     const mediaRequest = await fetch('/media/all');
-//     const files = await mediaRequest.json();
-//     const cache = await caches.open(customCacheNames.media);
-//     console.log(`Precaching ${customCacheNames.media}`);
-//     for (const url of files) {
-//         const mediaResponse = await fetch(url, { mode: 'no-cors' });
-//         cache.put(url, mediaResponse.clone());
-//     }
-// };
-//
-// self.addEventListener('install', event => {
-//     event.waitUntil(
-//         Promise.all([
-//             // Pre-cache media
-//             prefetchMedia(),
-//         ]),
-//     );
-// });
-
-self.addEventListener('install', event => {
-    skipWaiting();
-});
-
-self.addEventListener('activate', event => {
-    clientsClaim();
-});
-
-self.addEventListener('message', event => {
-    if (event.data.type === messageTypes.GET_VERSION) {
-        event.ports[0].postMessage(SW_VERSION);
-    }
-});