text: (function () {
      var defs = {}; // id -> {dependencies, definition, instance (possibly undefined)}
  
  // Used when there is no 'main' module.
  // The name is probably (hopefully) unique so minification removes for releases.
      var register_3795 = function (id) {
          var module = dem(id);
          var fragments = id.split('.');
          var target = Function('return this;')();
          for (var i = 0; i < fragments.length - 1; ++i) {
              if (target[fragments[i]] === undefined) { target[fragments[i]] = {}; }
              target = target[fragments[i]];
          }
          target[fragments[fragments.length - 1]] = module;
      };
  
      var instantiate = function (id) {
          var actual = defs[id];
          var dependencies = actual.deps;
          var definition = actual.defn;
          var len = dependencies.length;
          var instances = new Array(len);
          for (var i = 0; i < len; ++i) { instances[i] = dem(dependencies[i]); }
          var defResult = definition.apply(null, instances);
          if (defResult === undefined) { throw 'module [' + id + '] returned undefined'; }
          actual.instance = defResult;
      };
  
      var def = function (id, dependencies, definition) {
          if (typeof id !== 'string') { throw 'module id must be a string'; } else if (dependencies === undefined) { throw 'no dependencies for ' + id; } else if (definition === undefined) { throw 'no definition function for ' + id; }
          defs[id] = {
              deps: dependencies,
              defn: definition,
              instance: undefined
          };
      };
  
      var dem = function (id) {
          var actual = defs[id];
          if (actual === undefined) { throw 'module [' + id + '] was undefined'; } else if (actual.instance === undefined) { instantiate(id); }
          return actual.instance;
      };
  
      var req = function (ids, callback) {
          var len = ids.length;
          var instances = new Array(len);
          for (var i = 0; i < len; ++i) { instances[i] = dem(ids[i]); }
          callback.apply(null, instances);
      };
  
      var ephox = {};
  
      ephox.bolt = {
          module: {
              api: {
                  define: def,
                  require: req,
                  demand: dem
              }
          }
      };
  
      var define = def;
      var require = req;
      var demand = dem;
  // this helps with minification when using a lot of global references
      var defineGlobal = function (id, ref) {
          define(id, [], function () { return ref; });
      };
  /* jsc
  ["tinymce.plugins.print.Plugin","tinymce.core.PluginManager","tinymce.plugins.print.api.Commands","tinymce.plugins.print.ui.Buttons","global!tinymce.util.Tools.resolve"]
  jsc */
      defineGlobal('global!tinymce.util.Tools.resolve', tinymce.util.Tools.resolve);
  /**
   * ResolveGlobal.js
   *
   * Released under LGPL License.
   * Copyright (c) 1999-2017 Ephox Corp. All rights reserved
   *
   * License: http://www.tinymce.com/license
   * Contributing: http://www.tinymce.com/contributing
   */
  
      define(
    'tinymce.core.PluginManager',
          [
              'global!tinymce.util.Tools.resolve'
          ],
    function (resolve) {
        return resolve('tinymce.PluginManager');
    }
  );
  
  /**
   * Commands.js
   *
   * Released under LGPL License.
   * Copyright (c) 1999-2017 Ephox Corp. All rights reserved
   *
   * License: http://www.tinymce.com/license
   * Contributing: http://www.tinymce.com/contributing
   */
  
      define(
    'tinymce.plugins.print.api.Commands',
          [
          ],
    function () {
        var register = function (editor) {
            editor.addCommand('mcePrint', function () {
                editor.getWin().print();
            });
        };
  
        return {
            register: register
        };
    }
  );
  /**
   * Buttons.js
   *
   * Released under LGPL License.
   * Copyright (c) 1999-2017 Ephox Corp. All rights reserved
   *
   * License: http://www.tinymce.com/license
   * Contributing: http://www.tinymce.com/contributing
   */
  
      define(
    'tinymce.plugins.print.ui.Buttons',
          [
          ],
    function () {
        var register = function (editor) {
            editor.addButton('print', {
                title: 'Print',
                cmd: 'mcePrint'
            });
  
            editor.addMenuItem('print', {
                text: 'Print',
                cmd: 'mcePrint',
                icon: 'print'
            });
        };
  
        return {
            register: register
        };
    }
  );
  /**
   * Plugin.js
   *
   * Released under LGPL License.
   * Copyright (c) 1999-2017 Ephox Corp. All rights reserved
   *
   * License: http://www.tinymce.com/license
   * Contributing: http://www.tinymce.com/contributing
   */
  
      define(
    'tinymce.plugins.print.Plugin',
          [
              'tinymce.core.PluginManager',
              'tinymce.plugins.print.api.Commands',
              'tinymce.plugins.print.ui.Buttons'
          ],
    function (PluginManager, Commands, Buttons) {
        PluginManager.add('print', function (editor) {
            Commands.register(editor);
            Buttons.register(editor);
            editor.addShortcut('Meta+P', '', 'mcePrint');
        });
  
        return function () { };
    }
  );
      dem('tinymce.plugins.print.Plugin')();
  })();
  